summaryrefslogtreecommitdiffstats
path: root/custodia/message
diff options
context:
space:
mode:
Diffstat (limited to 'custodia/message')
-rw-r--r--custodia/message/common.py1
-rw-r--r--custodia/message/kem.py14
-rw-r--r--custodia/message/simple.py5
3 files changed, 15 insertions, 5 deletions
diff --git a/custodia/message/common.py b/custodia/message/common.py
index d774e3c..bbcfb2b 100644
--- a/custodia/message/common.py
+++ b/custodia/message/common.py
@@ -42,6 +42,7 @@ class MessageHandler(object):
def __init__(self, request):
self.req = request
+ self.name = None
self.payload = None
def parse(self, msg, name):
diff --git a/custodia/message/kem.py b/custodia/message/kem.py
index 48b756b..add1c72 100644
--- a/custodia/message/kem.py
+++ b/custodia/message/kem.py
@@ -215,11 +215,9 @@ class KEMClient(object):
self.server_keys[KEY_USAGE_ENC], encalg)
def parse_reply(self, name, message):
- jwe = JWT(jwt=message,
- key=self.client_keys[KEY_USAGE_ENC])
- jws = JWT(jwt=jwe.claims,
- key=self.server_keys[KEY_USAGE_SIG])
- claims = json_decode(jws.claims)
+ claims = decode_enc_kem(message,
+ self.client_keys[KEY_USAGE_ENC],
+ self.server_keys[KEY_USAGE_SIG])
check_kem_claims(claims, name)
return claims['value']
@@ -242,6 +240,12 @@ def make_enc_kem(name, value, sig_key, alg, enc_key, enc):
return jwe.serialize(compact=True)
+def decode_enc_kem(message, enc_key, sig_key):
+ jwe = JWT(jwt=message, key=enc_key)
+ jws = JWT(jwt=jwe.claims, key=sig_key)
+ return json_decode(jws.claims)
+
+
# unit tests
test_keys = ({
"kty": "RSA",
diff --git a/custodia/message/simple.py b/custodia/message/simple.py
index 7186d12..6482c53 100644
--- a/custodia/message/simple.py
+++ b/custodia/message/simple.py
@@ -28,8 +28,13 @@ class SimpleKey(MessageHandler):
if not isinstance(msg, string_types):
raise InvalidMessage("The 'value' attribute is not a string")
+ self.name = name
self.payload = msg
def reply(self, output):
+ if self.name.endswith('/'):
+ # directory listings are pass-through with simple messages
+ return output
+
return json.dumps({'type': 'simple', 'value': output},
separators=(',', ':'))