File: KeyGen.java

package info (click to toggle)
jsch 0.1.51-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,312 kB
  • ctags: 2,540
  • sloc: java: 17,283; xml: 180; sh: 120; perl: 69; python: 54; makefile: 20
file content (63 lines) | stat: -rw-r--r-- 1,961 bytes parent folder | download
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);
  }
}