]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/helper/IncomingMessageHandler.java
Store last resort kyber pre key from PniChangeNumber message
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / helper / IncomingMessageHandler.java
index 7cc3d09df06a21e740710f0b80de1286dc1152b8..0692a06ec9ba0229988b5dd42119c6fd7ea74131 100644 (file)
@@ -44,6 +44,7 @@ import org.signal.libsignal.protocol.IdentityKeyPair;
 import org.signal.libsignal.protocol.InvalidMessageException;
 import org.signal.libsignal.protocol.groups.GroupSessionBuilder;
 import org.signal.libsignal.protocol.message.DecryptionErrorMessage;
+import org.signal.libsignal.protocol.state.KyberPreKeyRecord;
 import org.signal.libsignal.protocol.state.SignedPreKeyRecord;
 import org.signal.libsignal.zkgroup.InvalidInputException;
 import org.signal.libsignal.zkgroup.profiles.ProfileKey;
@@ -646,8 +647,13 @@ public final class IncomingMessageHandler {
                     context.getAccountHelper()
                             .setPni(updatedPni,
                                     new IdentityKeyPair(pniChangeNumber.getIdentityKeyPair().toByteArray()),
+                                    pniChangeNumber.hasNewE164() ? pniChangeNumber.getNewE164() : null,
+                                    pniChangeNumber.getRegistrationId(),
                                     new SignedPreKeyRecord(pniChangeNumber.getSignedPreKey().toByteArray()),
-                                    pniChangeNumber.getRegistrationId());
+                                    pniChangeNumber.hasLastResortKyberPreKey()
+                                            ? new KyberPreKeyRecord(pniChangeNumber.getLastResortKyberPreKey()
+                                            .toByteArray())
+                                            : null);
                 } catch (Exception e) {
                     logger.warn("Failed to handle change number message", e);
                 }