You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by ra...@apache.org on 2006/08/14 14:43:27 UTC
svn commit: r431331 - in /xml/security/trunk: CHANGELOG.txt
src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
Author: raul
Date: Mon Aug 14 05:43:26 2006
New Revision: 431331
URL: http://svn.apache.org/viewvc?rev=431331&view=rev
Log:
Fixed bug no resolver for X509Data with just a X509Certificate.
Modified:
xml/security/trunk/CHANGELOG.txt
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
Modified: xml/security/trunk/CHANGELOG.txt
URL: http://svn.apache.org/viewvc/xml/security/trunk/CHANGELOG.txt?rev=431331&r1=431330&r2=431331&view=diff
==============================================================================
--- xml/security/trunk/CHANGELOG.txt (original)
+++ xml/security/trunk/CHANGELOG.txt Mon Aug 14 05:43:26 2006
@@ -40,7 +40,7 @@
acastro.dit@aeat.es for fix.
Big optimizations in XPath2 transformation.
Fixed bug 40245 in XPATH2 transformation(only in development version)
-
+ Fixed bug no resolver for X509Data with just a X509Certificate.
New in v1.3
Init-Don't fail if a transformation don't have all of its dependecies.
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java?rev=431331&r1=431330&r2=431331&view=diff
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/RetrievalMethodResolver.java Mon Aug 14 05:43:26 2006
@@ -89,17 +89,17 @@
//Create a retrieval method over the given element
RetrievalMethod rm = new RetrievalMethod(element, BaseURI);
String type = rm.getType();
- XMLSignatureInput resource=this.resolveInput(rm,BaseURI);
+ XMLSignatureInput resource=resolveInput(rm,BaseURI);
if (RetrievalMethod.TYPE_RAWX509.equals(type)) {
//a raw certificate, direct parsing is done!
- X509Certificate cert=this.getRawCertificate(resource);
+ X509Certificate cert=getRawCertificate(resource);
if (cert != null) {
return cert.getPublicKey();
}
return null;
};
- Element e = obtainRefrenceElement(resource);
- return this.resolveKey(e,BaseURI,storage);
+ Element e = obtainRefrenceElement(resource);
+ return resolveKey(e,BaseURI,storage);
} catch (XMLSecurityException ex) {
log.debug("XMLSecurityException", ex);
} catch (CertificateException ex) {
@@ -114,7 +114,7 @@
return null;
}
- private Element obtainRefrenceElement(XMLSignatureInput resource) throws CanonicalizationException, ParserConfigurationException, IOException, SAXException, KeyResolverException {
+ static private Element obtainRefrenceElement(XMLSignatureInput resource) throws CanonicalizationException, ParserConfigurationException, IOException, SAXException, KeyResolverException {
Element e;
if (resource.isElement()){
e=(Element) resource.getSubNode();
@@ -124,7 +124,7 @@
} else {
//Retrieved resource is an inputStream
byte inputBytes[] = resource.getBytes();
- e = this.getDocFromBytes(inputBytes);
+ e = getDocFromBytes(inputBytes);
//otherwise, we parse the resource, create an Element and delegate
if (log.isDebugEnabled())
log.debug("we have to parse " + inputBytes.length + " bytes");
@@ -151,13 +151,13 @@
try {
RetrievalMethod rm = new RetrievalMethod(element, BaseURI);
String type = rm.getType();
- XMLSignatureInput resource=this.resolveInput(rm,BaseURI);
+ XMLSignatureInput resource=resolveInput(rm,BaseURI);
if (RetrievalMethod.TYPE_RAWX509.equals(type)) {
- X509Certificate cert=this.getRawCertificate(resource);
+ X509Certificate cert=getRawCertificate(resource);
return cert;
}
Element e = obtainRefrenceElement(resource);
- return this.resolveCertificate(e,BaseURI,storage);
+ return resolveCertificate(e,BaseURI,storage);
} catch (XMLSecurityException ex) {
log.debug("XMLSecurityException", ex);
} catch (CertificateException ex) {
@@ -180,7 +180,7 @@
* @return
* @throws KeyResolverException
*/
- private X509Certificate resolveCertificate(Element e,String BaseURI,StorageResolver storage) throws KeyResolverException{
+ static private X509Certificate resolveCertificate(Element e,String BaseURI,StorageResolver storage) throws KeyResolverException{
if (log.isDebugEnabled())
log.debug("Now we have a {" + e.getNamespaceURI() + "}"+ e.getLocalName() + " Element");
//An element has been provided
@@ -198,7 +198,7 @@
* @return
* @throws KeyResolverException
*/
- private PublicKey resolveKey(Element e,String BaseURI,StorageResolver storage) throws KeyResolverException{
+ static private PublicKey resolveKey(Element e,String BaseURI,StorageResolver storage) throws KeyResolverException{
if (log.isDebugEnabled())
log.debug("Now we have a {" + e.getNamespaceURI() + "}"+ e.getLocalName() + " Element");
//An element has been provided
@@ -208,7 +208,7 @@
return null;
}
- private X509Certificate getRawCertificate(XMLSignatureInput resource) throws CanonicalizationException, IOException, CertificateException{
+ static private X509Certificate getRawCertificate(XMLSignatureInput resource) throws CanonicalizationException, IOException, CertificateException{
byte inputBytes[] = resource.getBytes();
// if the resource stores a raw certificate, we have to handle it
CertificateFactory certFact =CertificateFactory.getInstance(XMLX509Certificate.JCA_CERT_ID);
@@ -220,7 +220,7 @@
* @return
* @throws XMLSecurityException
*/
- private XMLSignatureInput resolveInput(RetrievalMethod rm,String BaseURI) throws XMLSecurityException{
+ static private XMLSignatureInput resolveInput(RetrievalMethod rm,String BaseURI) throws XMLSecurityException{
Attr uri = rm.getURIAttr();
//Apply the trnasforms
Transforms transforms = rm.getTransforms();
@@ -243,7 +243,7 @@
* @return the Document Element after parsing bytes
* @throws KeyResolverException if something goes wrong
*/
- Element getDocFromBytes(byte[] bytes) throws KeyResolverException {
+ static Element getDocFromBytes(byte[] bytes) throws KeyResolverException {
try {
javax.xml.parsers.DocumentBuilderFactory dbf =javax.xml.parsers.DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
@@ -288,24 +288,21 @@
List parents=new ArrayList(10);
//Obtain all the parents of the elemnt
- Element parent=e;
- while (parent!=null) {
- parents.add(parent);
- Node n=parent.getParentNode();
+ do {
+ parents.add(e);
+ Node n=e.getParentNode();
if (!(n instanceof Element )) {
break;
}
- parent=(Element)n;
- }
+ e=(Element)n;
+ } while (e!=null);
//Visit them in reverse order.
- boolean firstFound=false;
- ListIterator it2=parents.listIterator(parents.size());
+ ListIterator it2=parents.listIterator(parents.size()-1);
+ Element ele=null;
while (it2.hasPrevious()) {
- Element ele=(Element)it2.previous();
+ ele=(Element)it2.previous();
if (set.contains(ele)) {
- if (firstFound)
- return ele;
- firstFound=true;
+ return ele;
}
}
return null;
Modified: xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java?rev=431331&r1=431330&r2=431331&view=diff
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/keys/keyresolver/implementations/X509CertificateResolver.java Mon Aug 14 05:43:26 2006
@@ -86,16 +86,22 @@
try {
Element[] els=XMLUtils.selectDsNodes(element.getFirstChild(),
Constants._TAG_X509CERTIFICATE);
- if ((els == null) || (els.length == 0)) {
- return null;
+ if ((els == null) || (els.length == 0)) {
+ Element el=XMLUtils.selectDsNode(element.getFirstChild(),
+ Constants._TAG_X509DATA,0);
+ if (el!=null) {
+ return engineResolveX509Certificate(el, BaseURI, storage);
+ }
+ return null;
}
// populate Object array
for (int i = 0; i < els.length; i++) {
XMLX509Certificate xmlCert=new XMLX509Certificate(els[i], BaseURI);
X509Certificate cert = xmlCert.getX509Certificate();
- if (cert!=null)
+ if (cert!=null) {
return cert;
+ }
}
return null;
} catch (XMLSecurityException ex) {