From b62dc82b0c7208f106077b46fc7118da6baa6e13 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Tue, 28 Apr 2015 20:05:53 -0700 Subject: [PATCH] Add javax.crypto.Mac as a supported CryptoObject to Fingerprint Fixes bug 20660180 Change-Id: I421c246ef776847835ede4be1d72721c35cf951c (cherry picked from commit 0ecd5c20d93c24251975f3ff7cb0494039e5ea20) --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ .../fingerprint/FingerprintManager.java | 24 ++++++++++++++++--- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/api/current.txt b/api/current.txt index f360940e270e7..1ffa5aa13e234 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13918,7 +13918,9 @@ package android.hardware.fingerprint { public static class FingerprintManager.CryptoObject { ctor public FingerprintManager.CryptoObject(java.security.Signature); ctor public FingerprintManager.CryptoObject(javax.crypto.Cipher); + ctor public FingerprintManager.CryptoObject(javax.crypto.Mac); method public javax.crypto.Cipher getCipher(); + method public javax.crypto.Mac getMac(); method public java.security.Signature getSignature(); } diff --git a/api/system-current.txt b/api/system-current.txt index 17dd7f1d66554..15989b3b96deb 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -14217,7 +14217,9 @@ package android.hardware.fingerprint { public static class FingerprintManager.CryptoObject { ctor public FingerprintManager.CryptoObject(java.security.Signature); ctor public FingerprintManager.CryptoObject(javax.crypto.Cipher); + ctor public FingerprintManager.CryptoObject(javax.crypto.Mac); method public javax.crypto.Cipher getCipher(); + method public javax.crypto.Mac getMac(); method public java.security.Signature getSignature(); } diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index 2257b0a70989a..9f344adc0d663 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -42,6 +42,7 @@ import java.util.HashMap; import java.util.List; import javax.crypto.Cipher; +import javax.crypto.Mac; /** * A class that coordinates access to the fingerprint hardware. @@ -195,18 +196,26 @@ public class FingerprintManager { /** * A wrapper class for the crypto objects supported by FingerprintManager. Currently the - * framework supports {@link Signature} and {@link Cipher} objects. + * framework supports {@link Signature}, {@link Cipher} and {@link Mac} objects. */ public static class CryptoObject { - public CryptoObject(Signature signature) { + public CryptoObject(@NonNull Signature signature) { mSignature = signature; mCipher = null; + mMac = null; } - public CryptoObject(Cipher cipher) { + public CryptoObject(@NonNull Cipher cipher) { mCipher = cipher; mSignature = null; + mMac = null; + } + + public CryptoObject(@NonNull Mac mac) { + mMac = mac; + mCipher = null; + mSignature = null; } /** @@ -221,6 +230,12 @@ public class FingerprintManager { */ public Cipher getCipher() { return mCipher; } + /** + * Get {@link Mac} object. + * @return {@link Mac} object or null if this doesn't contain one. + */ + public Mac getMac() { return mMac; } + /** * @hide * @return the opId associated with this object or 0 if none @@ -230,12 +245,15 @@ public class FingerprintManager { return AndroidKeyStoreProvider.getKeyStoreOperationHandle(mSignature); } else if (mCipher != null) { return AndroidKeyStoreProvider.getKeyStoreOperationHandle(mCipher); + } else if (mMac != null) { + return AndroidKeyStoreProvider.getKeyStoreOperationHandle(mMac); } return 0; } private final Signature mSignature; private final Cipher mCipher; + private final Mac mMac; }; /**