summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/evp_locl.h
diff options
context:
space:
mode:
authortb <>2022-01-09 15:15:25 +0000
committertb <>2022-01-09 15:15:25 +0000
commit12dd2352d38b1ef2237d623bc6b869d169e71567 (patch)
treeb42edbe525fc7c43874d4c14d0981bb1cb4e2d3d /src/lib/libcrypto/evp/evp_locl.h
parent98fb653e64884887dde11a1e705e45a6290548d1 (diff)
downloadopenbsd-12dd2352d38b1ef2237d623bc6b869d169e71567.tar.gz
openbsd-12dd2352d38b1ef2237d623bc6b869d169e71567.tar.bz2
openbsd-12dd2352d38b1ef2237d623bc6b869d169e71567.zip
Prepare to provide EVP_MD_CTX{,_set}_pkey_ctx()
This API with very strange ownership handling is used by Ruby 3.1, unfortunately. For unclear reasons, it was decided that the caller retains ownership of the pctx passed in. EVP_PKEY_CTX aren't refcounted, so a flag was added to make sure that md_ctx->pctx is not freed in EVP_MD_CTX_{cleanup,reset}(). Since EVP_MD_CTX_copy_ex() duplicates the md_ctx->pctx, the flag also needs to be unset on the duplicated EVP_MD_CTX. ok inoguchi jsing
Diffstat (limited to 'src/lib/libcrypto/evp/evp_locl.h')
-rw-r--r--src/lib/libcrypto/evp/evp_locl.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/libcrypto/evp/evp_locl.h b/src/lib/libcrypto/evp/evp_locl.h
index ec4cc6d63d..5eef0b244f 100644
--- a/src/lib/libcrypto/evp/evp_locl.h
+++ b/src/lib/libcrypto/evp/evp_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp_locl.h,v 1.17 2021/12/12 21:21:58 tb Exp $ */ 1/* $OpenBSD: evp_locl.h,v 1.18 2022/01/09 15:15:25 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2000. 3 * project 2000.
4 */ 4 */
@@ -61,6 +61,12 @@
61 61
62__BEGIN_HIDDEN_DECLS 62__BEGIN_HIDDEN_DECLS
63 63
64/*
65 * Don't free md_ctx->pctx in EVP_MD_CTX_cleanup(). Needed for ownership
66 * handling in EVP_MD_CTX_set_pkey_ctx().
67 */
68#define EVP_MD_CTX_FLAG_KEEP_PKEY_CTX 0x0400
69
64/* Macros to code block cipher wrappers */ 70/* Macros to code block cipher wrappers */
65 71
66/* Wrapper functions for each cipher mode */ 72/* Wrapper functions for each cipher mode */