Как должны обрабатываться сертификаты X.509 с истекшим сроком действия в отношении Android Keystore? - PullRequest
0 голосов
/ 14 марта 2019

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

val startDate = Calendar.getInstance()
val endDate = Calendar.getInstance()
endDate.add(Calendar.MINUTE, 1)
val spec = KeyPairGeneratorSpec.Builder(context)
    .setAlias(ALIAS)
    .setSubject(X500Principal(X500_PRINCIPAL))
    .setSerialNumber(BigInteger.ONE)
    .setStartDate(startDate.time)
    .setEndDate(endDate.time)
    .build()
val keyPairGenerator = KeyPairGenerator.getInstance(KEYPAIR_GEN_ALGORITHM, KEYSTORE_PROVIDER)
keyPairGenerator.initialize(spec)
keyPairGenerator.genKeyPair()

(срок действия сертификата истек через 1 минуту после создания сертификата, чтобы его можно было легко проверить.)

Вот фрагмент расшифровки:

val privateKeyEntry = keyStore.getEntry(ALIAS, null) as KeyStore.PrivateKeyEntry
val privateKey = privateKeyEntry.privateKey
val cipher = Cipher.getInstance(CIPHER_ALGORITHM)
cipher.init(Cipher.DECRYPT_MODE, privateKey)
...

Даже после истечения срока действия сертификата (и при отладке я вижу, что в нем указан ожидаемый срок окончания действия), расшифровка продолжается в обычном режиме. Означает ли это, что сертификаты с истекшим сроком действия не обрабатываются автоматически (т. Е. Исключение выдается каким-либо из этих классов или что-то в этом роде), и что я должен вручную проверять дату истечения срока действия и обрабатывать при необходимости?

...