No AuthEnvelopedData (RFC 5083) and no AES-GCM.Parse returns ErrUnsupportedContentType
for AuthEnvelopedData, which is what openssl cms -encrypt -aes-128-gcm produces.
No DigestedData, AuthenticatedData or other content types.Parse returns
ErrUnsupportedContentType.
Signing always uses the id-data content type. Messages with another encapsulated content
type can be parsed and verified but not created.
Signing supports RSA PKCS #1 v1.5 and ECDSA only. No RSASSA-PSS, Ed25519, DSA or post-quantum
signing.
Verification supports RSA PKCS #1 v1.5, RSASSA-PSS and ECDSA. Ed25519 and DSA signatures
fail. An ECDSA signature with SHA-224 fails unless the signature algorithm field names the curve.
Signers are identified by issuer and serial number.Parse fails on a signer identified by
subject key identifier, which is what openssl cms -sign -keyid produces.
No countersignatures, signed receipts or timestamps. Unsigned attributes can be added but are
not interpreted.
No revocation checking.Verify does not consult CRLs or OCSP. CRLs carried in a message are
not checked either.
Recipients must hold RSA keys. No key agreement (ECDH), key encryption key or password
recipients. Encrypt refuses other keys with ErrUnsupportedKeyType. Parse fails on a message
that contains such a recipient, even when another recipient uses RSA.
Recipients are identified by issuer and serial number.Parse fails on a recipient identified
by subject key identifier, which openssl cms -encrypt -keyid produces.
CBC content is not authenticated. A changed ciphertext or a wrong key can decrypt to garbage
instead of failing. Sign the message when integrity matters.
No key derivation for pre-shared keys.EncryptUsingPSK takes raw key bytes.
No streaming. Messages are held in memory while they are parsed or built. The library does
not limit their size.
DegenerateCertificate does not parse its input. It wraps whatever bytes it receives.
Embedded certificates must parse with crypto/x509. The only exception is a critical
authority key identifier with ParseOptions.LegacyCertificateParser.