diff options
| author | J08nY | 2017-08-18 17:30:11 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-18 17:30:11 +0200 |
| commit | 54ad58f448f23cd26bbfad6abcfe5e4ca9b686ee (patch) | |
| tree | 192613f595dcca4f28b2c7e53a427b8a0a63b758 /src/mailman_pgp/rest/lists.py | |
| parent | 680ae1be88d22f2eb5d6f16a58acda4e5927ed72 (diff) | |
| download | mailman-pgp-54ad58f448f23cd26bbfad6abcfe5e4ca9b686ee.tar.gz mailman-pgp-54ad58f448f23cd26bbfad6abcfe5e4ca9b686ee.tar.zst mailman-pgp-54ad58f448f23cd26bbfad6abcfe5e4ca9b686ee.zip | |
Diffstat (limited to 'src/mailman_pgp/rest/lists.py')
| -rw-r--r-- | src/mailman_pgp/rest/lists.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/mailman_pgp/rest/lists.py b/src/mailman_pgp/rest/lists.py index 708635f..9cd7a4b 100644 --- a/src/mailman_pgp/rest/lists.py +++ b/src/mailman_pgp/rest/lists.py @@ -33,7 +33,7 @@ from zope.component import getUtility from mailman_pgp.config import config from mailman_pgp.database import transaction from mailman_pgp.model.list import PGPMailingList -from mailman_pgp.utils.pgp import key_from_blob +from mailman_pgp.utils.pgp import key_from_blob, key_merge from mailman_pgp.utils.rest import enumflag_validator, workflow_validator from mailman_pgp.workflows.key_change import (KeyChangeModWorkflow, KeyChangeWorkflow) @@ -213,3 +213,23 @@ class AListPubkey: resource = dict(public_key=str(pubkey), key_fingerprint=str(pubkey.fingerprint)) okay(response, etag(resource)) + + def on_put(self, request, response): + """/lists/<list_id>/pubkey""" + # merge pubkey with the current one. Assume all new sigs are valid. + try: + validator = Validator(public_key=GetterSetter(key_from_blob)) + values = validator(request) + except (ValueError, PGPError) as error: + bad_request(response, str(error)) + return + + key = values.pop('public_key') + try: + key_merge(self._mlist.key, key) + self._mlist.fs_key.save() + except ValueError as e: + bad_request(response, str(e)) + return + + accepted(response) |
