@@ -6760,37 +6760,37 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
67606760 ret = WP11_Object_SetSecretKey (pbkdf2Key , secretKeyData , secretKeyLen );
67616761 if (ret == 0 ) {
67626762 WP11_Object_SetKeyGeneration (pbkdf2Key , pMechanism -> mechanism );
6763- rv = AddObject (session , pbkdf2Key , pTemplate , ulCount , phKey );
6764- if (rv != CKR_OK ) {
6765- WP11_Object_Free (pbkdf2Key );
6763+ rv = WP11_Object_GetAttr (pbkdf2Key , CKA_SENSITIVE ,
6764+ & getVar , & getVarLen );
6765+ if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
6766+ rv = WP11_Object_SetAttr (pbkdf2Key ,
6767+ CKA_ALWAYS_SENSITIVE ,
6768+ & trueVar , sizeof (CK_BBOOL ));
6769+ }
6770+ if (rv == CKR_OK ) {
6771+ rv = WP11_Object_GetAttr (pbkdf2Key , CKA_EXTRACTABLE ,
6772+ & getVar , & getVarLen );
6773+ if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
6774+ rv = WP11_Object_SetAttr (pbkdf2Key ,
6775+ CKA_NEVER_EXTRACTABLE ,
6776+ & trueVar ,
6777+ sizeof (CK_BBOOL ));
6778+ }
67666779 }
67676780 } else {
6768- WP11_Object_Free (pbkdf2Key );
67696781 rv = CKR_FUNCTION_FAILED ;
67706782 }
6783+ if (rv == CKR_OK ) {
6784+ rv = AddObject (session , pbkdf2Key , pTemplate , ulCount , phKey );
6785+ }
6786+ if (rv != CKR_OK ) {
6787+ WP11_Object_Free (pbkdf2Key );
6788+ }
67716789 }
67726790
67736791 wc_ForceZero (derivedKey , derivedKeyLen );
67746792 XFREE (derivedKey , NULL , DYNAMIC_TYPE_TMP_BUFFER );
67756793
6776- if (rv == CKR_OK ) {
6777- rv = WP11_Object_GetAttr (pbkdf2Key , CKA_SENSITIVE , & getVar ,
6778- & getVarLen );
6779- if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
6780- rv = WP11_Object_SetAttr (pbkdf2Key , CKA_ALWAYS_SENSITIVE ,
6781- & trueVar , sizeof (CK_BBOOL ));
6782- }
6783- if (rv == CKR_OK ) {
6784- rv = WP11_Object_GetAttr (pbkdf2Key , CKA_EXTRACTABLE ,
6785- & getVar , & getVarLen );
6786- if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
6787- rv = WP11_Object_SetAttr (pbkdf2Key ,
6788- CKA_NEVER_EXTRACTABLE ,
6789- & trueVar , sizeof (CK_BBOOL ));
6790- }
6791- }
6792- }
6793-
67946794 return rv ;
67956795 }
67966796#ifdef WOLFPKCS11_NSS
@@ -6877,37 +6877,37 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
68776877 ret = WP11_Object_SetSecretKey (pbeKey , secretKeyData , secretKeyLen );
68786878 if (ret == 0 ) {
68796879 WP11_Object_SetKeyGeneration (pbeKey , pMechanism -> mechanism );
6880- rv = AddObject (session , pbeKey , pTemplate , ulCount , phKey );
6881- if (rv != CKR_OK ) {
6882- WP11_Object_Free (pbeKey );
6880+ rv = WP11_Object_GetAttr (pbeKey , CKA_SENSITIVE ,
6881+ & getVar , & getVarLen );
6882+ if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
6883+ rv = WP11_Object_SetAttr (pbeKey ,
6884+ CKA_ALWAYS_SENSITIVE ,
6885+ & trueVar , sizeof (CK_BBOOL ));
6886+ }
6887+ if (rv == CKR_OK ) {
6888+ rv = WP11_Object_GetAttr (pbeKey , CKA_EXTRACTABLE ,
6889+ & getVar , & getVarLen );
6890+ if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
6891+ rv = WP11_Object_SetAttr (pbeKey ,
6892+ CKA_NEVER_EXTRACTABLE ,
6893+ & trueVar ,
6894+ sizeof (CK_BBOOL ));
6895+ }
68836896 }
68846897 } else {
6885- WP11_Object_Free (pbeKey );
68866898 rv = CKR_FUNCTION_FAILED ;
68876899 }
6900+ if (rv == CKR_OK ) {
6901+ rv = AddObject (session , pbeKey , pTemplate , ulCount , phKey );
6902+ }
6903+ if (rv != CKR_OK ) {
6904+ WP11_Object_Free (pbeKey );
6905+ }
68886906 }
68896907
68906908 wc_ForceZero (derivedKey , derivedKeyLen );
68916909 XFREE (derivedKey , NULL , DYNAMIC_TYPE_TMP_BUFFER );
68926910
6893- if (rv == CKR_OK ) {
6894- rv = WP11_Object_GetAttr (pbeKey , CKA_SENSITIVE , & getVar ,
6895- & getVarLen );
6896- if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
6897- rv = WP11_Object_SetAttr (pbeKey , CKA_ALWAYS_SENSITIVE ,
6898- & trueVar , sizeof (CK_BBOOL ));
6899- }
6900- if (rv == CKR_OK ) {
6901- rv = WP11_Object_GetAttr (pbeKey , CKA_EXTRACTABLE ,
6902- & getVar , & getVarLen );
6903- if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
6904- rv = WP11_Object_SetAttr (pbeKey ,
6905- CKA_NEVER_EXTRACTABLE ,
6906- & trueVar , sizeof (CK_BBOOL ));
6907- }
6908- }
6909- }
6910-
69116911 return rv ;
69126912 }
69136913#endif
0 commit comments