mirror of
https://github.com/romanz/amodem.git
synced 2026-02-09 02:48:01 +08:00
gpg: refactor agent rsa/ecdsa signature parsing
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user