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 2019/08/20 19:05:30 UTC
[camel] 10/12: CAMEL-13870: Fast property configuration of Camel
endpoints. Work in progress.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch CAMEL-13870
in repository https://gitbox.apache.org/repos/asf/camel.git
commit b1ac54017a0bfe03ab66e787bf24aeb9dd61a18b
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Aug 20 20:33:54 2019 +0200
CAMEL-13870: Fast property configuration of Camel endpoints. Work in progress.
---
.../crypto/DigitalSignatureConfiguration.java | 57 +++++++++++++++++-----
.../component/crypto/DigitalSignatureEndpoint.java | 6 +--
.../crypto/processor/SigningProcessor.java | 2 +-
.../DigitalSignatureEndpointBuilderFactory.java | 14 +-----
.../DigitalSignatureComponentConfiguration.java | 6 +--
5 files changed, 53 insertions(+), 32 deletions(-)
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
index c81eb20..a0151dc 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureConfiguration.java
@@ -16,11 +16,16 @@
*/
package org.apache.camel.component.crypto;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
+import java.security.UnrecoverableKeyException;
import java.security.cert.Certificate;
import org.apache.camel.CamelContext;
@@ -59,8 +64,8 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
private String signatureHeaderName;
@UriParam
private String alias;
- @UriParam(label = "security", javaType = "java.lang.String", secret = true)
- private char[] password;
+ @UriParam(label = "security", secret = true)
+ private String password;
@UriParam(label = "advanced")
private PublicKey publicKey;
@UriParam(label = "advanced")
@@ -151,8 +156,8 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
/**
* Get the PrivateKey that should be used to sign the exchange
*/
- public PrivateKey getPrivateKey() throws Exception {
- return getPrivateKey(alias, password);
+ public PrivateKey getPrivateKey() {
+ return getPrivateKey(alias, password.toCharArray());
}
/**
@@ -162,7 +167,7 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
* @param alias the alias used to retrieve the Certificate from the keystore.
*/
public PrivateKey getPrivateKey(String alias) throws Exception {
- return getPrivateKey(alias, password);
+ return getPrivateKey(alias, password.toCharArray());
}
/**
@@ -171,10 +176,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
*
* @param alias the alias used to retrieve the Certificate from the keystore.
*/
- public PrivateKey getPrivateKey(String alias, char[] password) throws Exception {
+ public PrivateKey getPrivateKey(String alias, char[] password) {
PrivateKey pk = null;
if (alias != null && keystore != null) {
- pk = (PrivateKey)keystore.getKey(alias, password);
+ try {
+ pk = (PrivateKey)keystore.getKey(alias, password);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
if (pk == null) {
pk = privateKey;
@@ -191,6 +200,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
this.privateKey = privateKey;
}
+ public String getPrivateKeyName() {
+ return privateKeyName;
+ }
+
/**
* Sets the reference name for a PrivateKey that can be found in the registry.
*/
@@ -213,6 +226,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
this.publicKey = publicKey;
}
+ public String getPublicKeyName() {
+ return publicKeyName;
+ }
+
/**
* Sets the reference name for a publicKey that can be found in the registry.
*/
@@ -259,7 +276,7 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
* Get the explicitly configured {@link Certificate} that should be used to
* verify the signature in the exchange.
*/
- public Certificate getCertificate() throws Exception {
+ public Certificate getCertificate() {
return certificate;
}
@@ -271,6 +288,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
this.certificate = certificate;
}
+ public String getCertificateName() {
+ return certificateName;
+ }
+
/**
* Sets the reference name for a PrivateKey that can be found in the registry.
*/
@@ -310,6 +331,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
this.keystore = keystore;
}
+ public String getKeystoreName() {
+ return keystoreName;
+ }
+
/**
* Sets the reference name for a Keystore that can be found in the registry.
*/
@@ -328,14 +353,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
/**
* Gets the password used to access an aliased {@link PrivateKey} in the KeyStore.
*/
- public char[] getPassword() {
+ public String getPassword() {
return password;
}
/**
* Sets the password used to access an aliased {@link PrivateKey} in the KeyStore.
*/
- public void setPassword(char[] password) {
+ public void setPassword(String password) {
this.password = password;
}
@@ -352,10 +377,14 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
* supplied and there is only a single entry in the Keystore, then this
* single entry will be used.
*/
- public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) throws Exception {
+ public void setKeyStoreParameters(KeyStoreParameters keyStoreParameters) {
this.keyStoreParameters = keyStoreParameters;
if (keyStoreParameters != null) {
- this.keystore = keyStoreParameters.createKeyStore();
+ try {
+ this.keystore = keyStoreParameters.createKeyStore();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
}
@@ -366,6 +395,10 @@ public class DigitalSignatureConfiguration implements Cloneable, CamelContextAwa
return secureRandom;
}
+ public String getSecureRandomName() {
+ return secureRandomName;
+ }
+
/**
* Sets the reference name for a SecureRandom that can be found in the registry.
*/
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
index 9d6c26f..f8269fe 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/DigitalSignatureEndpoint.java
@@ -58,7 +58,7 @@ public class DigitalSignatureEndpoint extends DefaultEndpoint {
throw new UnsupportedOperationException("Digital Signatures endpoints are not meant to be consumed from. They are meant be used as an intermediate endpoints");
}
-/**
+ /**
* Sets the configuration to use
*/
public void setConfiguration(DigitalSignatureConfiguration configuration) {
@@ -101,11 +101,11 @@ public class DigitalSignatureEndpoint extends DefaultEndpoint {
getConfiguration().setKeystore(keystore);
}
- public char[] getPassword() {
+ public String getPassword() {
return getConfiguration().getPassword();
}
- public void setKeyPassword(char[] keyPassword) {
+ public void setKeyPassword(String keyPassword) {
getConfiguration().setPassword(keyPassword);
}
diff --git a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
index 142ee3c..dbbc43e 100644
--- a/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
+++ b/components/camel-crypto/src/main/java/org/apache/camel/component/crypto/processor/SigningProcessor.java
@@ -80,7 +80,7 @@ public class SigningProcessor extends DigitalSignatureProcessor {
if (keystore != null) {
password = exchange.getIn().getHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, char[].class);
if (password == null) {
- password = config.getPassword();
+ password = config.getPassword() != null ? config.getPassword().toCharArray() : null;
}
}
return password;
diff --git a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/DigitalSignatureEndpointBuilderFactory.java b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/DigitalSignatureEndpointBuilderFactory.java
index 7414fe8..9b1197a 100644
--- a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/DigitalSignatureEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/DigitalSignatureEndpointBuilderFactory.java
@@ -220,19 +220,7 @@ public interface DigitalSignatureEndpointBuilderFactory {
* Sets the password used to access an aliased PrivateKey in the
* KeyStore.
*
- * The option is a: <code>char[]</code> type.
- *
- * Group: security
- */
- default DigitalSignatureEndpointBuilder password(Character[] password) {
- setProperty("password", password);
- return this;
- }
- /**
- * Sets the password used to access an aliased PrivateKey in the
- * KeyStore.
- *
- * The option will be converted to a <code>char[]</code> type.
+ * The option is a: <code>java.lang.String</code> type.
*
* Group: security
*/
diff --git a/platforms/spring-boot/components-starter/camel-crypto-starter/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java b/platforms/spring-boot/components-starter/camel-crypto-starter/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
index 1dcccde..9c48f9c 100644
--- a/platforms/spring-boot/components-starter/camel-crypto-starter/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-crypto-starter/src/main/java/org/apache/camel/component/crypto/springboot/DigitalSignatureComponentConfiguration.java
@@ -137,7 +137,7 @@ public class DigitalSignatureComponentConfiguration
* Sets the password used to access an aliased {@link PrivateKey} in the
* KeyStore.
*/
- private char[] password;
+ private String password;
/**
* Sets the KeyStore that can contain keys and Certficates for use in
* signing and verifying exchanges based on the given
@@ -272,11 +272,11 @@ public class DigitalSignatureComponentConfiguration
this.keystoreName = keystoreName;
}
- public char[] getPassword() {
+ public String getPassword() {
return password;
}
- public void setPassword(char[] password) {
+ public void setPassword(String password) {
this.password = password;
}