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 signalg = Signature.getInstance("DSA"); signalg.initSign(privKey); while ((ch = in.read()) != -1) { signalg.update((byte)ch); } // Calculer la signature byte[] signature = signalg.sign();
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