【问题标题】:How to set Cryptography Service Provider for keystore using java如何使用 java 为 keystore 设置 Cryptography Service Provider
【发布时间】:2016-05-11 00:10:15
【问题描述】:

使用 openssl shell 命令我可以在导出 pkcs12 文件时传递 -CSP 参数来定义自定义提供程序。

例如:

openssl pkcs12 -export -in "${DIR}/${NAME}.crt" -passin pass:"${PASSWD_KEY}" -passout pass:"${PASSWD_KEY}" -inkey "${DIR}/ ${NAME}.key" -name "${NAME}" -certfile ${CAFILES} -CSP "ECDSA_p256#Microsoft Software Key Service Provider" -out "${DIR}/${NAME}.p12"

我需要为使用 Java API 和充气城堡生成的密钥库设置此提供程序。 我正在使用 Keystore 和 X509v3CertificateBuilder 类。

使用Java API生成pkcs12时如何设置提供者?

注意: 我知道 Keystore.getInstance 方法接收指定提供程序的字符串,但是,此字符串表示充气城堡样式提供程序,而不是在 Windows 应用程序中启用椭圆曲线的提供程序。

【问题讨论】:

  • 你为什么需要这个?
  • 为了在使用 Java 创建的 PKCS12 密钥库的 .Net 应用程序中使用椭圆曲线加密算法。

标签: java service cryptography keystore provider


【解决方案1】:

我找到了如何设置 Microsoft CSP 属性,你必须这样做:

PKCS12BagAttributeCarrier bagAttr = (PKCS12BagAttributeCarrier)privateKey; 
bagAttr.setBagAttribute( 
MicrosoftObjectIdentifiers.microsoft.branch("17").branch("1"), 
new DERBMPString("ECDSA_P256#Microsoft Software key Service Provider"));

【讨论】:

    猜你喜欢
    • 2012-05-22
    • 2021-07-14
    • 2012-05-02
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多