mirror of
https://github.com/romanz/amodem.git
synced 2026-04-20 13:16:42 +08:00
formats: refactor parsing code
This commit is contained in:
@@ -51,16 +51,6 @@ def parse_pubkey(blob):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def parse_public_key(data):
|
|
||||||
file_type, base64blob, name = data.split()
|
|
||||||
blob = base64.b64decode(base64blob)
|
|
||||||
result = parse_pubkey(blob)
|
|
||||||
result['name'] = name.encode('ascii')
|
|
||||||
assert result['type'] == file_type.encode('ascii')
|
|
||||||
log.debug('loaded %s %s', file_type, result['fingerprint'])
|
|
||||||
return result
|
|
||||||
|
|
||||||
|
|
||||||
def decompress_pubkey(pub):
|
def decompress_pubkey(pub):
|
||||||
P = curve.curve.p()
|
P = curve.curve.p()
|
||||||
A = curve.curve.a()
|
A = curve.curve.a()
|
||||||
@@ -81,3 +71,14 @@ def export_public_key(pubkey, label):
|
|||||||
log.debug('fingerprint: %s', fingerprint(blob))
|
log.debug('fingerprint: %s', fingerprint(blob))
|
||||||
b64 = base64.b64encode(blob)
|
b64 = base64.b64encode(blob)
|
||||||
return '{} {} {}\n'.format(ECDSA_KEY_TYPE, b64, label)
|
return '{} {} {}\n'.format(ECDSA_KEY_TYPE, b64, label)
|
||||||
|
|
||||||
|
|
||||||
|
def import_public_key(line):
|
||||||
|
''' Parse public key textual format, as saved at .pub file '''
|
||||||
|
file_type, base64blob, name = line.split()
|
||||||
|
blob = base64.b64decode(base64blob)
|
||||||
|
result = parse_pubkey(blob)
|
||||||
|
result['name'] = name.encode('ascii')
|
||||||
|
assert result['type'] == file_type.encode('ascii')
|
||||||
|
log.debug('loaded %s %s', file_type, result['fingerprint'])
|
||||||
|
return result
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ def serve(public_keys, signer, sock_path=None):
|
|||||||
if sock_path is None:
|
if sock_path is None:
|
||||||
sock_path = tempfile.mktemp(prefix='ssh-agent-')
|
sock_path = tempfile.mktemp(prefix='ssh-agent-')
|
||||||
|
|
||||||
keys = [formats.parse_public_key(k) for k in public_keys]
|
keys = [formats.import_public_key(k) for k in public_keys]
|
||||||
environ = {'SSH_AUTH_SOCK': sock_path, 'SSH_AGENT_PID': str(os.getpid())}
|
environ = {'SSH_AUTH_SOCK': sock_path, 'SSH_AGENT_PID': str(os.getpid())}
|
||||||
with unix_domain_socket_server(sock_path) as server:
|
with unix_domain_socket_server(sock_path) as server:
|
||||||
handler = protocol.Handler(keys=keys, signer=signer)
|
handler = protocol.Handler(keys=keys, signer=signer)
|
||||||
|
|||||||
Reference in New Issue
Block a user