Bonjour à tous,

Je commence à utiliser OpenSSL et dès le début je me suis perdu dans la documentation. Mes recherches ne m'ont pas apporté de réponses. Je viens donc vers vous pour avoir un peu d'aide et si possible des retours d'expérience sur l'utilisation de OpenSSL.
Je poste mon message dans la section C++ (et j'espère que c'est le bon endroit) car mon but final est d'écrire un pgm en C++ même si je pose d'abord ma question sur du bash.

Voici ce que je souhaite faire :

Je dispose des éléments suivants :
- une clé privée (256 bits) (ex : cbd5064b75298d90f193866414b0307c653993c008986739a4a9eb08b686e3e1)
- une clé publique (ex : 042c0f4892ff41e3ad1177b60138980577d88df5fc925cc61e6204b585852501de8704b18449e2309021f29cc84408dabf79182a5f8256f4c8f876381bb8249376)


• Je souhaite réaliser un premier programme qui prend en arguments :
- un fichier
- une clé privée

et qui réalise les actions suivantes :
- calcul du SHA256 du fichier
- génération de la signature à partir du SHA et de la clé privée

• Et un deuxième programme qui prend en arguments :
- un fichier
- une clé public
- une signature

et qui vérifie que la signature est bien celle de l'archive.


Dans un premier temps je souhaite réaliser cela en ligne de commande avec "openssl" puis transcrire mon script en C++.

Mon premier problème vient du fait que openssl à besoin de certificat au format PEM et que je dispose seulement des clés brutes.
Ma première question est donc est-il possible de se passer des fichiers PEM et d'utiliser directement mon format de clé ?
Si non, est-il possible de faire un fichier .pem avec les clés brutes ?

Après quelques recherches, j'en suis au point où il me semble difficile de faire cela en ligne de commande (voir non prévu par OpenSSL) mais surement possible en utilisant la lib. Cependant sur les forums où j'ai trouvé cela il n'y avait pas de solution pour faire cela en C++.

Je vous remercie d'avance pour votre aide.

Cordialement

---------------------------------------------------------------------------------------------------------

Edit : Ajout des lignes de commandes pour vérifier la signature d'un fichier avec la génération des clés par openssl

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
# Création de la clé privée et publique
openssl ecparam -genkey -name prime256v1 -out private.pem
 
# Extraction de la clé publique
openssl ec -in private.pem -pubout -out public.pem
 
# Génération de la signature du fichier
openssl dgst -sha256 -sign private.pem mon_fichier.txt > signature.bin
 
# Vérification de la signature
openssl dgst -sha256 -verify public.pem -signature signature.bin mon_fichier.txt