diff options
author | Michał Górny <mgorny@gentoo.org> | 2020-09-06 17:24:38 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2020-09-06 17:24:38 +0200 |
commit | 1785a5405090eff4ecaea6bb34846ddc8e08572f (patch) | |
tree | ca7a15be541fe597fbdce9a922f71d60b5b799da | |
parent | c4933eb9ccffb8a5eb200d5c750029bedfa2669e (diff) | |
download | gemato-1785a5405090eff4ecaea6bb34846ddc8e08572f.tar.gz |
openpgp: Move get_wkd_url() to global scope
Signed-off-by: Michał Górny <mgorny@gentoo.org>
-rw-r--r-- | gemato/openpgp.py | 33 | ||||
-rw-r--r-- | tests/test_openpgp.py | 3 |
2 files changed, 19 insertions, 17 deletions
diff --git a/gemato/openpgp.py b/gemato/openpgp.py index abbe5cd..901bfa5 100644 --- a/gemato/openpgp.py +++ b/gemato/openpgp.py @@ -51,6 +51,22 @@ class OpenPGPSignatureData: self.primary_key_fingerprint = primary_key_fingerprint +ZBASE32_TRANSLATE = bytes.maketrans( + b'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', + b'ybndrfg8ejkmcpqxot1uwisza345h769') + + +def get_wkd_url(email): + localname, domain = email.encode('utf8').split(b'@', 1) + b32 = ( + base64.b32encode(hashlib.sha1(localname.lower()).digest()) + .translate(ZBASE32_TRANSLATE).decode()) + uenc = urllib.parse.quote(localname) + ldomain = domain.lower().decode('utf8') + return (f'https://{ldomain}/.well-known/openpgpkey/hu/' + f'{b32}?l={uenc}') + + class SystemGPGEnvironment: """ OpenPGP environment class that uses the global OpenPGP environment @@ -354,21 +370,6 @@ debug-level guru return ret - zbase32_translate = bytes.maketrans( - b'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567', - b'ybndrfg8ejkmcpqxot1uwisza345h769') - - @classmethod - def get_wkd_url(cls, email): - localname, domain = email.encode('utf8').split(b'@', 1) - b32 = ( - base64.b32encode(hashlib.sha1(localname.lower()).digest()) - .translate(cls.zbase32_translate).decode()) - uenc = urllib.parse.quote(localname) - ldomain = domain.lower().decode('utf8') - return (f'https://{ldomain}/.well-known/openpgpkey/hu/' - f'{b32}?l={uenc}') - def refresh_keys_wkd(self): """ Attempt to fetch updated keys using WKD. Returns true if *all* @@ -402,7 +403,7 @@ debug-level guru 'https': self.proxy, } for a in addrs: - url = self.get_wkd_url(a) + url = get_wkd_url(a) resp = requests.get(url, proxies=proxies) if resp.status_code != 200: logging.debug(f'refresh_keys_wkd(): failing due to failed' diff --git a/tests/test_openpgp.py b/tests/test_openpgp.py index 9528b7b..5e71830 100644 --- a/tests/test_openpgp.py +++ b/tests/test_openpgp.py @@ -30,6 +30,7 @@ from gemato.manifest import ManifestFile from gemato.openpgp import ( SystemGPGEnvironment, IsolatedGPGEnvironment, + get_wkd_url, ) from gemato.recursiveloader import ManifestRecursiveLoader @@ -842,7 +843,7 @@ def test_refresh_wkd_fallback_to_hkp(openpgp_env_with_refresh, 'iy9q119eutrkn8s1mk4r39qejnbu3n5q?l=Joe.Doe'), ]) def test_get_wkd_url(email, expected): - assert IsolatedGPGEnvironment.get_wkd_url(email) == expected + assert get_wkd_url(email) == expected def signal_desc(sig): |