2023-08-26 10:27:18 +02:00
|
|
|
.\" $OpenBSD: EVP_add_cipher.3,v 1.6 2023/08/25 18:39:04 schwarze Exp $
|
2023-08-25 19:49:13 +02:00
|
|
|
.\"
|
|
|
|
.\" 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 25 2023 $
|
|
|
|
.Dt EVP_ADD_CIPHER 3
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm EVP_add_cipher ,
|
|
|
|
.Nm EVP_add_cipher_alias ,
|
|
|
|
.Nm EVP_delete_cipher_alias ,
|
|
|
|
.Nm EVP_add_digest ,
|
|
|
|
.Nm EVP_add_digest_alias ,
|
|
|
|
.Nm EVP_delete_digest_alias
|
2023-08-26 10:27:18 +02:00
|
|
|
.Nd maintain lookup tables for cipher and digest names
|
2023-08-25 19:49:13 +02:00
|
|
|
.Sh SYNOPSIS
|
|
|
|
.In openssl/evp.h
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_add_cipher
|
|
|
|
.Fa "const EVP_CIPHER *cipher"
|
|
|
|
.Fc
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_add_cipher_alias
|
|
|
|
.Fa "const char *name"
|
|
|
|
.Fa "const char *alias"
|
|
|
|
.Fc
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_delete_cipher_alias
|
|
|
|
.Fa "const char *alias"
|
|
|
|
.Fc
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_add_digest
|
|
|
|
.Fa "const EVP_MD *md"
|
|
|
|
.Fc
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_add_digest_alias
|
|
|
|
.Fa "const char *name"
|
|
|
|
.Fa "const char *alias"
|
|
|
|
.Fc
|
|
|
|
.Ft int
|
|
|
|
.Fo EVP_delete_digest_alias
|
|
|
|
.Fa "const char *alias"
|
|
|
|
.Fc
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
.Fn EVP_add_cipher
|
|
|
|
adds
|
|
|
|
.Fa cipher
|
|
|
|
to a global lookup table so that it can be retrieved with
|
|
|
|
.Xr EVP_get_cipherbyname 3
|
|
|
|
using both its long and short names,
|
|
|
|
as determined by the
|
|
|
|
.Fa cipher Ns 's
|
|
|
|
NID via
|
|
|
|
.Xr OBJ_nid2ln 3
|
|
|
|
and
|
|
|
|
.Xr OBJ_nid2sn 3 .
|
|
|
|
It is the caller's responsibility to ensure that the long
|
|
|
|
and short names are not
|
|
|
|
.Dv NULL .
|
|
|
|
Internally, the lookup table is the global associative array and
|
|
|
|
.Xr OBJ_NAME_add 3
|
|
|
|
is used to add two key-value pairs with value pointer
|
|
|
|
.Fa cipher
|
|
|
|
and the keys consisting of the names and
|
|
|
|
the type
|
|
|
|
.Dv OBJ_NAME_TYPE_CIPHER_METH .
|
|
|
|
.Pp
|
|
|
|
.Fn EVP_add_cipher_alias
|
|
|
|
and
|
|
|
|
.Fn EVP_delete_cipher_alias
|
|
|
|
add and remove the
|
|
|
|
.Fa alias
|
|
|
|
for the cipher
|
|
|
|
.Fa name .
|
|
|
|
They are implemented as macros wrapping
|
|
|
|
.Xr OBJ_NAME_add 3
|
|
|
|
and
|
|
|
|
.Xr OBJ_NAME_remove 3
|
|
|
|
with
|
|
|
|
.Fa type
|
|
|
|
set to the bitwise or of
|
|
|
|
.Dv OBJ_NAME_TYPE_CIPHER_METH
|
|
|
|
and
|
|
|
|
.Dv OBJ_NAME_ALIAS .
|
|
|
|
.Pp
|
|
|
|
.Fn EVP_add_digest
|
|
|
|
adds
|
|
|
|
.Fa md
|
|
|
|
to a global lookup table so that it can be retrieved with
|
|
|
|
.Xr EVP_get_digestbyname 3
|
|
|
|
using both its long and short names,
|
|
|
|
as determined by the
|
|
|
|
.Fa md Ns 's
|
|
|
|
NID via
|
|
|
|
.Xr OBJ_nid2ln 3
|
|
|
|
and
|
|
|
|
.Xr OBJ_nid2sn 3 .
|
|
|
|
If the
|
|
|
|
.Fa md
|
|
|
|
has an associated public key signing algorithm (see
|
|
|
|
.Xr EVP_MD_pkey_type 3 )
|
|
|
|
distinct from the
|
|
|
|
.Fa md ,
|
|
|
|
the signing algorithm's short and long names are added as aliases for
|
|
|
|
the short name of
|
|
|
|
.Fa md .
|
|
|
|
It is the caller's responsibility to ensure that all long
|
|
|
|
and short names are not
|
|
|
|
.Dv NULL .
|
|
|
|
Internally, the lookup table is the global associative array and
|
|
|
|
.Xr OBJ_NAME_add 3
|
|
|
|
is used to add two key-value pairs with value pointer
|
|
|
|
.Fa md
|
|
|
|
and the keys consisting of the names and
|
|
|
|
the type
|
|
|
|
.Dv OBJ_NAME_TYPE_MD_METH .
|
|
|
|
The aliases are added with
|
|
|
|
.Fn EVP_add_digest_alias .
|
|
|
|
.Pp
|
|
|
|
.Fn EVP_add_digest_alias
|
|
|
|
and
|
|
|
|
.Fn EVP_delete_digest_alias
|
|
|
|
add and remove the
|
|
|
|
.Fa alias
|
|
|
|
for the digest
|
|
|
|
.Fa name .
|
|
|
|
They are implemented as macros wrapping
|
|
|
|
.Xr OBJ_NAME_add 3
|
|
|
|
and
|
|
|
|
.Xr OBJ_NAME_remove 3
|
|
|
|
with
|
|
|
|
.Fa type
|
|
|
|
set to the bitwise or of
|
|
|
|
.Dv OBJ_NAME_TYPE_MD_METH
|
|
|
|
and
|
|
|
|
.Dv OBJ_NAME_ALIAS .
|
|
|
|
.Sh RETURN VALUES
|
2023-08-26 10:27:18 +02:00
|
|
|
.Fn EVP_add_cipher ,
|
|
|
|
.Fn EVP_add_cipher_alias ,
|
|
|
|
.Fn EVP_add_digest ,
|
|
|
|
and
|
|
|
|
.Fn EVP_add_digest_alias
|
|
|
|
return 1 on success or 0 if memory allocation fails.
|
|
|
|
.Pp
|
|
|
|
.Fn EVP_delete_cipher_alias
|
|
|
|
and
|
|
|
|
.Fn EVP_delete_digest_alias
|
|
|
|
return 1 if one alias was removed or 0 otherwise.
|
2023-08-25 19:49:13 +02:00
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr evp 3 ,
|
|
|
|
.Xr EVP_CIPHER_meth_new 3 ,
|
|
|
|
.Xr EVP_get_cipherbyname 3 ,
|
|
|
|
.Xr EVP_get_digestbyname 3 ,
|
|
|
|
.Xr EVP_MD_meth_new 3 ,
|
|
|
|
.Xr OBJ_create 3 ,
|
|
|
|
.Xr OBJ_NAME_add 3 ,
|
|
|
|
.Xr OpenSSL_add_all_algorithms 3
|
|
|
|
.Sh HISTORY
|
|
|
|
.Fn EVP_add_cipher
|
|
|
|
and
|
|
|
|
.Fn EVP_add_digest
|
|
|
|
first appeared in OpenSSL 0.9.0 and have been available since
|
|
|
|
.Ox 2.4 .
|
|
|
|
.Pp
|
|
|
|
.Fn EVP_add_cipher_alias ,
|
|
|
|
.Fn EVP_delete_cipher_alias ,
|
|
|
|
.Fn EVP_add_digest_alias ,
|
|
|
|
and
|
|
|
|
.Fn EVP_delete_digest_alias
|
|
|
|
first appeared in OpenSSL 0.9.4 and have been available since
|
|
|
|
.Ox 2.6 .
|
|
|
|
.Sh BUGS
|
|
|
|
Key-value pairs already added before an error occurred
|
|
|
|
remain in the global associative array,
|
|
|
|
leaving it in an unknown state.
|
|
|
|
.Pp
|
|
|
|
While aliases can be added and removed, there is no dedicated API
|
|
|
|
to remove added ciphers or digests.
|