openssl/doc/man7
slontis 78c44b0594 Add HPKE DHKEM provider support for EC, X25519 and X448.
The code is derived from @sftcd's work in PR #17172.
This PR puts the DHKEM algorithms into the provider layer as
KEM algorithms for EC and ECX.

This PR only implements the DHKEM component of HPKE as specified in
RFC 9180.

crypto/hpke/hpke_util.c has been added for fuctions that will
be shared between DHKEM and HPKE.

API's for EVP_PKEY_auth_encapsulate_init() and EVP_PKEY_auth_decapsulate_init()
have been added to support authenticated encapsulation. auth_init() functions
were chosen rather that a EVP_PKEY_KEM_set_auth() interface to support
future algorithms that could possibly need different init functions.

Internal code has been refactored, so that it can be shared between the DHKEM
and other systems. Since DHKEM operates on low level keys it needs to be
able to do low level ECDH and ECXDH calls without converting the keys
back into EVP_PKEY/EVP_PKEY_CTX form. See ossl_ecx_compute_key(),
ossl_ec_public_from_private()

DHKEM requires API's to derive a key using a seed (IKM). This did not sit
well inside the DHKEM itself as dispatch functions. This functionality
fits better inside the EC and ECX keymanagers keygen, since
they are just variations of keygen where the private key is generated
in a different manner. This should mainly be used for testing purposes.
See ossl_ec_generate_key_dhkem().
It supports this by allowing a settable param to be passed to keygen
(See OSSL_PKEY_PARAM_DHKEM_IKM).
The keygen calls code within ec and ecx dhkem implementation to handle this.
See ossl_ecx_dhkem_derive_private() and ossl_ec_dhkem_derive_private().
These 2 functions are also used by the EC/ECX DHKEM implementations to generate
the sender ephemeral keys.

Reviewed-by: Hugo Landau <hlandau@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19068)
2022-09-23 09:24:47 +01:00
..
img doc: add PKEY life cycle documentation 2021-06-08 18:59:25 +10:00
bio.pod Update copyright year 2022-05-03 13:34:51 +01:00
crypto.pod Update copyright year 2022-05-03 13:34:51 +01:00
ct.pod
des_modes.pod
EVP_ASYM_CIPHER-SM2.pod
EVP_CIPHER-AES.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-ARIA.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-BLOWFISH.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-CAMELLIA.pod Add support for camellia cbc cts mode 2021-08-18 08:38:40 +10:00
EVP_CIPHER-CAST.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-CHACHA.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-DES.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-IDEA.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-RC2.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-RC4.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-RC5.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-SEED.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_CIPHER-SM4.pod Add Docs for EVP_CIPHER-* 2021-05-28 14:29:13 +02:00
EVP_KDF-HKDF.pod doc: reorder the string and int extract/expand param values 2021-08-05 15:44:00 +10:00
EVP_KDF-KB.pod Support different R_BITS lengths for KBKDF 2021-11-24 11:02:53 +10:00
EVP_KDF-KRB5KDF.pod Cleanup the missing*.txt files 2021-05-21 11:03:37 +02:00
EVP_KDF-PBKDF1.pod doc: note that these KDFs require the legacy provider to be available 2021-09-28 18:08:42 +10:00
EVP_KDF-PBKDF2.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
EVP_KDF-PKCS12KDF.pod
EVP_KDF-PVKKDF.pod doc: note that these KDFs require the legacy provider to be available 2021-09-28 18:08:42 +10:00
EVP_KDF-SCRYPT.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_KDF-SS.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_KDF-SSHKDF.pod Update copyright year 2022-05-03 13:34:51 +01:00
EVP_KDF-TLS1_PRF.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_KDF-TLS13_KDF.pod doc: add documentation for TLS13_KDF 2021-08-05 15:44:00 +10:00
EVP_KDF-X942-ASN1.pod Update EVP_KDF-X942-ASN1.pod 2022-07-28 11:12:04 +10:00
EVP_KDF-X942-CONCAT.pod Update copyright year 2021-09-07 13:35:43 +02:00
EVP_KDF-X963.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_KEM-EC.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
EVP_KEM-RSA.pod
EVP_KEM-X25519.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
EVP_KEYEXCH-DH.pod Update copyright year 2022-05-03 13:34:51 +01:00
EVP_KEYEXCH-ECDH.pod Update copyright year 2022-05-03 13:34:51 +01:00
EVP_KEYEXCH-X25519.pod
EVP_MAC-BLAKE2.pod doc: document the MAC block size getter 2021-05-25 17:23:50 +10:00
EVP_MAC-CMAC.pod doc: document the MAC block size getter 2021-05-25 17:23:50 +10:00
EVP_MAC-GMAC.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_MAC-HMAC.pod doc: document the MAC block size getter 2021-05-25 17:23:50 +10:00
EVP_MAC-KMAC.pod doc: document the MAC block size getter 2021-05-25 17:23:50 +10:00
EVP_MAC-Poly1305.pod mac: improve MAC documentation (Poly 1305 key reuse, nomenclature) 2021-05-14 22:24:00 +10:00
EVP_MAC-Siphash.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_MD-BLAKE2.pod Update copyright year 2022-05-03 13:34:51 +01:00
EVP_MD-common.pod Update copyright year 2021-06-17 13:24:59 +01:00
EVP_MD-KECCAK.pod Add default provider support for Keccak 224, 256, 384 and 512 2021-09-23 12:07:57 +10:00
EVP_MD-MD2.pod
EVP_MD-MD4.pod
EVP_MD-MD5-SHA1.pod
EVP_MD-MD5.pod
EVP_MD-MDC2.pod Update copyright year 2021-02-18 15:05:17 +00:00
EVP_MD-RIPEMD160.pod
EVP_MD-SHA1.pod
EVP_MD-SHA2.pod
EVP_MD-SHA3.pod
EVP_MD-SHAKE.pod SHAKE documentation updates for default output length. 2022-08-17 16:17:42 +02:00
EVP_MD-SM3.pod
EVP_MD-WHIRLPOOL.pod
EVP_PKEY-DH.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
EVP_PKEY-DSA.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
EVP_PKEY-EC.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
EVP_PKEY-FFC.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
EVP_PKEY-HMAC.pod
EVP_PKEY-RSA.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
EVP_PKEY-SM2.pod Documentation: SM2 keys can use only the SM2 curve 2021-06-24 11:29:58 +02:00
EVP_PKEY-X25519.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
EVP_RAND-CTR-DRBG.pod docs: update CTR DRBG documentation to not mention the lack of a derivation function in FIPS 2021-07-20 18:34:07 +10:00
EVP_RAND-HASH-DRBG.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_RAND-HMAC-DRBG.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_RAND-SEED-SRC.pod Update copyright year 2021-03-11 13:27:36 +00:00
EVP_RAND-TEST-RAND.pod test-rand: return failure on not enough data, allow parent 2021-10-26 20:02:55 +10:00
EVP_RAND.pod
EVP_SIGNATURE-DSA.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
EVP_SIGNATURE-ECDSA.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
EVP_SIGNATURE-ED25519.pod Update copyright year 2021-01-07 13:38:50 +00:00
EVP_SIGNATURE-HMAC.pod
EVP_SIGNATURE-RSA.pod Updated information for OSSL_SIGNATURE_PARAM_PSS_SALTLEN 2022-07-06 14:26:16 -07:00
evp.pod Deprecate EVP_PKEY_cmp() and EVP_PKEY_cmp_parameters(). 2021-04-27 09:45:53 +10:00
fips_module.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
life_cycle-cipher.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
life_cycle-digest.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
life_cycle-kdf.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
life_cycle-mac.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
life_cycle-pkey.pod Update copyright year 2022-05-03 13:34:51 +01:00
life_cycle-rand.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
migration_guide.pod Fix typo in migration guide 2022-08-23 10:20:02 +10:00
openssl_user_macros.pod.in Update copyright year 2021-07-29 15:41:35 +01:00
openssl-core_dispatch.h.pod
openssl-core_names.h.pod
openssl-core.h.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
openssl-env.pod Add basic RISC-V cpuid and OPENSSL_riscvcap 2022-05-19 16:32:49 +10:00
openssl-glossary.pod Update copyright year 2022-05-03 13:34:51 +01:00
openssl-threads.pod doc: add note to indicate that the OBJ_ functions were not thread safe in 3.0 2021-09-25 10:39:20 +10:00
OSSL_PROVIDER-base.pod
OSSL_PROVIDER-default.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
OSSL_PROVIDER-FIPS.pod Add documentation for key validation that indicates the difference between the 2022-05-09 10:07:42 +10:00
OSSL_PROVIDER-legacy.pod include PVK KDF in legacy provider algorithm list 2021-09-28 18:08:41 +10:00
OSSL_PROVIDER-null.pod
ossl_store-file.pod
ossl_store.pod doc: fix macro name 2021-11-25 16:04:05 +10:00
passphrase-encoding.pod Update copyright year 2021-09-07 13:35:43 +02:00
property.pod doc: document that property names are unique 2021-10-09 23:29:13 +10:00
provider-asym_cipher.pod Small fixes and cleanups of provider API documentation 2021-04-09 10:32:00 +02:00
provider-base.pod Fix for OSSL_PARAM sample code referencing OSSL_PARAM_UTF8_PTR 2022-06-16 15:36:23 +02:00
provider-cipher.pod Correct doubled OSSL_OSSL when documenting OSSL_FUNC_.._fn 2022-06-28 17:54:56 +02:00
provider-decoder.pod DECODER: use property definitions instead of getting implementation parameters 2021-06-05 20:30:11 +10:00
provider-digest.pod Correct doubled OSSL_OSSL when documenting OSSL_FUNC_.._fn 2022-06-28 17:54:56 +02:00
provider-encoder.pod ENCODER: use property definitions instead of getting implementation parameters 2021-06-05 20:30:47 +10:00
provider-kdf.pod Correct doubled OSSL_OSSL when documenting OSSL_FUNC_.._fn 2022-06-28 17:54:56 +02:00
provider-kem.pod Add HPKE DHKEM provider support for EC, X25519 and X448. 2022-09-23 09:24:47 +01:00
provider-keyexch.pod Update copyright year 2022-05-03 13:34:51 +01:00
provider-keymgmt.pod doc: Fix keymgmt functions parameters 2022-06-01 17:16:17 +02:00
provider-mac.pod Correct doubled OSSL_OSSL when documenting OSSL_FUNC_.._fn 2022-06-28 17:54:56 +02:00
provider-object.pod Update copyright year 2022-05-03 13:34:51 +01:00
provider-rand.pod doc: note that RAND lifecycle transitions will be enforced at some point 2021-03-26 18:21:36 +10:00
provider-signature.pod Change name of parameter in documentation from sigret to sig 2022-08-04 11:02:28 +01:00
provider-storemgmt.pod Add missing documentation of OSSL_FUNC_store_export_object() 2022-06-28 17:54:56 +02:00
provider.pod Update copyright year 2022-05-03 13:34:51 +01:00
proxy-certificates.pod doc: remove end of line whitespace 2021-09-22 16:22:50 +10:00
RAND.pod Fix heading in random generator man7 page 2021-10-08 12:09:46 +10:00
RSA-PSS.pod
ssl.pod
x509.pod Update copyright year 2021-04-22 14:38:44 +01:00
X25519.pod