Skip to content

Commit db37671

Browse files
committed
Use PIN from refresh URI when taking login session
Signed-off-by: Jakub Zelenka <[email protected]>
1 parent c8a69a6 commit db37671

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

src/objects.c

+8-6
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,8 @@ static void destroy_key_cache(P11PROV_OBJ *obj, P11PROV_SESSION *session)
301301
if (session) {
302302
sess = p11prov_session_handle(session);
303303
} else {
304-
ret = p11prov_take_login_session(obj->ctx, obj->slotid, &_session);
304+
ret = p11prov_take_login_session(obj->ctx, obj->slotid,
305+
obj->refresh_uri, &_session);
305306
if (ret != CKR_OK) {
306307
P11PROV_debug("Failed to get login session. Error %lx", ret);
307308
return;
@@ -369,7 +370,8 @@ static void cache_key(P11PROV_OBJ *obj)
369370
return;
370371
}
371372

372-
ret = p11prov_take_login_session(obj->ctx, obj->slotid, &session);
373+
ret = p11prov_take_login_session(obj->ctx, obj->slotid, obj->refresh_uri,
374+
&session);
373375
if (ret != CKR_OK || session == NULL) {
374376
P11PROV_debug("Failed to get login session. Error %lx", ret);
375377
return;
@@ -3601,7 +3603,7 @@ static CK_RV p11prov_store_rsa_public_key(P11PROV_OBJ *key)
36013603
goto done;
36023604
}
36033605

3604-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3606+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri, &session);
36053607
if (rv != CKR_OK) {
36063608
goto done;
36073609
}
@@ -3670,7 +3672,7 @@ static CK_RV p11prov_store_ec_public_key(P11PROV_OBJ *key)
36703672
goto done;
36713673
}
36723674

3673-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3675+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri, &session);
36743676
if (rv != CKR_OK) {
36753677
goto done;
36763678
}
@@ -3858,7 +3860,7 @@ static CK_RV p11prov_store_rsa_private_key(P11PROV_OBJ *key,
38583860
goto done;
38593861
}
38603862

3861-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3863+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri, &session);
38623864
if (rv != CKR_OK) {
38633865
goto done;
38643866
}
@@ -3954,7 +3956,7 @@ static CK_RV p11prov_store_ec_private_key(P11PROV_OBJ *key,
39543956
goto done;
39553957
}
39563958

3957-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3959+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri, &session);
39583960
if (rv != CKR_OK) {
39593961
goto done;
39603962
}

src/session.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,7 @@ CK_RV p11prov_get_session(P11PROV_CTX *provctx, CK_SLOT_ID *slotid,
10451045
}
10461046

10471047
CK_RV p11prov_take_login_session(P11PROV_CTX *provctx, CK_SLOT_ID slotid,
1048-
P11PROV_SESSION **_session)
1048+
P11PROV_URI *uri, P11PROV_SESSION **_session)
10491049
{
10501050
P11PROV_SLOTS_CTX *slots = NULL;
10511051
P11PROV_SLOT *slot = NULL;
@@ -1071,7 +1071,7 @@ CK_RV p11prov_take_login_session(P11PROV_CTX *provctx, CK_SLOT_ID slotid,
10711071
goto done;
10721072
}
10731073

1074-
ret = slot_login(slot, NULL, NULL, NULL, false, _session);
1074+
ret = slot_login(slot, uri, NULL, NULL, false, _session);
10751075

10761076
done:
10771077
p11prov_return_slots(slots);

src/session.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CK_RV p11prov_get_session(P11PROV_CTX *provctx, CK_SLOT_ID *slotid,
1818
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg,
1919
bool reqlogin, bool rw, P11PROV_SESSION **session);
2020
CK_RV p11prov_take_login_session(P11PROV_CTX *provctx, CK_SLOT_ID slotid,
21-
P11PROV_SESSION **_session);
21+
P11PROV_URI *uri, P11PROV_SESSION **_session);
2222
void p11prov_return_session(P11PROV_SESSION *session);
2323

2424
CK_RV p11prov_context_specific_login(P11PROV_SESSION *session, P11PROV_URI *uri,

0 commit comments

Comments
 (0)