I have a theoretically valid document that is failing core validation, and I have the following code in place:

NodeList nl = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
if (nl.getLength() == 0) {
  throw new Exception("Cannot find Signature element");
}

DOMValidateContext valContext = new DOMValidateContext(pk, nl.item(0));
XMLSignatureFactory factory = XMLSignatureFactory.getInstance("DOM", new XMLDSigRI());

XMLSignature signature = factory.unmarshalXMLSignature(valContext);

valid = signature.validate(valContext);

if (!valid) {
        boolean sv = signature.getSignatureValue().validate(valContext);
        logger.warn("signature validation status: " + sv);

        Iterator i = signature.getSignedInfo().getReferences().iterator();
        for (int j=0; i.hasNext(); j++) {
                boolean refValid = ((Reference)i.next()).validate(valContext);
                logger.warn("ref[" + j + "] validity status: " + refValid);
        }
}

logger.debug("Completed signature validation");


The output from this is coming up as:

   <signature validation status: false>
   <ref[0] validity status: true>
   <Completed signature validation>

So what does this mean? There are no References? That seems odd, but i'm not sure what to do about it.


---
Nayan Hajratwala
Chikli Consulting LLC
http://agileshrugged.com
http://www.chikli.com






Reply via email to