XML Security Library: XML Encryption

Home Download GitHub News Documentation FAQ Tutorial API reference Examples XML Digital Signature XML Encryption XML Canonicalization Reporting Bugs Mailing list Related Authors
## XML Encryption Interoperability Report XML Security library supports the following features as defined in XML Encryption Syntax and Processing Version 1.1 (also see RFC 9231): ### XMLSec Library core features
| Requirements | Status
Processing rules
Type parameter value: Element | Required | Yes
Type parameter value: Content | Required | Yes
Type parameter value: EXI | Optional | No
Encryption | Required | Yes
Decryption | Required | Yes
XML Encryption | Optional | Yes
Syntax
The EncryptedType Element | Required | Yes
The EncryptionMethodElement | Optional | Yes
The CipherData Element | Required | Yes
The CipherReference Element | Optional | Yes
The EncryptedData Element | Required | Yes
The EncryptedKey Element | Optional | Yes
The DerivedKey Element | Required | Yes (2)
The ds:RetrievalMethod Element | Optional | Yes
The ReferenceList Element | Optional | Yes
The EncryptionProperties Element | Optional | Yes
Transforms
XML Canonicalization | See XMLDsig Report
### XMLSec Cryptographic Libraries features
| Requirements | XMLSec with OpenSSL | XMLSec with NSS | XMLSec with GnuTLS | XMLSec with MSCng | XMLSec with MSCrypto (1) | XMLSec with GCrypt (1)
Block Encryption Algorithms
Triple DES (DES3) | Required | Yes | Yes | Yes | Yes | Yes | Yes
AES-CBC-128 | Required | Yes | Yes | Yes | Yes | Yes | Yes
AES-CBC-192 | Optional | Yes | Yes | Yes | Yes | Yes | Yes
AES-CBC-256 | Required | Yes | Yes | Yes | Yes | Yes | Yes
AES-GCM-128 | Required | Yes | Yes | Yes | Yes | No | No
AES-GCM-192 | Optional | Yes | Yes | Yes | Yes | No | No
AES-GCM-256 | Optional | Yes | Yes | Yes | Yes | No | No
Camellia-CBC-128 | Optional | Yes | Yes | Yes | No | No | No
Camellia-CBC-192 | Optional | Yes | Yes | Yes | No | No | No
Camellia-CBC-256 | Optional | Yes | Yes | Yes | No | No | No
ChaCha20 | Optional | Yes | No | Yes | No | No | No
ChaCha20-Poly1305 | Optional | Yes | Yes | Yes | No | No | No
Stream Encryption Algorithms | Optional | Yes | Yes | Yes | Yes | No | No
Key Derivation
ConcatKDF | Required | Yes (3) (4) | Yes | Yes (4) | Yes (4) (5) | No | No
PBKDF2 | Optional | Yes (3) (6) | Yes (6) | Yes (6) | Yes (5) (6) | No | No
HKDF | Optional | Yes (3) | Yes | Yes | Yes (5) | No | No
Key Transport
RSA PKCS1 v1.5 | Optional | Yes | Yes | Yes | Yes | Yes | Yes
RSA-OAEP (MGF1 with SHA1) | Required | Yes | Yes | No | Yes | Yes | Yes
RSA-OAEP with MGF1-SHA1 | Optional | Yes | Yes | No | Yes (7) | No | Yes (7)
RSA-OAEP with MGF1-SHA224 | Optional | Yes | Yes | No | No | No | Yes (7)
RSA-OAEP with MGF1-SHA256 | Optional | Yes | Yes | No | Yes (7) | No | Yes (7)
RSA-OAEP with MGF1-SHA384 | Optional | Yes | Yes | No | Yes (7) | No | Yes (7)
RSA-OAEP with MGF1-SHA512 | Optional | Yes | Yes | No | Yes (7) | No | Yes (7)
Key Agreement
Elliptic Curve Diffie-Hellman (ECDH) | Required | Yes (3) | Yes | Yes | Yes (5) | No | No
XDH Key Agreement (X25519, X448) | Optional | Yes (3) | Yes (9) | Yes | Yes (10) | No | No
Diffie-Hellman with legacy KDF | Optional | No | No | No | No | No | No
Diffie-Hellman with explicit KDF | Optional | Yes (3) (8) | No | No | Yes | No | No
Symmetric Key Wrap
Triple DES Key Wrap | Required | Yes | Yes | Yes | Yes | Yes | Yes
AES-128 KeyWrap | Required | Yes | Yes | Yes | Yes | Yes | Yes
AES-192 KeyWrap | Optional | Yes | Yes | Yes | Yes | Yes | Yes
AES-256 KeyWrap | Required | Yes | Yes | Yes | Yes | Yes | Yes
Camellia-128 KeyWrap | Optional | Yes | Yes | Yes | No | No | No
Camellia-192 KeyWrap | Optional | Yes | Yes | Yes | No | No | No
Camellia-256 KeyWrap | Optional | Yes | Yes | Yes | No | No | No
Message Digest
Message Digest Algorithms | See XMLDsig Report
(1) The feature is disabled by default but can be re-enabled at build time. (2) Some optional features in DerivedKey element are not supported (more details). (3) Requires OpenSSL 3.0.0 or newer. (4) Only byte-aligned bit strings in ConcatKDFParams element are supported (more details). (5) The xmlsec-mscng library does not support some cryptographic algorithms on older versions of Windows. (6) Only "specified" salt is supported for PBKDF2. (7) RSA-OAEP digest algorithm and MGF1 algorithm must be the same. (8) The xmlsec-openssl library only supports DHX (X9.42 format) keys for DH algorithm. (9) The xmlsec-nss library only supports X25519; X448 (Curve448) is not yet implemented in NSS. (10) The xmlsec-mscng library only supports X25519; X448 (Curve448) is not supported. ### Test vectors XML Encryption 1.0 interop (2002) XML Encryption 1.1 interop (2012)