Repository: camel Updated Branches: refs/heads/master 948984898 -> 2141b1981
Extend the DefaultKeySelector so that you can use Jasypt encoded passwords Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2141b198 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2141b198 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2141b198 Branch: refs/heads/master Commit: 2141b1981503d3487cc8974eb123ffcaad71ef6a Parents: 9489848 Author: Colm O hEigeartaigh <cohei...@apache.org> Authored: Thu Nov 27 22:43:06 2014 +0000 Committer: Colm O hEigeartaigh <cohei...@apache.org> Committed: Thu Nov 27 22:43:34 2014 +0000 ---------------------------------------------------------------------- .../xmlsecurity/api/DefaultKeySelector.java | 33 ++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/2141b198/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/api/DefaultKeySelector.java ---------------------------------------------------------------------- diff --git a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/api/DefaultKeySelector.java b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/api/DefaultKeySelector.java index bcb8982..1091ccd 100644 --- a/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/api/DefaultKeySelector.java +++ b/components/camel-xmlsecurity/src/main/java/org/apache/camel/component/xmlsecurity/api/DefaultKeySelector.java @@ -32,6 +32,9 @@ import javax.xml.crypto.KeySelectorResult; import javax.xml.crypto.XMLCryptoContext; import javax.xml.crypto.dsig.keyinfo.KeyInfo; +import org.apache.camel.CamelContext; +import org.apache.camel.CamelContextAware; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.util.jsse.KeyStoreParameters; /** @@ -39,11 +42,13 @@ import org.apache.camel.util.jsse.KeyStoreParameters; * for a given alias. Depending on the purpose a private or public key is * returned. */ -public class DefaultKeySelector extends KeySelector { +public class DefaultKeySelector extends KeySelector implements CamelContextAware { private final KeyStoreAndAlias keyStoreAndAlias = new KeyStoreAndAlias(); private KeySelectorResult nullKeyResult; + + private CamelContext context; public void setKeyStore(KeyStore keyStore) { keyStoreAndAlias.setKeyStore(keyStore); @@ -57,7 +62,7 @@ public class DefaultKeySelector extends KeySelector { if (password == null) { keyStoreAndAlias.setPassword(null); } else { - keyStoreAndAlias.setPassword(password.toCharArray()); + setPassword(password.toCharArray()); } } @@ -99,7 +104,19 @@ public class DefaultKeySelector extends KeySelector { } Key key; try { - key = keyStoreAndAlias.getKeyStore().getKey(keyStoreAndAlias.getAlias(), keyStoreAndAlias.getPassword()); + if (this.getCamelContext() != null && keyStoreAndAlias.getPassword() != null) { + try { + String passwordProperty = + this.getCamelContext().resolvePropertyPlaceholders( + new String(keyStoreAndAlias.getPassword())); + key = keyStoreAndAlias.getKeyStore().getKey(keyStoreAndAlias.getAlias(), passwordProperty.toCharArray()); + } catch (Exception e) { + throw new RuntimeCamelException("Error parsing property value: " + + new String(keyStoreAndAlias.getPassword()), e); + } + } else { + key = keyStoreAndAlias.getKeyStore().getKey(keyStoreAndAlias.getAlias(), keyStoreAndAlias.getPassword()); + } } catch (UnrecoverableKeyException e) { throw new KeySelectorException(e); } catch (KeyStoreException e) { @@ -140,4 +157,14 @@ public class DefaultKeySelector extends KeySelector { return nullKeyResult; } + @Override + public CamelContext getCamelContext() { + return context; + } + + @Override + public void setCamelContext(CamelContext context) { + this.context = context; + } + }