Bonjour tout le monde,
J'utilise actuellement la commande Linux suivante :
Cette commande me permet de vérifier des données contenu dans publickey.sign.bin avec la clé public key.pem.Code:openssl rsautl -verify -in publickey.sign.bin -inkey key.pem -pubin -keyform PEM -out data.bin
Cette opération me génère de nouvelles données contenu dans data.bin.
Je cherche a faire la même opération en Java mais je n'y parviens pas, et c'est dans ce cadre que j'ai besoins d'aide. ^^
En cherchant sur internet, je suis tombé sur ces méthodes Java :
L'utilisation de ces méthodes se fait de cette façon :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public static String sign(String plainText, PrivateKey privateKey) throws Exception { Signature privateSignature = Signature.getInstance("SHA256withRSA"); privateSignature.initSign(privateKey); privateSignature.update(plainText.getBytes(UTF_8)); byte[] signature = privateSignature.sign(); return Base64.getEncoder().encodeToString(signature); } public static boolean verify(String plainText, String signature, PublicKey publicKey) throws Exception { Signature publicSignature = Signature.getInstance("SHA256withRSA"); publicSignature.initVerify(publicKey); publicSignature.update(plainText.getBytes(UTF_8)); byte[] signatureBytes = Base64.getDecoder().decode(signature); return publicSignature.verify(signatureBytes); }
Le problème avec ces méthodes est que la méthode verify me retourne un boolean.Code:
1
2
3
4
5
6 //Let's sign our message String signature = sign("foobar", pair.getPrivate()); //Let's check the signature boolean isCorrect = verify("foobar", signature, pair.getPublic()); System.out.println("Signature correct: " + isCorrect);
J'ai l'impression que cette opération de vérification permet de vérifier que le message signé par le serveur est correcte. Mais cela demande d'avoir le fameux message.
(Ce n'est donc pas la même opération qui est faite avec openssl)
Pourtant, la commande openssl que j'ai mise plus haut me génère bien de nouvelles données que je ne possède pas (qui vont être générées dans data.bin) et que j'utilise par la suite dans mon programme.
Merci par avance pour votre aide.