Skip to content

Commit 0050e88

Browse files
enkorePanos
and
Panos
authored
fix instantiation of key types and key_type_from_name (#34)
* fix instantiation of key types, key_type_from_name and string representation of KeyType * Added key types and keygen tests Co-authored-by: Panos <[email protected]>
1 parent fdb57ed commit 0050e88

File tree

13 files changed

+1826
-902
lines changed

13 files changed

+1826
-902
lines changed

Diff for: examples/keygen.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import argparse
2+
import getpass
3+
import socket
4+
import sys
5+
6+
from ssh import key, keytypes
7+
8+
9+
parser = argparse.ArgumentParser(description='keygen.py -- like ssh-keygen(1)')
10+
parser.add_argument('-t', dest='type', help='Key type', default='ed25519', choices=(
11+
'rsa', 'ed25519', 'dss'
12+
))
13+
parser.add_argument('-f', dest='file', help='Output private key file', required=True)
14+
parser.add_argument('-b', dest='bits', type=int, default=2048, help='Number of key bits')
15+
args = parser.parse_args()
16+
17+
key_type = keytypes.key_type_from_name('ssh-' + args.type)
18+
19+
if isinstance(key_type, keytypes.DSSKey):
20+
if args.bits != 1024:
21+
print('dss keys only support 1024 bits in OpenSSH. Setting -b 1024.', file=sys.stderr)
22+
args.bits = 1024
23+
if isinstance(key_type, keytypes.ED25519Key):
24+
args.bits = 0
25+
26+
keypair = key.generate(key_type, args.bits)
27+
28+
keypair.export_privkey_file(args.file)
29+
pubkey = keypair.export_pubkey_base64().decode()
30+
pubkey_openssh_format = ' '.join((str(key_type), pubkey, '%s@%s' % (getpass.getuser(), socket.getfqdn())))
31+
print(pubkey_openssh_format)
32+
with open(args.file + '.pub', 'w') as fd:
33+
print(pubkey_openssh_format, file=fd)

Diff for: ssh/c_ssh.pxd

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ cdef extern from "libssh/libssh.h" nogil:
172172
SSH_KEYTYPE_DSS,
173173
SSH_KEYTYPE_RSA,
174174
SSH_KEYTYPE_RSA1,
175-
SSH_KEYTYPE_ECDSA,
175+
SSH_KEYTYPE_ECDSA, # Deprecated
176176
SSH_KEYTYPE_ED25519,
177177
SSH_KEYTYPE_DSS_CERT01,
178178
SSH_KEYTYPE_RSA_CERT01,

Diff for: ssh/channel.c

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: ssh/key.c

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)