You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/03/25 07:12:38 UTC
svn commit: r927285 - in /camel/trunk/components/camel-crypto: ./
src/main/java/org/apache/camel/component/crypto/
src/main/resources/META-INF/services/org/apache/camel/component/
src/test/java/org/apache/camel/component/crypto/ src/test/resources/org/...
Author: davsclaus
Date: Thu Mar 25 06:12:37 2010
New Revision: 927285
URL: http://svn.apache.org/viewvc?rev=927285&view=rev
Log:
CAMEL-2482: Applied patch with thanks to Stephen Gargan.
Added:
camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto
Removed:
camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/verify
Modified:
camel/trunk/components/camel-crypto/pom.xml
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SignatureTests.java
camel/trunk/components/camel-crypto/src/test/resources/org/apache/camel/component/crypto/SpringSignatureTests.xml
Modified: camel/trunk/components/camel-crypto/pom.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/pom.xml?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/pom.xml (original)
+++ camel/trunk/components/camel-crypto/pom.xml Thu Mar 25 06:12:37 2010
@@ -46,13 +46,13 @@
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
+
+ <!-- for testing -->
<dependency>
<groupId>bouncycastle</groupId>
<artifactId>bcprov-jdk15</artifactId>
- <optional>true</optional>
+ <scope>test</scope>
</dependency>
-
- <!-- for testing -->
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test</artifactId>
Modified: camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java (original)
+++ camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureComponent.java Thu Mar 25 06:12:37 2010
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.crypto;
+import java.net.MalformedURLException;
+import java.net.URI;
import java.util.Map;
import org.apache.camel.CamelContext;
@@ -44,7 +46,12 @@ public class DigitalSignatureComponent e
DigitalSignatureConfiguration config = getConfiguration().copy();
setProperties(config, parameters);
config.setCamelContext(getCamelContext());
-
+ try {
+ config.setCryptoOperation(new URI(remaining).getScheme());
+ } catch (Exception e) {
+ throw new MalformedURLException(String.format("An invalid crypto uri was provided '%s'."
+ + " Check the uri matches the format crypto:sign or crypto:verify", uri));
+ }
return new DigitalSignatureEndpoint(uri, this, config);
}
Modified: camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java (original)
+++ camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java Thu Mar 25 06:12:37 2010
@@ -51,6 +51,7 @@ public class DigitalSignatureConfigurati
private String keystoreName;
private String randomName;
private boolean clearHeaders;
+ private String operation;
public DigitalSignatureConfiguration copy() {
try {
@@ -399,4 +400,20 @@ public class DigitalSignatureConfigurati
this.clearHeaders = clearHeaders;
}
+ /**
+ * Set the Crypto operation from that supplied after the crypto scheme in the
+ * endpoint uri e.g. crypto:sign sets sign as the operation.
+ *
+ * @param operation the operation supplied after the crypto scheme
+ */
+ public void setCryptoOperation(String operation) {
+ this.operation = operation;
+ }
+
+ /**
+ * Gets the Crypto operation that was supplied in the the crypto scheme in the endpoint uri
+ */
+ public String getCryptoOperation() {
+ return operation;
+ }
}
Modified: camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java (original)
+++ camel/trunk/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java Thu Mar 25 06:12:37 2010
@@ -41,7 +41,7 @@ public class DigitalSignatureEndpoint ex
}
public Producer createProducer() throws Exception {
- return getEndpointUri().startsWith("sign")
+ return "sign".equals(configuration.getCryptoOperation())
? new DigitalSignatureProducer(this, new SigningProcessor(configuration)) : new DigitalSignatureProducer(this, new VerifyingProcessor(configuration));
}
Added: camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto?rev=927285&view=auto
==============================================================================
--- camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto (added)
+++ camel/trunk/components/camel-crypto/src/main/resources/META-INF/services/org/apache/camel/component/crypto Thu Mar 25 06:12:37 2010
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+class=org.apache.camel.component.crypto.DigitalSignatureComponent
Modified: camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SignatureTests.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SignatureTests.java?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SignatureTests.java (original)
+++ camel/trunk/components/camel-crypto/src/test/java/org/apache/camel/component/crypto/SignatureTests.java Thu Mar 25 06:12:37 2010
@@ -69,7 +69,7 @@ public class SignatureTests extends Cont
return new RouteBuilder[] {new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: basic
- from("direct:keypair").to("sign://basic?privateKey=myPrivateKey", "verify://basic?publicKey=myPublicKey", "mock:result");
+ from("direct:keypair").to("crypto:sign://basic?privateKey=#myPrivateKey", "crypto:verify://basic?publicKey=#myPublicKey", "mock:result");
// END SNIPPET: basic
}
}, new RouteBuilder() {
@@ -82,61 +82,61 @@ public class SignatureTests extends Cont
PublicKey publicKey = keyPair.getPublic();
// we can set the keys explicitly on the endpoint instances.
- context.getEndpoint("sign://rsa?algorithm=MD5withRSA", DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
- context.getEndpoint("verify://rsa?algorithm=MD5withRSA", DigitalSignatureEndpoint.class).setPublicKey(publicKey);
- from("direct:algorithm").to("sign://rsa?algorithm=MD5withRSA", "verify://rsa?algorithm=MD5withRSA", "mock:result");
+ context.getEndpoint("crypto:sign://rsa?algorithm=MD5withRSA", DigitalSignatureEndpoint.class).setPrivateKey(privateKey);
+ context.getEndpoint("crypto:verify://rsa?algorithm=MD5withRSA", DigitalSignatureEndpoint.class).setPublicKey(publicKey);
+ from("direct:algorithm").to("crypto:sign://rsa?algorithm=MD5withRSA", "crypto:verify://rsa?algorithm=MD5withRSA", "mock:result");
// END SNIPPET: algorithm
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: buffersize
- from("direct:buffersize").to("sign://buffer?privateKey=myPrivateKey&buffersize=1024", "verify://buffer?publicKey=myPublicKey&buffersize=1024", "mock:result");
+ from("direct:buffersize").to("crypto:sign://buffer?privateKey=#myPrivateKey&buffersize=1024", "crypto:verify://buffer?publicKey=#myPublicKey&buffersize=1024", "mock:result");
// END SNIPPET: buffersize
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: provider
- from("direct:provider").to("sign://provider?privateKey=myPrivateKey&provider=SUN", "verify://provider?publicKey=myPublicKey&provider=SUN", "mock:result");
+ from("direct:provider").to("crypto:sign://provider?privateKey=#myPrivateKey&provider=SUN", "crypto:verify://provider?publicKey=#myPublicKey&provider=SUN", "mock:result");
// END SNIPPET: provider
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: certificate
- from("direct:certificate").to("sign://withcert?privateKey=myPrivateKey", "verify://withcert?certificate=myCert", "mock:result");
+ from("direct:certificate").to("crypto:sign://withcert?privateKey=#myPrivateKey", "crypto:verify://withcert?certificate=#myCert", "mock:result");
// END SNIPPET: certificate
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: keystore
- from("direct:keystore").to("sign://keystore?keystore=keystore&alias=bob&password=letmein", "verify://keystore?keystore=keystore&alias=bob", "mock:result");
+ from("direct:keystore").to("crypto:sign://keystore?keystore=#keystore&alias=bob&password=letmein", "crypto:verify://keystore?keystore=#keystore&alias=bob", "mock:result");
// END SNIPPET: keystore
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: signature-header
- from("direct:signature-header").to("sign://another?privateKey=myPrivateKey&signatureHeader=AnotherDigitalSignature",
- "verify://another?publicKey=myPublicKey&signatureHeader=AnotherDigitalSignature", "mock:result");
+ from("direct:signature-header").to("crypto:sign://another?privateKey=#myPrivateKey&signatureHeader=AnotherDigitalSignature",
+ "crypto:verify://another?publicKey=#myPublicKey&signatureHeader=AnotherDigitalSignature", "mock:result");
// END SNIPPET: signature-header
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: random
- from("direct:random").to("sign://another?privateKey=myPrivateKey&secureRandom=someRandom", "verify://another?publicKey=myPublicKey&secureRandom=someRandom",
+ from("direct:random").to("crypto:sign://another?privateKey=#myPrivateKey&secureRandom=#someRandom", "crypto:verify://another?publicKey=#myPublicKey&secureRandom=#someRandom",
"mock:result");
// END SNIPPET: random
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: alias
- from("direct:alias-sign").to("sign://alias?keystore=keystore");
- from("direct:alias-verify").to("verify://alias?keystore=keystore", "mock:result");
+ from("direct:alias-sign").to("crypto:sign://alias?keystore=#keystore");
+ from("direct:alias-verify").to("crypto:verify://alias?keystore=#keystore", "mock:result");
// END SNIPPET: alias
}
}, new RouteBuilder() {
public void configure() throws Exception {
// START SNIPPET: headerkey
- from("direct:headerkey-sign").to("sign://alais");
- from("direct:headerkey-verify").to("verify://alias", "mock:result");
+ from("direct:headerkey-sign").to("crypto:sign://alias");
+ from("direct:headerkey-verify").to("crypto:verify://alias", "mock:result");
// END SNIPPET: headerkey
}
}};
@@ -299,6 +299,7 @@ public class SignatureTests extends Cont
@Override
protected void setUp() throws Exception {
setUpKeys("DSA");
+ disableJMX();
super.setUp();
}
Modified: camel/trunk/components/camel-crypto/src/test/resources/org/apache/camel/component/crypto/SpringSignatureTests.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-crypto/src/test/resources/org/apache/camel/component/crypto/SpringSignatureTests.xml?rev=927285&r1=927284&r2=927285&view=diff
==============================================================================
--- camel/trunk/components/camel-crypto/src/test/resources/org/apache/camel/component/crypto/SpringSignatureTests.xml (original)
+++ camel/trunk/components/camel-crypto/src/test/resources/org/apache/camel/component/crypto/SpringSignatureTests.xml Thu Mar 25 06:12:37 2010
@@ -26,8 +26,8 @@
<!-- START SNIPPET: basic -->
<route>
<from uri="direct:keypair"/>
- <to uri="sign://basic?privateKey=myPrivateKey" />
- <to uri="verify://basic?publicKey=myPublicKey" />
+ <to uri="crypto:sign://basic?privateKey=#myPrivateKey" />
+ <to uri="crypto:verify://basic?publicKey=#myPublicKey" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: basic -->
@@ -35,8 +35,8 @@
<!-- START SNIPPET: algorithm -->
<route>
<from uri="direct:algorithm"/>
- <to uri="sign://rsa?algorithm=MD5withRSA&privateKey=rsaPrivateKey" />
- <to uri="verify://rsa?algorithm=MD5withRSA&publicKey=rsaPublicKey" />
+ <to uri="crypto:sign://rsa?algorithm=MD5withRSA&privateKey=#rsaPrivateKey" />
+ <to uri="crypto:verify://rsa?algorithm=MD5withRSA&publicKey=#rsaPublicKey" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: algorithm -->
@@ -44,8 +44,8 @@
<!-- START SNIPPET: buffersize -->
<route>
<from uri="direct:buffersize" />
- <to uri="sign://buffer?privateKey=myPrivateKey&buffersize=1024" />
- <to uri="verify://buffer?publicKey=myPublicKey&buffersize=1024" />
+ <to uri="crypto:sign://buffer?privateKey=#myPrivateKey&buffersize=1024" />
+ <to uri="crypto:verify://buffer?publicKey=#myPublicKey&buffersize=1024" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: buffersize -->
@@ -53,8 +53,8 @@
<!-- START SNIPPET: random -->
<route>
<from uri="direct:random" />
- <to uri="sign://random?privateKey=myPrivateKey&secureRandom=someRandom" />
- <to uri="verify://random?publicKey=myPublicKey" />
+ <to uri="crypto:sign://random?privateKey=#myPrivateKey&secureRandom=#someRandom" />
+ <to uri="crypto:verify://random?publicKey=#myPublicKey" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: random -->
@@ -62,8 +62,8 @@
<!-- START SNIPPET: provider -->
<route>
<from uri="direct:provider"/>
- <to uri="sign://provider?privateKey=myPrivateKey&provider=SUN" />
- <to uri="verify://provider?publicKey=myPublicKey&provider=SUN" />
+ <to uri="crypto:sign://provider?privateKey=#myPrivateKey&provider=SUN" />
+ <to uri="crypto:verify://provider?publicKey=#myPublicKey&provider=SUN" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: provider -->
@@ -71,8 +71,8 @@
<!-- START SNIPPET: certificate -->
<route>
<from uri="direct:certificate"/>
- <to uri="sign://withcert?privateKey=myPrivateKey" />
- <to uri="verify://withcert?certificate=myCert" />
+ <to uri="crypto:sign://withcert?privateKey=#myPrivateKey" />
+ <to uri="crypto:verify://withcert?certificate=#myCert" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: certificate -->
@@ -80,8 +80,8 @@
<!-- START SNIPPET: keystore -->
<route>
<from uri="direct:keystore"/>
- <to uri="sign://keystore?keystore=keystore&alias=bob&password=letmein" />
- <to uri="verify://keystore?keystore=keystore&alias=bob" />
+ <to uri="crypto:sign://keystore?keystore=#keystore&alias=bob&password=letmein" />
+ <to uri="crypto:verify://keystore?keystore=#keystore&alias=bob" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: keystore -->
@@ -89,8 +89,8 @@
<!-- START SNIPPET: signature-header -->
<route>
<from uri="direct:signature-header"/>
- <to uri="sign://another?privateKey=myPrivateKey&signatureHeader=AnotherDigitalSignature" />
- <to uri="verify://another?publicKey=myPublicKey&signatureHeader=AnotherDigitalSignature" />
+ <to uri="crypto:sign://another?privateKey=#myPrivateKey&signatureHeader=AnotherDigitalSignature" />
+ <to uri="crypto:verify://another?publicKey=#myPublicKey&signatureHeader=AnotherDigitalSignature" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: signature-header -->
@@ -98,11 +98,11 @@
<!-- START SNIPPET: alias -->
<route>
<from uri="direct:alias-sign"/>
- <to uri="sign://alias?keystore=keystore" />
+ <to uri="crypto:sign://alias?keystore=#keystore" />
</route>
<route>
<from uri="direct:alias-verify"/>
- <to uri="verify://alias?keystore=keystore" />
+ <to uri="crypto:verify://alias?keystore=#keystore" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: alias -->
@@ -110,11 +110,11 @@
<!-- START SNIPPET: headerkey -->
<route>
<from uri="direct:headerkey-sign"/>
- <to uri="sign://headerkey" />
+ <to uri="crypto:sign://headerkey" />
</route>
<route>
<from uri="direct:headerkey-verify"/>
- <to uri="verify://headerkey" />
+ <to uri="crypto:verify://headerkey" />
<to uri="mock:result"/>
</route>
<!-- END SNIPPET: headerkey -->