for e in encs: enc = EncEnum.create(e).encryptor cek, iv = enc.create_key_iv() assert len(cek) == enc._KEY_LEN assert len(iv) == enc._IV_LEN print(enc.__name__) print("CEK =", base64.urlsafe_b64encode(cek)) print("IV=", base64.urlsafe_b64encode(iv)) import itertools from jose.jwk import Jwk from jose.jwe import Jwe jwk = Jwk.generate(kty="oct") for a, e in list(itertools.product(algs, encs)): jwe = Jwe( alg=KeyEncEnum.create(a), enc=EncEnum.create(e), ) cek, iv, cek_ci, kek = jwe.provide_key(jwk) print("alg=", a, "enc=", e) print("CEK=", base64.base64url_encode(cek)) print("IV=", base64.base64url_encode(iv)) print("CEK_CI=", base64.base64url_encode(cek_ci)) print("Jwe.iv=", jwe.iv) print("Jwe.tag=", jwe.tag) cek2 = jwe.agree_key(jwk, cek_ci) print("CEK AGREED=", base64.base64url_encode(cek2))