Сгенерированная пара ключей Android не имеет цепочки сертификатов для подтверждения - PullRequest
0 голосов
/ 09 апреля 2019

Я генерирую пару ключей на устройстве Android (8.1 / API уровень 27), используя следующий фрагмент кода:

KeyGenParameterSpec spec = new KeyGenParameterSpec.Builder(
        KEY_ALIAS,
        KeyProperties.PURPOSE_SIGN | KeyProperties.PURPOSE_VERIFY
    )
    .setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
    .setCertificateSubject(new X500Principal("CN=X, O=X"))
    .setCertificateSerialNumber(BigInteger.ONE)
    .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
    .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
    .build();

KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
generator.initialize(spec);

generator.generateKeyPair();

Затем я хочу подтвердить, что сгенерированный сертификат подписан корневым сертификатом Google, чтобы доказать, что сертификат хранится в TEE (см. Проверка пар ключей с аппаратной поддержкой с помощью Key Attestation ):

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) keystore
    .getEntry(KEY_ALIAS, null);


KeyFactory keyFactory = KeyFactory.getInstance(
    privateKeyEntry.getPrivateKey().getAlgorithm(),
    "AndroidKeyStore"
);
KeyInfo keyInfo = keyFactory.getKeySpec(privateKeyEntry.getPrivateKey(), KeyInfo.class);

Log.i(TAG, "Is key in secure hardware: " + keyInfo.isInsideSecureHardware());
Log.i(TAG, "Number of certificates in the chain: " + privateKeyEntry.getCertificateChain().length);

Что возвращает:

Is key in secure hardware: true
Number of certificates in the chain: 1

Единственный сертификат в цепочке - это сертификат, который содержит сгенерированный открытый ключ. И у него нет данных расширения сертификата , чтобы подтвердить это.

Как я могу сгенерировать пару ключей, чтобы у меня была цепочка сертификатов с данными расширения для подтверждения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...