2016-01-12 6 views
5

Androidの指紋サンプルコードFingerprintDialogでは、指紋ハードウェアFingerprintManager#authenticateを開始するメソッドは、FingerprintManager.CryptoObjectのパラメーターをとります。ドキュメントによれば、それはobject associated with the call or null if none requiredです。その説明はまだ私にとって明らかではありません。誰かが私が暗号を使用すべきか、使用すべきでないのかを説明してくれますかありがとう。フィンガープリントでのAndroid CryptoObjectの使用

答えて

7

Androidのサンプルで提供さFingerprintDialogサンプルは、それでは、何が起こっているか打破しましょうビット密です:

  1. の設定や暗号鍵を生成します。このステップでは、KeyGenParameterSpec.Builder.setAuthenticated(true)の場合にのみ鍵を使用できるように指定できます。
  2. ステップ2
  3. スタート指紋スキャナから暗号でFingerprintCrypto.CryptoObject()を初期化することにより、ステップ3からCryptoObject渡すcipherMode(暗号化/復号化)、ステップから生成されたキーで暗号オブジェクトを初期化し電話番号FingerprintManager.authenticate()
  4. ユーザーは指紋で正常に認証されます。 Androidオペレーティングシステムは、Keyの "authenticated"ビットを0から1に設定します。
  5. 鍵は使用のために認証されたので、Cipher.doFinal()を呼び出すことによって暗号操作を行うことができます。

あなたはFingerprintManager.authenticate()nullに渡すことで、ステップ4を変更しようとする場合は、キーを使用して認証されていないので、ステップ6に失敗します。

希望に役立ちます。

+1

まずはご協力いただきありがとうございます。ステップ1に関しては、あなたが 'KeyGenParameterSpec.Builder.setUserAuthenticationRequired(boolean required)'を意味すると仮定しました。私は既にステップ4でヌルを渡してみました。今回は、ステップ1をfalseに設定しようとしましたが、指紋認証の前でも結果が返されている 'Cipher.doFinal()'を呼び出すことができました。キーは指紋認証フローとは何の関係もなく、キーの使用を認証する方法を示すサンプルコードの一部にすぎません。 –

+0

しかし、もう1つの問題は、同じプログラム内で自分自身を作成し​​た鍵を認証する必要がある理由です。 –

+1

デフォルトでは、キーストア内のキーは、認証なしで使用できます。 trueを指定してsetUserAuthenticationRequiredを呼び出すと、指紋を使用してキーを使用する必要があります。 –

関連する問題