@@ -4093,6 +4093,8 @@ CK_RV C_DigestKey(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey)
40934093
40944094 if (ret < 0 )
40954095 return CKR_FUNCTION_FAILED ;
4096+ if (ret > 0 )
4097+ return (CK_RV )ret ;
40964098 return CKR_OK ;
40974099}
40984100
@@ -6704,9 +6706,6 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
67046706 CK_RV rv = CKR_OK ;
67056707 WP11_Session * session = NULL ;
67066708 WP11_Object * key = NULL ;
6707- CK_BBOOL trueVar = CK_TRUE ;
6708- CK_BBOOL getVar ;
6709- CK_ULONG getVarLen = sizeof (CK_BBOOL );
67106709 CK_KEY_TYPE keyType ;
67116710
67126711 WOLFPKCS11_ENTER ("C_GenerateKey" );
@@ -6916,37 +6915,21 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
69166915 ret = WP11_Object_SetSecretKey (pbkdf2Key , secretKeyData , secretKeyLen );
69176916 if (ret == 0 ) {
69186917 WP11_Object_SetKeyGeneration (pbkdf2Key , pMechanism -> mechanism );
6919- rv = AddObject (session , pbkdf2Key , pTemplate , ulCount , phKey );
6920- if (rv != CKR_OK ) {
6921- WP11_Object_Free (pbkdf2Key );
6922- }
6918+ rv = SetInitialStates (pbkdf2Key );
69236919 } else {
6924- WP11_Object_Free (pbkdf2Key );
69256920 rv = CKR_FUNCTION_FAILED ;
69266921 }
6922+ if (rv == CKR_OK ) {
6923+ rv = AddObject (session , pbkdf2Key , pTemplate , ulCount , phKey );
6924+ }
6925+ if (rv != CKR_OK ) {
6926+ WP11_Object_Free (pbkdf2Key );
6927+ }
69276928 }
69286929
69296930 wc_ForceZero (derivedKey , derivedKeyLen );
69306931 XFREE (derivedKey , NULL , DYNAMIC_TYPE_TMP_BUFFER );
69316932
6932- if (rv == CKR_OK ) {
6933- rv = WP11_Object_GetAttr (pbkdf2Key , CKA_SENSITIVE , & getVar ,
6934- & getVarLen );
6935- if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
6936- rv = WP11_Object_SetAttr (pbkdf2Key , CKA_ALWAYS_SENSITIVE ,
6937- & trueVar , sizeof (CK_BBOOL ));
6938- }
6939- if (rv == CKR_OK ) {
6940- rv = WP11_Object_GetAttr (pbkdf2Key , CKA_EXTRACTABLE ,
6941- & getVar , & getVarLen );
6942- if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
6943- rv = WP11_Object_SetAttr (pbkdf2Key ,
6944- CKA_NEVER_EXTRACTABLE ,
6945- & trueVar , sizeof (CK_BBOOL ));
6946- }
6947- }
6948- }
6949-
69506933 return rv ;
69516934 }
69526935#ifdef WOLFPKCS11_NSS
@@ -7033,37 +7016,21 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
70337016 ret = WP11_Object_SetSecretKey (pbeKey , secretKeyData , secretKeyLen );
70347017 if (ret == 0 ) {
70357018 WP11_Object_SetKeyGeneration (pbeKey , pMechanism -> mechanism );
7036- rv = AddObject (session , pbeKey , pTemplate , ulCount , phKey );
7037- if (rv != CKR_OK ) {
7038- WP11_Object_Free (pbeKey );
7039- }
7019+ rv = SetInitialStates (pbeKey );
70407020 } else {
7041- WP11_Object_Free (pbeKey );
70427021 rv = CKR_FUNCTION_FAILED ;
70437022 }
7023+ if (rv == CKR_OK ) {
7024+ rv = AddObject (session , pbeKey , pTemplate , ulCount , phKey );
7025+ }
7026+ if (rv != CKR_OK ) {
7027+ WP11_Object_Free (pbeKey );
7028+ }
70447029 }
70457030
70467031 wc_ForceZero (derivedKey , derivedKeyLen );
70477032 XFREE (derivedKey , NULL , DYNAMIC_TYPE_TMP_BUFFER );
70487033
7049- if (rv == CKR_OK ) {
7050- rv = WP11_Object_GetAttr (pbeKey , CKA_SENSITIVE , & getVar ,
7051- & getVarLen );
7052- if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
7053- rv = WP11_Object_SetAttr (pbeKey , CKA_ALWAYS_SENSITIVE ,
7054- & trueVar , sizeof (CK_BBOOL ));
7055- }
7056- if (rv == CKR_OK ) {
7057- rv = WP11_Object_GetAttr (pbeKey , CKA_EXTRACTABLE ,
7058- & getVar , & getVarLen );
7059- if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
7060- rv = WP11_Object_SetAttr (pbeKey ,
7061- CKA_NEVER_EXTRACTABLE ,
7062- & trueVar , sizeof (CK_BBOOL ));
7063- }
7064- }
7065- }
7066-
70677034 return rv ;
70687035 }
70697036#endif
@@ -7094,29 +7061,16 @@ CK_RV C_GenerateKey(CK_SESSION_HANDLE hSession,
70947061 WP11_Session_GetSlot (session ),
70957062 pMechanism -> mechanism );
70967063 if (ret != 0 ) {
7097- WP11_Object_Free (key );
70987064 rv = CKR_FUNCTION_FAILED ;
70997065 }
7100- else {
7101- rv = AddObject (session , key , pTemplate , ulCount , phKey );
7102- if (rv != CKR_OK ) {
7103- WP11_Object_Free (key );
7104- }
7105- }
7106- }
7107- }
7108- if (rv == CKR_OK ) {
7109- rv = WP11_Object_GetAttr (key , CKA_SENSITIVE , & getVar , & getVarLen );
7110- if ((rv == CKR_OK ) && (getVar == CK_TRUE )) {
7111- rv = WP11_Object_SetAttr (key , CKA_ALWAYS_SENSITIVE , & trueVar ,
7112- sizeof (CK_BBOOL ));
71137066 }
7067+ if (rv == CKR_OK )
7068+ rv = SetInitialStates (key );
71147069 if (rv == CKR_OK ) {
7115- rv = WP11_Object_GetAttr (key , CKA_EXTRACTABLE , & getVar , & getVarLen );
7116- if ((rv == CKR_OK ) && (getVar == CK_FALSE )) {
7117- rv = WP11_Object_SetAttr (key , CKA_NEVER_EXTRACTABLE , & trueVar ,
7118- sizeof (CK_BBOOL ));
7119- }
7070+ rv = AddObject (session , key , pTemplate , ulCount , phKey );
7071+ }
7072+ if (rv != CKR_OK && key != NULL ) {
7073+ WP11_Object_Free (key );
71207074 }
71217075 }
71227076
@@ -9052,11 +9006,11 @@ CK_RV C_EncapsulateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
90529006 secretKeyLen );
90539007 if (ret != 0 )
90549008 rv = CKR_FUNCTION_FAILED ;
9009+ if (rv == CKR_OK )
9010+ rv = SetInitialStates (secretObj );
90559011 if (rv == CKR_OK )
90569012 rv = AddObject (session , secretObj , pTemplate , ulAttributeCount ,
90579013 phKey );
9058- if (rv == CKR_OK )
9059- rv = SetInitialStates (secretObj );
90609014 }
90619015 if (rv != CKR_OK && secretObj != NULL ) {
90629016 WP11_Object_Free (secretObj );
@@ -9158,11 +9112,11 @@ CK_RV C_DecapsulateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
91589112 secretKeyLen );
91599113 if (ret != 0 )
91609114 rv = CKR_FUNCTION_FAILED ;
9115+ if (rv == CKR_OK )
9116+ rv = SetInitialStates (secretObj );
91619117 if (rv == CKR_OK )
91629118 rv = AddObject (session , secretObj , pTemplate , ulAttributeCount ,
91639119 phKey );
9164- if (rv == CKR_OK )
9165- rv = SetInitialStates (secretObj );
91669120 }
91679121 if (rv != CKR_OK && secretObj != NULL ) {
91689122 WP11_Object_Free (secretObj );
0 commit comments