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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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