reset login_user on CKR_USER_NOT_LOGGED_IN

This commit is contained in:
Frank Morgner 2015-11-30 02:45:11 +01:00
parent 43a844c949
commit b43ea19320
2 changed files with 30 additions and 8 deletions

View File

@ -695,6 +695,8 @@ C_Sign(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
out:
@ -763,6 +765,8 @@ C_SignFinal(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
out:
@ -906,6 +910,8 @@ CK_RV C_Decrypt(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
sc_log(context, "C_Decrypt() = %s", lookup_enum ( RV_T, rv ));
@ -1023,6 +1029,8 @@ CK_RV C_GenerateKeyPair(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
out:
@ -1128,6 +1136,8 @@ CK_RV C_DeriveKey(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
break;
default:
@ -1253,6 +1263,8 @@ CK_RV C_Verify(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
out:
@ -1310,6 +1322,8 @@ CK_RV C_VerifyFinal(CK_SESSION_HANDLE hSession, /* the session's handle */
} else {
reset_login_state(session->slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
session->slot->login_user = -1;
}
sc_log(context, "C_VerifyFinal() = %s", lookup_enum ( RV_T, rv ));

View File

@ -279,10 +279,12 @@ CK_RV C_Login(CK_SESSION_HANDLE hSession, /* the session's handle */
if (rv == CKR_OK)
rv = slot->p11card->framework->login(slot, userType, pPin, ulPinLen);
if (rv == CKR_OK) {
rv = reset_login_state(session->slot);
rv = reset_login_state(slot);
} else {
reset_login_state(session->slot);
reset_login_state(slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
slot->login_user = -1;
}
}
else {
@ -305,10 +307,12 @@ CK_RV C_Login(CK_SESSION_HANDLE hSession, /* the session's handle */
rv = push_login_state(slot, userType, pPin, ulPinLen);
if (rv == CKR_OK) {
slot->login_user = userType;
rv = reset_login_state(session->slot);
rv = reset_login_state(slot);
} else {
reset_login_state(session->slot);
reset_login_state(slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
slot->login_user = -1;
}
out:
@ -387,10 +391,12 @@ CK_RV C_InitPIN(CK_SESSION_HANDLE hSession, CK_CHAR_PTR pPin, CK_ULONG ulPinLen)
sc_log(context, "C_InitPIN() init-pin result %li", rv);
}
if (rv == CKR_OK) {
rv = reset_login_state(session->slot);
rv = reset_login_state(slot);
} else {
reset_login_state(session->slot);
reset_login_state(slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
slot->login_user = -1;
}
out:
@ -430,10 +436,12 @@ CK_RV C_SetPIN(CK_SESSION_HANDLE hSession,
if (rv == CKR_OK)
rv = slot->p11card->framework->change_pin(slot, pOldPin, ulOldLen, pNewPin, ulNewLen);
if (rv == CKR_OK) {
rv = reset_login_state(session->slot);
rv = reset_login_state(slot);
} else {
reset_login_state(session->slot);
reset_login_state(slot);
}
if (rv == CKR_USER_NOT_LOGGED_IN)
slot->login_user = -1;
out:
sc_pkcs11_unlock();