Bonjour tout le monde,
J'utilise actuellement la commande Linux suivante :
openssl rsautl -verify -in publickey.sign.bin -inkey key.pem -pubin -keyform PEM -out data.bin
Cette commande me permet de vérifier des données contenu dans publickey.sign.bin avec la clé public key.pem.
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 :
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);
} |
L'utilisation de ces méthodes se fait de cette façon :
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); |
Le problème avec ces méthodes est que la méthode verify me retourne un boolean.
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.
Partager