首页 > 解决方案 > KeyStore.setKeyEntry give java.security.KeyStoreException: Failed to store private key, then upgrade to Android 9 Pie

问题描述

我的代码

    try {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); 
        KeyPair keyPair = keyGen.generateKeyPair(); 
        RSAKey privateKeyResult = (RSAKey) keyPair.getPrivate();
        if(keyStore!=null) {
            keyStore.setKeyEntry(alias, (Key) privateKeyResult, null, new Certificate[]{certificate});
        ...
    } catch (KeyStoreException e) {
        logger.error("Error in insertion to keystore", e);
    }

当用户将 Android 操作系统从 Oreo 升级到 Pie (9.0) 时不起作用。

得到异常:

java.security.KeyStoreException: Failed to store private key
    at android.security.keystore.AndroidKeyStoreSpi.setPrivateKeyEntry(AndroidKeyStoreSpi.java:536)
    at android.security.keystore.AndroidKeyStoreSpi.engineSetKeyEntry(AndroidKeyStoreSpi.java:278)
    at java.security.KeyStore.setKeyEntry(KeyStore.java:1179)
...

Caused by: android.security.KeyStoreException: Memory allocation failed
    at android.security.KeyStore.getKeyStoreException(KeyStore.java:851)
    ... 19 more

请指教

标签: androidsecuritykeystoreandroid-9.0-pie

解决方案


推荐阅读