Есть ли способ генерировать CSR ключей, хранящихся в хранилище ключей Android? Я знаю, что вы можете генерировать ключи, затем генерировать CSR и, наконец, хранить ключи в хранилище ключей Android, но также возможно ли генерировать CSR в более ранний момент, сгенерированный и уже внутри сохраненных ключей KeyStore?
Я попытался сделать это точно так же, как вы сделали бы это со свежесгенерированными ключами, используя Spongycastle. Но я столкнулся с проблемой при создании файла JCAContentSigner. Запуск этого кода:
new JcaContentSignerBuilder("SHA256WithRSAEncryption").setProvider("SC").build(privateKey)
Это вызовет исключение:
org.spongycastle.operator.OperatorCreationException: cannot create signer: Supplied key (android.security.keystore.AndroidKeyStoreRSAPrivateKey) is not a RSAPrivateKey instance
Без установки SpongyCastle в качестве поставщика безопасности я получаю это исключение:
org.spongycastle.operator.OperatorCreationException: cannot create signer: Keystore operation failed
Итак, мой вопрос: возможен ли один из этих трех вариантов:
добавить android.security.keystore.AndroidKeyStoreRSAPrivateKey в экземпляр RSAPrivateKey?
заставить его работать, не устанавливая SpongyCastle в качестве поставщика безопасности?
создание CSR без SpongyCastle?
JcaContentSignerBuilder
вPKCS10CertificationRequest
, вы передаете емуContentSigner
в качестве аргумента. СамContentSigner
создается путем передачи вашегоPrivateKey
вContentSignerBuilder
. КогдаContentSigner
сейчас попытается что-то подписать, у него ничего не получится, потому что он не может использовать для подписи ваш ключ с аппаратной поддержкой. Решение этой проблемы состоит в том, чтобы перезаписатьbuild()
изContentSignerBuilder
, чтобы он использовал ваш ключ с аппаратной поддержкой. - person C3nturyFox   schedule 30.07.2020