diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCapabilities.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCapabilities.java index 71fd3f022..36b0fc99a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCapabilities.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/OpenPgpCapabilities.java @@ -108,7 +108,16 @@ public class OpenPgpCapabilities { mHasKeyImport = (v[0] & MASK_KEY_IMPORT) != 0; mAttriburesChangable = (v[0] & MASK_ATTRIBUTES_CHANGABLE) != 0; - mSMAESKeySize = (v[1] == 1) ? 16 : 32; + mSMAESKeySize = 0; + + switch(v[1]) { + case 1: + mSMAESKeySize = 16; + break; + case 2: + mSMAESKeySize = 32; + break; + } mMaxCmdLen = (v[6] << 8) + v[7]; mMaxRspLen = (v[8] << 8) + v[9]; @@ -142,6 +151,10 @@ public class OpenPgpCapabilities { return mSMAESKeySize; } + public boolean isHasAESSM() { + return isHasSM() && ((mSMAESKeySize == 16) || (mSMAESKeySize == 32)); + } + public int getMaxCmdLen() { return mMaxCmdLen; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java index c5bc4bdef..98aa82f3a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java @@ -206,7 +206,7 @@ public class SecurityTokenHelper { mPw1ValidatedForDecrypt = false; mPw3Validated = false; - if (mOpenPgpCapabilities.isHasSM()) { + if (mOpenPgpCapabilities.isHasAESSM()) { try { SCP11bSecureMessaging.establish(this, ctx); } catch (SecureMessagingException e) {