Index: third_party/twisted_8_1/twisted/conch/scripts/ckeygen.py |
diff --git a/third_party/twisted_8_1/twisted/conch/scripts/ckeygen.py b/third_party/twisted_8_1/twisted/conch/scripts/ckeygen.py |
deleted file mode 100644 |
index 065c844aba232d1c55fd720d05e110f44a30dccb..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/conch/scripts/ckeygen.py |
+++ /dev/null |
@@ -1,180 +0,0 @@ |
-# Copyright (c) 2001-2007 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
-# |
-# $Id: ckeygen.py,v 1.8 2003/05/10 14:03:40 spiv Exp $ |
- |
-#""" Implementation module for the `ckeygen` command. |
-#""" |
- |
-from twisted.conch.ssh import keys |
-from twisted.python import log, usage, randbytes |
- |
-import sys, os, getpass, md5, socket |
-if getpass.getpass == getpass.unix_getpass: |
- try: |
- import termios # hack around broken termios |
- termios.tcgetattr, termios.tcsetattr |
- except (ImportError, AttributeError): |
- sys.modules['termios'] = None |
- reload(getpass) |
- |
-class GeneralOptions(usage.Options): |
- synopsis = """Usage: ckeygen [options] |
- """ |
- |
- optParameters = [['bits', 'b', 1024, 'Number of bits in the key to create.'], |
- ['filename', 'f', None, 'Filename of the key file.'], |
- ['type', 't', None, 'Specify type of key to create.'], |
- ['comment', 'C', None, 'Provide new comment.'], |
- ['newpass', 'N', None, 'Provide new passphrase.'], |
- ['pass', 'P', None, 'Provide old passphrase']] |
- |
- optFlags = [['fingerprint', 'l', 'Show fingerprint of key file.'], |
- ['changepass', 'p', 'Change passphrase of private key file.'], |
- ['quiet', 'q', 'Quiet.'], |
- ['showpub', 'y', 'Read private key file and print public key.']] |
- |
- #zsh_altArgDescr = {"bits":"Number of bits in the key (default: 1024)"} |
- #zsh_multiUse = ["foo", "bar"] |
- #zsh_mutuallyExclusive = [("foo", "bar"), ("bar", "baz")] |
- zsh_actions = {"type":"(rsa dsa)"} |
- #zsh_actionDescr = {"logfile":"log file name", "random":"random seed"} |
- |
-def run(): |
- options = GeneralOptions() |
- try: |
- options.parseOptions(sys.argv[1:]) |
- except usage.UsageError, u: |
- print 'ERROR: %s' % u |
- options.opt_help() |
- sys.exit(1) |
- log.discardLogs() |
- log.deferr = handleError # HACK |
- if options['type']: |
- if options['type'] == 'rsa': |
- generateRSAkey(options) |
- elif options['type'] == 'dsa': |
- generateDSAkey(options) |
- else: |
- sys.exit('Key type was %s, must be one of: rsa, dsa' % options['type']) |
- elif options['fingerprint']: |
- printFingerprint(options) |
- elif options['changepass']: |
- changePassPhrase(options) |
- elif options['showpub']: |
- displayPublicKey(options) |
- else: |
- options.opt_help() |
- sys.exit(1) |
- |
-def handleError(): |
- from twisted.python import failure |
- global exitStatus |
- exitStatus = 2 |
- log.err(failure.Failure()) |
- reactor.stop() |
- raise |
- |
-def generateRSAkey(options): |
- from Crypto.PublicKey import RSA |
- print 'Generating public/private rsa key pair.' |
- key = RSA.generate(int(options['bits']), randbytes.secureRandom) |
- _saveKey(key, options) |
- |
-def generateDSAkey(options): |
- from Crypto.PublicKey import DSA |
- print 'Generating public/private dsa key pair.' |
- key = DSA.generate(int(options['bits']), randbytes.secureRandom) |
- _saveKey(key, options) |
- |
-def printFingerprint(options): |
- if not options['filename']: |
- filename = os.path.expanduser('~/.ssh/id_rsa') |
- options['filename'] = raw_input('Enter file in which the key is (%s): ' % filename) |
- if os.path.exists(options['filename']+'.pub'): |
- options['filename'] += '.pub' |
- try: |
- string = keys.getPublicKeyString(options['filename']) |
- obj = keys.getPublicKeyObject(string) |
- print '%s %s %s' % ( |
- obj.size()+1, |
- ':'.join(['%02x' % ord(x) for x in md5.new(string).digest()]), |
- os.path.basename(options['filename'])) |
- except: |
- sys.exit('bad key') |
- |
-def changePassPhrase(options): |
- if not options['filename']: |
- filename = os.path.expanduser('~/.ssh/id_rsa') |
- options['filename'] = raw_input('Enter file in which the key is (%s): ' % filename) |
- try: |
- key = keys.getPrivateKeyObject(options['filename']) |
- except keys.BadKeyError, e: |
- if e.args[0] != 'encrypted key with no passphrase': |
- raise |
- else: |
- if not options['pass']: |
- options['pass'] = getpass.getpass('Enter old passphrase: ') |
- key = keys.getPrivateKeyObject(options['filename'], passphrase = options['pass']) |
- if not options['newpass']: |
- while 1: |
- p1 = getpass.getpass('Enter new passphrase (empty for no passphrase): ') |
- p2 = getpass.getpass('Enter same passphrase again: ') |
- if p1 == p2: |
- break |
- print 'Passphrases do not match. Try again.' |
- options['newpass'] = p1 |
- open(options['filename'], 'w').write( |
- keys.makePrivateKeyString(key, passphrase=options['newpass'])) |
- print 'Your identification has been saved with the new passphrase.' |
- |
-def displayPublicKey(options): |
- if not options['filename']: |
- filename = os.path.expanduser('~/.ssh/id_rsa') |
- options['filename'] = raw_input('Enter file in which the key is (%s): ' % filename) |
- try: |
- key = keys.getPrivateKeyObject(options['filename']) |
- except keys.BadKeyError, e: |
- if e.args[0] != 'encrypted key with no passphrase': |
- raise |
- else: |
- if not options['pass']: |
- options['pass'] = getpass.getpass('Enter passphrase: ') |
- key = keys.getPrivateKeyObject(options['filename'], passphrase = options['pass']) |
- print keys.makePublicKeyString(key) |
- |
-def _saveKey(key, options): |
- if not options['filename']: |
- kind = keys.objectType(key) |
- kind = {'ssh-rsa':'rsa','ssh-dss':'dsa'}[kind] |
- filename = os.path.expanduser('~/.ssh/id_%s'%kind) |
- options['filename'] = raw_input('Enter file in which to save the key (%s): '%filename).strip() or filename |
- if os.path.exists(options['filename']): |
- print '%s already exists.' % options['filename'] |
- yn = raw_input('Overwrite (y/n)? ') |
- if yn[0].lower() != 'y': |
- sys.exit() |
- if not options['pass']: |
- while 1: |
- p1 = getpass.getpass('Enter passphrase (empty for no passphrase): ') |
- p2 = getpass.getpass('Enter same passphrase again: ') |
- if p1 == p2: |
- break |
- print 'Passphrases do not match. Try again.' |
- options['pass'] = p1 |
- comment = '%s@%s' % (getpass.getuser(), socket.gethostname()) |
- open(options['filename'], 'w').write( |
- keys.makePrivateKeyString(key, passphrase=options['pass'])) |
- os.chmod(options['filename'], 33152) |
- open(options['filename']+'.pub', 'w').write( |
- keys.makePublicKeyString(key, comment = comment)) |
- pubKey = keys.getPublicKeyString(data=keys.makePublicKeyString(key, comment=comment)) |
- print 'Your identification has been saved in %s' % options['filename'] |
- print 'Your public key has been saved in %s.pub' % options['filename'] |
- print 'The key fingerprint is:' |
- print ':'.join(['%02x' % ord(x) for x in md5.new(pubKey).digest()]) |
- |
-if __name__ == '__main__': |
- run() |
- |