Skip to content

Commit 978df14

Browse files
authoredNov 16, 2024··
Merge pull request #170 from vernans/fix-missing-apu-apv
Fix missing apu/apv #159
2 parents 776aef5 + 65d16fb commit 978df14

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed
 

‎src/cryptojwt/jwe/jwe_ec.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def dec_setup(self, token, key=None, **kwargs):
138138
raise Exception("Ephemeral Public Key Missing in ECDH-ES Computation")
139139

140140
epubkey = ECKey(**self.headers["epk"])
141-
apu = apv = ""
141+
apu = apv = b""
142142
if "apu" in self.headers:
143143
apu = b64d(self.headers["apu"].encode())
144144
if "apv" in self.headers:

‎tests/test_07_jwe.py

+26
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,32 @@ def test_ecdh_encrypt_decrypt_direct_key():
443443
assert msg == plain
444444

445445

446+
def test_ecdh_encrypt_decrypt_direct_key_wo_apu_apv():
447+
# Alice starts of
448+
jwenc = JWE_EC(plain, alg="ECDH-ES", enc="A128GCM")
449+
450+
# Don't supply agreement party information.
451+
cek, encrypted_key, iv, params, ret_epk = jwenc.enc_setup(plain, key=eck_bob, apu=b"", apv=b"")
452+
# Assert they are not randomized
453+
assert params["apv"] == b""
454+
assert params["apu"] == b""
455+
456+
# Delete agreement party information
457+
del params["apv"]
458+
del params["apu"]
459+
460+
kwargs = {"params": params, "cek": cek, "iv": iv, "encrypted_key": encrypted_key}
461+
jwt = jwenc.encrypt(**kwargs)
462+
463+
# Bob decrypts
464+
ret_jwe = factory(jwt, alg="ECDH-ES", enc="A128GCM")
465+
jwdec = JWE_EC()
466+
jwdec.dec_setup(ret_jwe.jwt, key=bob)
467+
msg = jwdec.decrypt(ret_jwe.jwt)
468+
469+
assert msg == plain
470+
471+
446472
def test_ecdh_encrypt_decrypt_keywrapped_key():
447473
jwenc = JWE_EC(plain, alg="ECDH-ES+A128KW", enc="A128GCM")
448474
cek, encrypted_key, iv, params, ret_epk = jwenc.enc_setup(plain, key=eck_bob)

0 commit comments

Comments
 (0)
Please sign in to comment.