Skip to content

Commit b3b309d

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

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

src/objects.c

+12-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,
374+
obj->refresh_uri, &session);
373375
if (ret != CKR_OK || session == NULL) {
374376
P11PROV_debug("Failed to get login session. Error %lx", ret);
375377
return;
@@ -3601,7 +3603,8 @@ 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,
3607+
&session);
36053608
if (rv != CKR_OK) {
36063609
goto done;
36073610
}
@@ -3670,7 +3673,8 @@ static CK_RV p11prov_store_ec_public_key(P11PROV_OBJ *key)
36703673
goto done;
36713674
}
36723675

3673-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3676+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri,
3677+
&session);
36743678
if (rv != CKR_OK) {
36753679
goto done;
36763680
}
@@ -3858,7 +3862,8 @@ static CK_RV p11prov_store_rsa_private_key(P11PROV_OBJ *key,
38583862
goto done;
38593863
}
38603864

3861-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3865+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri,
3866+
&session);
38623867
if (rv != CKR_OK) {
38633868
goto done;
38643869
}
@@ -3954,7 +3959,8 @@ static CK_RV p11prov_store_ec_private_key(P11PROV_OBJ *key,
39543959
goto done;
39553960
}
39563961

3957-
rv = p11prov_take_login_session(key->ctx, slot, &session);
3962+
rv = p11prov_take_login_session(key->ctx, slot, key->refresh_uri,
3963+
&session);
39583964
if (rv != CKR_OK) {
39593965
goto done;
39603966
}

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)