Keytool : Générer une paire de clés DSA

Ceci est de la prise de notes rapide. Les instructions n’ont pas été testées. Il est fort probable que le code ne compile pas… Le but étant de fournir un ordre d’idée, pas une solution à copier/coller.

  • Générer une paire de clés DSA :
  • KeyPairGenerator keygen = KPG.getInstance("DSA")
    // Générer une clé sur 512 bits
    SecureRandom secrand = new SecureRandom();
    secrand.setSeed(new byte[20]);
    keygen.initialize(512, secrand);
    
    // Générer la paire de clés :
    KeyPair keys = keygen.generateKeyPair();
    // keys.getPublic / keys.getPrivate
    
  • Signature expéditeur
  • Signature signalg = Signature.getInstance("DSA");
    signalg.initSign(privKey);
    while ((ch = in.read()) != -1) {
       signalg.update((byte)ch);
    }
    // Calculer la signature
    byte[] signature = signalg.sign();
    
  • Signature destinataire
  • Signature verifyalg = Signature.getInstance("DSA");
    verifyalg.initVerify(publicKey);
    while ((ch = in.read())= != -1) {
       verifyalg.update((byte)ch);
    }
    boolean check = verifyalg.verify(signature);
    // true --> signature ok, expéditeur et contenu authentifiés
    

Pour plus d’informations, voir la documentation sur le standard X509 (ASN.1).

Pour générer les certificats dans Java avec la commande keytool fournie par le JDK :

# Générer une nouvelle clé
keytool -genkey -keystore out.store -alias name
# Exporter le certificat
keytool -export -keystore out.store -alias name -file name.out
# Imprimer le certificat
keytool -printcert -file name.cert
# Signer le JAR à l'aide du certificat
jar cvf out.jar in.doc
jarsigner -keystore name.store out.jar name
# Destinataire :
jarsigner -verify -keystore name.store out.jar

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *