问题标签 [iaik-jce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7269 浏览

java - 无法使用 IAIK PKCS11 Wrapper 加载 PKCS11 驱动程序

我正在使用以下内容:

  • 视窗 7 64 位
  • JDK 7 64 位
  • JRE 7 64位

新的有趣的 JRE 7 64 位不再支持 Sun PKCS11(它在包 'sun.security.pkcs11' 中)。最大的问题是我们公司产品的最终用户可能安装了任何版本的JRE。

所以我必须将现有的代码换成“Sun PKCS11”到“ IAIK PKCS11 Wrapper ”。IAIK 的包装器就是这样工作的:

PKI 令牌驱动程序动态链接库由 PKI USB 令牌制造商提供,实际名称为“ca2-v34.dll”。加载本机驱动程序的方法在程序员手册中描述如下:

在上面代码中标记的行引发了异常,详细信息如下:java.io.IOException: %1 is not a valid Win32 application。ca2-v34.dll

这个异常肯定意味着 IAIK 库找到了 .dll 文件,但它不兼容。我被困在这个瓶颈上。

0 投票
1 回答
292 浏览

java - How can I set the version number of iaik.x509.X509Certificate explicitly?

The documentation at this page states that

Any value may be set using the corresponding set<Value> method.

However, I am not sure how to interpret this statement. I have tried the following but none of them compile, and nor did I expect them to.

What is the correct method call to set the version number explicitly?

0 投票
0 回答
1155 浏览

java - PKCS #7 加密信封签名验证错误:消息哈希

我想提交一个关于加密标准 PKCS #7 的问题。我有一个文件“PATH_DOC_NF1”,我必须创建一个 PKCS #7 加密信封。使用 KeyStore 和 AIK-JCE(基于 Java 的加密服务提供者)。

我所拥有的 X.509 证书如下:

版本:3
序列号:231944
签名算法:sha1WithRSAEncryption (1.2.840.113549.1.1.5)
发行人:CN=……,OU=…………,O=……,C=IT
有效期不早于:Fri Apr 01 09 :20:15 CEST 2011
不晚于:Tue Apr 01 09:20:13 CEST 2014
主题:CN=TRANTN59T46H703C-001,OU=……,O=…………,C=IT
Sun RSA 公钥,1024 位
模数: ……<br />公开指数:……<br />证书指纹(MD5):…………<br />证书指纹(SHA-1):…………<br />

扩展:4

运行下面编写的代码:

我收到以下错误:

java.security.SignatureException:签名验证错误:消息哈希!
在 iaik.pkcs.pkcs7.SignedDataStream.verify(Unknown Source)
at message.PKCS7.main(PKCS7.java:183)

为了完整起见,我插入了创建的 Signinfo:

版本:1序列号
:231944
发行者:CN=…………,OU=…………,O=……,C=IT
摘要算法:SHA (1.3.14.3.2.26)
摘要加密算法:rsaEncryption (1.2.840.113549.1.1.1) encrypted_digest :
128 字节 [7E:B4:19: 95 : 77 ... ] 2E...







有人可以帮助我吗?

0 投票
1 回答
2955 浏览

java - 如何为 pkcs11 初始化提供程序?

我想使用 nss 作为 pkcs11 的提供者,并且我正在使用 java、oracle JRE 和 ubuntu 64bit 进行编码。我尝试了 2 种不同的包装器,iaik 和 SunPKCS11,但我都遇到了同样的问题。对于我的提供者,我首先尝试使用 libnss3.so 并且每次在实例化模块中遇到 IOException。然后我使用 libsoftokn3.so 并成功实例化了一个模块。但是现在我在初始化时遇到了这个异常:“CKR_ARGUMENTS_BAD”

这是我的代码,第一个使用 iaik,第二个使用 SunPKCS11

iaiak:

SunPKCS11:

和文件“cfg”:

0 投票
1 回答
762 浏览

java - 在 Java 中使用 iaik_jce.jar 解密 pfx 或 p12 会引发无法解密 PrivateKey!例外

我从第三方获得了 iaik_jce.jar 文件。我正在使用它来解密 pfx 文件。当我调用解密 api 时,我无法解密 PrivateKey!例外。下面是我用来解密的一段代码。

下面是异常堆栈跟踪

我是否需要对使用 iaik_jce.jar 文件进行解密进行任何配置更改。

0 投票
1 回答
3724 浏览

java - IAIK PCKS11Provider VS IAIK PKCS11Wrapper 密钥生成

我想了解通过 IAIK PKCS11Wrapper 生成 RSA 2048 位密钥之间的区别,我使用的是名为 的示例类GenerateKeyPair.java,而 IAIK PKCS11Provider 也使用 IAIK PKCS11Wrapper 并通过名为 的示例类生成密钥对KeyPairGeneratorDemo.java

我正在使用带有 USB 令牌 ACS CryptoMate64 的上述库和类。

当我使用 PKCS11Wrapper 并加载我的 pkcs11.dll 时,一切正常。生成密钥对。

但是当我试图通过 IAIK PKCS11Provider 类做同样的事情时,它在尝试生成密钥对时抛出异常keyPair_ = keyPairGenerator.generateKeyPair();

这两种方法有什么区别?为什么通过 IAIK PKCS11Provider 生成密钥对会抛出 CKR_ATTRIBUTE_VALUE_INVALID?我知道这个常数在 PKCS11 标准中意味着什么,但我不完全理解为什么当 IAIK PKCS11Wrapper 成功使用它时会抛出它......

我还附上了我正在使用的两个类。

生成密钥对.java

KeyPairGeneratorDemo.java

0 投票
1 回答
3848 浏览

java - IAIK PKCS#11 包装无法初始化

我正在使用来自网络的代码:

带参数:pkcs11wrapper.dll 和 VM 参数 -Djava.library.path=C:/Temp。

代码中的“C:/Temp/pkcs11wrapper.dll”不是必需的......

我得到的是:

我的 JRE 是 64 位,dll 也是 64 位(用 32 位版本替换它会给出关于错误 dll 版本的明确定义的错误)JRE 是 v1.7.0.21,iaik 包装器 v1.2.18。如果我使用 32 位 JRE 和 32 位 dll,错误是一样的。

这里有什么问题?

我得到了 iaikPkcs11Wrapper v1.3 的源代码,当在 DEBUG 模式下运行时,我到达 line : PKCS11Connector.connectToPKCS11Module(String, String) line: 92
where return new PKCS11Implementation(pkcs11ModulePath, pkcs11WrapperPath);gets 被调用。尽管源中存在 PKCS11Implementation 类,但调试器不想跳转到构造函数代码中:

这些结果是在运行仅包含 IAIK 源和测试类的项目时实现的。

0 投票
1 回答
355 浏览

java - 使用 iaik pkcs7 EnvelopedData 进行河豚加密

我正在将我的模块从充气城堡迁移到iaik pkcs7。我需要结合 IAIK 库的 iaik.pkcs.pkcs7.EnvelopedDataStream 使用河豚、双鱼和想法加密算法。Idea 加密算法 ID 存在于 IAIK 的 AlgorithmID 类中,但不能直接实现(可能是因为密钥长度可变)。Blowfish 作为单独的密码类存在,但我无法找到一种将它与封装数据一起使用的方法(这很重要,因为我将使用公钥加密方法)。我实际上可以使用河豚进行加密,然后使用封装数据和诸如 aes 之类的算法进行包装并发送,但在这种情况下,接收者将没有算法信息。密钥可以与接收信息一起传递。

如果有人可以向我展示基本的方式,我可能会继续。

提前致谢

阿特拉亚

0 投票
3 回答
5492 浏览

java - iaik pkcs#11 包装器和 java.lang.NoSuchMethodError

我正在尝试从 iaik pkcs#11 包装器(1.3 版,最新的 atm)运行一个简单的示例代码,但随时NoSuchMethodError待命pkcs11Module.initialize

异常堆栈跟踪如下

类似的代码在 Linux 上运行良好,所以我猜 pkcs11wrapper.dll 有问题。

pkcs11wrapper.dllsiecap11.dllc\windows\system32目录中,并且都是 32 位模块。

我尝试了不同的 pkcs#11 提供程序、pkcs11wrapper 的调试和发布版本,但结果是相同的。

pkcs11wrapper.dll 的调试版本生成以下输出:

智能卡附带的实用程序运行良好,opensc pkcs11-tool 也是如此。

编辑:

使用版本 1.2.17 的 pkcs11 包装库及其随附的 dll,上面的代码可以正常工作。但最初的问题仍未解决。

编辑2:

SubOptimal 建议的以下代码生成以下输出。

输出:

0 投票
1 回答
930 浏览

java - IAIK lib 验证签名数据中的异常

我使用 IAIK PKCS11 库。我想通过 USB 令牌上的证书对数据进行签名和验证。我在验证签名数据中有问题。我通过 Str_CertName(Certificate) 签署 plainData。我使用 java.security 和 iaik.pkcs。

这是我的代码: