Bonjour,
je suis actuellement en train de programmer un outil de verification de signature et je rencontre quelques soucis de développement.
Mon application reçoit en entrée un document XML signé (signature enveloppé). A l'intérieur du document se trouve donc la signature, et des informations du certificat utilisé pour la signature dont la clé publique.
Grâce à JDOM, je peux parser mon document XML et récuppérer les infos qui m'interessent (signature + clé publique).
Ensuite je voulais utiliser l'objet Signature du package Java.security de cette façon :
Cependant pour utiliser cette méthode, il faut que ma clé publique soit représenté par l'objet PublicKey. Or moi je l'ai sous forme d'ELEMENT ou de String. Et je ne vois pas comment faire la conversion.
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 boolean verifieSignature (byte[] document, PublicKey publicKey, byte[] signature) throws ServiceTechniqueException { LOGGER.debug("entrée dans la méthode"); try { Signature signatureInstance = Signature.getInstance("SHA1withDSA"); signatureInstance.initVerify(publicKey); signatureInstance.update(document); return signatureInstance.verify(signature); } catch (NoSuchAlgorithmException e) { LOGGER.info(e.getMessage()); throw new ServiceTechniqueException(e.getMessage(), e); } catch (SignatureException e) { LOGGER.info(e.getMessage()); throw new ServiceTechniqueException(e.getMessage(), e); } catch (InvalidKeyException e) { LOGGER.info(e.getMessage()); throw new ServiceTechniqueException(e.getMessage(), e); } }
Pouvez vous m'indiquer si j'utilise la bonne démarche pour ma vérification de signature du document? Et si c'est le cas, pouvez vous m'indiquer comment faire pour obtenir cet objet PublicKey via le document que je reçois?
merci pour vos réponses
Partager