File: KeyGen.java

package info (click to toggle)
jsch 0.1.28-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 856 kB
  • ctags: 1,765
  • sloc: java: 11,074; sh: 120; perl: 69; xml: 62; python: 54; makefile: 10
file content (54 lines) | stat: -rw-r--r-- 1,538 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
/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */
import com.jcraft.jsch.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

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);
  }
}