Skip to content
This repository has been archived by the owner on May 26, 2020. It is now read-only.

Commit

Permalink
Raul Benito's patches - see Bugzilla #28752
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.apache.org/repos/asf/xml/security/trunk@351039 13f79535-47bb-0310-9956-ffa450edef68
  • Loading branch information
Berin Lautenbach committed May 12, 2004
1 parent a17a4f6 commit b91501b
Show file tree
Hide file tree
Showing 29 changed files with 1,425 additions and 1,965 deletions.

Large diffs are not rendered by default.

1,457 changes: 301 additions & 1,156 deletions src/org/apache/xml/security/c14n/implementations/Canonicalizer20010315Excl.java

Large diffs are not rendered by default.

599 changes: 483 additions & 116 deletions src/org/apache/xml/security/c14n/implementations/CanonicalizerBase.java

Large diffs are not rendered by default.

32 changes: 12 additions & 20 deletions src/org/apache/xml/security/keys/content/KeyValue.java
Expand Up @@ -20,7 +20,6 @@

import java.security.PublicKey;

import javax.xml.transform.TransformerException;

import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.keys.content.keyvalues.DSAKeyValue;
Expand All @@ -29,10 +28,8 @@
import org.apache.xml.security.utils.JavaUtils;
import org.apache.xml.security.utils.SignatureElementProxy;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


/**
Expand Down Expand Up @@ -142,33 +139,28 @@ public KeyValue(Element element, String BaseURI)
*/
public PublicKey getPublicKey() throws XMLSecurityException {

try {
Element nscontext = XMLUtils.createDSctx(this._doc, "ds",
Constants.SignatureSpecNS);
NodeList rsa =
XPathAPI.selectNodeList(this._constructionElement,
"./ds:" + Constants._TAG_RSAKEYVALUE,
nscontext);

if (rsa.getLength() > 0) {
RSAKeyValue kv = new RSAKeyValue((Element) rsa.item(0),

Element rsa = XMLUtils.selectDsNode(this._constructionElement,
Constants._TAG_RSAKEYVALUE,0);

if (rsa != null) {
RSAKeyValue kv = new RSAKeyValue(rsa,
this._baseURI);

return kv.getPublicKey();
}

NodeList dsa =
XPathAPI.selectNodeList(this._constructionElement,
"./ds:" + Constants._TAG_DSAKEYVALUE,
nscontext);
Element dsa = XMLUtils.selectDsNode(this._constructionElement,
Constants._TAG_DSAKEYVALUE,0);


if (dsa.getLength() > 0) {
DSAKeyValue kv = new DSAKeyValue((Element) dsa.item(0),
if (dsa != null) {
DSAKeyValue kv = new DSAKeyValue(dsa,
this._baseURI);

return kv.getPublicKey();
}
} catch (TransformerException ex) {}


return null;
}
Expand Down
15 changes: 4 additions & 11 deletions src/org/apache/xml/security/keys/content/RetrievalMethod.java
Expand Up @@ -18,15 +18,13 @@



import javax.xml.transform.TransformerException;

import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.transforms.Transforms;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.SignatureElementProxy;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
Expand Down Expand Up @@ -125,21 +123,16 @@ public String getType() {
public Transforms getTransforms() throws XMLSecurityException {

try {
Element nscontext = XMLUtils.createDSctx(this._doc, "ds",
Constants.SignatureSpecNS);
Element transformsElem =
(Element) XPathAPI.selectSingleNode(this._constructionElement,
"./ds:"
+ Constants
._TAG_TRANSFORMS, nscontext);
Element transformsElem =
(Element) XMLUtils.selectDsNode(this._constructionElement,
Constants
._TAG_TRANSFORMS, 0);

if (transformsElem != null) {
return new Transforms(transformsElem, this._baseURI);
}

return null;
} catch (TransformerException ex) {
throw new XMLSecurityException("empty", ex);
} catch (XMLSignatureException ex) {
throw new XMLSecurityException("empty", ex);
}
Expand Down
Expand Up @@ -21,7 +21,6 @@
import java.security.PublicKey;
import java.security.cert.X509Certificate;

import javax.xml.transform.TransformerException;

import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.keys.content.keyvalues.DSAKeyValue;
Expand All @@ -30,7 +29,6 @@
import org.apache.xml.security.keys.storage.StorageResolver;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;


Expand Down Expand Up @@ -63,19 +61,14 @@ public boolean engineCanResolve(Element element, String BaseURI,
boolean isDSAKeyValue = XMLUtils.elementIsInSignatureSpace(element,
Constants._TAG_DSAKEYVALUE);

if (isKeyValue) {
try {
Element nscontext = XMLUtils.createDSctx(element.getOwnerDocument(),
"ds",
Constants.SignatureSpecNS);

this._dsaKeyElement = (Element) XPathAPI.selectSingleNode(element,
"./ds:" + Constants._TAG_DSAKEYVALUE, nscontext);
if (isKeyValue) {

this._dsaKeyElement =
XMLUtils.selectDsNode(element.getFirstChild(),Constants._TAG_DSAKEYVALUE,0);

if (this._dsaKeyElement != null) {
return true;
}
} catch (TransformerException ex) {}
}
} else if (isDSAKeyValue) {

// this trick is needed to allow the RetrievalMethodResolver to eat a
Expand Down
Expand Up @@ -22,7 +22,6 @@
import java.security.PublicKey;
import java.security.cert.X509Certificate;

import javax.xml.transform.TransformerException;

import org.apache.xml.security.exceptions.XMLSecurityException;
import org.apache.xml.security.keys.content.keyvalues.RSAKeyValue;
Expand All @@ -31,7 +30,6 @@
import org.apache.xml.security.keys.storage.StorageResolver;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;


Expand Down Expand Up @@ -71,17 +69,13 @@ public boolean engineCanResolve(Element element, String BaseURI,
boolean isRSAKeyValue = XMLUtils.elementIsInSignatureSpace(element,
Constants._TAG_RSAKEYVALUE);

if (isKeyValue) {
try {
Element nscontext = XMLUtils.createDSctx(element.getOwnerDocument(), "ds", Constants.SignatureSpecNS);

this._rsaKeyElement = (Element) XPathAPI.selectSingleNode(element,
"./ds:" + Constants._TAG_RSAKEYVALUE, nscontext);
if (isKeyValue) {
this._rsaKeyElement = XMLUtils.selectDsNode(element.getFirstChild(),
Constants._TAG_RSAKEYVALUE, 0);

if (this._rsaKeyElement != null) {
return true;
}
} catch (TransformerException ex) {}
}
} else if (isRSAKeyValue) {

// this trick is needed to allow the RetrievalMethodResolver to eat a
Expand Down
Expand Up @@ -40,6 +40,7 @@
import org.apache.xml.security.utils.resolver.ResourceResolver;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.Node;


/**
Expand Down Expand Up @@ -145,11 +146,11 @@ public PublicKey engineResolvePublicKey(
+ e.getLocalName() + " Element");

if (e != null) {
KeyResolver newKeyResolver = KeyResolver.getInstance(e,
KeyResolver newKeyResolver = KeyResolver.getInstance(getFirstElementChild(e),
BaseURI, storage);

if (newKeyResolver != null) {
return newKeyResolver.resolvePublicKey(e, BaseURI,
return newKeyResolver.resolvePublicKey(getFirstElementChild(e), BaseURI,
storage);
}
}
Expand Down Expand Up @@ -231,11 +232,11 @@ public X509Certificate engineResolveX509Certificate(
+ e.getLocalName() + " Element");

if (e != null) {
KeyResolver newKeyResolver = KeyResolver.getInstance(e,
KeyResolver newKeyResolver = KeyResolver.getInstance(getFirstElementChild(e),
BaseURI, storage);

if (newKeyResolver != null) {
return newKeyResolver.resolveX509Certificate(e, BaseURI,
return newKeyResolver.resolveX509Certificate(getFirstElementChild(e), BaseURI,
storage);
}
}
Expand Down Expand Up @@ -295,4 +296,11 @@ public javax.crypto.SecretKey engineResolveSecretKey(
throws KeyResolverException {
return null;
}
public static Element getFirstElementChild(Element e){
Node n=e.getFirstChild();
while (n!=null && n.getNodeType()!=Node.ELEMENT_NODE) {
n=n.getNextSibling();
}
return (Element)n;
}
}
Expand Up @@ -32,7 +32,6 @@
import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

Expand All @@ -50,7 +49,7 @@ public class X509CertificateResolver extends KeyResolverSpi {
org.apache.commons.logging.LogFactory.getLog(X509CertificateResolver.class.getName());

/** Field _dsaKeyElement */
NodeList _x509CertKeyElements = null;
Element[] _x509CertKeyElements = null;

/**
* Method engineCanResolve
Expand All @@ -74,19 +73,17 @@ public boolean engineCanResolve(Element element, String BaseURI,
return false;
}

try {
Element nscontext = XMLUtils.createDSctx(element.getOwnerDocument(), "ds", Constants.SignatureSpecNS);

this._x509CertKeyElements = XPathAPI.selectNodeList(element,
"./ds:" + Constants._TAG_X509CERTIFICATE, nscontext);
this._x509CertKeyElements = XMLUtils.selectDsNodes(element.getFirstChild(),
Constants._TAG_X509CERTIFICATE);

if ((this._x509CertKeyElements != null)
&& (this._x509CertKeyElements.getLength() > 0)) {
&& (this._x509CertKeyElements.length > 0)) {
log.debug("Yes Sir, I can");

return true;
}
} catch (TransformerException ex) {}

log.debug("I can't");

Expand Down Expand Up @@ -134,24 +131,24 @@ public X509Certificate engineResolveX509Certificate(

try {
if ((this._x509CertKeyElements == null)
|| (this._x509CertKeyElements.getLength() == 0)) {
|| (this._x509CertKeyElements.length == 0)) {
boolean weCanResolve = this.engineCanResolve(element, BaseURI,
storage);

if (!weCanResolve || (this._x509CertKeyElements == null)
|| (this._x509CertKeyElements.getLength() == 0)) {
|| (this._x509CertKeyElements.length == 0)) {
return null;
}
}

this._x509certObject =
new XMLX509Certificate[this._x509CertKeyElements.getLength()];
new XMLX509Certificate[this._x509CertKeyElements.length];

// populate Object array
for (int i = 0; i < this._x509CertKeyElements.getLength(); i++) {
for (int i = 0; i < this._x509CertKeyElements.length; i++) {
this._x509certObject[i] =
new XMLX509Certificate((Element) this._x509CertKeyElements
.item(i), BaseURI);
new XMLX509Certificate(this._x509CertKeyElements[i]
, BaseURI);
}

for (int i = 0; i < this._x509certObject.length; i++) {
Expand Down
Expand Up @@ -32,7 +32,6 @@
import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.utils.Constants;
import org.apache.xml.security.utils.XMLUtils;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

Expand All @@ -49,7 +48,7 @@ public class X509SKIResolver extends KeyResolverSpi {
org.apache.commons.logging.LogFactory.getLog(X509SKIResolver.class.getName());

/** Field _x509childNodes */
private NodeList _x509childNodes = null;
private Element _x509childNodes[] = null;

/** Field _x509childObject[] */
private XMLX509SKI _x509childObject[] = null;
Expand All @@ -76,20 +75,19 @@ public boolean engineCanResolve(Element element, String BaseURI,
return false;
}

try {

Element nscontext = XMLUtils.createDSctx(element.getOwnerDocument(), "ds", Constants.SignatureSpecNS);

this._x509childNodes = XPathAPI.selectNodeList(element,
"./ds:" + Constants._TAG_X509SKI, nscontext);
this._x509childNodes = XMLUtils.selectDsNodes(element,
Constants._TAG_X509SKI);

if ((this._x509childNodes != null)
&& (this._x509childNodes.getLength() > 0)) {
&& (this._x509childNodes.length > 0)) {
log.debug("Yes Sir, I can");

return true;
}
} catch (TransformerException ex) {}


log.debug("I can't");

return false;
Expand Down Expand Up @@ -153,11 +151,11 @@ public X509Certificate engineResolveX509Certificate(
}

this._x509childObject =
new XMLX509SKI[this._x509childNodes.getLength()];
new XMLX509SKI[this._x509childNodes.length];

for (int i = 0; i < this._x509childNodes.getLength(); i++) {
for (int i = 0; i < this._x509childNodes.length; i++) {
this._x509childObject[i] =
new XMLX509SKI((Element) this._x509childNodes.item(i), BaseURI);
new XMLX509SKI((Element) this._x509childNodes[i], BaseURI);
}

while (storage.hasNext()) {
Expand Down

0 comments on commit b91501b

Please sign in to comment.