@@ -593,24 +593,22 @@ static EVP_PKEY *pkcs11_get_evp_key_ed25519(PKCS11_OBJECT_private *key)
593593 if (!pkey )
594594 return NULL ;
595595
596- if (key -> object_class == CKO_PRIVATE_KEY ) {
597596#if OPENSSL_VERSION_NUMBER < 0x40000000L
598- /* global initialize ED25519 EVP_PKEY_METHOD */
599- if (!pkcs11_ed25519_method_new ()) {
600- EVP_PKEY_free (pkey );
601- return NULL ;
597+ if (key -> object_class == CKO_PRIVATE_KEY ) {
598+ if ((key -> slot -> ctx -> flags & PKCS11_FLAG_NO_METHODS ) == 0 ) {
599+ /* global initialize ED25519 EVP_PKEY_METHOD */
600+ if (!pkcs11_ed25519_method_new ()) {
601+ EVP_PKEY_free (pkey );
602+ return NULL ;
603+ }
604+ /* creates a new EVP_PKEY object which requires its own key object reference */
605+ key = pkcs11_object_ref (key );
606+ alloc_pkey_ex_index ();
607+ pkcs11_set_ex_data_pkey (pkey , key );
608+ atexit (pkcs11_ed25519_method_free );
602609 }
603- #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
604-
605- /* creates a new EVP_PKEY object which requires its own key object reference */
606- key = pkcs11_object_ref (key );
607-
608- #if OPENSSL_VERSION_NUMBER < 0x40000000L
609- alloc_pkey_ex_index ();
610- pkcs11_set_ex_data_pkey (pkey , key );
611- atexit (pkcs11_ed25519_method_free );
612- #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
613610 }
611+ #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
614612 return pkey ;
615613}
616614
@@ -630,24 +628,22 @@ static EVP_PKEY *pkcs11_get_evp_key_ed448(PKCS11_OBJECT_private *key)
630628 if (!pkey )
631629 return NULL ;
632630
633- if (key -> object_class == CKO_PRIVATE_KEY ) {
634631#if OPENSSL_VERSION_NUMBER < 0x40000000L
635- /* global initialize ED448 EVP_PKEY_METHOD */
636- if (!pkcs11_ed448_method_new ()) {
637- EVP_PKEY_free (pkey );
638- return NULL ;
632+ if (key -> object_class == CKO_PRIVATE_KEY ) {
633+ if ((key -> slot -> ctx -> flags & PKCS11_FLAG_NO_METHODS ) == 0 ) {
634+ /* global initialize ED448 EVP_PKEY_METHOD */
635+ if (!pkcs11_ed448_method_new ()) {
636+ EVP_PKEY_free (pkey );
637+ return NULL ;
638+ }
639+ /* create a new EVP_PKEY object which requires its own key object reference */
640+ key = pkcs11_object_ref (key );
641+ alloc_pkey_ex_index ();
642+ pkcs11_set_ex_data_pkey (pkey , key );
643+ atexit (pkcs11_ed25519_method_free );
639644 }
640- #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
641-
642- /* create a new EVP_PKEY object which requires its own key object reference */
643- key = pkcs11_object_ref (key );
644-
645- #if OPENSSL_VERSION_NUMBER < 0x40000000L
646- alloc_pkey_ex_index ();
647- pkcs11_set_ex_data_pkey (pkey , key );
648- atexit (pkcs11_ed448_method_free );
649- #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
650645 }
646+ #endif /* OPENSSL_VERSION_NUMBER < 0x40000000L */
651647 return pkey ;
652648}
653649
0 commit comments