Pkcs#11 如何使用PKCS11Interop获取加密令牌(智能卡)的密码失败计数

Pkcs#11 如何使用PKCS11Interop获取加密令牌(智能卡)的密码失败计数,pkcs#11,pkcs11interop,Pkcs#11,Pkcs11interop,我让.Net应用程序使用PKCS11Interop库与加密令牌(智能卡)交互,用户可以登录到令牌并生成密钥对和签名 如果用户输入错误的密码,则多次令牌将被锁定,我如何获得尝试登录令牌的剩余次数 在互联网上搜索时,我发现Net.Pkcs11Interop.HighLevelAPI.TokenInfo.TokenFlags包含此信息 CKF_USER_PIN_COUNT_LOW 0x00010000 True if an incorrect user login PIN has been enter

我让.Net应用程序使用PKCS11Interop库与加密令牌(智能卡)交互,用户可以登录到令牌并生成密钥对和签名

如果用户输入错误的密码,则多次令牌将被锁定,我如何获得尝试登录令牌的剩余次数

在互联网上搜索时,我发现Net.Pkcs11Interop.HighLevelAPI.TokenInfo.TokenFlags包含此信息

CKF_USER_PIN_COUNT_LOW 0x00010000 True if an incorrect user login
PIN has been entered at least
once since the last successful
authentication.
CKF_USER_PIN_FINAL_TRY 0x00020000 True if supplying an incorrect
user PIN will cause it to
become locked.
CKF_USER_PIN_LOCKED 0x00040000 True if the user PIN has been locked. User login to the token
is not possible
但是这些都是布尔值,我需要剩余重试的确切次数。

PKCS#11 API没有提供剩余重试的确切次数。正如您正确发现的,它确实通过
TokenFlags
提供了类似的信息:

//获取令牌信息
TokenInfo TokenInfo=slot.GetTokenInfo();
if(tokenInfo.TokenFlags.UserPinCountLow)
{
//自上次成功身份验证以来,至少输入了一次错误的用户登录PIN
}
if(tokenInfo.TokenFlags.UserPinFinalTry)
{
//提供不正确的用户PIN将使其被锁定
}
if(tokenInfo.TokenFlags.UserPinLocked)
{
//用户PIN已锁定。用户无法登录到令牌。
}