PubKeySign, version 1.3.1, Février 2022. http://SecTools.free.fr Ce programme permet de vérifier de manière simple et visuelle qu'une clé publique correspond à une clé privée, et d'utiliser les clés chargées pour signer ou vérifier un message ou un ficher. Rappel : pour signer, il faut une clé privée, pour vérifier, il faut la clé publique correspondante. Note : même si les fichiers de clés privées contiennent aussi la clé publique, afin de ne pas ajouter de la confusion, ce logiciel l'ignore ( n'active pas le bouton 'Verify' ). Pour tester cet outil, vous pouvez l'essayer avec les clés que vous trouverez dans le répertoire 'Keys' : RSAKey.der clé privée RSA encodée au format 'DER' RSAKey.pem la même que précédemment encodée au format 'PEM', RSAKey.pk8.der toujours la même au format PKCS8 / DER, RSAKey.pk8.pem et encore la même au format PKCS8 / PEM. RSAPubKey.pem clé publique correspondante à RSAKey.* Certificate.cer la même clé publique dans un certificat X509 (autosigné). Certificate.p12 fichier au format PKCS12 contenant la clé privée RSAkey et le certificat X509 correspondant. RSAKey2.pem une autre clé privée RSA, RSAPubKey2.pem et la clé publique correspondante. DSAKey.pem une clé privée DSA, DSAPubKey.pem et la clé publique correspondante. ECnKey.pem une clé privée sur courbe élliptique 'bien connue' (nommée) ECnPubKey.pem et la clé publique correspondante. ECxKey.pem une clé privée sur courbe élliptique définie explicitement ECxPubKey.pem et la clé publique correspondante. DHKey.pem une clé privée 'Diffie-Hellman' DHPubKey.pem et la clé publique correspondante. Certains fichiers sont 'protégées' par le mot de passe : 'test' (en minuscule). Chargement et affichage d'une clé : --------------------------------- A partir de l'explorateur Windows, il suffit de 'glisser-déposer' avec la souris (drag-and-drop) le(s) fichier(s) choisis sur la fenêtre principale de l'application. Dans le cas de fichier protégé, il faut renseigner au préalable le mot de passe. Chargement des données à signer ou vérifier : ------------------------------------------- On peut 'copier-coller' dans zone d'édition un message, ou 'glisser-déposer' un fichier [texte]. Si la taille de ce dernier est raisonnable ( ne dépasse pas 32 Ko ), son contenu sera chargé et affiché. Si le fichier est trop volumineux ou ne contient pas que du texte, il faut choisir l'option 'file', et 'glisser-déposer' le fichier dont le lien sera mis en mémoire pour signer ou vérifier directement sur lui-même. Le bouton 'Remove blanks' permet de retirer automatiquement les espaces et caractères de contrôles, pas toujours visibles (ligne vide supplémentaire, ...) dont la présence indésirée modifiera la signature. Les boutons 'URL Decode' et 'URL Encode' permettent de traiter facilement les cas de données envoyées au moyen d'un HTTP/GET. Bien que signer des données dans ces conditions ne soit pas très judicieux, je connais des gens à qui c'est utile. La signature peut-être renseignée par 'copier-coller' ou 'glisser-déposer' dans sa zone d'édition. Elle doit être encodée en 'Base64' ou en hexadécimal. Il faut sélectionner l'option qui convient. Le bouton 'Clean' enlève les caractères indésirables en fonction de l'encodage choisit (par exemple pour retirer le séparateur dans les représentation hexa de la forme xx:xx:xx...) Signature ou vérification : ------------------------- Lorsqu'une clé privée à été chargée, on peut produire la signature du message ou fichier en cliquant le bouton 'Sign'. Dans le cas d'une clé RSA, les options 'digest' et 'padding' sont utilisées. Avec des clés 'Diffie-Hellman', X25519 ou X448, on ne peut signer ou vérifier. Peut-être rajouterais-je plus tard la dérivation de clé. Lorsqu'une clé publique à été chargée, on peut vérifier la signature en cliquant le bouton 'Verify'. Une boite de message apparaitra pour indiquer le résultat de la vérification.