Я импортирую симметричный ключ в хранилище ключей Android со следующим кодом, как показано в этом примере: https://developer.android.com/reference/kotlin/android/security/keystore/KeyProtection
final SecretKey aesKey = new SecretKeySpec(myKeyByteArray, 0, myKeyByteArray.length, "AES");
final KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
keyStore.setEntry(
"my_key_alias",
new KeyStore.SecretKeyEntry(aesKey),
new KeyProtection.Builder(KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setBlockMode(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.build());
Можно также сгенерировать случайный ключ AES со следующим кодом:
final KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(AES_KEY_LEN);
final SecretKey aesKey = keyGenerator.generateKey();
....
Обратите внимание, что данный KeyGenerator не генерирует ключ в безопасном оборудовании. Он просто генерирует случайный ключ в процессе приложения.
Как я могу импортировать сгенерированные извне симметричные ключи в хранилище ключей Android?
Нужно ли прибегать к некоторым обходным путям с парой открытый-закрытый ключ для шифрования симметричного ключа?
РЕДАКТИРОВАТЬ : Обходных путей не требуется. Можно импортировать сгенерированный извне ключ в хранилище ключей Android с помощью приведенного выше кода.