gpg: refactor agent rsa/ecdsa signature parsing

nistp521
Roman Zeyde 8 years ago
parent f35b5be3ac
commit d486c1ee7b

@ -76,24 +76,28 @@ def _parse(s):
return _parse_term(s)
def _parse_ecdsa_sig(sig):
data, (algo, (r, sig_r), (s, sig_s)) = sig
assert data == 'sig-val'
assert algo == 'ecdsa'
def _parse_ecdsa_sig(args):
(r, sig_r), (s, sig_s) = args
assert r == 'r'
assert s == 's'
return (util.bytes2num(sig_r),
util.bytes2num(sig_s))
def _parse_rsa_sig(sig):
data, (algo, (s, sig_s)) = sig
assert data == 'sig-val'
assert algo == 'rsa'
def _parse_rsa_sig(args):
(s, sig_s), = args
assert s == 's'
return (util.bytes2num(sig_s),)
def _parse_sig(sig):
label, sig = sig
assert label == 'sig-val'
algo_name = sig[0]
parser = {'rsa': _parse_rsa_sig, 'ecdsa': _parse_ecdsa_sig}[algo_name]
return parser(args=sig[1:])
def sign(sock, keygrip, digest, algo='rsa'):
"""Sign a digest using specified key using GPG agent."""
hash_algo = 8 # SHA256
@ -123,7 +127,7 @@ def sign(sock, keygrip, digest, algo='rsa'):
sig, leftover = _parse(sig)
assert not leftover
return {'ecdsa': _parse_ecdsa_sig, 'rsa': _parse_rsa_sig}[algo](sig)
return _parse_sig(sig)
def get_keygrip(user_id):

Loading…
Cancel
Save