diff options
author | wangcheng <bangwangnj@163.com> | 2024-10-26 11:10:38 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-11-20 14:12:53 +0100 |
commit | 4c41aa4b338ca181a394483c8bb6aeb6366c6f96 (patch) | |
tree | b520cd03abb8bd591666f8ce3a8fcc4971b63f6f /doc | |
parent | x509_vfy.c and x509_lu.c: refactor find_issuer(), X509_STORE_CTX_get1_issuer(... (diff) | |
download | openssl-4c41aa4b338ca181a394483c8bb6aeb6366c6f96.tar.xz openssl-4c41aa4b338ca181a394483c8bb6aeb6366c6f96.zip |
Add CTX copy function for EVP_MD to optimize the performance of EVP_MD_CTX_copy_ex.
1. Add OSSL_FUNC_digest_copyctx_fn function for EVP_MD, which is used to copy algctx from the old EVP_MD_CTX to the new one.
2. Add implementation of OSSL_FUNC_digest_copyctx_fn function for default providers.
3. Modify EVP_MD_CTX_copy_ex: When the fetched digest is the same in in and out contexts, use the copy function to copy the members in EVP_MD_CTX if the OSSL_FUNC_digest_copyctx_fn function exists. Otherwise, use the previous method to copy.
4. Add documentation for OSSL_FUNC_digest_copyctx function in doc/man7/provider-digest.pod.
5. Add testcase.
Fixes #25703
Signed-off-by: wangcheng <bangwangnj@163.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25726)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/man7/provider-digest.pod | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/doc/man7/provider-digest.pod b/doc/man7/provider-digest.pod index d23da59e1a..751321c84b 100644 --- a/doc/man7/provider-digest.pod +++ b/doc/man7/provider-digest.pod @@ -20,6 +20,7 @@ provider-digest - The digest library E<lt>-E<gt> provider functions void *OSSL_FUNC_digest_newctx(void *provctx); void OSSL_FUNC_digest_freectx(void *dctx); void *OSSL_FUNC_digest_dupctx(void *dctx); + void OSSL_FUNC_digest_copyctx(void *voutctx, void *vinctx); /* Digest generation */ int OSSL_FUNC_digest_init(void *dctx, const OSSL_PARAM params[]); @@ -76,6 +77,7 @@ macros in L<openssl-core_dispatch.h(7)>, as follows: OSSL_FUNC_digest_newctx OSSL_FUNC_DIGEST_NEWCTX OSSL_FUNC_digest_freectx OSSL_FUNC_DIGEST_FREECTX OSSL_FUNC_digest_dupctx OSSL_FUNC_DIGEST_DUPCTX + OSSL_FUNC_digest_copyctx OSSL_FUNC_DIGEST_COPYCTX OSSL_FUNC_digest_init OSSL_FUNC_DIGEST_INIT OSSL_FUNC_digest_update OSSL_FUNC_DIGEST_UPDATE @@ -111,6 +113,14 @@ This function should free any resources associated with that context. OSSL_FUNC_digest_dupctx() should duplicate the provider side digest context in the I<dctx> parameter and return the duplicate copy. +OSSL_FUNC_digest_copyctx() should copy the provider side digest context in the +I<vinctx> parameter to the I<voutctx> parameter which is the another provider side +context. +The OSSL_FUNC_digest_copyctx function is used in the EVP_MD_CTX_copy_ex function to +speed up HMAC operations in the PBKDF2. +This function is optional, and dupctx will be used if there is no EVP_MD_CTX_copy_ex +function. + =head2 Digest Generation Functions OSSL_FUNC_digest_init() initialises a digest operation given a newly created @@ -273,6 +283,7 @@ L<life_cycle-digest(7)>, L<EVP_DigestInit(3)> =head1 HISTORY The provider DIGEST interface was introduced in OpenSSL 3.0. +OSSL_FUNC_digest_copyctx() was added in 3.5 version. =head1 COPYRIGHT |