]> git.ipfire.org Git - thirdparty/openssl.git/commit
Implement KEMRecipientInfo (RFC9629) in CMS
authorDaniel Van Geest <daniel.vangeest@cryptonext-security.com>
Thu, 3 Apr 2025 10:19:43 +0000 (11:19 +0100)
committerTomas Mraz <tomas@openssl.org>
Wed, 30 Jul 2025 09:39:04 +0000 (11:39 +0200)
commitd0899abb1b7654922b2272070d8fb593d8b13cff
tree56c0dc4181167355bb0b1b2b5c9f0c33fa57d6e6
parentdaa004d48438d67241b58592d43c3214dd3a903f
Implement KEMRecipientInfo (RFC9629) in CMS

Also add support for ML-KEM in CMS (draft-ietf-lamps-cms-kyber).

Add the -recip_kdf and -recip_ukm parameters to `openssl cms -encrypt`
to allow the user to specify the KDF algorithm and optional user
keying material for each recipient.

A provider may indicate which RecipientInfo type is supported
for a key, otherwise CMS will try to figure it out itself. A
provider may also indicate which KDF to use in KEMRecipientInfo
if the user hasn't specified one.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/27681)
41 files changed:
.gitignore
CHANGES.md
apps/cms.c
crypto/cms/build.info
crypto/cms/cms_asn1.c
crypto/cms/cms_env.c
crypto/cms/cms_err.c
crypto/cms/cms_kari.c
crypto/cms/cms_kem.c [new file with mode: 0644]
crypto/cms/cms_kemri.c [new file with mode: 0644]
crypto/cms/cms_local.h
crypto/cms/cms_pwri.c
crypto/cms/cms_smime.c
crypto/err/openssl.txt
crypto/objects/obj_dat.h
crypto/objects/obj_mac.num
crypto/objects/objects.txt
doc/man1/openssl-cms.pod.in
doc/man3/CMS_add1_recipient_cert.pod
doc/man3/CMS_encrypt.pod
doc/man3/CMS_get0_RecipientInfos.pod
doc/man7/provider-keymgmt.pod
fuzz/oids.txt
include/openssl/cms.h.in
include/openssl/cmserr.h
include/openssl/obj_mac.h
providers/common/der/HKDF.asn1 [new file with mode: 0644]
providers/common/der/build.info
providers/common/der/der_hkdf_gen.c.in [new file with mode: 0644]
providers/common/include/prov/der_hkdf.h.in [new file with mode: 0644]
providers/implementations/keymgmt/build.info
providers/implementations/keymgmt/ml_kem_kmgmt.c.in
test/recipes/80-test_cms.t
test/smime-certs/ca.cnf
test/smime-certs/mksmime-certs.sh
test/smime-certs/sm_mlkem512.pem [new file with mode: 0644]
test/smime-certs/sm_mlkem768.pem [new file with mode: 0644]
util/indent.pro
util/libcrypto.num
util/missingcrypto.txt
util/perl/OpenSSL/paramnames.pm