1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.cert.CertificateException;
import javax.naming.NamingException;
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;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Main {
public static void main(String[] args) throws FileNotFoundException, SAXException, IOException, ParserConfigurationException, XMLSignatureException, MarshalException, NamingException, CertificateException,NullPointerException
{
// on va charger le document à signer puis le valider à l'aide de validate()
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance ();
dbf.setNamespaceAware (true);
DocumentBuilder builder = dbf.newDocumentBuilder ();
Document doc = builder.parse (new FileInputStream ("docSigné.pdf.isf"));
NodeList NL = doc.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");
if(NL.getLength()==0) System.out.println ("elt non trouvé");
if (validation((Element) NL.item(0))) System.out.println ("signature valide");
else System.out.println ("signature non valide");
}
public static boolean validation(Element signature) throws XMLSignatureException, MarshalException, FileNotFoundException, SAXException, IOException, ParserConfigurationException, NamingException, CertificateException
{
//Chargement du contexte de validation : en utilsant la clé du doc*/
DOMValidateContext valContext= new DOMValidateContext ( new KeyValueKeySelector() , signature) ;
//if (valContext==null) System.out.println ("valcontext null");
System.out.println (valContext);
// récupération des différents composants de la XMLSignature
XMLSignatureFactory signatureFactory= XMLSignatureFactory.getInstance ("DOM");
System.out.println (signatureFactory);
// création d'une signature au format xml en utilsant DOMValidateContext
XMLSignature signatureVerif= signatureFactory.unmarshalXMLSignature(valContext);
System.out.println (signatureVerif);
// validation de la signature
boolean signatureValidity=false ;
boolean status;
if((signature!=null)&(valContext!=null))
{signatureValidity = signatureVerif.validate(valContext) ;
System.out.println ("contexte valide");
}
if (!signatureValidity) status=true ;
else status=false;
return status;
} |
Partager