@@ -327,10 +327,12 @@ static int test_pkcs11_find_data_obj(CK_SESSION_HANDLE session,
327327 (CK_ULONG )(sizeof (data_tmpl ) / sizeof (data_tmpl [0 ])), data_obj );
328328}
329329
330- static int test_pkcs11_generate_keypair (CK_SESSION_HANDLE session ,
330+ static int test_pkcs11_import_keypair (CK_SESSION_HANDLE session ,
331331 CK_OBJECT_HANDLE * pub_obj , CK_OBJECT_HANDLE * priv_obj )
332332{
333333 CK_RV rv ;
334+ CK_OBJECT_HANDLE pub_handle = CK_INVALID_HANDLE ;
335+ CK_OBJECT_HANDLE priv_handle = CK_INVALID_HANDLE ;
334336 CK_OBJECT_CLASS pub_class = CKO_PUBLIC_KEY ;
335337 CK_OBJECT_CLASS priv_class = CKO_PRIVATE_KEY ;
336338 CK_KEY_TYPE key_type = CKK_EC ;
@@ -357,14 +359,24 @@ static int test_pkcs11_generate_keypair(CK_SESSION_HANDLE session,
357359 { CKA_VALUE , (CK_VOID_PTR )test_ecc_p256_priv , sizeof (test_ecc_p256_priv ) }
358360 };
359361
362+ * pub_obj = CK_INVALID_HANDLE ;
363+ * priv_obj = CK_INVALID_HANDLE ;
364+
360365 rv = wolfpkcs11nsFunctionList .C_CreateObject (session , pub_tmpl ,
361- (CK_ULONG )(sizeof (pub_tmpl ) / sizeof (pub_tmpl [0 ])), pub_obj );
366+ (CK_ULONG )(sizeof (pub_tmpl ) / sizeof (pub_tmpl [0 ])), & pub_handle );
362367 if (test_pkcs11_ck_ok ("C_CreateObject(pub)" , rv ) < 0 )
363368 return -1 ;
364369
365370 rv = wolfpkcs11nsFunctionList .C_CreateObject (session , priv_tmpl ,
366- (CK_ULONG )(sizeof (priv_tmpl ) / sizeof (priv_tmpl [0 ])), priv_obj );
367- return test_pkcs11_ck_ok ("C_CreateObject(priv)" , rv );
371+ (CK_ULONG )(sizeof (priv_tmpl ) / sizeof (priv_tmpl [0 ])), & priv_handle );
372+ if (test_pkcs11_ck_ok ("C_CreateObject(priv)" , rv ) < 0 ) {
373+ (void )wolfpkcs11nsFunctionList .C_DestroyObject (session , pub_handle );
374+ return -1 ;
375+ }
376+
377+ * pub_obj = pub_handle ;
378+ * priv_obj = priv_handle ;
379+ return 0 ;
368380}
369381
370382static int test_pkcs11_sign_payload (CK_SESSION_HANDLE session ,
@@ -558,7 +570,7 @@ int test_pkcs11_start(void)
558570
559571 if (key_state == 1 && data_state == 1 ) {
560572 printf ("pkcs11: first boot path, creating persistent objects\r\n" );
561- if (test_pkcs11_generate_keypair (session , & pub_obj , & priv_obj ) < 0 )
573+ if (test_pkcs11_import_keypair (session , & pub_obj , & priv_obj ) < 0 )
562574 ret = -1 ;
563575 else
564576 ret = 0 ;
0 commit comments