Add a table of cipher names, ciphers and aliases
authortb <tb@openbsd.org>
Sat, 13 Jan 2024 10:57:08 +0000 (10:57 +0000)
committertb <tb@openbsd.org>
Sat, 13 Jan 2024 10:57:08 +0000 (10:57 +0000)
commit11b90073ec1695b980badba6f7f0839db479cd41
tree381749739befa290fb848b5b4270e3c384572856
parentcefff6e5c31bcb46855982e32978b5be6be9bcb2
Add a table of cipher names, ciphers and aliases

This arranges the data provided by dynamic library initialization
in a static table and will help avoid gross code with missing error
checking and other defects on every use of the library. This table
isn't pretty due to various naming inconsistecies accumulated over
the decades. It will significantly simplify the implementation of
API such as EVP_get_cipherbyname() and EVP_CIPHER_do_all().

All the table does is map strings to ciphers, typically used on the
openssl(1) command line or in code it's the mechanism that underlies
the map from NID_chacha20 to the data returned by EVP_chacha20().
It's of course more complicated because it just had to be stupid.

This is one of the places where the use of bsearch() is justified.
The price to pay for the simplification is that adding custom aliases
and custom ciphers to this table will no longer be supported. It is
one significant user of the LHASH madness. That's just another piece
of the awful "toolkit aspect"-guided misdesign that contributes to
making this codebase so terrible.

A corresponding table for the digests will be added in the next
commit.

ok jsing
lib/libcrypto/Makefile
lib/libcrypto/evp/evp_names.c [new file with mode: 0644]