summaryrefslogtreecommitdiff
path: root/src/mailman_pgp/utils/pgp.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mailman_pgp/utils/pgp.py')
-rw-r--r--src/mailman_pgp/utils/pgp.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/mailman_pgp/utils/pgp.py b/src/mailman_pgp/utils/pgp.py
index 05721b4..eec7b67 100644
--- a/src/mailman_pgp/utils/pgp.py
+++ b/src/mailman_pgp/utils/pgp.py
@@ -182,13 +182,15 @@ def key_usable(key, flags_required):
@public
-def key_merge(privkey, new_key, signer_key):
+def key_merge(privkey, new_key, signer_key=None):
"""
:param privkey:
:type privkey: pgpy.PGPKey
:param new_key:
:type new_key: pgpy.PGPKey
+ :param signer_key:
+ :type signer_key: pgpy.PGPKey
"""
if privkey.pubkey.key_material != new_key.key_material:
raise ValueError('You sent a wrong key.')
@@ -207,10 +209,13 @@ def key_merge(privkey, new_key, signer_key):
for sig in uid_other.signatures:
if sig in uid.signatures:
continue
+ if signer_key is None:
+ uid_sigs.setdefault(uid, []).append(sig)
+ continue
if sig.signer != signer_key.fingerprint.keyid:
continue
- # sig is a new signature, not currenctly on uid, ans seems to
- # be made by the pgp_address.key
+ # sig is a new signature, not currently on uid, and seems to
+ # be made by the signer_key
try:
verification = signer_key.verify(uid, sig)
if bool(verification):