我试图从运行iaik PKCS#11包装简单的示例代码(1.3版,最新的ATM),但得到NoSuchMethodError的pkcs11Module.initialize电话。
Module pkcs11Module = Module.getInstance("siecap11");
pkcs11Module.initialize(null);
Slot[] slots = pkcs11Module.getSlotList(Module.SlotRequirement.TOKEN_PRESENT);
for (Slot s: slots) {
System.out.println(s.getSlotID());
}
pkcs11Module.finalize(null);
Run Code Online (Sandbox Code Playgroud)
异常堆栈跟踪如下
java.lang.NoSuchMethodError: iaik.pkcs.pkcs11.wrapper.PKCS11.C_Initialize(Ljava/lang/Object;Z)V
at iaik.pkcs.pkcs11.Module.initialize(Module.java:308)
at test.pkcs11.Pkcs11Service.listSlotsWithTokens(Pkcs11Service.java:98)
at test.pkcs11.TestPkcs11Service.testListSlots(TestPkcs11Service.java:35)
Run Code Online (Sandbox Code Playgroud)
类似的代码在 Linux 上运行良好,所以我猜 pkcs11wrapper.dll 有问题。
pkcs11wrapper.dll并且siecap11.dll都在c\windows\system32目录中并且都是 32 位模块。
我尝试了不同的 pkcs#11 提供程序、调试和发布版本的 pkcs11wrapper,但结果是一样的。
pkcs11wrapper.dll 的调试版本生成以下输出:
11/26/13 21:30:50 CALL: entering (in Java_iaik_pkcs_pkcs11_wrapper_PKCS11Implementation_initializeLibrary)
11/26/13 21:30:50 CALL: exiting (in Java_iaik_pkcs_pkcs11_wrapper_PKCS11Implementation_initializeLibrary)
11/26/13 21:30:50 CALL: entering (in Java_iaik_pkcs_pkcs11_wrapper_PKCS11Implementation_connect)
11/26/13 21:30:50 INFO: connect to PKCS#11 module: siecap11 ... (in Java_iaik_pkcs_pkcs11_wrapper_PKCS11Implementation_connect) …Run Code Online (Sandbox Code Playgroud) 我们的 PKCS#11 库缺少 C_CreateObject 的实现。在开始其实现之前,我想知道应该使用 C_CreateObject 而不是 C_GenerateKey/C_GenerateKeyPair 的实例。
我买了一个 ACR122U USB 智能卡读卡器,但它没有 SDK 或除了我在香港 OEM 找到的 x64 统一驱动程序之外可以安装的任何东西。
我想用它来正确访问卡片。我还尝试了几个 PKCS 库,如 PKCS#11.NET,我设法为 4.5 重新编译了它们,但它需要一些未安装在我的系统上的驱动程序 DLL(提供程序)。
我在哪里可以得到其中之一?它列出了这些: eTPKCS11g.dll opensc-pkcs11.dll etpkcs11.dll siecap11.dll rtPKCS11.dll
PKCS#11.NET 的 PKCS 测试应用程序在单独的目录中有两个 eTPKCS11 DLL,但它们不能作为参考添加。和往常一样,该项目带有零文档
我在 nitro key hsm 上创建了一个 Brainpool EC,并希望将其用于 .NET Framework 的加密操作,例如System.Security.Cryptography.ECDiffieHellman.
我用pkcs11-tool --list-objects公钥提取但只得到一个值,即 EC_POINT。
那么,如何得到这个点的坐标呢?
Public Key Object; EC EC_POINT 320 bits
EC_POINT: 0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
EC_PARAMS: 06092b2403030208010109
label: Brainpool #1
ID: 10
Usage: verify
Run Code Online (Sandbox Code Playgroud)
这个 EC_POINT 是 DER 编码的,我用它来提取EC_POINT的真实值。
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
Run Code Online (Sandbox Code Playgroud)