Skip to content

Commit b077247

Browse files
author
Roland Hedberg
committed
Added more logging
1 parent 2665555 commit b077247

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/jwkest/jwe.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class DecryptionFailed(JWEException):
7777
class WrongEncryptionAlgorithm(JWEException):
7878
pass
7979

80+
8081
# ---------------------------------------------------------------------------
8182
# Base class
8283

@@ -106,7 +107,6 @@ def decrypt(self, msg, key):
106107

107108

108109
class RSAEncrypter(Encrypter):
109-
110110
def encrypt(self, msg, key, padding="pkcs1_padding"):
111111
if padding == "pkcs1_padding":
112112
cipher = PKCS1_v1_5.new(key)
@@ -126,7 +126,7 @@ def decrypt(self, ciphertext, key, padding="pkcs1_padding"):
126126
dsize = SHA.digest_size
127127
else:
128128
dsize = 0
129-
sentinel = Random.new().read(32+dsize)
129+
sentinel = Random.new().read(32 + dsize)
130130
text = cipher.decrypt(ciphertext, sentinel)
131131
if dsize:
132132
_digest = text[-dsize:]
@@ -147,6 +147,7 @@ def decrypt(self, ciphertext, key, padding="pkcs1_padding"):
147147

148148
return text
149149

150+
150151
# ---------------------------------------------------------------------------
151152

152153

@@ -215,14 +216,15 @@ def keysize(spec):
215216
return int(spec[1:4])
216217
return 0
217218

219+
218220
ENC2ALG = {"A128CBC": "aes_128_cbc", "A192CBC": "aes_192_cbc",
219221
"A256CBC": "aes_256_cbc"}
220222

221223
SUPPORTED = {
222224
"alg": ["RSA1_5", "RSA-OAEP", "A128KW", "A192KW", "A256KW",
223225
"ECDH-ES", "ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"],
224226
"enc": ["A128CBC-HS256", "A192CBC-HS384", "A256CBC-HS512",
225-
#"A128GCM", "A192GCM",
227+
# "A128GCM", "A192GCM",
226228
"A256GCM"],
227229
}
228230

@@ -237,6 +239,7 @@ def alg2keytype(alg):
237239
else:
238240
return None
239241

242+
240243
# =============================================================================
241244

242245
ENCALGLEN1 = {
@@ -416,7 +419,8 @@ def encrypt(self, key, iv="", cek="", **kwargs):
416419

417420
_enc = self["enc"]
418421

419-
ctxt, tag, cek = self.enc_setup(_enc, _msg.encode(), jwe.b64_encode_header(),
422+
ctxt, tag, cek = self.enc_setup(_enc, _msg.encode(),
423+
jwe.b64_encode_header(),
420424
cek, iv=iv)
421425
return jwe.pack(parts=[jek, iv, ctxt, tag])
422426

@@ -513,9 +517,9 @@ def decrypt(self, token, key):
513517
except AssertionError:
514518
raise NotSupportedAlgorithm(enc)
515519

516-
msg, flag = self._decrypt(enc, cek, jwe.ciphertext(),
520+
msg, flag = self._decrypt(enc, cek, jwe.ciphertext(),
517521
jwe.b64_protected_header(),
518-
jwe.initialization_vector(),
522+
jwe.initialization_vector(),
519523
jwe.authentication_tag())
520524
if flag is False:
521525
raise DecryptionFailed()
@@ -550,16 +554,16 @@ def enc_setup(self, msg, auth_data, key=None, **kwargs):
550554
"apu": b64e(apu),
551555
"apv": b64e(apv),
552556
}
553-
557+
554558
cek, iv = self._generate_key_and_iv(self.enc)
555559
if self.alg == "ECDH-ES":
556560
try:
557561
dk_len = KEYLEN[self.enc]
558562
except KeyError:
559563
raise Exception(
560564
"Unknown key length for algorithm %s" % self.enc)
561-
562-
cek = ecdh_derive_key(curve, eprivk, key, apu, apv, self.enc,
565+
566+
cek = ecdh_derive_key(curve, eprivk, key, apu, apv, self.enc,
563567
dk_len)
564568
elif self.alg in ["ECDH-ES+A128KW", "ECDH-ES+A192KW", "ECDH-ES+A256KW"]:
565569
_pre, _post = self.alg.split("+")
@@ -623,6 +627,7 @@ def encrypt(self, keys=None, cek="", iv="", **kwargs):
623627
elif _alg.startswith("A") and _alg.endswith("KW"):
624628
encrypter = JWE_SYM(self.msg, **self._dict)
625629
else:
630+
logger.error("'{}' is not a supported algorithm".format(_alg))
626631
raise NotSupportedAlgorithm
627632

628633
if keys:
@@ -631,6 +636,9 @@ def encrypt(self, keys=None, cek="", iv="", **kwargs):
631636
keys = self._pick_keys(self._get_keys(), use="enc")
632637

633638
if not keys:
639+
logger.error(
640+
"Could not find any suitable encryption key for alg='{"
641+
"}'".format(_alg))
634642
raise NoSuitableEncryptionKey(_alg)
635643

636644
if cek:
@@ -650,20 +658,21 @@ def encrypt(self, keys=None, cek="", iv="", **kwargs):
650658
raise err
651659
else:
652660
logger.debug(
653-
"Encrypted message using key with kid=%s" % key.kid)
661+
"Encrypted message using key with kid={}".format(key.kid))
654662
return token
655663

664+
logger.error("Could not find any suitable encryption key")
656665
raise NoSuitableEncryptionKey()
657666

658667
def decrypt(self, token, keys=None, alg=None):
659668
jwe = JWEnc().unpack(token)
660-
#header, ek, eiv, ctxt, tag = token.split(b".")
661-
#self.parse_header(header)
669+
# header, ek, eiv, ctxt, tag = token.split(b".")
670+
# self.parse_header(header)
662671

663672
_alg = jwe.headers["alg"]
664673
if alg and alg != _alg:
665674
raise WrongEncryptionAlgorithm()
666-
675+
667676
if _alg in ["RSA-OAEP", "RSA1_5"]:
668677
decrypter = JWE_RSA(**self._dict)
669678
elif _alg.startswith("A") and _alg.endswith("KW"):

0 commit comments

Comments
 (0)