XMLSecurity Data Format
Available as of Camel 2.0
The XMLSecurity The XMLSecurity DataFormat facilitates encryption and decryption of XML payloads at the Document, Element and Element Content levels (including simultaneous multi-node encryption/decryption using XPATH).
...
In order to encrypt the payload, the marshal processor needs to be applied on the route followed by the encryptXMLsecureXML() tag.
Unmarshal
In order to decrypt the payload, the unmarshal processor needs to be applied on the route followed by the encryptXMLsecureXML() tag.
Examples
Given below are several examples of how marshalling could be performaed at the Document, Element and Content levels.
- Full Payload encryption/decryption
Code Block from("direct:start"). marshal().encryptXMLsecureXML(). unmarshal().encryptXMLsecureXML(). to("direct:end");
- Partial Payload Content Only encryption/decryption
Code Block String tagXPATH = "//cheesesites/italy/cheese"; boolean secureTagContent = true; ... from("direct:start"). marshal().encryptXMLsecureXML(tagXPATH , secureTagContent ). unmarshal().encryptXMLsecureXML(tagXPATH , secureTagContent). to("direct:end");
- Partial Multi Node Payload Content Only encryption/decryption
Code Block String tagXPATH = "//cheesesites/*/cheese"; boolean secureTagContent = true; .... from("direct:start"). marshal().encryptXMLsecureXML(tagXPATH , secureTagContent ). unmarshal().encryptXMLsecureXML(tagXPATH , secureTagContent). to("direct:end");
- Partial Payload Content Only encryption/decryption with choice of passPhrase(password)
Code Block String tagXPATH = "//cheesesites/italy/cheese"; boolean secureTagContent = true; .... byte[]String passPhrase = "Just another 24 Byte key".getBytes(); from("direct:start"). marshal().encryptXMLsecureXML(tagXPATH , secureTagContent , passPhrase). unmarshal().encryptXMLsecureXML(tagXPATH , secureTagContent, passPhrase). to("direct:end");
- Partial Payload Content Only encryption/decryption with passPhrase(password) and Algorithm
Code Block import org.apache.xml.security.encryption.XMLCipher; .... String tagXPATH = "//cheesesites/italy/cheese"; boolean secureTagContent = true; byte[]String passPhrase = "Just another 24 Byte key".getBytes(); String algorithm= XMLCipher.TRIPLEDES; from("direct:start"). marshal().encryptXMLsecureXML(tagXPATH , secureTagContent , passPhrase, algorithm). unmarshal().encryptXMLsecureXML(tagXPATH , secureTagContent, passPhrase, algorithm). to("direct:end");
Dependencies
This data format is provided in the camel-xmlsecurity component.