From 4489748a97d43d1dfc0c1152a84f24c32846c54b Mon Sep 17 00:00:00 2001 From: William Desportes Date: Tue, 20 Feb 2018 21:07:54 +0100 Subject: [PATCH] Removed 2 NPEs when having no identity --- .../smssecure/smssecure/KeyScanningActivity.java | 10 ++++++++-- .../smssecure/crypto/KeyExchangeInitiator.java | 14 ++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/org/smssecure/smssecure/KeyScanningActivity.java b/src/org/smssecure/smssecure/KeyScanningActivity.java index 4bf07a04..977a3c3c 100644 --- a/src/org/smssecure/smssecure/KeyScanningActivity.java +++ b/src/org/smssecure/smssecure/KeyScanningActivity.java @@ -117,8 +117,14 @@ public abstract class KeyScanningActivity extends PassphraseRequiredActionBarAct } protected void initiateDisplay() { - IntentIntegrator intentIntegrator = getIntentIntegrator(); - intentIntegrator.shareText(Base64.encodeBytes(getIdentityKeyToDisplay().serialize())); + IdentityKey identityKey = getIdentityKeyToDisplay(); + if (identityKey != null) { + IntentIntegrator intentIntegrator = getIntentIntegrator(); + intentIntegrator.shareText(Base64.encodeBytes(identityKey.serialize())); + } else { + Toast.makeText(this, R.string.VerifyIdentityActivity_you_do_not_have_an_identity_key, + Toast.LENGTH_LONG).show(); + } } protected abstract String getScanString(); diff --git a/src/org/smssecure/smssecure/crypto/KeyExchangeInitiator.java b/src/org/smssecure/smssecure/crypto/KeyExchangeInitiator.java index b51d2bc7..3aa5d973 100644 --- a/src/org/smssecure/smssecure/crypto/KeyExchangeInitiator.java +++ b/src/org/smssecure/smssecure/crypto/KeyExchangeInitiator.java @@ -23,6 +23,7 @@ import android.content.DialogInterface; import android.os.Build; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.widget.Toast; import org.smssecure.smssecure.R; import org.smssecure.smssecure.crypto.SessionBuilder; @@ -95,11 +96,16 @@ public class KeyExchangeInitiator { SessionBuilder sessionBuilder = new SessionBuilder(sessionStore, preKeyStore, signedPreKeyStore, identityKeyStore, new SignalProtocolAddress(recipient.getNumber(), 1)); - KeyExchangeMessage keyExchangeMessage = sessionBuilder.process(); - String serializedMessage = Base64.encodeBytesWithoutPadding(keyExchangeMessage.serialize()); - OutgoingKeyExchangeMessage textMessage = new OutgoingKeyExchangeMessage(recipients, serializedMessage, subscriptionId); + if (identityKeyStore.getIdentityKeyPair() != null) { + KeyExchangeMessage keyExchangeMessage = sessionBuilder.process(); + String serializedMessage = Base64.encodeBytesWithoutPadding(keyExchangeMessage.serialize()); + OutgoingKeyExchangeMessage textMessage = new OutgoingKeyExchangeMessage(recipients, serializedMessage, subscriptionId); - MessageSender.send(context, masterSecret, textMessage, -1, false); + MessageSender.send(context, masterSecret, textMessage, -1, false); + } else { + Toast.makeText(context, R.string.VerifyIdentityActivity_you_do_not_have_an_identity_key, + Toast.LENGTH_LONG).show(); + } } private static boolean hasInitiatedSession(Context context, MasterSecret masterSecret, -- GitLab