]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
prov(legacy): update to structure based atomics
authorPauli <pauli@openssl.org>
Wed, 21 Jun 2023 23:43:01 +0000 (09:43 +1000)
committerPauli <pauli@openssl.org>
Sat, 1 Jul 2023 11:18:25 +0000 (21:18 +1000)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21260)

providers/implementations/include/prov/kdfexchange.h
providers/implementations/include/prov/macsignature.h
providers/implementations/keymgmt/kdf_legacy_kmgmt.c
providers/implementations/keymgmt/mac_legacy_kmgmt.c

index bfedd3afd36419fd7cc728f077471e34df6d2036..8d95a99438d37bab66512bd1ba8b648b5cdca344 100644 (file)
@@ -14,7 +14,6 @@
 struct kdf_data_st {
     OSSL_LIB_CTX *libctx;
     CRYPTO_REF_COUNT refcnt;
-    CRYPTO_RWLOCK *lock;
 };
 
 typedef struct kdf_data_st KDF_DATA;
index 9bfaaf9b6e6356d9e65e286f3771a2138ad314e9..45a50c36f25804b440799e678eac51937e78bca9 100644 (file)
@@ -13,7 +13,6 @@
 #include "prov/provider_util.h"
 
 struct mac_key_st {
-    CRYPTO_RWLOCK *lock;
     OSSL_LIB_CTX *libctx;
     CRYPTO_REF_COUNT refcnt;
     unsigned char *priv_key;
index 40885ee0190f75d48defd31db00cabd6c5c38039..a2303f2e193faa3465f4f44b68a53f9e4c9b02e7 100644 (file)
@@ -37,13 +37,11 @@ KDF_DATA *ossl_kdf_data_new(void *provctx)
     if (kdfdata == NULL)
         return NULL;
 
-    kdfdata->lock = CRYPTO_THREAD_lock_new();
-    if (kdfdata->lock == NULL) {
+    if (!CRYPTO_NEW_REF(&kdfdata->refcnt, 1)) {
         OPENSSL_free(kdfdata);
         return NULL;
     }
     kdfdata->libctx = PROV_LIBCTX_OF(provctx);
-    kdfdata->refcnt = 1;
 
     return kdfdata;
 }
@@ -55,11 +53,11 @@ void ossl_kdf_data_free(KDF_DATA *kdfdata)
     if (kdfdata == NULL)
         return;
 
-    CRYPTO_DOWN_REF(&kdfdata->refcnt, &ref, kdfdata->lock);
+    CRYPTO_DOWN_REF(&kdfdata->refcnt, &ref);
     if (ref > 0)
         return;
 
-    CRYPTO_THREAD_lock_free(kdfdata->lock);
+    CRYPTO_FREE_REF(&kdfdata->refcnt);
     OPENSSL_free(kdfdata);
 }
 
@@ -77,7 +75,7 @@ int ossl_kdf_data_up_ref(KDF_DATA *kdfdata)
     if (!ossl_prov_is_running())
         return 0;
 
-    CRYPTO_UP_REF(&kdfdata->refcnt, &ref, kdfdata->lock);
+    CRYPTO_UP_REF(&kdfdata->refcnt, &ref);
     return 1;
 }
 
index 114d9e9fe976cb8af105d526f82179b28132aac0..babeba748dacda5113df529004391d05d6c31037 100644 (file)
@@ -72,13 +72,11 @@ MAC_KEY *ossl_mac_key_new(OSSL_LIB_CTX *libctx, int cmac)
     if (mackey == NULL)
         return NULL;
 
-    mackey->lock = CRYPTO_THREAD_lock_new();
-    if (mackey->lock == NULL) {
+    if (!CRYPTO_NEW_REF(&mackey->refcnt, 1)) {
         OPENSSL_free(mackey);
         return NULL;
     }
     mackey->libctx = libctx;
-    mackey->refcnt = 1;
     mackey->cmac = cmac;
 
     return mackey;
@@ -91,14 +89,14 @@ void ossl_mac_key_free(MAC_KEY *mackey)
     if (mackey == NULL)
         return;
 
-    CRYPTO_DOWN_REF(&mackey->refcnt, &ref, mackey->lock);
+    CRYPTO_DOWN_REF(&mackey->refcnt, &ref);
     if (ref > 0)
         return;
 
     OPENSSL_secure_clear_free(mackey->priv_key, mackey->priv_key_len);
     OPENSSL_free(mackey->properties);
     ossl_prov_cipher_reset(&mackey->cipher);
-    CRYPTO_THREAD_lock_free(mackey->lock);
+    CRYPTO_FREE_REF(&mackey->refcnt);
     OPENSSL_free(mackey);
 }
 
@@ -116,7 +114,7 @@ int ossl_mac_key_up_ref(MAC_KEY *mackey)
     if (!ossl_prov_is_running())
         return 0;
 
-    CRYPTO_UP_REF(&mackey->refcnt, &ref, mackey->lock);
+    CRYPTO_UP_REF(&mackey->refcnt, &ref);
     return 1;
 }