You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2011/05/06 14:15:00 UTC
svn commit: r1100185 - in
/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security:
./ algorithms/ c14n/ keys/keyresolver/ transforms/ utils/ utils/resolver/
Author: coheigea
Date: Fri May 6 12:14:59 2011
New Revision: 1100185
URL: http://svn.apache.org/viewvc?rev=1100185&view=rev
Log:
[SANTUARIO-269] - Register default algorithms/implementations dynamically
Modified:
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/Init.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithm.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/c14n/Canonicalizer.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/keyresolver/KeyResolver.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/Transform.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/ElementProxy.java
santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/Init.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/Init.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/Init.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/Init.java Fri May 6 12:14:59 2011
@@ -22,63 +22,20 @@ import java.io.InputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.xml.security.algorithms.JCEMapper;
-import org.apache.xml.security.algorithms.MessageDigestAlgorithm;
import org.apache.xml.security.algorithms.SignatureAlgorithm;
-import org.apache.xml.security.algorithms.SignatureAlgorithmSpi;
-import org.apache.xml.security.algorithms.implementations.IntegrityHmac;
-import org.apache.xml.security.algorithms.implementations.SignatureBaseRSA;
-import org.apache.xml.security.algorithms.implementations.SignatureDSA;
-import org.apache.xml.security.algorithms.implementations.SignatureECDSA;
import org.apache.xml.security.c14n.Canonicalizer;
-import org.apache.xml.security.c14n.CanonicalizerSpi;
-import org.apache.xml.security.c14n.implementations.Canonicalizer11_OmitComments;
-import org.apache.xml.security.c14n.implementations.Canonicalizer11_WithComments;
-import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclOmitComments;
-import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclWithComments;
-import org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments;
-import org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithComments;
-import org.apache.xml.security.encryption.XMLCipher;
import org.apache.xml.security.keys.keyresolver.KeyResolver;
-import org.apache.xml.security.keys.keyresolver.KeyResolverSpi;
-import org.apache.xml.security.keys.keyresolver.implementations.DSAKeyValueResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.RSAKeyValueResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.RetrievalMethodResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.X509CertificateResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.X509IssuerSerialResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.X509SKIResolver;
-import org.apache.xml.security.keys.keyresolver.implementations.X509SubjectNameResolver;
-import org.apache.xml.security.signature.XMLSignature;
import org.apache.xml.security.transforms.Transform;
-import org.apache.xml.security.transforms.TransformSpi;
-import org.apache.xml.security.transforms.Transforms;
-import org.apache.xml.security.transforms.implementations.TransformBase64Decode;
-import org.apache.xml.security.transforms.implementations.TransformC14N;
-import org.apache.xml.security.transforms.implementations.TransformC14N11;
-import org.apache.xml.security.transforms.implementations.TransformC14N11_WithComments;
-import org.apache.xml.security.transforms.implementations.TransformC14NExclusive;
-import org.apache.xml.security.transforms.implementations.TransformC14NExclusiveWithComments;
-import org.apache.xml.security.transforms.implementations.TransformC14NWithComments;
-import org.apache.xml.security.transforms.implementations.TransformEnvelopedSignature;
-import org.apache.xml.security.transforms.implementations.TransformXPath;
-import org.apache.xml.security.transforms.implementations.TransformXPath2Filter;
-import org.apache.xml.security.transforms.implementations.TransformXSLT;
import org.apache.xml.security.utils.ElementProxy;
import org.apache.xml.security.utils.I18n;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xml.security.utils.resolver.ResourceResolver;
-import org.apache.xml.security.utils.resolver.ResourceResolverSpi;
-import org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP;
-import org.apache.xml.security.utils.resolver.implementations.ResolverFragment;
-import org.apache.xml.security.utils.resolver.implementations.ResolverLocalFilesystem;
-import org.apache.xml.security.utils.resolver.implementations.ResolverXPointer;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -100,314 +57,9 @@ public class Init {
private static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(Init.class);
- /** Field _initialized */
+ /** Field alreadyInitialized */
private static boolean alreadyInitialized = false;
- private static Map<String, String> defaultNamespacePrefixes = new HashMap<String, String>();
- private static Map<String, Class<? extends TransformSpi>> defaultTransforms =
- new HashMap<String, Class<? extends TransformSpi>>();
- private static Map<String, Class<? extends SignatureAlgorithmSpi>> defaultSignatures =
- new HashMap<String, Class<? extends SignatureAlgorithmSpi>>();
- private static Map<String, JCEMapper.Algorithm> defaultAlgorithms =
- new HashMap<String, JCEMapper.Algorithm>();
- private static Map<String, Class<? extends CanonicalizerSpi>> defaultC14nAlgorithms =
- new HashMap<String, Class<? extends CanonicalizerSpi>>();
- private static List<ResourceResolverSpi> defaultResolverList =
- new ArrayList<ResourceResolverSpi>();
- private static List<KeyResolverSpi> defaultKeyResolverList =
- new ArrayList<KeyResolverSpi>();
-
- static {
- //
- // Default Namespace-prefix pairs
- //
- defaultNamespacePrefixes.put("http://www.w3.org/2000/09/xmldsig#", "ds");
- defaultNamespacePrefixes.put("http://www.w3.org/2001/04/xmlenc#", "xenc");
- defaultNamespacePrefixes.put("http://www.xmlsecurity.org/experimental#", "experimental");
- defaultNamespacePrefixes.put("http://www.w3.org/2002/04/xmldsig-filter2", "dsig-xpath-old");
- defaultNamespacePrefixes.put("http://www.w3.org/2002/06/xmldsig-filter2", "dsig-xpath");
- defaultNamespacePrefixes.put("http://www.w3.org/2001/10/xml-exc-c14n#", "ec");
- defaultNamespacePrefixes.put(
- "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter", "xx"
- );
-
- //
- // Default URI-TransformSpi class pairs
- //
- defaultTransforms.put(
- Transforms.TRANSFORM_BASE64_DECODE, TransformBase64Decode.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N_OMIT_COMMENTS, TransformC14N.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N_WITH_COMMENTS, TransformC14NWithComments.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N11_OMIT_COMMENTS, TransformC14N11.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N11_WITH_COMMENTS, TransformC14N11_WithComments.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, TransformC14NExclusive.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS, TransformC14NExclusiveWithComments.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_XPATH, TransformXPath.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_ENVELOPED_SIGNATURE, TransformEnvelopedSignature.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_XSLT, TransformXSLT.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_XPATH2FILTER, TransformXPath2Filter.class
- );
- defaultTransforms.put(
- Transforms.TRANSFORM_XPATH2FILTER04, TransformXPath2Filter.class
- );
-
- //
- // default URI-SignatureAlgorithmSpi class pairs
- //
- defaultSignatures.put(SignatureDSA.URI, SignatureDSA.class);
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1, SignatureBaseRSA.SignatureRSASHA1.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1, IntegrityHmac.IntegrityHmacSHA1.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5,
- SignatureBaseRSA.SignatureRSAMD5.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160,
- SignatureBaseRSA.SignatureRSARIPEMD160.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256, SignatureBaseRSA.SignatureRSASHA256.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384, SignatureBaseRSA.SignatureRSASHA384.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512, SignatureBaseRSA.SignatureRSASHA512.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA1, SignatureECDSA.SignatureECDSASHA1.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA256, SignatureECDSA.SignatureECDSASHA256.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA384, SignatureECDSA.SignatureECDSASHA384.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512, SignatureECDSA.SignatureECDSASHA512.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5, IntegrityHmac.IntegrityHmacMD5.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160, IntegrityHmac.IntegrityHmacRIPEMD160.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA256, IntegrityHmac.IntegrityHmacSHA256.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA384, IntegrityHmac.IntegrityHmacSHA384.class
- );
- defaultSignatures.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA512, IntegrityHmac.IntegrityHmacSHA512.class
- );
-
- //
- // Default URI-Algorithm object pairs
- //
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5,
- new JCEMapper.Algorithm(null, "MD5")
- );
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_RIPEMD160,
- new JCEMapper.Algorithm(null, "RIPEMD160")
- );
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1,
- new JCEMapper.Algorithm(null, "SHA-1")
- );
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256,
- new JCEMapper.Algorithm(null, "SHA-256")
- );
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA384,
- new JCEMapper.Algorithm(null, "SHA-384")
- );
- defaultAlgorithms.put(
- MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA512,
- new JCEMapper.Algorithm(null, "SHA-512")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_DSA,
- new JCEMapper.Algorithm(null, "SHA1withDSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5,
- new JCEMapper.Algorithm(null, "MD5withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160,
- new JCEMapper.Algorithm(null, "RIPEMD160withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1,
- new JCEMapper.Algorithm(null, "SHA1withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256,
- new JCEMapper.Algorithm(null, "SHA256withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384,
- new JCEMapper.Algorithm(null, "SHA384withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512,
- new JCEMapper.Algorithm(null, "SHA512withRSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA1,
- new JCEMapper.Algorithm(null, "SHA1withECDSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA256,
- new JCEMapper.Algorithm(null, "SHA256withECDSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA384,
- new JCEMapper.Algorithm(null, "SHA384withECDSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512,
- new JCEMapper.Algorithm(null, "SHA512withECDSA")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5,
- new JCEMapper.Algorithm(null, "HmacMD5")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160,
- new JCEMapper.Algorithm(null, "HMACRIPEMD160")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA1,
- new JCEMapper.Algorithm(null, "HmacSHA1")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA256,
- new JCEMapper.Algorithm(null, "HmacSHA256")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA384,
- new JCEMapper.Algorithm(null, "HmacSHA384")
- );
- defaultAlgorithms.put(
- XMLSignature.ALGO_ID_MAC_HMAC_SHA512,
- new JCEMapper.Algorithm(null, "HmacSHA512")
- );
- defaultAlgorithms.put(
- XMLCipher.TRIPLEDES,
- new JCEMapper.Algorithm("DESede", "DESede/CBC/ISO10126Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_128,
- new JCEMapper.Algorithm("AES", "AES/CBC/ISO10126Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_192,
- new JCEMapper.Algorithm("AES", "AES/CBC/ISO10126Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_256,
- new JCEMapper.Algorithm("AES", "AES/CBC/ISO10126Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.RSA_v1dot5,
- new JCEMapper.Algorithm("RSA", "RSA/ECB/PKCS1Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.RSA_OAEP,
- new JCEMapper.Algorithm("RSA", "RSA/ECB/OAEPWithSHA1AndMGF1Padding")
- );
- defaultAlgorithms.put(
- XMLCipher.DIFFIE_HELLMAN,
- new JCEMapper.Algorithm(null, null)
- );
- defaultAlgorithms.put(
- XMLCipher.TRIPLEDES_KeyWrap,
- new JCEMapper.Algorithm("DESede", "DESedeWrap")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_128_KeyWrap,
- new JCEMapper.Algorithm("AES", "AESWrap")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_192_KeyWrap,
- new JCEMapper.Algorithm("AES", "AESWrap")
- );
- defaultAlgorithms.put(
- XMLCipher.AES_256_KeyWrap,
- new JCEMapper.Algorithm("AES", "AESWrap")
- );
-
- //
- // Default URI-Canonicalizer class pairs
- //
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS, Canonicalizer20010315OmitComments.class
- );
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS, Canonicalizer20010315WithComments.class
- );
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS, Canonicalizer20010315ExclOmitComments.class
- );
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS, Canonicalizer20010315ExclWithComments.class
- );
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N11_OMIT_COMMENTS, Canonicalizer11_OmitComments.class
- );
- defaultC14nAlgorithms.put(
- Canonicalizer.ALGO_ID_C14N11_WITH_COMMENTS, Canonicalizer11_WithComments.class
- );
-
- //
- // Default Resolvers
- //
- defaultResolverList.add(new ResolverFragment());
- defaultResolverList.add(new ResolverLocalFilesystem());
- defaultResolverList.add(new ResolverXPointer());
- defaultResolverList.add(new ResolverDirectHTTP());
-
- //
- // Default KeyResolvers
- //
- defaultKeyResolverList.add(new RSAKeyValueResolver());
- defaultKeyResolverList.add(new DSAKeyValueResolver());
- defaultKeyResolverList.add(new X509CertificateResolver());
- defaultKeyResolverList.add(new X509SKIResolver());
- defaultKeyResolverList.add(new RetrievalMethodResolver());
- defaultKeyResolverList.add(new X509SubjectNameResolver());
- defaultKeyResolverList.add(new X509IssuerSerialResolver());
- }
-
/**
* Method isInitialized
* @return true if the library is already initialized.
@@ -424,7 +76,87 @@ public class Init {
if (alreadyInitialized) {
return;
}
+
+ InputStream is =
+ AccessController.doPrivileged(
+ new PrivilegedAction<InputStream>() {
+ public InputStream run() {
+ String cfile =
+ System.getProperty("org.apache.xml.security.resource.config");
+ if (cfile == null) {
+ return null;
+ }
+ return getClass().getResourceAsStream(cfile);
+ }
+ });
+ if (is == null) {
+ dynamicInit();
+ } else {
+ fileInit(is);
+ }
+ alreadyInitialized = true;
+ }
+
+ /**
+ * Dynamically initialise the library by registering the default algorithms/implementations
+ */
+ private static void dynamicInit() {
+ //
+ // Load the Resource Bundle - the default is the English resource bundle.
+ // To load another resource bundle, call I18n.init(...) before calling this
+ // method.
+ //
+ I18n.init("en", "US");
+
+ if (log.isDebugEnabled()) {
+ log.debug("Registering default algorithms");
+ }
+ try {
+ //
+ // Bind the default prefixes
+ //
+ ElementProxy.registerDefaultPrefixes();
+
+ //
+ // Set the default Transforms
+ //
+ Transform.registerDefaultAlgorithms();
+
+ //
+ // Set the default signature algorithms
+ //
+ SignatureAlgorithm.registerDefaultAlgorithms();
+
+ //
+ // Set the default JCE algorithms
+ //
+ JCEMapper.registerDefaultAlgorithms();
+
+ //
+ // Set the default c14n algorithms
+ //
+ Canonicalizer.registerDefaultAlgorithms();
+
+ //
+ // Register the default resolvers
+ //
+ ResourceResolver.registerDefaultResolvers();
+
+ //
+ // Register the default key resolvers
+ //
+ KeyResolver.registerDefaultResolvers();
+ } catch (Exception ex) {
+ log.error(ex);
+ ex.printStackTrace();
+ }
+ }
+
+ /**
+ * Initialise the library from a configuration file
+ */
+ private static void fileInit(InputStream is) {
try {
/* read library configuration file */
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
@@ -433,17 +165,6 @@ public class Init {
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
- InputStream is =
- AccessController.doPrivileged(
- new PrivilegedAction<InputStream>() {
- public InputStream run() {
- String cfile =
- System.getProperty("org.apache.xml.security.resource.config");
- return getClass().getResourceAsStream
- (cfile != null ? cfile : "resource/config.xml");
- }
- });
-
Document doc = db.parse(is);
Node config = doc.getFirstChild();
for (; config != null; config = config.getNextSibling()) {
@@ -635,82 +356,6 @@ public class Init {
log.error("Bad: ", e);
e.printStackTrace();
}
- alreadyInitialized = true;
- }
-
- /**
- * TODO
- */
- @SuppressWarnings("unchecked")
- public synchronized static void dynamicInit() {
- if (alreadyInitialized) {
- return;
- }
-
- //
- // Load the Resource Bundle - the default is the English resource bundle.
- // To load another resource bundle, call I18n.init(...) before calling this
- // method.
- //
- I18n.init("en", "US");
-
- try {
- //
- // Bind the default prefixes
- // TODO possibly move the default Map into ElementProxy?
- //
- for (String key : defaultNamespacePrefixes.keySet()) {
- ElementProxy.setDefaultPrefix(key, defaultNamespacePrefixes.get(key));
- }
-
- //
- // Set the default Transforms
- //
- for (String key : defaultTransforms.keySet()) {
- Transform.register(key, (Class<TransformSpi>)defaultTransforms.get(key));
- }
-
- //
- // Set the default signature algorithms
- //
- for (String key : defaultSignatures.keySet()) {
- SignatureAlgorithm.register(
- key, (Class<SignatureAlgorithmSpi>)defaultSignatures.get(key)
- );
- }
-
- //
- // Set the default JCE algorithms
- //
- for (String key : defaultAlgorithms.keySet()) {
- JCEMapper.register(key, defaultAlgorithms.get(key));
- }
-
- //
- // Set the default c14n algorithms
- //
- for (String key : defaultC14nAlgorithms.keySet()) {
- Canonicalizer.register(
- key, (Class<CanonicalizerSpi>)defaultC14nAlgorithms.get(key)
- );
- }
-
- //
- // Register the default resolvers
- //
- for (ResourceResolverSpi resourceResolverSpi : defaultResolverList) {
- ResourceResolver.register(resourceResolverSpi, false);
- }
-
- //
- // Register the default key resolvers
- //
- KeyResolver.register(defaultKeyResolverList);
- } catch (Exception ex) {
- log.error(ex);
- ex.printStackTrace();
- }
- alreadyInitialized = true;
}
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/JCEMapper.java Fri May 6 12:14:59 2011
@@ -21,6 +21,8 @@ package org.apache.xml.security.algorith
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.apache.xml.security.encryption.XMLCipher;
+import org.apache.xml.security.signature.XMLSignature;
import org.w3c.dom.Element;
@@ -42,11 +44,119 @@ public class JCEMapper {
* Method register
*
* @param element
- * @throws Exception
*/
- public static void register(String id, Algorithm algorithm) throws Exception {
+ public static void register(String id, Algorithm algorithm) {
algorithmsMap.put(id, algorithm);
}
+
+ /**
+ * This method registers the default algorithms.
+ */
+ public static void registerDefaultAlgorithms() {
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_NOT_RECOMMENDED_MD5, new Algorithm("", "MD5")
+ );
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_RIPEMD160, new Algorithm("", "RIPEMD160")
+ );
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA1, new Algorithm("", "SHA-1")
+ );
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA256, new Algorithm("", "SHA-256")
+ );
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA384, new Algorithm("", "SHA-384")
+ );
+ algorithmsMap.put(
+ MessageDigestAlgorithm.ALGO_ID_DIGEST_SHA512, new Algorithm("", "SHA-512")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_DSA, new Algorithm("", "SHA1withDSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5,
+ new Algorithm("", "MD5withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160, new Algorithm("", "RIPEMD160withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1, new Algorithm("", "SHA1withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256, new Algorithm("", "SHA256withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384, new Algorithm("", "SHA384withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512, new Algorithm("", "SHA512withRSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA1, new Algorithm("", "SHA1withECDSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA256, new Algorithm("", "SHA256withECDSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA384, new Algorithm("", "SHA384withECDSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512, new Algorithm("", "SHA512withECDSA")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5, new Algorithm("", "HmacMD5")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160, new Algorithm("", "HMACRIPEMD160")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA1, new Algorithm("", "HmacSHA1")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA256, new Algorithm("", "HmacSHA256")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA384, new Algorithm("", "HmacSHA384")
+ );
+ algorithmsMap.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA512, new Algorithm("", "HmacSHA512")
+ );
+ algorithmsMap.put(
+ XMLCipher.TRIPLEDES, new Algorithm("DESede", "DESede/CBC/ISO10126Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_128, new Algorithm("AES", "AES/CBC/ISO10126Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_192, new Algorithm("AES", "AES/CBC/ISO10126Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_256, new Algorithm("AES", "AES/CBC/ISO10126Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.RSA_v1dot5, new Algorithm("RSA", "RSA/ECB/PKCS1Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.RSA_OAEP, new Algorithm("RSA", "RSA/ECB/OAEPWithSHA1AndMGF1Padding")
+ );
+ algorithmsMap.put(
+ XMLCipher.DIFFIE_HELLMAN, new Algorithm("", "")
+ );
+ algorithmsMap.put(
+ XMLCipher.TRIPLEDES_KeyWrap, new Algorithm("DESede", "DESedeWrap")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_128_KeyWrap, new Algorithm("AES", "AESWrap")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_192_KeyWrap, new Algorithm("AES", "AESWrap")
+ );
+ algorithmsMap.put(
+ XMLCipher.AES_256_KeyWrap, new Algorithm("AES", "AESWrap")
+ );
+ }
/**
* Method translateURItoJCEID
@@ -73,6 +183,9 @@ public class JCEMapper {
* @return The KeyAlgorithm for the given URI.
*/
public static String getJCEKeyAlgorithmFromURI(String algorithmURI) {
+ if (log.isDebugEnabled()) {
+ log.debug("Request for URI " + algorithmURI);
+ }
Algorithm algorithm = algorithmsMap.get(algorithmURI);
if (algorithm != null) {
return algorithm.requiredKey;
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithm.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithm.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithm.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/algorithms/SignatureAlgorithm.java Fri May 6 12:14:59 2011
@@ -25,8 +25,12 @@ import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.xml.security.algorithms.implementations.IntegrityHmac;
+import org.apache.xml.security.algorithms.implementations.SignatureBaseRSA;
+import org.apache.xml.security.algorithms.implementations.SignatureDSA;
+import org.apache.xml.security.algorithms.implementations.SignatureECDSA;
import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
import org.apache.xml.security.exceptions.XMLSecurityException;
+import org.apache.xml.security.signature.XMLSignature;
import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.utils.ClassLoaderUtils;
import org.apache.xml.security.utils.Constants;
@@ -46,8 +50,8 @@ public class SignatureAlgorithm extends
org.apache.commons.logging.LogFactory.getLog(SignatureAlgorithm.class);
/** All available algorithm classes are registered here */
- private static Map<String, Class<SignatureAlgorithmSpi>> algorithmHash =
- new ConcurrentHashMap<String, Class<SignatureAlgorithmSpi>>();
+ private static Map<String, Class<? extends SignatureAlgorithmSpi>> algorithmHash =
+ new ConcurrentHashMap<String, Class<? extends SignatureAlgorithmSpi>>();
/** Field signatureAlgorithm */
private final SignatureAlgorithmSpi signatureAlgorithm;
@@ -111,7 +115,8 @@ public class SignatureAlgorithm extends
private static SignatureAlgorithmSpi getSignatureAlgorithmSpi(String algorithmURI)
throws XMLSignatureException {
try {
- Class<SignatureAlgorithmSpi> implementingClass = algorithmHash.get(algorithmURI);
+ Class<? extends SignatureAlgorithmSpi> implementingClass =
+ algorithmHash.get(algorithmURI);
if (log.isDebugEnabled()) {
log.debug("Create URI \"" + algorithmURI + "\" class \""
+ implementingClass + "\"");
@@ -296,7 +301,7 @@ public class SignatureAlgorithm extends
}
// are we already registered?
- Class<SignatureAlgorithmSpi> registeredClass = algorithmHash.get(algorithmURI);
+ Class<? extends SignatureAlgorithmSpi> registeredClass = algorithmHash.get(algorithmURI);
if (registeredClass != null) {
Object exArgs[] = { algorithmURI, registeredClass };
throw new AlgorithmAlreadyRegisteredException(
@@ -304,8 +309,8 @@ public class SignatureAlgorithm extends
);
}
try {
- Class<SignatureAlgorithmSpi> clazz =
- (Class<SignatureAlgorithmSpi>)
+ Class<? extends SignatureAlgorithmSpi> clazz =
+ (Class<? extends SignatureAlgorithmSpi>)
ClassLoaderUtils.loadClass(implementingClass, SignatureAlgorithm.class);
algorithmHash.put(algorithmURI, clazz);
} catch (NullPointerException ex) {
@@ -331,7 +336,7 @@ public class SignatureAlgorithm extends
}
// are we already registered?
- Class<SignatureAlgorithmSpi> registeredClass = algorithmHash.get(algorithmURI);
+ Class<? extends SignatureAlgorithmSpi> registeredClass = algorithmHash.get(algorithmURI);
if (registeredClass != null) {
Object exArgs[] = { algorithmURI, registeredClass };
throw new AlgorithmAlreadyRegisteredException(
@@ -340,6 +345,63 @@ public class SignatureAlgorithm extends
}
algorithmHash.put(algorithmURI, implementingClass);
}
+
+ /**
+ * This method registers the default algorithms.
+ */
+ public static void registerDefaultAlgorithms() {
+ algorithmHash.put(SignatureDSA.URI, SignatureDSA.class);
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1, SignatureBaseRSA.SignatureRSASHA1.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA1, IntegrityHmac.IntegrityHmacSHA1.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_NOT_RECOMMENDED_RSA_MD5,
+ SignatureBaseRSA.SignatureRSAMD5.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_RIPEMD160,
+ SignatureBaseRSA.SignatureRSARIPEMD160.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256, SignatureBaseRSA.SignatureRSASHA256.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA384, SignatureBaseRSA.SignatureRSASHA384.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA512, SignatureBaseRSA.SignatureRSASHA512.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA1, SignatureECDSA.SignatureECDSASHA1.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA256, SignatureECDSA.SignatureECDSASHA256.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA384, SignatureECDSA.SignatureECDSASHA384.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512, SignatureECDSA.SignatureECDSASHA512.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_NOT_RECOMMENDED_MD5, IntegrityHmac.IntegrityHmacMD5.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_RIPEMD160, IntegrityHmac.IntegrityHmacRIPEMD160.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA256, IntegrityHmac.IntegrityHmacSHA256.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA384, IntegrityHmac.IntegrityHmacSHA384.class
+ );
+ algorithmHash.put(
+ XMLSignature.ALGO_ID_MAC_HMAC_SHA512, IntegrityHmac.IntegrityHmacSHA512.class
+ );
+ }
/**
* Method getBaseNamespace
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/c14n/Canonicalizer.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/c14n/Canonicalizer.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/c14n/Canonicalizer.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/c14n/Canonicalizer.java Fri May 6 12:14:59 2011
@@ -28,6 +28,12 @@ import java.util.concurrent.ConcurrentHa
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import org.apache.xml.security.c14n.implementations.Canonicalizer11_OmitComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer11_WithComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclOmitComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315ExclWithComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315OmitComments;
+import org.apache.xml.security.c14n.implementations.Canonicalizer20010315WithComments;
import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
@@ -81,8 +87,8 @@ public class Canonicalizer {
public static final String ALGO_ID_C14N11_WITH_COMMENTS =
ALGO_ID_C14N11_OMIT_COMMENTS + "#WithComments";
- private static Map<String, Class<CanonicalizerSpi>> canonicalizerHash =
- new ConcurrentHashMap<String, Class<CanonicalizerSpi>>();
+ private static Map<String, Class<? extends CanonicalizerSpi>> canonicalizerHash =
+ new ConcurrentHashMap<String, Class<? extends CanonicalizerSpi>>();
private final CanonicalizerSpi canonicalizerSpi;
@@ -94,7 +100,8 @@ public class Canonicalizer {
*/
private Canonicalizer(String algorithmURI) throws InvalidCanonicalizerException {
try {
- Class<CanonicalizerSpi> implementingClass = canonicalizerHash.get(algorithmURI);
+ Class<? extends CanonicalizerSpi> implementingClass =
+ canonicalizerHash.get(algorithmURI);
canonicalizerSpi = implementingClass.newInstance();
canonicalizerSpi.reset = true;
@@ -129,7 +136,8 @@ public class Canonicalizer {
public static void register(String algorithmURI, String implementingClass)
throws AlgorithmAlreadyRegisteredException, ClassNotFoundException {
// check whether URI is already registered
- Class<CanonicalizerSpi> registeredClass = canonicalizerHash.get(algorithmURI);
+ Class<? extends CanonicalizerSpi> registeredClass =
+ canonicalizerHash.get(algorithmURI);
if (registeredClass != null) {
Object exArgs[] = { algorithmURI, registeredClass };
@@ -137,7 +145,7 @@ public class Canonicalizer {
}
canonicalizerHash.put(
- algorithmURI, (Class<CanonicalizerSpi>)Class.forName(implementingClass)
+ algorithmURI, (Class<? extends CanonicalizerSpi>)Class.forName(implementingClass)
);
}
@@ -151,7 +159,7 @@ public class Canonicalizer {
public static void register(String algorithmURI, Class<CanonicalizerSpi> implementingClass)
throws AlgorithmAlreadyRegisteredException, ClassNotFoundException {
// check whether URI is already registered
- Class<CanonicalizerSpi> registeredClass = canonicalizerHash.get(algorithmURI);
+ Class<? extends CanonicalizerSpi> registeredClass = canonicalizerHash.get(algorithmURI);
if (registeredClass != null) {
Object exArgs[] = { algorithmURI, registeredClass };
@@ -160,6 +168,36 @@ public class Canonicalizer {
canonicalizerHash.put(algorithmURI, implementingClass);
}
+
+ /**
+ * This method registers the default algorithms.
+ */
+ public static void registerDefaultAlgorithms() {
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS,
+ Canonicalizer20010315OmitComments.class
+ );
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N_WITH_COMMENTS,
+ Canonicalizer20010315WithComments.class
+ );
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS,
+ Canonicalizer20010315ExclOmitComments.class
+ );
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS,
+ Canonicalizer20010315ExclWithComments.class
+ );
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N11_OMIT_COMMENTS,
+ Canonicalizer11_OmitComments.class
+ );
+ canonicalizerHash.put(
+ Canonicalizer.ALGO_ID_C14N11_WITH_COMMENTS,
+ Canonicalizer11_WithComments.class
+ );
+ }
/**
* Method getURI
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/keyresolver/KeyResolver.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/keyresolver/KeyResolver.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/keyresolver/KeyResolver.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/keys/keyresolver/KeyResolver.java Fri May 6 12:14:59 2011
@@ -27,6 +27,13 @@ import java.util.concurrent.CopyOnWriteA
import javax.crypto.SecretKey;
+import org.apache.xml.security.keys.keyresolver.implementations.DSAKeyValueResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.RSAKeyValueResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.RetrievalMethodResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.X509CertificateResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.X509IssuerSerialResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.X509SKIResolver;
+import org.apache.xml.security.keys.keyresolver.implementations.X509SubjectNameResolver;
import org.apache.xml.security.keys.storage.StorageResolver;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -254,22 +261,19 @@ public class KeyResolver {
}
/**
- * This method is used for registering {@link KeyResolverSpi}s which are
- * available to <I>all</I> {@link org.apache.xml.security.keys.KeyInfo} objects. This means that
- * personalized {@link KeyResolverSpi}s should only be registered directly
- * to the {@link org.apache.xml.security.keys.KeyInfo} using
- * {@link org.apache.xml.security.keys.KeyInfo#registerInternalKeyResolver}.
- *
- * @param keyResolverSpi a KeyResolverSpi instance to register
- * @param start whether to register the KeyResolverSpi at the start of the list or not
+ * This method registers the default resolvers.
*/
- public static void register(
- List<KeyResolverSpi> keyResolverSpiList
- ) {
- List<KeyResolver> keyResolverList = new ArrayList<KeyResolver>(keyResolverSpiList.size());
- for (KeyResolverSpi keyResolverSpi : keyResolverSpiList) {
- keyResolverList.add(new KeyResolver(keyResolverSpi));
- }
+ public static void registerDefaultResolvers() {
+
+ List<KeyResolver> keyResolverList = new ArrayList<KeyResolver>();
+ keyResolverList.add(new KeyResolver(new RSAKeyValueResolver()));
+ keyResolverList.add(new KeyResolver(new DSAKeyValueResolver()));
+ keyResolverList.add(new KeyResolver(new X509CertificateResolver()));
+ keyResolverList.add(new KeyResolver(new X509SKIResolver()));
+ keyResolverList.add(new KeyResolver(new RetrievalMethodResolver()));
+ keyResolverList.add(new KeyResolver(new X509SubjectNameResolver()));
+ keyResolverList.add(new KeyResolver(new X509IssuerSerialResolver()));
+
resolverVector.addAll(keyResolverList);
}
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/Transform.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/Transform.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/Transform.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/transforms/Transform.java Fri May 6 12:14:59 2011
@@ -29,6 +29,17 @@ import org.apache.xml.security.c14n.Inva
import org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException;
import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.transforms.implementations.TransformBase64Decode;
+import org.apache.xml.security.transforms.implementations.TransformC14N;
+import org.apache.xml.security.transforms.implementations.TransformC14N11;
+import org.apache.xml.security.transforms.implementations.TransformC14N11_WithComments;
+import org.apache.xml.security.transforms.implementations.TransformC14NExclusive;
+import org.apache.xml.security.transforms.implementations.TransformC14NExclusiveWithComments;
+import org.apache.xml.security.transforms.implementations.TransformC14NWithComments;
+import org.apache.xml.security.transforms.implementations.TransformEnvelopedSignature;
+import org.apache.xml.security.transforms.implementations.TransformXPath;
+import org.apache.xml.security.transforms.implementations.TransformXPath2Filter;
+import org.apache.xml.security.transforms.implementations.TransformXSLT;
import org.apache.xml.security.utils.ClassLoaderUtils;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.HelperNodeList;
@@ -59,8 +70,8 @@ public final class Transform extends Sig
org.apache.commons.logging.LogFactory.getLog(Transform.class);
/** All available Transform classes are registered here */
- private static Map<String, Class<TransformSpi>> transformSpiHash =
- new ConcurrentHashMap<String, Class<TransformSpi>>();
+ private static Map<String, Class<? extends TransformSpi>> transformSpiHash =
+ new ConcurrentHashMap<String, Class<? extends TransformSpi>>();
private final TransformSpi transformSpi;
@@ -143,7 +154,7 @@ public final class Transform extends Sig
throw new TransformationException("xml.WrongContent", exArgs);
}
- Class<TransformSpi> transformSpiClass = transformSpiHash.get(algorithmURI);
+ Class<? extends TransformSpi> transformSpiClass = transformSpiHash.get(algorithmURI);
if (transformSpiClass == null) {
Object exArgs[] = { algorithmURI };
throw new InvalidTransformException("signature.Transform.UnknownTransform", exArgs);
@@ -179,13 +190,14 @@ public final class Transform extends Sig
throws AlgorithmAlreadyRegisteredException, ClassNotFoundException,
InvalidTransformException {
// are we already registered?
- Class<TransformSpi> transformSpi = transformSpiHash.get(algorithmURI);
+ Class<? extends TransformSpi> transformSpi = transformSpiHash.get(algorithmURI);
if (transformSpi != null) {
Object exArgs[] = { algorithmURI, transformSpi };
throw new AlgorithmAlreadyRegisteredException("algorithm.alreadyRegistered", exArgs);
}
- Class<TransformSpi> transformSpiClass =
- (Class<TransformSpi>)ClassLoaderUtils.loadClass(implementingClass, Transform.class);
+ Class<? extends TransformSpi> transformSpiClass =
+ (Class<? extends TransformSpi>)
+ ClassLoaderUtils.loadClass(implementingClass, Transform.class);
transformSpiHash.put(algorithmURI, transformSpiClass);
}
@@ -203,7 +215,7 @@ public final class Transform extends Sig
public static void register(String algorithmURI, Class<TransformSpi> implementingClass)
throws AlgorithmAlreadyRegisteredException {
// are we already registered?
- Class<TransformSpi> transformSpi = transformSpiHash.get(algorithmURI);
+ Class<? extends TransformSpi> transformSpi = transformSpiHash.get(algorithmURI);
if (transformSpi != null) {
Object exArgs[] = { algorithmURI, transformSpi };
throw new AlgorithmAlreadyRegisteredException("algorithm.alreadyRegistered", exArgs);
@@ -212,6 +224,48 @@ public final class Transform extends Sig
}
/**
+ * This method registers the default algorithms.
+ */
+ public static void registerDefaultAlgorithms() {
+ transformSpiHash.put(
+ Transforms.TRANSFORM_BASE64_DECODE, TransformBase64Decode.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N_OMIT_COMMENTS, TransformC14N.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N_WITH_COMMENTS, TransformC14NWithComments.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N11_OMIT_COMMENTS, TransformC14N11.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N11_WITH_COMMENTS, TransformC14N11_WithComments.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS, TransformC14NExclusive.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_C14N_EXCL_WITH_COMMENTS, TransformC14NExclusiveWithComments.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_XPATH, TransformXPath.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_ENVELOPED_SIGNATURE, TransformEnvelopedSignature.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_XSLT, TransformXSLT.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_XPATH2FILTER, TransformXPath2Filter.class
+ );
+ transformSpiHash.put(
+ Transforms.TRANSFORM_XPATH2FILTER04, TransformXPath2Filter.class
+ );
+ }
+
+ /**
* Returns the URI representation of Transformation algorithm
*
* @return the URI representation of Transformation algorithm
@@ -285,7 +339,7 @@ public final class Transform extends Sig
this.constructionElement.setAttributeNS(null, Constants._ATT_ALGORITHM, algorithmURI);
- Class<TransformSpi> transformSpiClass = transformSpiHash.get(algorithmURI);
+ Class<? extends TransformSpi> transformSpiClass = transformSpiHash.get(algorithmURI);
if (transformSpiClass == null) {
Object exArgs[] = { algorithmURI };
throw new InvalidTransformException("signature.Transform.UnknownTransform", exArgs);
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/ElementProxy.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/ElementProxy.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/ElementProxy.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/ElementProxy.java Fri May 6 12:14:59 2011
@@ -488,6 +488,21 @@ public abstract class ElementProxy {
}
prefixMappings.put(namespace, prefix);
}
+
+ /**
+ * This method registers the default prefixes.
+ */
+ public static void registerDefaultPrefixes() throws XMLSecurityException {
+ setDefaultPrefix("http://www.w3.org/2000/09/xmldsig#", "ds");
+ setDefaultPrefix("http://www.w3.org/2001/04/xmlenc#", "xenc");
+ setDefaultPrefix("http://www.xmlsecurity.org/experimental#", "experimental");
+ setDefaultPrefix("http://www.w3.org/2002/04/xmldsig-filter2", "dsig-xpath-old");
+ setDefaultPrefix("http://www.w3.org/2002/06/xmldsig-filter2", "dsig-xpath");
+ setDefaultPrefix("http://www.w3.org/2001/10/xml-exc-c14n#", "ec");
+ setDefaultPrefix(
+ "http://www.nue.et-inf.uni-siegen.de/~geuer-pollmann/#xpathFilter", "xx"
+ );
+ }
/**
* Method getDefaultPrefix
Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java?rev=1100185&r1=1100184&r2=1100185&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/utils/resolver/ResourceResolver.java Fri May 6 12:14:59 2011
@@ -23,6 +23,10 @@ import java.util.List;
import java.util.Map;
import org.apache.xml.security.signature.XMLSignatureInput;
+import org.apache.xml.security.utils.resolver.implementations.ResolverDirectHTTP;
+import org.apache.xml.security.utils.resolver.implementations.ResolverFragment;
+import org.apache.xml.security.utils.resolver.implementations.ResolverLocalFilesystem;
+import org.apache.xml.security.utils.resolver.implementations.ResolverXPointer;
import org.w3c.dom.Attr;
/**
@@ -206,6 +210,18 @@ public class ResourceResolver {
}
/**
+ * This method registers the default resolvers.
+ */
+ public static void registerDefaultResolvers() {
+ synchronized(resolverList) {
+ resolverList.add(new ResourceResolver(new ResolverFragment()));
+ resolverList.add(new ResourceResolver(new ResolverLocalFilesystem()));
+ resolverList.add(new ResourceResolver(new ResolverXPointer()));
+ resolverList.add(new ResourceResolver(new ResolverDirectHTTP()));
+ }
+ }
+
+ /**
* Method resolve
*
* @param uri