java - 如何使用 java 设置 keystore 的加密服务提供程序

标签 java service cryptography keystore provider

使用 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 软件 key 服务提供商"-out "${DIR}/${NAME}.p12"

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

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

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

最佳答案

我已经找到了如何设置 Microsoft CSP 属性,您必须执行此操作:

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

关于java - 如何使用 java 设置 keystore 的加密服务提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37150964/

相关文章:

android - 在应用程序处于前台时保持 android 服务处于 Activity 状态

Java:我应该总是用 ArrayLists 替换 Arrays 吗?

node.js - Node 窗口运行子进程.exe

java - Lucene:使用 PrefixQuery 计算分数

api - 以编程方式连接到 TFS 出现 "TF30063: You are not authorized"错误

java - JCE中是否有任何机制来指定 key 生成生命周期( session key 或永久 key )

c - 我的解密器不工作

c# - 验证失败(C# .NET HMACSHA256 类)

java - Android Studio 如何循环播放MediaPlayer中的歌曲

java - 如何让 java.awt.Robot 响应鼠标拖动事件?