Java 在Android Oreo上加载密钥到密钥库失败

Java 在Android Oreo上加载密钥到密钥库失败,java,android,bouncycastle,android-8.0-oreo,Java,Android,Bouncycastle,Android 8.0 Oreo,我正在使用.p12证书对XML SOAP请求进行签名。对于加载证书,我使用以下代码: private void loadP12(byte[] p12data, char[] password) { try { KeyStore ks=KeyStore.getInstance("PKCS12"); ks.load(new ByteArrayInputStream(p12data), password); ... } 这在Oreo之前的An

我正在使用.p12证书对XML SOAP请求进行签名。对于加载证书,我使用以下代码:

private void loadP12(byte[] p12data, char[] password)  {
    try {
        KeyStore ks=KeyStore.getInstance("PKCS12");
        ks.load(new ByteArrayInputStream(p12data), password);
        ...
}
这在Oreo之前的Android上非常有效。然而,在Android 8上,我在ks.load()上遇到以下异常:

Caused by: java.io.IOException: exception unwrapping private key - java.security.InvalidKeyException: Invalid key encoding.
    at com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.unwrapKey(PKCS12KeyStoreSpi.java:644)
    at com.android.org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(PKCS12KeyStoreSpi.java:875)
    at java.security.KeyStore.load(KeyStore.java:1484)
    at loadP12(EetRegisterRequest.java:1352)
证书文件可以在这里找到。p12文件都有密码eet

这里有什么问题?证书文件应该是正常的。这可能和这里提到的问题相似吗


谢谢

问题出在证书上。规范化后问题不再存在

你找到解决办法了吗?我也有同样的问题。不,我没有…如果我通过你的链接()规范化证书,那么它就可以工作了。我通知出版商:-)已解决,密钥库将由出版商修复,并由MFCR确认。您能否将此评论作为答案,以便我们将其标记为已解决?非常感谢你的帮助