From fc952fbaf673616050b310cdab5ac124766d7962 Mon Sep 17 00:00:00 2001 From: Lilia Date: Wed, 13 Sep 2017 20:26:26 +0200 Subject: [PATCH] Handle provisioning messages with no profile key (#1470) This can happen while linking to an older mobile client. // FREEBIE --- js/libtextsecure.js | 11 ++++++++--- libtextsecure/ProvisioningCipher.js | 7 +++++-- libtextsecure/account_manager.js | 4 +++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/js/libtextsecure.js b/js/libtextsecure.js index ad6db7ce0..86bc299a8 100644 --- a/js/libtextsecure.js +++ b/js/libtextsecure.js @@ -38261,7 +38261,9 @@ var TextSecureServer = (function() { textsecure.storage.put('signaling_key', signalingKey); textsecure.storage.put('password', password); textsecure.storage.put('registrationId', registrationId); - textsecure.storage.put('profileKey', profileKey); + if (profileKey) { + textsecure.storage.put('profileKey', profileKey); + } if (userAgent) { textsecure.storage.put('userAgent', userAgent); } @@ -40282,13 +40284,16 @@ ProvisioningCipher.prototype = { var privKey = provisionMessage.identityKeyPrivate.toArrayBuffer(); return libsignal.Curve.async.createKeyPair(privKey).then(function(keyPair) { - return { + var ret = { identityKeyPair : keyPair, number : provisionMessage.number, provisioningCode : provisionMessage.provisioningCode, userAgent : provisionMessage.userAgent, - profileKey : provisionMessage.profileKey.toArrayBuffer() }; + if (provisionMessage.profileKey) { + ret.profileKey = provisionMessage.profileKey.toArrayBuffer(); + } + return ret; }); }); }, diff --git a/libtextsecure/ProvisioningCipher.js b/libtextsecure/ProvisioningCipher.js index 2bf225420..b50d7e00b 100644 --- a/libtextsecure/ProvisioningCipher.js +++ b/libtextsecure/ProvisioningCipher.js @@ -31,13 +31,16 @@ ProvisioningCipher.prototype = { var privKey = provisionMessage.identityKeyPrivate.toArrayBuffer(); return libsignal.Curve.async.createKeyPair(privKey).then(function(keyPair) { - return { + var ret = { identityKeyPair : keyPair, number : provisionMessage.number, provisioningCode : provisionMessage.provisioningCode, userAgent : provisionMessage.userAgent, - profileKey : provisionMessage.profileKey.toArrayBuffer() }; + if (provisionMessage.profileKey) { + ret.profileKey = provisionMessage.profileKey.toArrayBuffer(); + } + return ret; }); }); }, diff --git a/libtextsecure/account_manager.js b/libtextsecure/account_manager.js index 537a230b1..01d18c080 100644 --- a/libtextsecure/account_manager.js +++ b/libtextsecure/account_manager.js @@ -220,7 +220,9 @@ textsecure.storage.put('signaling_key', signalingKey); textsecure.storage.put('password', password); textsecure.storage.put('registrationId', registrationId); - textsecure.storage.put('profileKey', profileKey); + if (profileKey) { + textsecure.storage.put('profileKey', profileKey); + } if (userAgent) { textsecure.storage.put('userAgent', userAgent); }