Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 17th, 2012  |  syntax: None  |  size: 1.44 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. """
  2. Simple stupid utility to create RSA or DSA key keys
  3. """
  4. import argparse
  5. from com.jcraft.jsch import KeyPair, JSch
  6. import sys
  7.  
  8. def parse_args():
  9.     parser = argparse.ArgumentParser(description="Generate public/private keys")
  10.     parser.add_argument('-crypt',
  11.             choices=('rsa', 'dsa'),
  12.             required=True,
  13.             help="Crypto algorithm to use")
  14.  
  15.     parser.add_argument('-o',
  16.             type=argparse.FileType('w'),
  17.             required=True,
  18.             help="Output file")
  19.  
  20.     parser.add_argument('-m',
  21.             type=str,
  22.             required=True,
  23.             help="Key comment")
  24.  
  25.     return parser.parse_args()
  26.  
  27. def error_out():
  28.     print """
  29. usage: java KeyGen -crypt rsa -o output_keyfile -m comment
  30.        java KeyGen -crypt dsa -o output_keyfile -m comment
  31.     """
  32.     sys.exit(-1)
  33.  
  34. if __name__ == '__main__':
  35.  
  36.     args = parse_args()
  37.  
  38.     typemap = {'rsa': KeyPair.RSA,
  39.                'dsa': KeyPair.DSA,}
  40.  
  41.  
  42.     keytype = typemap[args.crypt]
  43.  
  44.     filename = args.o.name
  45.     args.o.close()
  46.     comment = args.m
  47.  
  48.     jsch = JSch()
  49.  
  50.     passphrase = raw_input("Enter passphrase: ").strip()
  51.     kpair = KeyPair.genKeyPair(jsch, keytype)
  52.     kpair.setPassphrase(passphrase)
  53.     kpair.writePrivateKey(filename)
  54.     kpair.writePublicKey(filename+".pub", comment)
  55.  
  56.     print "Finger print: %s" % kpair.getFingerPrint()
  57.     kpair.dispose()
  58.     print "Private key is at: %s" % filename
  59.     print "Public  key is at: %s.pub" % filename