Add |BIO_up_ref| and |EVP_PKEY_up_ref|. This avoids callers having to worry about |CRYPTO_add| and what the correct lock to use it with is. (Esp since we'll probably change the way that reference counts work in the future.) Change-Id: I972bf0cc3be6099e0255e64a0fd50249062d1eb4 Reviewed-on: https://boringssl-review.googlesource.com/4623 Reviewed-by: Adam Langley <agl@google.com>
diff --git a/include/openssl/bio.h b/include/openssl/bio.h index 84996e9..b70b42f 100644 --- a/include/openssl/bio.h +++ b/include/openssl/bio.h
@@ -96,6 +96,9 @@ * TODO(fork): remove. */ OPENSSL_EXPORT void BIO_vfree(BIO *bio); +/* BIO_up_ref increments the reference count of |bio| and returns it. */ +OPENSSL_EXPORT BIO *BIO_up_ref(BIO *bio); + /* Basic I/O. */
diff --git a/include/openssl/evp.h b/include/openssl/evp.h index ded7a58..54ad4be 100644 --- a/include/openssl/evp.h +++ b/include/openssl/evp.h
@@ -86,6 +86,9 @@ * itself. */ OPENSSL_EXPORT void EVP_PKEY_free(EVP_PKEY *pkey); +/* EVP_PKEY_up_ref increments the reference count of |pkey| and returns it. */ +OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_up_ref(EVP_PKEY *pkey); + /* EVP_PKEY_is_opaque returns one if |pkey| is opaque. Opaque keys are backed by * custom implementations which do not expose key material and parameters. It is * an error to attempt to duplicate, export, or compare an opaque key. */ @@ -104,10 +107,6 @@ * function. */ OPENSSL_EXPORT int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); -/* EVP_PKEY_dup adds one to the reference count of |pkey| and returns - * |pkey|. */ -OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); - /* EVP_PKEY_copy_parameters sets the parameters of |to| to equal the parameters * of |from|. It returns one on success and zero on error. */ OPENSSL_EXPORT int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); @@ -649,6 +648,17 @@ const uint8_t **out_label); +/* Deprecated functions. */ + +/* EVP_PKEY_dup adds one to the reference count of |pkey| and returns + * |pkey|. + * + * WARNING: this is a |_dup| function that doesn't actually duplicate! Use + * |EVP_PKEY_up_ref| if you want to increment the reference count without + * confusion. */ +OPENSSL_EXPORT EVP_PKEY *EVP_PKEY_dup(EVP_PKEY *pkey); + + /* Private functions */ /* OpenSSL_add_all_algorithms does nothing. */