_enc = GCMA192 class GCMA256KW(GcmKeyEncryptor): _enc = GCMA192 if __name__ == '__main__': from jose.jwa.encs import KeyEncEnum, EncEnum encs = ['A128GCM', 'A192GCM', 'A256GCM'] algs = ['A128GCMKW', 'A192GCMKW', 'A256GCMKW'] 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),
def from_json(cls, json_str, base=None): obj = BaseObject.from_json(json_str, cls) obj.enc = EncEnum.create(obj.enc) obj.zip = ZipEnum.create(obj.zip) return obj