Аутентификация по отпечатку пальца Android: крипто-примитив не инициализирован

Я реализовал аутентификацию по отпечатку пальца внутри приложения, которое работало нормально неделю назад. Никаких изменений в коде, и теперь я получаю следующую ошибку:

FATAL EXCEPTION: main
    Caused by: java.lang.IllegalStateException: Crypto primitive not initialized

Я не уверен, что происходит, так как в коде ничего не изменилось, даже проверка с помощью чистого извлечения ветки.

Ниже приведен список зависимостей, которые я использую в приложении.

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.joanzapata.iconify:android-iconify-fontawesome:2.1.1'
compile 'com.android.support:design:23.+'
compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
compile 'com.squareup.okhttp:okhttp:2.7.1'
compile 'org.jdeferred:jdeferred-android-aar:1.2.4'
compile 'com.google.code.gson:gson:1.7.2'
compile "com.mixpanel.android:mixpanel-android:4.6.4"
compile "com.google.android.gms:play-services:3.1+"
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
    transitive = true;
}
compile 'io.branch.sdk.android:library:1.+'
compile 'com.parse.bolts:bolts-applinks:1.4.0'
compile 'com.github.greenfrvr:rubber-loader:1.1.2@aar'
compile 'com.github.deano2390:MaterialShowcaseView:1.0.6@aar'

Есть ли что-то, о чем я должен знать в отношении этих новых API?


person Mike Littman    schedule 08.02.2016    source источник
comment
Этот сбой происходит, когда вы вызываете fingerprintManager.authenticate(cryptObject,...) ?   -  person Caleb    schedule 08.03.2016


Ответы (1)


Вам необходимо инициализировать объект шифрования для шифрования или дешифрования.

cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" + KeyProperties.ENCRYPTION_PADDING_PKCS7);

cipher.init(Cipher.ENCRYPT_MODE, key);

В зависимости от того, что вы пытаетесь сделать, вам также может понадобиться создать SecretKey, KeyStore и KeyGenerator. Могу уточнить, если нужно.

person Caleb    schedule 08.03.2016