Skip to content

Commit e538099

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 8c0656b commit e538099

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
@@ -491,6 +491,7 @@ static CK_RV test_attribute(void* args)
491491
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
492492
{ CKA_KEY_TYPE, &genericKeyType, sizeof(genericKeyType) },
493493
{ CKA_EXTRACTABLE, &ckTrue, sizeof(ckTrue) },
494+
{ CKA_SENSITIVE, &ckFalse, sizeof(ckFalse) },
494495
{ CKA_VALUE, keyData, sizeof(keyData) },
495496
};
496497
CK_ULONG tmplCnt = sizeof(tmpl) / sizeof(*tmpl);
@@ -789,10 +790,12 @@ static CK_RV get_generic_key(CK_SESSION_HANDLE session, unsigned char* data,
789790
CK_OBJECT_HANDLE* key)
790791
{
791792
CK_RV ret;
793+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
792794
CK_ATTRIBUTE generic_key[] = {
793795
{ CKA_CLASS, &secretKeyClass, sizeof(secretKeyClass) },
794796
{ CKA_KEY_TYPE, &genericKeyType, sizeof(genericKeyType) },
795797
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
798+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
796799
{ CKA_SIGN, &ckTrue, sizeof(ckTrue) },
797800
{ CKA_VERIFY, &ckTrue, sizeof(ckTrue) },
798801
{ CKA_VALUE, data, len },
@@ -2051,6 +2054,7 @@ static CK_RV get_rsa_priv_key(CK_SESSION_HANDLE session, unsigned char* privId,
20512054
CK_OBJECT_HANDLE* obj)
20522055
{
20532056
CK_RV ret;
2057+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
20542058
CK_ATTRIBUTE rsa_2048_priv_key[] = {
20552059
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
20562060
{ CKA_KEY_TYPE, &rsaKeyType, sizeof(rsaKeyType) },
@@ -2065,6 +2069,7 @@ static CK_RV get_rsa_priv_key(CK_SESSION_HANDLE session, unsigned char* privId,
20652069
{ CKA_COEFFICIENT, rsa_2048_u, sizeof(rsa_2048_u) },
20662070
{ CKA_PUBLIC_EXPONENT, rsa_2048_pub_exp, sizeof(rsa_2048_pub_exp) },
20672071
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
2072+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
20682073
{ CKA_TOKEN, &ckTrue, sizeof(ckTrue) },
20692074
{ CKA_ID, privId, privIdLen },
20702075
};
@@ -3398,10 +3403,12 @@ static CK_OBJECT_HANDLE get_ecc_priv_key(CK_SESSION_HANDLE session,
33983403
CK_OBJECT_HANDLE* obj)
33993404
{
34003405
CK_RV ret;
3406+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
34013407
CK_ATTRIBUTE ecc_p256_priv_key[] = {
34023408
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
34033409
{ CKA_KEY_TYPE, &eccKeyType, sizeof(eccKeyType) },
34043410
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
3411+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
34053412
{ CKA_VERIFY, &ckTrue, sizeof(ckTrue) },
34063413
{ CKA_EC_PARAMS, ecc_p256_params, sizeof(ecc_p256_params) },
34073414
{ CKA_VALUE, ecc_p256_priv, sizeof(ecc_p256_priv) },
@@ -4187,10 +4194,12 @@ static CK_OBJECT_HANDLE get_dh_priv_key(CK_SESSION_HANDLE session,
41874194
CK_OBJECT_HANDLE* obj)
41884195
{
41894196
CK_RV ret;
4197+
CK_BBOOL sensitive = (extractable == CK_TRUE) ? CK_FALSE : CK_TRUE;
41904198
CK_ATTRIBUTE dh_2048_priv_key[] = {
41914199
{ CKA_CLASS, &privKeyClass, sizeof(privKeyClass) },
41924200
{ CKA_KEY_TYPE, &dhKeyType, sizeof(dhKeyType) },
41934201
{ CKA_EXTRACTABLE, &extractable, sizeof(CK_BBOOL) },
4202+
{ CKA_SENSITIVE, &sensitive, sizeof(CK_BBOOL) },
41944203
{ CKA_DERIVE, &ckTrue, sizeof(ckTrue) },
41954204
{ CKA_PRIME, dh_ffdhe2048_p, sizeof(dh_ffdhe2048_p) },
41964205
{ CKA_BASE, dh_ffdhe2048_g, sizeof(dh_ffdhe2048_g) },

0 commit comments

Comments
 (0)