首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >opensc-pkcs11 11没有得到任何令牌

opensc-pkcs11 11没有得到任何令牌
EN

Stack Overflow用户
提问于 2014-04-02 14:14:49
回答 1查看 4.3K关注 0票数 0

我正在用opensc-pkcs11.so在redhat linux中编写一个示例程序。这是用于AES加密/解密的纯软件实现。我没有用任何卡。我的程序成功地利用了密码,但是给出了CKR_TOKEN_NOT_PRESENT错误。给出了代码片段。

代码语言:javascript
复制
CK_FUNCTION_LIST_PTR pFunctionList; 
CK_C_Initialize pC_Initialize; 
CK_RV rv; 

rv = C_GetFunctionList(&pFunctionList); 
if(rv == CKR_OK)
pC_Initialize = pFunctionList -> C_Initialize; 

rv = (*pC_Initialize)(NULL_PTR);

    CK_ULONG ulSlotCount;
    CK_SLOT_ID_PTR pSlotList;

    CK_C_GetSlotList pC_GetSlotList;
    pC_GetSlotList = pFunctionList -> C_GetSlotList; 
    rv = (*pC_GetSlotList)(CK_FALSE, NULL_PTR, &ulSlotCount);

    /* Get list of all slots */
    //rv = C_GetSlotList(FALSE, NULL_PTR, &ulSlotCount);

    if (rv == CKR_OK) 
    {
        cout<<"ulSlotCount="<<ulSlotCount<<endl;
        pSlotList =
        (CK_SLOT_ID_PTR)
        malloc(ulSlotCount*sizeof(CK_SLOT_ID));
        //rv = C_GetSlotList(FALSE, pSlotList, &ulSlotCount);
        rv = (*pC_GetSlotList)(CK_FALSE, pSlotList, &ulSlotCount);
        if (rv == CKR_OK) 
        {
        /* Now use that list of all slots */
            l_lSlotId = pSlotList[0];
        cerr<<"lSlotId="<<l_lSlotId<<endl;


        }

        CK_SLOT_INFO slotInfo;
        CK_TOKEN_INFO tokenInfo;
        CK_C_GetSlotInfo pC_GetSlotInfo;
        pC_GetSlotInfo = pFunctionList -> C_GetSlotInfo;

        /* Get slot information for first slot */
        rv = (*pC_GetSlotInfo)(pSlotList[0], &slotInfo);
        fprintf(stderr, "pC_GetSlotInfo: rv = 0x%.8X\n", rv);
        if(rv == CKR_OK)
                   {
        /* Get token information for first slot */
            cerr<<"pC_GetSlotInfo OK"<<endl;

            CK_C_GetTokenInfo pC_GetTokenInfo;
            pC_GetTokenInfo = pFunctionList -> C_GetTokenInfo;
            rv = (*pC_GetTokenInfo)(pSlotList[0], &tokenInfo);
        }
        fprintf(stderr, "pC_GetTokenInfo: rv = 0x%.8X\n", rv);
        if (rv == CKR_TOKEN_NOT_PRESENT) 
        {
            cerr<<"CKR_TOKEN_NOT_PRESENT"<<endl;
        }

        free(pSlotList);
    }

有人能知道发生了什么事吗?我相信opensc 11也可以用于软件实现。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-02 18:43:56

随PKCS#11一起提供的OpenSC库“仅作为一种驱动程序”用于一堆通用的密码智能卡,因此除非您有一个物理读卡器连接到您的计算机上,否则它将找不到任何插槽。如果您正在寻找一个纯软件PKCS#11实现,那么我认为您应该从我对你上一个问题的回答中选择一个。如果它们都不适合您的需要,那么也许您可以使用一些通用的密码库,如OpenSSLGnuTLS博坦

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22814275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档