package camelinaction;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
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 MessageSigningWithKeyStoreParamsTest extends CamelTestSupport {
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry registry = super.createRegistry();
KeyStoreParameters keystore = new KeyStoreParameters();
keystore.setPassword("supersecret");
keystore.setResource("./cia_keystore.jks");
registry.bind("keystore", keystore);
KeyStoreParameters truststore = new KeyStoreParameters();
truststore.setPassword("supersecret");
truststore.setResource("./cia_truststore.jks");
registry.bind("truststore", truststore);
return registry;
}
@Test
public void testSignAndVerifyMessage() throws Exception {
getMockEndpoint("mock:signed").expectedBodiesReceived("Hello World");
getMockEndpoint("mock:verified").expectedBodiesReceived("Hello World");
template.sendBody("direct:sign", "Hello World");
assertMockEndpointsSatisfied();
Exchange exchange = getMockEndpoint("mock:signed").getReceivedExchanges().get(0);
assertNotNull(exchange.getIn().getHeader("CamelDigitalSignature"));
}
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:sign")
.to("crypto:sign://keystore?keyStoreParameters=#keystore&alias=jon&password=secret")
.to("mock:signed")
.to("direct:verify");
from("direct:verify")
.to("crypto:verify://keystore?keyStoreParameters=#truststore&alias=jon&password=secret")
.to("mock:verified");
}
};
}
}