summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--custodia/store/enclite.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/custodia/store/enclite.py b/custodia/store/enclite.py
index 3f88d6b..787e5ca 100644
--- a/custodia/store/enclite.py
+++ b/custodia/store/enclite.py
@@ -4,6 +4,8 @@ from jwcrypto.common import json_decode, json_encode
from jwcrypto.jwe import JWE
from jwcrypto.jwk import JWK
+from custodia import log
+from custodia.store.interface import CSStoreError
from custodia.store.sqlite import SqliteStore
@@ -28,9 +30,15 @@ class EncryptedStore(SqliteStore):
def get(self, key):
value = super(EncryptedStore, self).get(key)
- jwe = JWE()
- jwe.deserialize(value, self.mkey)
- return jwe.payload.decode('utf-8')
+ if value is None:
+ return None
+ try:
+ jwe = JWE()
+ jwe.deserialize(value, self.mkey)
+ return jwe.payload.decode('utf-8')
+ except Exception as err:
+ log.error("Error parsing key %s: [%r]" % (key, repr(err)))
+ raise CSStoreError('Error occurred while trying to parse key')
def set(self, key, value, replace=False):
jwe = JWE(value, json_encode({'alg': 'dir', 'enc': self.enc}))