Requirements

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
W3C Recommendation, XML Encryption Syntax and Processing
  • The API MUST allow a programmer to encrypt and decrypt XML such that all of the SHOULD and MUST requirements specified by the W3C recommendation can be satisfied.
  • The API MUST allow an implementation of the API to be created such that all of the SHOULD and MUST requirements specified by the W3C recommendation can be satisfied.
DOM-independent API
The API MUST NOT have dependencies on a specific XML representation, such as DOM. It MUST be possible to create implementations of the API for different XML processing and mechanism representations, such as DOM, JDOM or dom4j.
Extensible, provider-based API
It MUST be possible for a third-party to create and plug in an implementation responsible for managing and creating cryptographic and transform algorithms, dereferencing URIs, and marshalling objects to/from XML.
Support for a default XML mechanism type: DOM
An implementation MUST minimally support the default mechanism type: DOM. This ensures that all implementations of JSR 106 are guaranteed a minimal level of functionality. Implementations MAY support other mechanism types.
Interoperability for the default XML mechanism type: DOM
The API SHOULD ensure that applications using a DOM implementation are portable and interoperable.