--- /dev/null
+.\" $OpenBSD: EVP_CIPHER_do_all.3,v 1.1 2023/08/30 00:58:57 tb Exp $
+.\"
+.\" Copyright (c) 2023 Theo Buehler <tb@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.Dd $Mdocdate: August 30 2023 $
+.Dt EVP_CIPHER_DO_ALL 3
+.Os
+.Sh NAME
+.Nm EVP_CIPHER_do_all ,
+.Nm EVP_CIPHER_do_all_sorted ,
+.Nm EVP_MD_do_all ,
+.Nm EVP_MD_do_all_sorted
+.Nd iterate over lookup tables for ciphers and digests
+.Sh SYNOPSIS
+.In openssl/evp.h
+.Ft void
+.Fo EVP_CIPHER_do_all
+.Fa "void (*fn)(const EVP_CIPHER *cipher, const char *from,\
+ const char *to, void *arg)"
+.Fa "void *arg"
+.Fc
+.Ft void
+.Fo EVP_CIPHER_do_all_sorted
+.Fa "void (*fn)(const EVP_CIPHER *cipher, const char *from,\
+ const char *to, void *arg)"
+.Fa "void *arg"
+.Fc
+.Ft void
+.Fo EVP_MD_do_all
+.Fa "void (*fn)(const EVP_MD *md, const char *from,\
+ const char *to, void *arg)"
+.Fa "void *arg"
+.Fc
+.Ft void
+.Fo EVP_MD_do_all_sorted
+.Fa "void (*fn)(const EVP_MD *md, const char *from,\
+ const char *to, void *arg)"
+.Fa "void *arg"
+.Fc
+.Sh DESCRIPTION
+.Fn EVP_CIPHER_do_all
+calls
+.Fa fn
+on every entry of the global table of cipher names and aliases.
+For a cipher name entry,
+.Fa fn
+is called with a non-NULL
+.Fa cipher ,
+its non-NULL cipher name
+.Fa from ,
+a NULL
+.Fa to ,
+and the
+.Fa arg
+pointer.
+For an alias entry,
+.Fa fn
+is called with a NULL
+.Fa cipher ,
+its alias
+.Fa from ,
+the cipher name that alias points
+.Fa to ,
+and the
+.Fa arg
+pointer.
+.Pp
+.Fn EVP_CIPHER_do_all_sorted
+is similar, except that it processes the cipher names and aliases
+in lexicographic order of their
+.Fa from
+names as determined by
+.Xr strcmp 3 .
+.Pp
+.Fn EVP_MD_do_all
+calls
+.Fa fn
+on every entry of the global table of digest names and aliases.
+For a digest name entry,
+.Fa fn
+is called with a non-NULL
+.Fa md ,
+its non-NULL digest name
+.Fa from ,
+a NULL
+.Fa to ,
+and the
+.Fa arg
+pointer.
+For an alias entry,
+.Fa fn
+is called with a NULL
+.Fa md ,
+its alias
+.Fa from ,
+the digest name that alias points
+.Fa to ,
+and the
+.Fa arg
+pointer.
+.Pp
+.Fn EVP_MD_do_all_sorted
+is similar, except that it processes the digest names and aliases
+in lexicographic order of their
+.Fa from
+names as determined by
+.Xr strcmp 3 .
+.Sh SEE ALSO
+.Xr evp 3 ,
+.Xr EVP_add_cipher 3 ,
+.Xr OBJ_NAME_do_all 3
+.Sh HISTORY
+These functions first appeared in OpenSSL 1.0.0 and have been available since
+.Ox 4.9 .
+.Sh BUGS
+.Fn EVP_CIPHER_do_all_sorted
+and
+.Fn EVP_MD_do_all_sorted
+are wrappers of
+.Xr OBJ_NAME_do_all_sorted 3 .
+In particular, if memory allocation fails, they do nothing at all
+without telling the caller about the problem.
-.\" $OpenBSD: evp.3,v 1.20 2023/08/27 15:33:08 schwarze Exp $
+.\" $OpenBSD: evp.3,v 1.21 2023/08/30 00:58:57 tb Exp $
.\" full merge up to: OpenSSL man7/evp 24a535ea Sep 22 13:14:20 2020 +0100
.\"
.\" This file was written by Ulf Moeller <ulf@openssl.org>,
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd $Mdocdate: August 27 2023 $
+.Dd $Mdocdate: August 30 2023 $
.Dt EVP 3
.Os
.Sh NAME
.Xr EVP_camellia_128_cbc 3 ,
.Xr EVP_chacha20 3 ,
.Xr EVP_CIPHER_CTX_get_cipher_data 3 ,
+.Xr EVP_CIPHER_do_all 3 ,
.Xr EVP_CIPHER_meth_new 3 ,
.Xr EVP_des_cbc 3 ,
.Xr EVP_DigestInit 3 ,