bonjour à tous,

j'ai implémnté en java et avec l'API Dsig une vérification de signature mais il ya une erreur que j'arrive pas à résoudre si quelqu'un pourrait m'aider je serai reconnaissante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
 
	}
il me génère l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Exception in thread "main" java.lang.NullPointerException
	at org.jcp.xml.dsig.internal.dom.DOMXMLSignature$DOMSignatureValue.validate(DOMXMLSignature.java:525)
	at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.validate(DOMXMLSignature.java:252)
	at premier.essai.Main.validation(Main.java:59)
	at premier.essai.Main.main(Main.java:35)