From 8649332bdcf25b357a6dc1222131d3922cfd7737 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Thu, 26 Oct 2017 17:00:48 +0200 Subject: [PATCH] don't distinguish unknown tokens by transport --- .../SecurityTokenConnection.java | 2 +- .../securitytoken/SecurityTokenInfo.java | 22 +++++++++++-------- .../securitytoken/usb/UsbTransport.java | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenConnection.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenConnection.java index 30df05737..495ffddb8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenConnection.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenConnection.java @@ -955,7 +955,7 @@ public class SecurityTokenConnection { if (transportType == TransportType.USB) { tokenType = mTransport.getTokenType(); } else { - tokenType = isFidesmoToken() ? TokenType.FIDESMO : TokenType.UNKNOWN_NFC; + tokenType = isFidesmoToken() ? TokenType.FIDESMO : TokenType.UNKNOWN; } // TODO: bail out earlier on unsupported tokens to not execute other commands diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenInfo.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenInfo.java index c09d958d1..11d74b7ec 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenInfo.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenInfo.java @@ -53,7 +53,7 @@ public abstract class SecurityTokenInfo implements Parcelable { if (!BuildConfig.DEBUG) { throw new UnsupportedOperationException("This operation is only available in debug builds!"); } - return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN_NFC, + return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN, new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("1efdb4845ca242ca6977fddb1f788094fd3b430a") }, Hex.decode("010203040506"), "yubinu2@mugenguild.com", null, 3, 3); } @@ -62,7 +62,7 @@ public abstract class SecurityTokenInfo implements Parcelable { if (!BuildConfig.DEBUG) { throw new UnsupportedOperationException("This operation is only available in debug builds!"); } - return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN_NFC, + return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN, new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") }, Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 3, 3); } @@ -71,7 +71,7 @@ public abstract class SecurityTokenInfo implements Parcelable { if (!BuildConfig.DEBUG) { throw new UnsupportedOperationException("This operation is only available in debug builds!"); } - return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN_NFC, + return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN, new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") }, Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 3); } @@ -80,7 +80,7 @@ public abstract class SecurityTokenInfo implements Parcelable { if (!BuildConfig.DEBUG) { throw new UnsupportedOperationException("This operation is only available in debug builds!"); } - return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN_NFC, + return SecurityTokenInfo.create(TransportType.NFC, TokenType.UNKNOWN, new byte[][] { KeyFormattingUtils.convertFingerprintHexFingerprint("4700BA1AC417ABEF3CC7765AD686905837779C3E") }, Hex.decode("010203040506"), "yubinu2@mugenguild.com", "http://valodim.stratum0.net/mryubinu2.asc", 0, 0); } @@ -90,11 +90,10 @@ public abstract class SecurityTokenInfo implements Parcelable { } public enum TokenType { - YUBIKEY_NEO, YUBIKEY_4, FIDESMO, NITROKEY_PRO, NITROKEY_STORAGE, NITROKEY_START, GNUK, LEDGER_NANO_S, UNKNOWN_NFC, UNKNOWN_USB + YUBIKEY_NEO, YUBIKEY_4, FIDESMO, NITROKEY_PRO, NITROKEY_STORAGE, NITROKEY_START, GNUK, LEDGER_NANO_S, UNKNOWN } private static final HashSet SUPPORTED_SECURITY_TOKENS = new HashSet<>(Arrays.asList( - TokenType.UNKNOWN_NFC, TokenType.FIDESMO, TokenType.YUBIKEY_NEO, TokenType.YUBIKEY_4, @@ -103,18 +102,23 @@ public abstract class SecurityTokenInfo implements Parcelable { )); private static final HashSet SUPPORTED_PUT_KEY = new HashSet<>(Arrays.asList( - TokenType.UNKNOWN_NFC, TokenType.FIDESMO, TokenType.YUBIKEY_NEO, TokenType.YUBIKEY_4 // Not clear, will be tested: https://github.com/open-keychain/open-keychain/issues/2069 )); public boolean isSecurityTokenSupported() { - return SUPPORTED_SECURITY_TOKENS.contains(getTokenType()); + boolean isKnownSupported = SUPPORTED_SECURITY_TOKENS.contains(getTokenType()); + boolean isNfcTransport = getTransportType() == TransportType.NFC; + + return isKnownSupported || isNfcTransport; } public boolean isPutKeySupported() { - return SUPPORTED_PUT_KEY.contains(getTokenType()); + boolean isKnownSupported = SUPPORTED_PUT_KEY.contains(getTokenType()); + boolean isNfcTransport = getTransportType() == TransportType.NFC; + + return isKnownSupported || isNfcTransport; } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java index 250ff5520..ab8804a88 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java @@ -269,7 +269,7 @@ public class UsbTransport implements Transport { Log.d(Constants.TAG, "Unknown USB token. Vendor ID: " + usbDevice.getVendorId() + ", Product ID: " + usbDevice.getProductId()); - return TokenType.UNKNOWN_USB; + return TokenType.UNKNOWN; } /**