aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py190
1 files changed, 0 insertions, 190 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py
deleted file mode 100755
index ab51fc19..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/conch/scripts/ckeygen.py
+++ /dev/null
@@ -1,190 +0,0 @@
-# -*- test-case-name: twisted.conch.test.test_ckeygen -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Implementation module for the `ckeygen` command.
-"""
-
-import sys, os, getpass, 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)
-
-from twisted.conch.ssh import keys
-from twisted.python import filepath, log, usage, randbytes
-
-
-class GeneralOptions(usage.Options):
- synopsis = """Usage: ckeygen [options]
- """
-
- longdesc = "ckeygen manipulates public/private keys in various ways."
-
- 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.']]
-
- compData = usage.Completions(
- optActions={"type": usage.CompleteList(["rsa", "dsa"])})
-
-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:
- key = keys.Key.fromFile(options['filename'])
- obj = key.keyObject
- string = key.blob()
- print '%s %s %s' % (
- obj.size() + 1,
- key.fingerprint(),
- 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.Key.fromFile(options['filename']).keyObject
- 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.Key.fromFile(
- options['filename'], passphrase = options['pass']).keyObject
- 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.Key(key).toString(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.Key.fromFile(options['filename']).keyObject
- 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.Key.fromFile(
- options['filename'], passphrase = options['pass']).keyObject
- print keys.Key(key).public().toString()
-
-
-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
-
- keyObj = keys.Key(key)
- comment = '%s@%s' % (getpass.getuser(), socket.gethostname())
-
- filepath.FilePath(options['filename']).setContent(
- keyObj.toString('openssh', options['pass']))
- os.chmod(options['filename'], 33152)
-
- filepath.FilePath(options['filename'] + '.pub').setContent(
- keyObj.public().toString('openssh', 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 keyObj.fingerprint()
-
-if __name__ == '__main__':
- run()
-