android.security.KeyStoreException: Ungültiger Key Blob

Ich kann auf Android keinen (privaten) Schlüssel von KeyStore beziehen. Das Problem tritt hauptsächlich bei Samsung-Geräten (S6, S6 Edge) und Android 6 auf.

android.security.KeyStoreException: Ungültiger Key Blob

wird ausgelöst, wenn die folgende Zeile aufgerufen wird (wobei Alias der Name für den Geschäftsschlüssel ist).

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)keyStore.getEntry(alias, null);

Der KeyStore selbst wird von @ bezog

KeyStore.getInstance("AndroidKeyStore");

And-Schlüssel wird mit der folgenden Methode generiert:

private static void createKey(String alias, String subject, KeyStore keyStore, BigInteger serialNumber, Date startDate, Date endDate, String algorithm, String keyStoreProvider, Context context)
            throws KeyStoreException, NoSuchProviderException, NoSuchAlgorithmException, InvalidAlgorithmParameterException {
    if (keyStore.containsAlias(alias)) {
        // Key already exists.
        return;
    }

    // Generate keys.
    KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(context)
            .setAlias(alias)
            .setSubject(new X500Principal(subject))
            .setSerialNumber(serialNumber)
            .setStartDate(startDate)
            .setEndDate(endDate)
            .build();

    KeyPairGenerator generator = KeyPairGenerator.getInstance(algorithm, keyStoreProvider);
    generator.initialize(spec);

    KeyPair keyPair = generator.generateKeyPair();
}

Wo Algorithmus ist "RSA" und keyStoreProvider ist "AndroidKeyStore".

Der Teil des Stacktrace:

android.security.KeyStoreException: Invalid key blob
       at android.security.KeyStore.getKeyStoreException(KeyStore.java:939)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePublicKeyFromKeystore(AndroidKeyStoreProvider.java:216)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStoreKeyPairFromKeystore(AndroidKeyStoreProvider.java:252)
       at android.security.keystore.AndroidKeyStoreProvider.loadAndroidKeyStorePrivateKeyFromKeystore(AndroidKeyStoreProvider.java:263)
       at android.security.keystore.AndroidKeyStoreSpi.engineGetKey(AndroidKeyStoreSpi.java:93)
       at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:372)
       at java.security.KeyStore.getEntry(KeyStore.java:645)

Die Ausnahme verursacht java.security.UnrecoverableKeyException: Informationen zu privatem Schlüssel konnten nicht abgerufen werden geworfen werden.

Ich konnte keine näheren Informationen zu "Invalid key blob" finden, nur dass die Nachricht selbst hier definiert ist:https: //android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/keymaster/KeymasterDefs.jav

Antworten auf die Frage(2)

Ihre Antwort auf die Frage