java - PKCS11 类异常中的 C_FindObjectsInit(..)
问题描述
为了签署数据,我使用了 signserver 开源代码。我正在探索一个遗留代码,它在这个地方给出错误:
Module.getPKCS11Module().C_FindObjectsInit(session.getSessionHandle(), attributes,true);
Module
类来自哪里iaikpkcs11Wrapper.jar (package: iaik.pkcs.pkcs11)
当我进一步导航时,PKCS11
界面具有void C_FindObjectsInit(long var1, CK_ATTRIBUTE[] var3, boolean var4)
上面提到的这种方法。
此外,attributes
参数的构造如下:
CK_ATTRIBUTE[] attributes = new CK_ATTRIBUTEKeyStoreContainerBase[2];
attributes[0] = new CK_ATTRIBUTE();
attributes[0].type = PKCS11Constants.CKA_CLASS;
attributes[0].pValue = new Long(PKCS11Constants.CKO_SECRET_KEY);
attributes[1] = new CK_ATTRIBUTE();
attributes[1].type = PKCS11Constants.CKA_ID;
attributes[1].pValue = id; //id is byteArray. For this param's value the error is causing
我的问题是,我是否需要存储任何类型的密钥/证书从哪里C_FindObjectsInit(..)
读取或匹配,因为它说它找不到任何密钥?此方法在哪里搜索密钥或如何解决此问题?顺便说一句,我已经阅读了C_FindObjectsInit-JavaDoc并且无法正确理解这一行,这就是我在这里的原因:
pTemplate - 要匹配的对象属性值和搜索模板中的属性数(PKCS#11 参数:CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount)
[这听起来可能很奇怪,但我真的很空白,卡了几天]
解决方案
PKCS#11 规范不强制我们使用一些严格组合的数据。
但在大多数实现中,我看到它是二进制编码的 OID 字段。
还要按顺序检查 0(空)字节。
推荐阅读
- java - Spring Boot 启动器依赖项是否已准备好生产?
- postgresql - 如何阻止postgresql重新启动?
- python - 在 ubuntu 16.04 中安装 pip 后出现错误“/usr/bin/python3.9: bad interpreter: No such file or directory”
- javascript - 如何在数组中获取对象的键?
- android - adb tcpip 与 ngrok
- amazon-web-services - 使用 cognito 用户池恢复已删除的放大后端
- javascript - 将字符串保存到文本文件
- java - 比较java中的两个时间字符串
- javascript - 如何在此 javascript 代码中使用变量替换
- python - 何在 Windows 上运行 .PY 文件?