为了对数据进行签名,我使用了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(..)将读取或匹配的任何类型的密钥/证书,因为它说它找不到任何密钥?此方法在何处搜索密钥或如何解决此问题?顺便说一句,我读过FindObjectsInit-JavaDoc,不能正确理解这一行,这就是我来这里的原因:
pTemplate -要匹配的对象属性值和搜索模板中的属性数(PKCS#11 param: CK_ATTRIBUTE_PTR pTemplate,CK_ULONG ulCount)
这可能听起来很奇怪,但我真的很茫然,被困了几天。
发布于 2021-06-24 07:51:05
PKCS#11规范并不强迫我们使用一些严格组合的数据。
但在大多数实现中,我看到它是二进制编码的OID字段。
还按顺序检查0 (null)字节。
https://stackoverflow.com/questions/68100266
复制相似问题