Supported CMS Content Types
EnvelopedData
content type [RFC5652] using key management techniques key transport (ktri),
key agreement (kari), previously distributed symmetric key-encryption keys (kekri), and password-based key management (pwri).
- Supported key transport algorithms are the RSA encryption schemes RSAES-PKCS-v1_5 and RSAES-OAEP.
- The supported key agreement algorithm is the 'standard' ECDH Elliptic Curve Diffie-Hellman scheme using ANSI-X9.63-KDF or HKDF.
dhSinglePass-stdDH-sha*kdf-scheme
aka ecdhX963KDF-SHA*
(where * is 1, 256, 384, or 512)
dhSinglePass-stdDH-hkdf-sha*-scheme
aka ecdhHKDF-SHA*
(where * is 256, 384, or 512)
- For the
RecipientIdentifier
field in ktri and kari types both choices issuerAndSerialNumber
and subjectKeyIdentifier
are supported.
- For kekri and pwri types only one recipientInfo is supported.
- For pwri types, only the key derivation algorithm PBKDF2 from [RFC8018] and the key encryption algorithm pwriKEK from [RFC3211] are supported.
- For kekri types, the key encryption algorithms
cms3DESwrap
and aes*-wrap
are supported (where * is 128, 192, or 256).
- The optional EnvelopedData fields
OriginatorInfo
and UnprotectedAttrs
are not supported.
- In addition, for
EnvelopedData
, RSA-KEM is supported using the KemRecipientInfo structure (informally "kemri")
inside a CMS OtherRecipientInfo (ori),
see RSA-KEM.
AuthEnvelopedData
content type [RFC5083] using the same key management types and schemes as for EnvelopedData
above
using content-encryption algorithms AES_*_GCM
and CHACHA20_POLY1305
(where * is 128, 192, or 256).
SignedData
content type [RFC5652].
- Optional signed attributes are supported.
- "Detached signature" is supported.
- Degenerate SignedData "certs-only" messages, a.k.a. PKCS#7 certificate chains are supported.
- The optional SignedData field
UnsignedAttributes
is not supported.
CompressedData
content type as per [RFC3274].
Only CMS objects with an id-data
inner content type are supported.
X.509 Certificates
- You can create your own X.509 certificates as either Version 1 or Version 3 (default).
- You can create a self-signed CA certificate and use this to create your own internal chain of
signed certificates.
- A Certificate Signing Request (CSR) file can be created to be submitted to the CA of your choice.
- The most commonly used options for X.509 distinguished names are provided: see
Specifying Distinguished Names.
- Optional key usage extensions and X.509 Extensions can be added.
- X.509 certificate revocation lists (CRLs) can be read and version 1 CRLs can be created.
- Unicode character sets like UniversalString and BMPString are not supported, but UTF8 is.