1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
/**
* This progam will demonstrate the DSA keypair generation.
* $ CLASSPATH=.:../build javac KeyGen.java
* $ CLASSPATH=.:../build java KeyGen rsa output_keyfile comment
* or
* $ CLASSPATH=.:../build java KeyGen dsa output_keyfile comment
* You will be asked a passphrase for output_keyfile.
* If everything works fine, you will get the DSA or RSA keypair,
* output_keyfile and output_keyfile+".pub".
* The private key and public key are in the OpenSSH format.
*
*/
import com.jcraft.jsch.*;
import javax.swing.*;
class KeyGen{
public static void main(String[] arg){
if(arg.length<3){
System.err.println(
"usage: java KeyGen rsa output_keyfile comment\n"+
" java KeyGen dsa output_keyfile comment");
System.exit(-1);
}
String _type=arg[0];
int type=0;
if(_type.equals("rsa")){type=KeyPair.RSA;}
else if(_type.equals("dsa")){type=KeyPair.DSA;}
else {
System.err.println(
"usage: java KeyGen rsa output_keyfile comment\n"+
" java KeyGen dsa output_keyfile comment");
System.exit(-1);
}
String filename=arg[1];
String comment=arg[2];
JSch jsch=new JSch();
String passphrase="";
JTextField passphraseField=(JTextField)new JPasswordField(20);
Object[] ob={passphraseField};
int result=
JOptionPane.showConfirmDialog(null, ob, "Enter passphrase (empty for no passphrase)",
JOptionPane.OK_CANCEL_OPTION);
if(result==JOptionPane.OK_OPTION){
passphrase=passphraseField.getText();
}
try{
KeyPair kpair=KeyPair.genKeyPair(jsch, type);
kpair.setPassphrase(passphrase);
kpair.writePrivateKey(filename);
kpair.writePublicKey(filename+".pub", comment);
System.out.println("Finger print: "+kpair.getFingerPrint());
kpair.dispose();
}
catch(Exception e){
System.out.println(e);
}
System.exit(0);
}
}
|