Commit 35b9d0719c for openssl.org

commit 35b9d0719c2b857aa92898e58a7dc79944927ce1
Author: Matt Caswell <matt@openssl.org>
Date:   Wed Dec 3 10:48:57 2025 +0000

    Remove mentions of EVP_CIPHER_meth* from the documentation

    With the removal of EVP_CIPHER_meth* we need to update the documentation
    accordingly.

    Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
    Reviewed-by: Tomas Mraz <tomas@openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/29299)

diff --git a/doc/build.info b/doc/build.info
index 4e62ed9be8..893a5c61d4 100644
--- a/doc/build.info
+++ b/doc/build.info
@@ -1139,10 +1139,6 @@ DEPEND[html/man3/EVP_CIPHER_CTX_get_original_iv.html]=man3/EVP_CIPHER_CTX_get_or
 GENERATE[html/man3/EVP_CIPHER_CTX_get_original_iv.html]=man3/EVP_CIPHER_CTX_get_original_iv.pod
 DEPEND[man/man3/EVP_CIPHER_CTX_get_original_iv.3]=man3/EVP_CIPHER_CTX_get_original_iv.pod
 GENERATE[man/man3/EVP_CIPHER_CTX_get_original_iv.3]=man3/EVP_CIPHER_CTX_get_original_iv.pod
-DEPEND[html/man3/EVP_CIPHER_meth_new.html]=man3/EVP_CIPHER_meth_new.pod
-GENERATE[html/man3/EVP_CIPHER_meth_new.html]=man3/EVP_CIPHER_meth_new.pod
-DEPEND[man/man3/EVP_CIPHER_meth_new.3]=man3/EVP_CIPHER_meth_new.pod
-GENERATE[man/man3/EVP_CIPHER_meth_new.3]=man3/EVP_CIPHER_meth_new.pod
 DEPEND[html/man3/EVP_DigestInit.html]=man3/EVP_DigestInit.pod
 GENERATE[html/man3/EVP_DigestInit.html]=man3/EVP_DigestInit.pod
 DEPEND[man/man3/EVP_DigestInit.3]=man3/EVP_DigestInit.pod
@@ -3342,7 +3338,6 @@ html/man3/EVP_ASYM_CIPHER_free.html \
 html/man3/EVP_BytesToKey.html \
 html/man3/EVP_CIPHER_CTX_get_cipher_data.html \
 html/man3/EVP_CIPHER_CTX_get_original_iv.html \
-html/man3/EVP_CIPHER_meth_new.html \
 html/man3/EVP_DigestInit.html \
 html/man3/EVP_DigestSignInit.html \
 html/man3/EVP_DigestVerifyInit.html \
@@ -4017,7 +4012,6 @@ man/man3/EVP_ASYM_CIPHER_free.3 \
 man/man3/EVP_BytesToKey.3 \
 man/man3/EVP_CIPHER_CTX_get_cipher_data.3 \
 man/man3/EVP_CIPHER_CTX_get_original_iv.3 \
-man/man3/EVP_CIPHER_meth_new.3 \
 man/man3/EVP_DigestInit.3 \
 man/man3/EVP_DigestSignInit.3 \
 man/man3/EVP_DigestVerifyInit.3 \
diff --git a/doc/man3/EVP_CIPHER_meth_new.pod b/doc/man3/EVP_CIPHER_meth_new.pod
deleted file mode 100644
index 8638cd3009..0000000000
--- a/doc/man3/EVP_CIPHER_meth_new.pod
+++ /dev/null
@@ -1,260 +0,0 @@
-=pod
-
-=head1 NAME
-
-EVP_CIPHER_meth_new, EVP_CIPHER_meth_dup, EVP_CIPHER_meth_free,
-EVP_CIPHER_meth_set_iv_length, EVP_CIPHER_meth_set_flags,
-EVP_CIPHER_meth_set_impl_ctx_size, EVP_CIPHER_meth_set_init,
-EVP_CIPHER_meth_set_do_cipher, EVP_CIPHER_meth_set_cleanup,
-EVP_CIPHER_meth_set_set_asn1_params, EVP_CIPHER_meth_set_get_asn1_params,
-EVP_CIPHER_meth_set_ctrl, EVP_CIPHER_meth_get_init,
-EVP_CIPHER_meth_get_do_cipher, EVP_CIPHER_meth_get_cleanup,
-EVP_CIPHER_meth_get_set_asn1_params, EVP_CIPHER_meth_get_get_asn1_params,
-EVP_CIPHER_meth_get_ctrl
-- Routines to build up EVP_CIPHER methods
-
-=head1 SYNOPSIS
-
- #include <openssl/evp.h>
-
-The following functions have been deprecated since OpenSSL 3.0, and can be
-hidden entirely by defining B<OPENSSL_API_COMPAT> with a suitable version value,
-see L<openssl_user_macros(7)>:
-
- EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len);
- EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher);
- void EVP_CIPHER_meth_free(EVP_CIPHER *cipher);
-
- int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len);
- int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags);
- int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size);
- int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher,
-                              int (*init)(EVP_CIPHER_CTX *ctx,
-                                          const unsigned char *key,
-                                          const unsigned char *iv,
-                                          int enc));
- int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher,
-                                   int (*do_cipher)(EVP_CIPHER_CTX *ctx,
-                                                    unsigned char *out,
-                                                    const unsigned char *in,
-                                                    size_t inl));
- int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher,
-                                 int (*cleanup)(EVP_CIPHER_CTX *));
- int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher,
-                                         int (*set_asn1_parameters)(EVP_CIPHER_CTX *,
-                                                                    ASN1_TYPE *));
- int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher,
-                                         int (*get_asn1_parameters)(EVP_CIPHER_CTX *,
-                                                                    ASN1_TYPE *));
- int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher,
-                              int (*ctrl)(EVP_CIPHER_CTX *, int type,
-                                          int arg, void *ptr));
-
- int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx,
-                                                           const unsigned char *key,
-                                                           const unsigned char *iv,
-                                                           int enc);
- int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx,
-                                                                unsigned char *out,
-                                                                const unsigned char *in,
-                                                                size_t inl);
- int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *);
- int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
-                                                                      ASN1_TYPE *);
- int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
-                                                                      ASN1_TYPE *);
- int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *,
-                                                           int type, int arg,
-                                                           void *ptr);
-
-=head1 DESCRIPTION
-
-All of the functions described on this page are deprecated.
-Applications should instead use the OSSL_PROVIDER APIs.
-
-The B<EVP_CIPHER> type is a structure for symmetric cipher method
-implementation.
-
-EVP_CIPHER_meth_new() creates a new B<EVP_CIPHER> structure.
-
-EVP_CIPHER_meth_dup() creates a copy of B<cipher>.
-
-EVP_CIPHER_meth_free() destroys a B<EVP_CIPHER> structure.
-If the argument is NULL, nothing is done.
-
-EVP_CIPHER_meth_set_iv_length() sets the length of the IV.
-This is only needed when the implemented cipher mode requires it.
-
-EVP_CIPHER_meth_set_flags() sets the flags to describe optional
-behaviours in the particular B<cipher>.
-With the exception of cipher modes, of which only one may be present,
-several flags can be or'd together.
-The available flags are:
-
-=over 4
-
-=item EVP_CIPH_STREAM_CIPHER, EVP_CIPH_ECB_MODE EVP_CIPH_CBC_MODE,
-EVP_CIPH_CFB_MODE, EVP_CIPH_OFB_MODE, EVP_CIPH_CTR_MODE, EVP_CIPH_GCM_MODE,
-EVP_CIPH_CCM_MODE, EVP_CIPH_XTS_MODE, EVP_CIPH_WRAP_MODE,
-EVP_CIPH_OCB_MODE, EVP_CIPH_SIV_MODE
-
-The cipher mode.
-
-=item EVP_CIPH_VARIABLE_LENGTH
-
-This cipher is of variable length.
-
-=item EVP_CIPH_CUSTOM_IV
-
-Storing and initialising the IV is left entirely to the
-implementation.
-
-=item EVP_CIPH_ALWAYS_CALL_INIT
-
-Set this if the implementation's init() function should be called even
-if B<key> is B<NULL>.
-
-=item EVP_CIPH_CTRL_INIT
-
-Set this to have the implementation's ctrl() function called with
-command code B<EVP_CTRL_INIT> early in its setup.
-
-=item EVP_CIPH_CUSTOM_KEY_LENGTH
-
-Checking and setting the key length after creating the B<EVP_CIPHER>
-is left to the implementation.
-Whenever someone uses EVP_CIPHER_CTX_set_key_length() on a
-B<EVP_CIPHER> with this flag set, the implementation's ctrl() function
-will be called with the control code B<EVP_CTRL_SET_KEY_LENGTH> and
-the key length in B<arg>.
-
-=item EVP_CIPH_NO_PADDING
-
-Don't use standard block padding.
-
-=item EVP_CIPH_RAND_KEY
-
-Making a key with random content is left to the implementation.
-This is done by calling the implementation's ctrl() function with the
-control code B<EVP_CTRL_RAND_KEY> and the pointer to the key memory
-storage in B<ptr>.
-
-=item EVP_CIPH_CUSTOM_COPY
-
-Set this to have the implementation's ctrl() function called with
-command code B<EVP_CTRL_COPY> at the end of EVP_CIPHER_CTX_copy().
-The intended use is for further things to deal with after the
-implementation specific data block has been copied.
-The destination B<EVP_CIPHER_CTX> is passed to the control with the
-B<ptr> parameter.
-The implementation specific data block is reached with
-EVP_CIPHER_CTX_get_cipher_data().
-
-=item EVP_CIPH_FLAG_DEFAULT_ASN1
-
-Use the default EVP routines to pass IV to and from ASN.1.
-
-=item EVP_CIPH_FLAG_LENGTH_BITS
-
-Signals that the length of the input buffer for encryption /
-decryption is to be understood as the number of bits instead of
-bytes for this implementation.
-This is only useful for CFB1 ciphers.
-
-=item EVP_CIPH_FLAG_CTS
-
-Indicates that the cipher uses ciphertext stealing. This is currently
-used to indicate that the cipher is a one shot that only allows a single call to
-EVP_CipherUpdate().
-
-=item EVP_CIPH_FLAG_CUSTOM_CIPHER
-
-This indicates that the implementation takes care of everything,
-including padding, buffering and finalization.
-The EVP routines will simply give them control and do nothing more.
-
-=item EVP_CIPH_FLAG_AEAD_CIPHER
-
-This indicates that this is an AEAD cipher implementation.
-
-=item EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK
-
-Allow interleaving of crypto blocks, a particular optimization only applicable
-to certain TLS ciphers.
-
-=back
-
-EVP_CIPHER_meth_set_impl_ctx_size() sets the size of the EVP_CIPHER's
-implementation context so that it can be automatically allocated.
-
-EVP_CIPHER_meth_set_init() sets the cipher init function for
-B<cipher>.
-The cipher init function is called by EVP_CipherInit(),
-EVP_CipherInit_ex(), EVP_EncryptInit(), EVP_EncryptInit_ex(),
-EVP_DecryptInit(), EVP_DecryptInit_ex().
-
-EVP_CIPHER_meth_set_do_cipher() sets the cipher function for
-B<cipher>.
-The cipher function is called by EVP_CipherUpdate(),
-EVP_EncryptUpdate(), EVP_DecryptUpdate(), EVP_CipherFinal(),
-EVP_EncryptFinal(), EVP_EncryptFinal_ex(), EVP_DecryptFinal() and
-EVP_DecryptFinal_ex().
-
-EVP_CIPHER_meth_set_cleanup() sets the function for B<cipher> to do
-extra cleanup before the method's private data structure is cleaned
-out and freed.
-Note that the cleanup function is passed a B<EVP_CIPHER_CTX *>, the
-private data structure is then available with
-EVP_CIPHER_CTX_get_cipher_data().
-This cleanup function is called by EVP_CIPHER_CTX_reset() and
-EVP_CIPHER_CTX_free().
-
-EVP_CIPHER_meth_set_set_asn1_params() sets the function for B<cipher>
-to set the AlgorithmIdentifier "parameter" based on the passed cipher.
-This function is called by EVP_CIPHER_param_to_asn1().
-EVP_CIPHER_meth_set_get_asn1_params() sets the function for B<cipher>
-that sets the cipher parameters based on an ASN.1 AlgorithmIdentifier
-"parameter".
-Both these functions are needed when there is a need for custom data
-(more or other than the cipher IV).
-They are called by EVP_CIPHER_param_to_asn1() and
-EVP_CIPHER_asn1_to_param() respectively if defined.
-
-EVP_CIPHER_meth_set_ctrl() sets the control function for B<cipher>.
-
-EVP_CIPHER_meth_get_init(), EVP_CIPHER_meth_get_do_cipher(),
-EVP_CIPHER_meth_get_cleanup(), EVP_CIPHER_meth_get_set_asn1_params(),
-EVP_CIPHER_meth_get_get_asn1_params() and EVP_CIPHER_meth_get_ctrl()
-are all used to retrieve the method data given with the
-EVP_CIPHER_meth_set_*() functions above.
-
-=head1 RETURN VALUES
-
-EVP_CIPHER_meth_new() and EVP_CIPHER_meth_dup() return a pointer to a
-newly created B<EVP_CIPHER>, or NULL on failure.
-All EVP_CIPHER_meth_set_*() functions return 1.
-All EVP_CIPHER_meth_get_*() functions return pointers to their
-respective B<cipher> function.
-
-=head1 SEE ALSO
-
-L<EVP_EncryptInit(3)>
-
-=head1 HISTORY
-
-All of these functions were deprecated in OpenSSL 3.0.
-
-The functions described here were added in OpenSSL 1.1.0.
-The B<EVP_CIPHER> structure created with these functions became reference
-counted in OpenSSL 3.0.
-
-=head1 COPYRIGHT
-
-Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
-
-Licensed under the Apache License 2.0 (the "License").  You may not use
-this file except in compliance with the License.  You can obtain a copy
-in the file LICENSE in the source distribution or at
-L<https://www.openssl.org/source/license.html>.
-
-=cut
diff --git a/doc/man3/EVP_EncryptInit.pod b/doc/man3/EVP_EncryptInit.pod
index 05801a17a5..9fd613b6eb 100644
--- a/doc/man3/EVP_EncryptInit.pod
+++ b/doc/man3/EVP_EncryptInit.pod
@@ -812,6 +812,11 @@ Gets 1 if the cipher algorithm I<cipher> supports the gettable EVP_CIPHER_CTX
 parameter B<OSSL_CIPHER_PARAM_RANDOM_KEY>. Only DES and 3DES set this to 1,
 all other OpenSSL ciphers return 0.

+=item "encrypt-then-mac" (B<OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC>) <integer>
+
+Gets 1 if the cipher algorithm I<cipher> supports TLS Encrypt-then-MAC,
+otherwise it gets 0.
+
 =item "decrypt-only" (B<OSSL_CIPHER_PARAM_DECRYPT_ONLY) <integer>

 Gets 1 if the cipher algorithm I<cipher> implementation supports only
@@ -1344,16 +1349,30 @@ See L</Gettable EVP_CIPHER parameters> "tls-multi".

 See L</Gettable EVP_CIPHER parameters> "has-randkey".

+=item EVP_CIPH_FLAG_ENC_THEN_MAC
+
+See L</Gettable EVP_CIPHER parameters> "encrypt-then-mac".
+
+=item EVP_CIPH_STREAM_CIPHER, EVP_CIPH_ECB_MODE EVP_CIPH_CBC_MODE,
+EVP_CIPH_CFB_MODE, EVP_CIPH_OFB_MODE, EVP_CIPH_CTR_MODE, EVP_CIPH_GCM_MODE,
+EVP_CIPH_CCM_MODE, EVP_CIPH_XTS_MODE, EVP_CIPH_WRAP_MODE,
+EVP_CIPH_OCB_MODE, EVP_CIPH_SIV_MODE
+
+See L</Gettable EVP_CIPHER parameters> "mode".
+
 =back

-EVP_CIPHER_flags() uses the following flags for legacy purposes only:
+EVP_CIPHER_flags() also uses the flag B<EVP_CIPH_FLAG_CUSTOM_CIPHER> to indicate
+that the cipher supports any input length when used with the EVP_Cipher()
+function. See EVP_Cipher() for more details.
+
+The following flags are defined for legacy purposes and are not returned by
+EVP_CIPHER_flags():

 =over 4

 =item EVP_CIPH_VARIABLE_LENGTH

-=item EVP_CIPH_FLAG_CUSTOM_CIPHER
-
 =item EVP_CIPH_ALWAYS_CALL_INIT

 =item EVP_CIPH_CTRL_INIT
@@ -1364,9 +1383,6 @@ EVP_CIPHER_flags() uses the following flags for legacy purposes only:

 =item EVP_CIPH_FLAG_DEFAULT_ASN1

-See L<EVP_CIPHER_meth_set_flags(3)> for further information related to the above
-flags.
-
 =back

 =head1 RETURN VALUES
diff --git a/doc/man3/EVP_MD_meth_new.pod b/doc/man3/EVP_MD_meth_new.pod
index 3497973323..aac8a3a558 100644
--- a/doc/man3/EVP_MD_meth_new.pod
+++ b/doc/man3/EVP_MD_meth_new.pod
@@ -176,7 +176,7 @@ All EVP_MD_meth_set_*() functions return 1.
 EVP_MD_get_input_blocksize(), EVP_MD_meth_get_result_size(),
 EVP_MD_meth_get_app_datasize() and EVP_MD_meth_get_flags() return the
 indicated sizes or flags.
-All other EVP_CIPHER_meth_get_*() functions return pointers to their
+All other EVP_MD_meth_get_*() functions return pointers to their
 respective B<md> function.

 =head1 SEE ALSO
diff --git a/doc/man3/EVP_aes_128_gcm.pod b/doc/man3/EVP_aes_128_gcm.pod
index 707c1bd90b..1fc88056a7 100644
--- a/doc/man3/EVP_aes_128_gcm.pod
+++ b/doc/man3/EVP_aes_128_gcm.pod
@@ -173,14 +173,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_aria_128_gcm.pod b/doc/man3/EVP_aria_128_gcm.pod
index 9a8f9abb76..dd13559741 100644
--- a/doc/man3/EVP_aria_128_gcm.pod
+++ b/doc/man3/EVP_aria_128_gcm.pod
@@ -102,14 +102,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_bf_cbc.pod b/doc/man3/EVP_bf_cbc.pod
index 11a909207a..2eea0d4c3a 100644
--- a/doc/man3/EVP_bf_cbc.pod
+++ b/doc/man3/EVP_bf_cbc.pod
@@ -47,14 +47,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_camellia_128_ecb.pod b/doc/man3/EVP_camellia_128_ecb.pod
index cb6e12e212..27b3e37af4 100644
--- a/doc/man3/EVP_camellia_128_ecb.pod
+++ b/doc/man3/EVP_camellia_128_ecb.pod
@@ -85,14 +85,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_cast5_cbc.pod b/doc/man3/EVP_cast5_cbc.pod
index 7fef059815..7497d6104b 100644
--- a/doc/man3/EVP_cast5_cbc.pod
+++ b/doc/man3/EVP_cast5_cbc.pod
@@ -47,14 +47,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_chacha20.pod b/doc/man3/EVP_chacha20.pod
index 54fb5a49f8..d7766257ff 100644
--- a/doc/man3/EVP_chacha20.pod
+++ b/doc/man3/EVP_chacha20.pod
@@ -53,14 +53,12 @@ uses a 32 bit counter and a 96 bit nonce for the IV.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_des_cbc.pod b/doc/man3/EVP_des_cbc.pod
index 442be8993a..07725fbb35 100644
--- a/doc/man3/EVP_des_cbc.pod
+++ b/doc/man3/EVP_des_cbc.pod
@@ -95,14 +95,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_desx_cbc.pod b/doc/man3/EVP_desx_cbc.pod
index c22c0de479..5911cec205 100644
--- a/doc/man3/EVP_desx_cbc.pod
+++ b/doc/man3/EVP_desx_cbc.pod
@@ -37,14 +37,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_idea_cbc.pod b/doc/man3/EVP_idea_cbc.pod
index a36aae0bc9..7fb5c9b85f 100644
--- a/doc/man3/EVP_idea_cbc.pod
+++ b/doc/man3/EVP_idea_cbc.pod
@@ -45,14 +45,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_rc2_cbc.pod b/doc/man3/EVP_rc2_cbc.pod
index 17f6f4b3e2..5b431bbbe0 100644
--- a/doc/man3/EVP_rc2_cbc.pod
+++ b/doc/man3/EVP_rc2_cbc.pod
@@ -61,14 +61,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_rc4.pod b/doc/man3/EVP_rc4.pod
index 0311ef278c..024a231e1b 100644
--- a/doc/man3/EVP_rc4.pod
+++ b/doc/man3/EVP_rc4.pod
@@ -53,14 +53,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_rc5_32_12_16_cbc.pod b/doc/man3/EVP_rc5_32_12_16_cbc.pod
index 69fc2f2cc6..d6c97aaca9 100644
--- a/doc/man3/EVP_rc5_32_12_16_cbc.pod
+++ b/doc/man3/EVP_rc5_32_12_16_cbc.pod
@@ -66,15 +66,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
-
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_seed_cbc.pod b/doc/man3/EVP_seed_cbc.pod
index 2c821d07c3..d81ce36397 100644
--- a/doc/man3/EVP_seed_cbc.pod
+++ b/doc/man3/EVP_seed_cbc.pod
@@ -47,14 +47,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return an B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man3/EVP_sm4_cbc.pod b/doc/man3/EVP_sm4_cbc.pod
index 48be7a31ad..49d43c552b 100644
--- a/doc/man3/EVP_sm4_cbc.pod
+++ b/doc/man3/EVP_sm4_cbc.pod
@@ -51,14 +51,12 @@ See L<crypto(7)/Performance> for further information.
 =head1 RETURN VALUES

 These functions return a B<EVP_CIPHER> structure that contains the
-implementation of the symmetric cipher. See L<EVP_CIPHER_meth_new(3)> for
-details of the B<EVP_CIPHER> structure.
+implementation of the symmetric cipher.

 =head1 SEE ALSO

 L<evp(7)>,
-L<EVP_EncryptInit(3)>,
-L<EVP_CIPHER_meth_new(3)>
+L<EVP_EncryptInit(3)>

 =head1 COPYRIGHT

diff --git a/doc/man7/fips_module.pod b/doc/man7/fips_module.pod
index d42acaba45..c163120a0e 100644
--- a/doc/man7/fips_module.pod
+++ b/doc/man7/fips_module.pod
@@ -32,8 +32,8 @@ Low level cryptographic APIs (use the high level APIs, such as EVP, instead)
 =item *

 Any functions that create or modify custom "METHODS" (for example
-EVP_MD_meth_new(), EVP_CIPHER_meth_new(), EVP_PKEY_meth_new(), RSA_meth_new(),
-EC_KEY_METHOD_new(), etc.)
+EVP_MD_meth_new(), EVP_PKEY_meth_new(), RSA_meth_new(), EC_KEY_METHOD_new(),
+etc.)

 =back

diff --git a/doc/man7/ossl-guide-migration.pod b/doc/man7/ossl-guide-migration.pod
index ad2d530884..c615f23922 100644
--- a/doc/man7/ossl-guide-migration.pod
+++ b/doc/man7/ossl-guide-migration.pod
@@ -161,7 +161,7 @@ more information about providers.
 The refactoring to support Providers conflicts internally with the APIs used to
 support engines, including the ENGINE API and any function that creates or
 modifies custom "METHODS" (for example L<EVP_MD_meth_new(3)>,
-L<EVP_CIPHER_meth_new(3)>, L<EVP_PKEY_meth_new(3)>, L<RSA_meth_new(3)>,
+EVP_CIPHER_meth_new(), L<EVP_PKEY_meth_new(3)>, L<RSA_meth_new(3)>,
 L<EC_KEY_METHOD_new(3)>, etc.). These functions are being deprecated in
 OpenSSL 3.0, and users of these APIs should know that their use can likely
 bypass provider selection and configuration, with unintended consequences.