@@ -208,6 +208,8 @@ static int test_pbkdf2_keygen_attrs(CK_SESSION_HANDLE session)
208208 CK_OBJECT_HANDLE key ;
209209 CK_BBOOL local = CK_FALSE ;
210210 CK_MECHANISM_TYPE genMech = CK_UNAVAILABLE_INFORMATION ;
211+ CK_BBOOL alwaysSensitive = CK_FALSE ;
212+ CK_BBOOL neverExtractable = CK_FALSE ;
211213 int result = 0 ;
212214
213215 CK_BYTE password [] = "TestPassword123" ;
@@ -239,17 +241,23 @@ static int test_pbkdf2_keygen_attrs(CK_SESSION_HANDLE session)
239241
240242 CK_OBJECT_CLASS keyClass = CKO_SECRET_KEY ;
241243 CK_KEY_TYPE keyType = CKK_GENERIC_SECRET ;
244+ CK_BBOOL bTrue = CK_TRUE ;
245+ CK_BBOOL bFalse = CK_FALSE ;
242246
243247 CK_ATTRIBUTE genTmpl [] = {
244- { CKA_CLASS , & keyClass , sizeof (keyClass ) },
245- { CKA_KEY_TYPE , & keyType , sizeof (keyType ) },
246- { CKA_VALUE_LEN , & keyLength , sizeof (keyLength ) },
248+ { CKA_CLASS , & keyClass , sizeof (keyClass ) },
249+ { CKA_KEY_TYPE , & keyType , sizeof (keyType ) },
250+ { CKA_VALUE_LEN , & keyLength , sizeof (keyLength ) },
251+ { CKA_SENSITIVE , & bTrue , sizeof (bTrue ) },
252+ { CKA_EXTRACTABLE , & bFalse , sizeof (bFalse ) },
247253 };
248254 CK_ULONG genTmplCnt = sizeof (genTmpl ) / sizeof (* genTmpl );
249255
250256 CK_ATTRIBUTE getTmpl [] = {
251- { CKA_LOCAL , & local , sizeof (local ) },
252- { CKA_KEY_GEN_MECHANISM , & genMech , sizeof (genMech ) },
257+ { CKA_LOCAL , & local , sizeof (local ) },
258+ { CKA_KEY_GEN_MECHANISM , & genMech , sizeof (genMech ) },
259+ { CKA_ALWAYS_SENSITIVE , & alwaysSensitive , sizeof (alwaysSensitive ) },
260+ { CKA_NEVER_EXTRACTABLE , & neverExtractable , sizeof (neverExtractable ) },
253261 };
254262 CK_ULONG getTmplCnt = sizeof (getTmpl ) / sizeof (* getTmpl );
255263
@@ -282,6 +290,28 @@ static int test_pbkdf2_keygen_attrs(CK_SESSION_HANDLE session)
282290 printf ("PASS: CKA_KEY_GEN_MECHANISM is CKM_PKCS5_PBKD2\n" );
283291 test_passed ++ ;
284292
293+ if (alwaysSensitive != CK_TRUE ) {
294+ fprintf (stderr ,
295+ "FAIL: CKA_ALWAYS_SENSITIVE: expected CK_TRUE, got %d\n" ,
296+ (int )alwaysSensitive );
297+ test_failed ++ ;
298+ result = -1 ;
299+ goto cleanup ;
300+ }
301+ printf ("PASS: CKA_ALWAYS_SENSITIVE is CK_TRUE\n" );
302+ test_passed ++ ;
303+
304+ if (neverExtractable != CK_TRUE ) {
305+ fprintf (stderr ,
306+ "FAIL: CKA_NEVER_EXTRACTABLE: expected CK_TRUE, got %d\n" ,
307+ (int )neverExtractable );
308+ test_failed ++ ;
309+ result = -1 ;
310+ goto cleanup ;
311+ }
312+ printf ("PASS: CKA_NEVER_EXTRACTABLE is CK_TRUE\n" );
313+ test_passed ++ ;
314+
285315cleanup :
286316 return result ;
287317}
0 commit comments