ben ilk ve tek parmak izi kayıt ve ben ikinci kez kullandığınızda KeyPair
PrivateKey
geçersiz olur üretir. Bu sadece bir kez olur. Bu sorunu yaşayan tek kişi ben miyim? Kodumda yanlış bir şey mi var? Verileri imzalamak için PrivateKey
kullanıyorum olarakAndroid Parmak İzi API ve özel/Ortak anahtarlar
Ben başka bir tuşa kullanamaz.
Adımlar:
- tüm parmak izlerini
- kaydettirme
KeyPair
oluşturun ve kalıcı geçersiz olurFingerprintManager :: authenticate PrivateKey
sonraki kullanım sırasındaFingerprintManager :: authenticate
- kullandığınız bir parmak izi silin. Bu yalnızca ilk kez burada
KeyPair
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore"); keystore.load(null); KeyPairGenerator generator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore"); generator.initialize(new KeyGenParameterSpec.Builder("key_name", KeyProperties.PURPOSE_SIGN) .setDigests(digest) // I have defined digest before .setSignaturePaddings(paddings) // I have defined paddings before .setUserAuthenticationRequired(true) .build()); generator.generateKeyPair();
Ve veri imzalama için parmak izi kimlik doğrulamayı çağırmak kodudur oluşturmak Kodun altında
için gerçekleşir:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Signature signature = Signature.getInstance("signing_algorithm");
PrivateKey privateKey = (PrivateKey) keyStore.getKey("key_name", null);
signature.initSign(privateKey); // Here I get KeyPermanentlyInvalidatedException
CryptoObject crypto = new CryptoObject(signature);
FingerprintManager fingerprintManager = context.getSystemService(FingerprintManager.class);
CancellationSignal cancellationSignal = new CancellationSignal();
AuthenticationCallback authenticationCallback = new AuthenticationCallback() {
...
};
fingerprintManager.authenticate(crypto, cancelationSignal, 0, authenticationCallback, null);
Bana kalırsa. Parmak izlerini sildikten sonra anahtarınızı ayarladığınızdan emin olun.SetInvalidatedByBiometricEnrollment ayarını false olarak ayarlamayı ve ne olacağını görmeyi deneyebilirsiniz. – JohanShogun
Başta parmak izlerini siliyorum, daha sonra yalnızca bir tane oluştur, anahtarlar oluştur. Üretilen anahtarları ilk defa kullandığımda, her şey beklendiği gibi çalışır, ancak ikinci kez anahtarını kullanmak için parmak iziyle kimlik doğrulaması yaptığımda geçersiz olur. SetInvalidateByBiometricEnrollment'i false olarak kullanmaya çalıştım ve yardımcı oldu, ancak bu güvenli değil. – Toochka
Öyleyse bu bana, bu, üreticinin kullandığı parmak izi yazılımındaki bir hata, telefondaki üreticilerin tüm telefonlarında aynı sonucu aldığınız fonetik kullanımı ile ilgili bir sorun gibi görünüyor. – JohanShogun