Skip to content

Commit 9595cf5

Browse files
committed
Address skoll review and fix CI
- src/internal.c — WP11_Object_Find private-access check now uses slot->lock consistently (matches WP11_Slot_IsLoggedIn pattern) instead of conditionally using token.lock only for non-token objects - tests/pkcs11mtt.c — Added CKA_SENSITIVE to test key templates so they work with the new CKA_SENSITIVE=TRUE default from F-2368. When extractable=TRUE, sensitive is set FALSE so tests can read key values. When extractable=FALSE, sensitive stays TRUE matching the hardened default. Applied to test_attribute, get_generic_key, get_rsa_priv_key, get_ecc_priv_key, and get_dh_priv_key.
1 parent f454a99 commit 9595cf5

2 files changed

Lines changed: 11 additions & 4 deletions

File tree

src/internal.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9175,16 +9175,14 @@ int WP11_Object_Find(WP11_Session* session, CK_OBJECT_HANDLE objHandle,
91759175
/* Enforce CKA_PRIVATE: reject private objects from public sessions */
91769176
if ((obj->opFlag & WP11_FLAG_PRIVATE) == WP11_FLAG_PRIVATE) {
91779177
int loginState;
9178-
if (!onToken)
9179-
WP11_Lock_LockRO(&session->slot->token.lock);
9178+
WP11_Lock_LockRO(&session->slot->lock);
91809179
loginState = session->slot->token.loginState;
91819180
if (!WP11_Slot_Has_Empty_Pin(session->slot) &&
91829181
(loginState == WP11_APP_STATE_RW_PUBLIC ||
91839182
loginState == WP11_APP_STATE_RO_PUBLIC)) {
91849183
ret = BAD_FUNC_ARG;
91859184
}
9186-
if (!onToken)
9187-
WP11_Lock_UnlockRO(&session->slot->token.lock);
9185+
WP11_Lock_UnlockRO(&session->slot->lock);
91889186
}
91899187
if (ret == 0)
91909188
*object = obj;

tests/pkcs11mtt.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ static CK_RV test_attribute(void* args)
487487
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
488488
{ CKA_KEY_TYPE, &genericKeyType, sizeof(genericKeyType) },
489489
{ CKA_EXTRACTABLE, &ckTrue, sizeof(ckTrue) },
490+
{ CKA_SENSITIVE, &ckFalse, sizeof(ckFalse) },
490491
{ CKA_VALUE, keyData, sizeof(keyData) },
491492
};
492493
CK_ULONG tmplCnt = sizeof(tmpl) / sizeof(*tmpl);
@@ -786,10 +787,12 @@ static CK_RV get_generic_key(CK_SESSION_HANDLE session, unsigned char* data,
786787
CK_OBJECT_HANDLE* key)
787788
{
788789
CK_RV ret;
790+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
789791
CK_ATTRIBUTE generic_key[] = {
790792
{ CKA_CLASS, &secretKeyClass, sizeof(secretKeyClass) },
791793
{ CKA_KEY_TYPE, &genericKeyType, sizeof(genericKeyType) },
792794
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
795+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
793796
{ CKA_SIGN, &ckTrue, sizeof(ckTrue) },
794797
{ CKA_VERIFY, &ckTrue, sizeof(ckTrue) },
795798
{ CKA_VALUE, data, len },
@@ -2055,6 +2058,7 @@ static CK_RV get_rsa_priv_key(CK_SESSION_HANDLE session, unsigned char* privId,
20552058
CK_OBJECT_HANDLE* obj)
20562059
{
20572060
CK_RV ret;
2061+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
20582062
CK_ATTRIBUTE rsa_2048_priv_key[] = {
20592063
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
20602064
{ CKA_KEY_TYPE, &rsaKeyType, sizeof(rsaKeyType) },
@@ -2068,6 +2072,7 @@ static CK_RV get_rsa_priv_key(CK_SESSION_HANDLE session, unsigned char* privId,
20682072
{ CKA_COEFFICIENT, rsa_2048_u, sizeof(rsa_2048_u) },
20692073
{ CKA_PUBLIC_EXPONENT, rsa_2048_pub_exp, sizeof(rsa_2048_pub_exp) },
20702074
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
2075+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
20712076
{ CKA_TOKEN, &ckTrue, sizeof(ckTrue) },
20722077
{ CKA_ID, privId, privIdLen },
20732078
};
@@ -3401,10 +3406,12 @@ static CK_OBJECT_HANDLE get_ecc_priv_key(CK_SESSION_HANDLE session,
34013406
CK_OBJECT_HANDLE* obj)
34023407
{
34033408
CK_RV ret;
3409+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
34043410
CK_ATTRIBUTE ecc_p256_priv_key[] = {
34053411
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
34063412
{ CKA_KEY_TYPE, &eccKeyType, sizeof(eccKeyType) },
34073413
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
3414+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
34083415
{ CKA_VERIFY, &ckTrue, sizeof(ckTrue) },
34093416
{ CKA_EC_PARAMS, ecc_p256_params, sizeof(ecc_p256_params) },
34103417
{ CKA_VALUE, ecc_p256_priv, sizeof(ecc_p256_priv) },
@@ -4190,10 +4197,12 @@ static CK_OBJECT_HANDLE get_dh_priv_key(CK_SESSION_HANDLE session,
41904197
CK_OBJECT_HANDLE* obj)
41914198
{
41924199
CK_RV ret;
4200+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
41934201
CK_ATTRIBUTE dh_2048_priv_key[] = {
41944202
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
41954203
{ CKA_KEY_TYPE, &dhKeyType, sizeof(dhKeyType) },
41964204
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
4205+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
41974206
{ CKA_DERIVE, &ckTrue, sizeof(ckTrue) },
41984207
{ CKA_PRIME, dh_ffdhe2048_p, sizeof(dh_ffdhe2048_p) },
41994208
{ CKA_BASE, dh_ffdhe2048_g, sizeof(dh_ffdhe2048_g) },

0 commit comments

Comments
 (0)