From: AsamK Date: Fri, 7 Oct 2022 10:04:22 +0000 (+0200) Subject: Fix update from old versions without PNI X-Git-Tag: v0.11.3~3 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/9a4693136d8030a55c62dbc5746ba9d1aac96de9 Fix update from old versions without PNI Fixes #1032 --- diff --git a/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java b/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java index ce45dd2c..0b19a691 100644 --- a/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java +++ b/lib/src/main/java/org/asamk/signal/manager/helper/AccountHelper.java @@ -9,6 +9,7 @@ import org.asamk.signal.manager.api.NonNormalizedPhoneNumberException; import org.asamk.signal.manager.api.PinLockedException; import org.asamk.signal.manager.config.ServiceConfig; import org.asamk.signal.manager.storage.SignalAccount; +import org.asamk.signal.manager.util.KeyUtils; import org.asamk.signal.manager.util.NumberVerificationUtils; import org.signal.libsignal.protocol.InvalidKeyException; import org.slf4j.Logger; @@ -99,6 +100,9 @@ public class AccountHelper { account.setNumber(number); account.setAci(aci); account.setPni(pni); + if (account.isPrimaryDevice() && account.getPniIdentityKeyPair() == null && account.getPni() != null) { + account.setPniIdentityKeyPair(KeyUtils.generateIdentityKeyPair()); + } account.getRecipientTrustedResolver().resolveSelfRecipientTrusted(account.getSelfRecipientAddress()); // TODO check and update remote storage context.getUnidentifiedAccessHelper().rotateSenderCertificates(); diff --git a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java index 279f6ee8..ff75b22b 100644 --- a/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java +++ b/lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java @@ -402,7 +402,7 @@ public class SignalAccount implements Closeable { // Old config file, creating new profile key setProfileKey(KeyUtils.createProfileKey()); } - if (isPrimaryDevice() && getPniIdentityKeyPair() == null) { + if (isPrimaryDevice() && getPniIdentityKeyPair() == null && getPni() != null) { setPniIdentityKeyPair(KeyUtils.generateIdentityKeyPair()); } }