diff --git a/src/org/smssecure/smssecure/KeyScanningActivity.java b/src/org/smssecure/smssecure/KeyScanningActivity.java index 4bf07a0415a80b5b5a89dc7babeb5e02d7534e4e..977a3c3c116652b9f3c0be3ef93723a6f47f6115 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 b51d2bc7be00358eb1a9dbee25a472af13576b16..3aa5d973860a3ed6f8e4411b555da742b6fc85ce 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,