Provide EVP_PKEY_up_ref().
authorjsing <jsing@openbsd.org>
Wed, 14 Feb 2018 16:40:42 +0000 (16:40 +0000)
committerjsing <jsing@openbsd.org>
Wed, 14 Feb 2018 16:40:42 +0000 (16:40 +0000)
lib/libcrypto/Symbols.list
lib/libcrypto/evp/evp.h
lib/libcrypto/evp/p_lib.c

index 0c437dc..1cafdf0 100644 (file)
@@ -1388,6 +1388,7 @@ EVP_PKEY_sign
 EVP_PKEY_sign_init
 EVP_PKEY_size
 EVP_PKEY_type
+EVP_PKEY_up_ref
 EVP_PKEY_verify
 EVP_PKEY_verify_init
 EVP_PKEY_verify_recover
index 853abe6..09df7db 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: evp.h,v 1.53 2017/08/28 17:48:02 jsing Exp $ */
+/* $OpenBSD: evp.h,v 1.54 2018/02/14 16:40:42 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -894,6 +894,7 @@ struct gost_key_st;
 
 EVP_PKEY *EVP_PKEY_new(void);
 void EVP_PKEY_free(EVP_PKEY *pkey);
+int EVP_PKEY_up_ref(EVP_PKEY *pkey);
 
 EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
     long length);
index 0d4cd26..e001755 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: p_lib.c,v 1.17 2017/01/29 17:49:23 beck Exp $ */
+/* $OpenBSD: p_lib.c,v 1.18 2018/02/14 16:40:42 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -204,6 +204,13 @@ EVP_PKEY_new(void)
        return (ret);
 }
 
+int
+EVP_PKEY_up_ref(EVP_PKEY *pkey)
+{
+       int refs = CRYPTO_add(&pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
+       return ((refs > 1) ? 1 : 0);
+}
+
 /* Setup a public key ASN1 method and ENGINE from a NID or a string.
  * If pkey is NULL just return 1 or 0 if the algorithm exists.
  */