package camelinaction; import java.security.Key; import java.security.KeyStore; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.converter.crypto.CryptoDataFormat; import org.apache.camel.impl.JndiRegistry; import org.apache.camel.test.junit4.CamelTestSupport; import org.apache.camel.util.jsse.KeyStoreParameters; import org.junit.Test; public class MessageEncryptionTest extends CamelTestSupport { private Key secretKey; @Override protected JndiRegistry createRegistry() throws Exception { JndiRegistry registry = super.createRegistry(); KeyStoreParameters keystore = new KeyStoreParameters(); keystore.setPassword("supersecret"); keystore.setResource("./cia_secrets.jceks"); keystore.setType("JCEKS"); KeyStore store = keystore.createKeyStore(); secretKey = store.getKey("ciasecrets", "secret".toCharArray()); registry.bind("secretKey", secretKey); return registry; } @Test public void testEncryptAndDecryptMessage() throws Exception { getMockEndpoint("mock:unencrypted").expectedBodiesReceived("Hello World"); template.sendBody("direct:start", "Hello World"); assertMockEndpointsSatisfied(); Exchange exchange = getMockEndpoint("mock:encrypted").getReceivedExchanges().get(0); assertNotEquals("Hello World", exchange.getIn().getBody()); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { CryptoDataFormat crypto = new CryptoDataFormat("DES", secretKey); from("direct:start") .marshal(crypto) .to("mock:encrypted") .unmarshal(crypto) .to("mock:unencrypted"); } }; } }