我正在尝试将一些PCSC代码转换为C中的PKCS#11调用。在PCSC中,要访问EF,我必须首先选择它,然后读取或写入它。我正在查看PKCS#11文档,但我没有看到相应的对象管理功能。最接近似乎是C_GetAttributeValue和C_SetAttributeValue,但我不确定如何使用它们,即使在查看一些示例代码之后。例如,如何选择要访问的数据对象?另外,我该如何设置模板?一些示例C代码会有所帮助。
谢谢!
编辑:经过一些研究后,似乎是SelectFile()大致映射到C_FindObjectsInit()和C_FindObjects(),它返回一个CK_OBJECT_HANDLE,而ReadFile()大致映射到C_GetAttributeValue()。我正在尝试使用此模型,但我第一次调用C_FindObjectsInit()会返回CKR_ARGUMENTS_BAD。这是我的来源:
unsigned char *tokenLabel;
CK_ATTRIBUTE labelTemplate[] = {
{CKA_LABEL, NULL_PTR, 0}
};
tokenLabel = (unsigned char *) malloc(labelLen);
// Sets the tokenLabel here
labelTemplate[0].pValue = tokenLabel;
labelTemplate[0].ulValueLen = labelLen;
ret = C_FindObjectsInit(hSession, labelTemplate, 1);
if(ret != CKR_OK)
{
return -1;
}
我做错了什么?我只是想找到一个与特定标签匹配的对象。