From aadc59691beea3c58af3d0edf15302f5a33265d6 Mon Sep 17 00:00:00 2001 From: Nikita Mikhailov Date: Mon, 9 May 2016 15:27:45 +0600 Subject: [PATCH] SecurityToken: fix TLV in GET DATA fingerprint DO handling --- .../securitytoken/SecurityTokenHelper.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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 bc1c42f7f..a4f950254 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/SecurityTokenHelper.java @@ -477,10 +477,18 @@ public class SecurityTokenHelper { String data = "00CA006E00"; byte[] buf = mTransport.transceive(Hex.decode(data)); - Iso7816TLV tlv = Iso7816TLV.readSingle(buf, true); - Log.d(Constants.TAG, "nfcGetFingerprints() Iso7816TLV tlv data:\n" + tlv.prettyPrint()); + Iso7816TLV[] tlvs = Iso7816TLV.readList(buf, true); + Iso7816TLV fptlv = null; + + for (int i = 0; i < tlvs.length; i++) { + Log.d(Constants.TAG, "nfcGetFingerprints() Iso7816TLV tlv data:\n" + tlvs[i].prettyPrint()); + + Iso7816TLV tlv = Iso7816TLV.findRecursive(tlvs[i], 0xc5); + if (tlv != null) { + fptlv = tlv; + } + } - Iso7816TLV fptlv = Iso7816TLV.findRecursive(tlv, 0xc5); if (fptlv == null) { return null; }