openssl/crypto/objects
Daniel Van Geest d0899abb1b 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)
2025-07-30 11:39:04 +02:00
..
README.md Fix many MarkDown issues in {NOTES*,README*,HACKING,LICENSE}.md files 2020-07-05 11:29:43 +02:00
build.info
o_names.c Stop raising ERR_R_MALLOC_FAILURE in most places 2022-10-05 14:02:03 +02:00
obj_compat.h Fix copyrights 2022-02-03 13:56:38 +01:00
obj_dat.c reduce lock contention when adding objects to ADDED_OBJ hash table 2025-07-29 13:23:45 -04:00
obj_dat.h Implement KEMRecipientInfo (RFC9629) in CMS 2025-07-30 11:39:04 +02:00
obj_dat.pl Copyright year updates 2024-09-05 09:35:49 +02:00
obj_err.c Update copyright year 2021-06-17 13:24:59 +01:00
obj_lib.c Stop raising ERR_R_MALLOC_FAILURE in most places 2022-10-05 14:02:03 +02:00
obj_local.h Add deprecation macro for 3.1 and deprecate OPENSSL_LH_stats 2022-06-22 09:36:14 +02:00
obj_mac.num Implement KEMRecipientInfo (RFC9629) in CMS 2025-07-30 11:39:04 +02:00
obj_xref.c Stop raising ERR_R_MALLOC_FAILURE in most places 2022-10-05 14:02:03 +02:00
obj_xref.h SLH_DSA: Make apps.c do_X509_REQ_verify() call work correctly. 2025-02-18 10:17:29 +01:00
obj_xref.txt SLH_DSA: Make apps.c do_X509_REQ_verify() call work correctly. 2025-02-18 10:17:29 +01:00
objects.pl Add a local perl module to get year last changed 2021-03-31 13:59:53 +02:00
objects.txt Implement KEMRecipientInfo (RFC9629) in CMS 2025-07-30 11:39:04 +02:00
objxref.pl Add a local perl module to get year last changed 2021-03-31 13:59:53 +02:00

README.md

objects.txt syntax

To cover all the naming hacks that were previously in objects.h needed some kind of hacks in objects.txt.

The basic syntax for adding an object is as follows:

    1 2 3 4         : shortName     : Long Name

            If Long Name contains only word characters and hyphen-minus
            (0x2D) or full stop (0x2E) then Long Name is used as basis
            for the base name in C. Otherwise, the shortName is used.

            The base name (let's call it 'base') will then be used to
            create the C macros SN_base, LN_base, NID_base and OBJ_base.

            Note that if the base name contains spaces, dashes or periods,
            those will be converted to underscore.

Then there are some extra commands:

    !Alias foo 1 2 3 4

            This just makes a name foo for an OID.  The C macro
            OBJ_foo will be created as a result.

    !Cname foo

            This makes sure that the name foo will be used as base name
            in C.

    !module foo
    1 2 3 4         : shortName     : Long Name
    !global

            The !module command was meant to define a kind of modularity.
            What it does is to make sure the module name is prepended
            to the base name.  !global turns this off.  This construction
            is not recursive.

Lines starting with # are treated as comments, as well as any line starting with ! and not matching the commands above.