I want to encrypt an JWE with ECDH-ES and A256CGM in python like described in RFC 7518. I think jwskate is the right library to use, but I'm not sure how to do it.
The header shall look like this:
"alg": "ECDH-ES",
"enc": "A256GCM",
"exp": "1618244172",
"cty": "NJWT",
"epk": {
"kty": "EC",
"x": "LgkJSQwrz1bCoFjSLhay9O7TLaQImYW7jeOF6XmpQX4",
"y": "dTC6ri-f1QqpJp7M4LLg0lw4FzrzNc29nrrzjPwEWWc",
"crv": "BP-256"
The payload is a nestet jwt and looks like this:
"njwt":eyJ0eXAiOiJKV1QiLCJjdHkiOiAiTkpXVCIsIng1YyI6IFsiTUlJRkFEQ0NBK2lnQXdJQkFnSUhBaHR2NDlua2dUQU5CZ2txaGtpRzl3MEJBUXNGQURDQm1qRUxNQWtHQTFVRUJoTUNSRVV4SHpBZEJnTlZCQW9NRm1kbGJXRjBhV3NnUjIxaVNDQk9UMVF0VmtGTVNVUXhTREJHQmdOVkJBc01QMGx1YzNScGRIVjBhVzl1SUdSbGN5QkhaWE4xYm1Sb1pXbDBjM2RsYzJWdW......
I have found this example for a function to encrypt with jwskate.
from jwskate import JweCompact, Jwk
plaintext = b"this is an example plaintext"
# I'll use this specific Elliptic Curve private key:
key = Jwk(
{'kid': '8-nLgBsa-vXI_geoGt061_ZiVZ8BB-hYBDSoOQj9QgI',
'alg': 'ECDH-ES+A256KW',
'crv': 'P-256',
'd': '39QMopTVL1u267FOx4ayvsueDU317vHaq_z-PU_NioA',
'kty': 'EC',
'x': 'f_VRZlIk1Qd2eNGFVas9sNXx9wd43L8VymknAyP5Ntk',
'y': 'NmsfCs5VVOk6FEE31aaN9jB8rlfz1MWolBC3af_8DGs'}
)
# alternatively, you can generate one like this:
random_key = Jwk.generate_for_alg("ECDH-ES+A256KW").with_kid_thumbprint()
# sign your JWE
jwe = JweCompact.encrypt(plaintext, jwk=key.public_jwk(), enc="A128CBC-HS256")
print(jwe)
# it will look like:
# eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsIngiOiItVnNfYkdSNTdUUVY4MHNnUENwcWZhVjNmWXR4dWdTWmJRM1FLeTJEVDdNIiwieSI6IjBtc0pZSUFfMC1OY2lfM0plOWZLSml3RU1ZdGRBaE9kZDZhdkp5THd0dzQifSwiYWxnIjoiRUNESC1FUytBMjU2S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2Iiwia2lkIjoiOC1uTGdCc2EtdlhJX2dlb0d0MDYxX1ppVlo4QkItaFlCRFNvT1FqOVFnSSJ9.nnOEhmdonA19LRvyKSrL7f8aEb2vVwE7EU-zO91fyTUls4otMVppYg.h8h7Mxz4irvckPnknsnM0g.sRQJJq-RmiF7GeqvL8EpWTstS-daLbfgGnOPybWeOj8.z3heCfTiI0cjw8GaV0qcHw
I think it's not the entire thing to do because it's so short and can't pass my header. Can anybody help me?
Thanks in advance Nicole