summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-10-01 11:29:25 -0400
committerSimo Sorce <simo@redhat.com>2015-10-19 12:17:24 -0400
commit0d94624968e00cfc9b85a90ffe3f3032fa510538 (patch)
tree3e62f12dbf61b68b41fbd269b112075b9f151143
parented3dd0d4c63b424bd5e6d7ba79779caf42f3de7b (diff)
downloadcustodia-0d94624968e00cfc9b85a90ffe3f3032fa510538.tar.gz
custodia-0d94624968e00cfc9b85a90ffe3f3032fa510538.tar.xz
custodia-0d94624968e00cfc9b85a90ffe3f3032fa510538.zip
Better error handling for enclite store
The store as throwing an exception in case of an unesisting key. Now it returns None as expected on missing keys, and properly wraps encoding exceptions if the JWE can't be decoded. Signed-off-by: Simo Sorce <simo@redhat.com> Reviewed-by: Christian Heimes <cheimes@redhat.com>
-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}))