Kann keinen Schlüssel im Android-Keystore generieren

Wir haben derzeit ein Problem, bei dem manchmal, wenn ein Benutzer unsere App installiert, die App versucht, auf einen Schlüssel im Keystore zuzugreifen und diesen zu generieren, der Keystore jedoch diese Ausnahme auslöst:

Caused by: java.lang.IllegalStateException: could not generate key in keystore
        at android.security.AndroidKeyPairGenerator.generateKeyPair(AndroidKeyPairGenerator.java:100)
        at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:275)

Wir glauben, es hat mit dem Entsperrmuster zu tun, dass das Telefon den Keystore nicht entsperrt und / oder ein Geräteadministrator den Keystore sperrt.

So wird der Keystore erstellt und wie werden die Schlüssel generiert:

public SecretKeyWrapper(Context context, String alias) throws GeneralSecurityException, IOException {
    mCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
    final KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
    keyStore.load(null);

    if (!keyStore.containsAlias(alias)) {
        generateKeyPair(context, alias);
    }

    final KeyStore.PrivateKeyEntry entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, null);
    mPair = new KeyPair(entry.getCertificate().getPublicKey(), entry.getPrivateKey());
}

private static void generateKeyPair(Context context, String alias) throws GeneralSecurityException {
    final Calendar start = new GregorianCalendar();
    final Calendar end = new GregorianCalendar();
    end.add(Calendar.YEAR, 100);

    final KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(context)
            .setAlias(alias)
            .setSubject(new X500Principal("CN=" + alias))
            .setSerialNumber(BigInteger.ONE)
            .setStartDate(start.getTime())
            .setEndDate(end.getTime())
            .build();

    final KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
    gen.initialize(spec);
    gen.generateKeyPair();
}

Weiß jemand, wie man:

Keystore als Geräteadministrator sperren? Den Schlüsselspeicher entsperren, wenn er von einem Geräteadministrator gesperrt wurde?Oder dieses Problem auf andere Weise reproduzieren?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage