C_GetTokenInfo() 可用于获取有关特定令牌的信息。C_GetTokenInfo() 使用以下语法:
C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo);
slotID 用于标识令牌的插槽。slotID 必须是由 C_GetSlotList() 返回的有效 ID。pInfo 是指向用于接收令牌信息的位置的指针。
如果 pkcs11_softtoken.so 是所安装的唯一提供者,则 C_GetTokenInfo() 将返回以下字段和值:
标记-Sun Software PKCS#11 软令牌。
标志-CKF_DUAL_CRYPTO_OPERATIONS、CKF_TOKEN_INITIALIZED、CKF_RNG、CKF_USER_PIN_INITIALIZED 和 CKF_LOGIN_REQUIRED,这些标志设置为 1。
ulMaxSessionCount-设置为 CK_EFFECTIVELY_INFINITE。
ulMaxRwSessionCount-设置为 CK_EFFECTIVELY_INFINITE。
ulMaxPinLen-设置为 256。
ulMinPinLen-设置为 1。
ulTotalPublicMemory-设置为 CK_UNAVAILABLE_INFORMATION。
ulFreePublicMemory-设置为 CK_UNAVAILABLE_INFORMATION。
ulTotalPrivateMemory-设置为 CK_UNAVAILABLE_INFORMATION。
ulFreePrivateMemory-设置为 CK_UNAVAILABLE_INFORMATION。
除了 CKR_FUNCTION_FAILED、CKR_GENERAL_ERROR、CKR_HOST_MEMORY 和 CKR_OK 以外,C_GetSlotlist() 还可以获取以下返回值:
CKR_ARGUMENTS_BAD
CKR_BUFFER_TOO_SMALL
CKR_CRYPTOKI_NOT_INITIALIZED
CKR_SLOT_ID_INVALID
以下返回值与具有硬件令牌的插件相关:
CKR_DEVICE_ERROR
CKR_DEVICE_MEMORY
CKR_DEVICE_REMOVED
CKR_TOKEN_NOT_PRESENT
CKR_TOKEN_NOT_RECOGNIZED