DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=38655>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=38655





------- Additional Comments From [EMAIL PROTECTED]  2007-10-18 08:22 -------
- Environment: Java version: 1.6.0_03 (suspected on all OS, but currently 
tested on Windows XP)

- Problem: when sign an xml document with more than one namespace, XML 
Signature throws an exception caused by the Canonicalizer

- Reproduce:

public static void main(String args[]) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        Document doc = dbf.newDocumentBuilder().parse(
                        new FileInputStream(args[0]));
        XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM");
        DigestMethod digestMethod = fac.newDigestMethod(
                        "http://www.w3.org/2000/09/xmldsig#sha1";, null);
        
        SignedInfo signedInfo = fac.newSignedInfo(fac.newCanonicalizationMethod
(
                        "http://www.w3.org/TR/2001/REC-xml-c14n-20010315";,
                        (C14NMethodParameterSpec) null), fac.newSignatureMethod
(
                                        "http://www.w3.org/2000/09/xmldsig#rsa-
sha1", null), Collections.singletonList(fac.newReference("", digestMethod, 
null,
                        "http://www.w3.org/2000/09/xmldsig#object";, null)));
        
        DOMSignContext signContext = new DOMSignContext( 
KeyPairGenerator.getInstance("RSA").generateKeyPair().getPrivate(), doc
                        .getDocumentElement());
        fac.newXMLSignature(signedInfo, null).sign(signContext);
}

With XML input:

<?xml version="1.0"?>
  <wiki
      xmlns:generated-command="http://foo.com/command";
    xmlns:generated-event="http://foo.com/event";
    xmlns:command="http://foo.com/command";
    xmlns:ui="http://foo.com/ui";
    xmlns:event="http://foo.com/event";
    xmlns:instruction="http://foo/instruction";
    xmlns:directory="http://foo.com/io/directory";
    xmlns:function="http://foo.com/function";
    xmlns="http://www.w3.org/1999/xhtml";
    xmlns:ctrl="http://foo.com/controls";
    xmlns:wiki="http://foo.com/samples/wiki";>
  <wiki:content>
    <wiki:paragraph />
  </wiki:content>
</wiki>

- Result:

Exception in thread "main" javax.xml.crypto.dsig.XMLSignatureException: 
java.lang.ArrayIndexOutOfBoundsException: 23
        at org.jcp.xml.dsig.internal.dom.DOMReference.transform(Unknown Source)
        at org.jcp.xml.dsig.internal.dom.DOMReference.digest(Unknown Source)
        at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.digestReference
(Unknown Source)
        at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(Unknown Source)
        at CanonicalizerTest.main(CanonicalizerTest.java:32)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 23
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.SymbMap.index
(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.SymbMap.get
(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.NameSpaceSymbTabl
e.addMappingAndRender(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.Canonicalizer2001
0315.handleAttributesSubtree(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase
.canonicalizeSubTree(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase
.engineCanonicalizeSubTree(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.c14n.implementations.CanonicalizerBase
.engineCanonicalize(Unknown Source)
        at 
com.sun.org.apache.xml.internal.security.signature.XMLSignatureInput.updateOutp
utStream(Unknown Source)
        ... 5 more


This bug is critical for XML Signature: i've submitted it to Java Developer 
Bug Report too.


-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Reply via email to