在未知prf算法(hmacwithsha256)上加载带有bouncycastle的pkcs12文件失败

gz5pxeao  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(368)

我们有第三方(非我们管理)提供的pkcs#12格式的证书。在从我们的平台将电子邮件发送给此特定客户之前,我们必须使用此证书签署电子邮件。
旧证书没有问题,但由于它即将过期,我们需要用一个新的证书替换它,该证书具有以下密钥加密模式(通过openssl提取):
pbes2、pbkdf2、aes-256-cbc、迭代2000、prf hmacwithsha256
当尝试用bouncycastle安全提供程序加载此密钥库时,出现以下错误

Caused by: java.io.IOException: exception unwrapping private key - java.security.spec.InvalidKeySpecException: Invalid KeySpec: unknown PRF algorithm 1.2.840.113549.2.9
    at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.unwrapKey(Unknown Source)
    at org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad(Unknown Source)
    at java.security.KeyStore.load(KeyStore.java:1445)
    at org.obfuscated.SignEmailGenerator.loadKeyStore(SignEmailGenerator.java:130)

代码(为简洁起见,删除了异常处理和其他实用程序代码):

KeyStore keystore = KeyStore.getInstance("PKCS12", BouncyCastleProvider.PROVIDER_NAME);        
InputStream trustStoreInputStream = MethodHandles.lookup().lookupClass()
                .getResourceAsStream(mailSigningConfiguration.getKeyStorePath());
keystore.load(trustStoreInputStream, mailSigningConfiguration.getKeyStorePassword().toCharArray());

1.2.840.113549.2.9是hmacwithsha256的一个oid,这就引出了这个问题。bouncy castle不支持此算法吗?基于http://www.bouncycastle.org/specifications.html 我想应该是吧?如果它确实支持,为什么我不能加载这样的文件?
jdk 1.8.0 bcmail-jdk15on版本1.66
感谢您的任何意见。
编辑(私钥是文件的一部分):

c:\Programy\OpenSSL-Win64\bin>openssl pkcs12 -info -in PrivateKey.pfx -nodes -nocerts
Enter Import Password:
MAC: sha256, Iteration 2000
MAC length: 32, salt length: 20
PKCS7 Data
Shrouded Keybag: PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: ---ommited---
    Microsoft CSP Name: Microsoft Enhanced Cryptographic Provider v1.0
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN PRIVATE KEY-----
-- data is here, but I've ommited it ---
-----END PRIVATE KEY-----
PKCS7 Encrypted data: PBES2, PBKDF2, AES-256-CBC, Iteration 2000, PRF hmacWithSHA256
Certificate bag
Certificate bag
Certificate bag

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题