在Android Oreo上加载密钥到KeyStore失败[关闭]

问题描述 投票:2回答:1

我使用.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)

证书文件可以在这里找到http://www.etrzby.cz/assets/cs/prilohy/EET_CA1_Playground_v1.zip所有.p12文件都有密码eet。

这可能是什么问题?证书文件应该没问题。这可能是像这里提到的http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8175251类似的问题吗?

谢谢

java android bouncycastle android-8.0-oreo
1个回答
0
投票

问题出在证书中。归一化后问题不再存在。

© www.soinside.com 2019 - 2024. All rights reserved.