Example #1
0
File: gcm.py Project: hdknr/jose
    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))