]> nmode's Git Repositories - signal-cli/commitdiff
Fix issue with missing pni identity key
authorAsamK <asamk@gmx.de>
Sun, 5 Feb 2023 11:49:12 +0000 (12:49 +0100)
committerAsamK <asamk@gmx.de>
Sun, 5 Feb 2023 11:49:12 +0000 (12:49 +0100)
Fixes #1176

lib/src/main/java/org/asamk/signal/manager/storage/SignalAccount.java

index 9d44c297464d36fbecfec0ddacef11ccd54c667e..4eea6af03e1614e4ad3eb253e948ab32ad256d77 100644 (file)
@@ -1378,7 +1378,7 @@ public class SignalAccount implements Closeable {
 
     public void setPniIdentityKeyPair(final IdentityKeyPair identityKeyPair) {
         pniIdentityKeyPair = identityKeyPair;
-        final var pniPublicKey = getPniIdentityKeyPair().getPublicKey();
+        final var pniPublicKey = identityKeyPair.getPublicKey();
         getIdentityKeyStore().saveIdentity(getPni(), pniPublicKey);
         getIdentityKeyStore().setIdentityTrustLevel(getPni(), pniPublicKey, TrustLevel.TRUSTED_VERIFIED);
         save();
@@ -1594,9 +1594,13 @@ public class SignalAccount implements Closeable {
         final var aciPublicKey = getAciIdentityKeyPair().getPublicKey();
         getIdentityKeyStore().saveIdentity(getAci(), aciPublicKey);
         getIdentityKeyStore().setIdentityTrustLevel(getAci(), aciPublicKey, TrustLevel.TRUSTED_VERIFIED);
-        final var pniPublicKey = getPniIdentityKeyPair().getPublicKey();
-        getIdentityKeyStore().saveIdentity(getPni(), pniPublicKey);
-        getIdentityKeyStore().setIdentityTrustLevel(getPni(), pniPublicKey, TrustLevel.TRUSTED_VERIFIED);
+        if (getPniIdentityKeyPair() == null) {
+            setPniIdentityKeyPair(KeyUtils.generateIdentityKeyPair());
+        } else {
+            final var pniPublicKey = getPniIdentityKeyPair().getPublicKey();
+            getIdentityKeyStore().saveIdentity(getPni(), pniPublicKey);
+            getIdentityKeyStore().setIdentityTrustLevel(getPni(), pniPublicKey, TrustLevel.TRUSTED_VERIFIED);
+        }
     }
 
     public void deleteAccountData() throws IOException {