Do not try to log in if we already have a user session
This commit is contained in:
@@ -340,8 +340,21 @@ static bool login(private_pkcs11_private_key_t *this, chunk_t keyid, int slot)
|
|||||||
shared_key_t *shared;
|
shared_key_t *shared;
|
||||||
chunk_t pin;
|
chunk_t pin;
|
||||||
CK_RV rv;
|
CK_RV rv;
|
||||||
|
CK_SESSION_INFO info;
|
||||||
bool found = FALSE, success = FALSE;
|
bool found = FALSE, success = FALSE;
|
||||||
|
|
||||||
|
rv = this->lib->f->C_GetSessionInfo(this->session, &info);
|
||||||
|
if (rv != CKR_OK)
|
||||||
|
{
|
||||||
|
DBG1(DBG_CFG, "C_GetSessionInfo failed: %N", ck_rv_names, rv);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
if (info.state != CKS_RO_PUBLIC_SESSION &&
|
||||||
|
info.state != CKS_RW_PUBLIC_SESSION)
|
||||||
|
{ /* already logged in with another session, skip */
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
id = identification_create_from_encoding(ID_KEY_ID, keyid);
|
id = identification_create_from_encoding(ID_KEY_ID, keyid);
|
||||||
enumerator = lib->credmgr->create_shared_enumerator(lib->credmgr,
|
enumerator = lib->credmgr->create_shared_enumerator(lib->credmgr,
|
||||||
SHARED_PIN, id, NULL);
|
SHARED_PIN, id, NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user