J'essayais de valider une signature XML.
La validation selon ce tutoriel fonctionne bien.
Mais j'ai aussi essayé une deuxième approche. Pour le vérifier avec le méthode de vérification de la classe Signature J'ai extrait la signature et le certificat du fichier xml, et j'ai fait ce qui suit :
public static boolean checkSignedFile(byte[] data, byte[] sigToVerify,
byte[] cert, String algorithm) throws CertificateException,
NoSuchAlgorithmException, InvalidKeyException, SignatureException {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate c = (Certificate) cf
.generateCertificate(new ByteArrayInputStream(cert));
PublicKey pk = c.getPublicKey();
Signature sig;
boolean verifies = false;
sig = Signature.getInstance(algorithm);
sig.initVerify(pk);
sig.update(data);
verifies = sig.verify(sigToVerify);
return verifies;
}
le résultat était faux. La signature n'a pas été vérifiée. Quelle pourrait être la raison de cela ?