Android.security.KeyStoreException: неподдерживаемая цель при хешировании – использование PURPOSE_SIGNAndroid

Форум для тех, кто программирует под Android
Anonymous
Android.security.KeyStoreException: неподдерживаемая цель при хешировании – использование PURPOSE_SIGN

Сообщение Anonymous »

Я использую Android KeyStore на Kotlin. Прямо сейчас у меня возникла проблема: я загружаю ключи, а позже, когда я их получаю, я использую их для шифрования, дешифрования и генерации хеша. Шифрование/дешифрование работает нормально, а хеширование — нет. Мой код хранилища ключей выглядит следующим образом:

Код: Выделить всё

private fun loadKey(fullAlias: String, key: SecretKey) {
val keyEntry = KeyStore.SecretKeyEntry(SecretKeySpec(key.encoded, AES_ALG))
val prot: ProtectionParameter = KeyProtection.Builder(
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT or KeyProperties.PURPOSE_SIGN)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA1)
.setUserAuthenticationRequired(false)
.setRandomizedEncryptionRequired(false)
.build();
keyStore.setEntry(fullAlias, keyEntry, prot)
}
Я хеширую следующим образом:

Код: Выделить всё

private const val HMAC_ALGORITHM = "HmacSHA256"

fun pibaseToken(key: Key, label: ByteString): ByteString {
//        val secretKeySpec = SecretKeySpec(key.encoded, HMAC_ALGORITHM)
val mac = Mac.getInstance(HMAC_ALGORITHM)
mac.init(key)
val token = mac.doFinal(label.toByteArray())
return ByteString.copyFrom(token)
}
Я постоянно получаю сообщение о том, что цель не поддерживается. 2: Ошибка::Km(r#UNSUPPORTED_PURPOSE)) (общедоступный код ошибки: 13, внутренний код хранилища ключей: -2). Любые мысли будут оценены по достоинству. (примечание: я знаю, что некоторые методы обеспечения безопасности здесь не идеальны, но я проверяю концепцию).

Подробнее здесь: https://stackoverflow.com/questions/783 ... -using-pur

Вернуться в «Android»