package com.zenika.xml.signature.validation;
import org.w3c.dom.Document;
import javax.xml.crypto.MarshalException;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureException;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMValidateContext;
/**
* An abstract class for XML signature validation. See PublicKeyXmlSignatureValidation and KeySelectorXmlSignatureValidation
*/
public abstract class XmlSignatureValidation {
/**
* Validate the XMLSignature contained in the given Document
* @param document
* @return
* @throws MarshalException
* @throws XMLSignatureException
*/
public abstract boolean validate(Document document) throws MarshalException, XMLSignatureException;
/**
* Validate the XMLSignature contained in the given validateContext
* @param validateContext
* @return true if the signature pass validation, false otherwise
* @throws MarshalException
* @throws XMLSignatureException
*/
protected boolean validate(DOMValidateContext validateContext) throws MarshalException, XMLSignatureException {
XMLSignature xmlSignature = XMLSignatureFactory.getInstance().unmarshalXMLSignature(validateContext);
return xmlSignature.validate(validateContext);
}
}