The jwe Module implements the JSON Web Encryption standard. A JSON Web Encryption is represented by a JWE object, related utility classes and functions are available in this module too.
jwcrypto.jwe.JWE
jwcrypto.jwe.default_allowed_algs
jwcrypto.jwe.InvalidJWEOperation
jwcrypto.jwe.InvalidJWEData
jwcrypto.jwe.InvalidJWEKeyType
jwcrypto.jwe.InvalidJWEKeyLength
jwcrypto.jwe.InvalidCEKeyLength
jwcrypto.jwe.JWEHeaderRegistry
- Encrypt a JWE token::
>>> from jwcrypto import jwk, jwe >>> from jwcrypto.common import json_encode >>> key = jwk.JWK.generate(kty='oct', size=256) >>> payload = "My Encrypted message" >>> jwetoken = jwe.JWE(payload.encode('utf-8'), json_encode({"alg": "A256KW", "enc": "A256CBC-HS512"})) >>> jwetoken.add_recipient(key) >>> enc = jwetoken.serialize()
- Decrypt a JWE token::
>>> jwetoken = jwe.JWE() >>> jwetoken.deserialize(enc) >>> jwetoken.decrypt(key) >>> payload = jwetoken.payload
- Encrypt a JWE token::
>>> from jwcrypto import jwk, jwe >>> from jwcrypto.common import json_encode, json_decode >>> public_key = jwk.JWK() >>> private_key = jwk.JWK.generate(kty='RSA', size=2048) >>> public_key.import_key(**json_decode(private_key.export_public())) >>> payload = "My Encrypted message" >>> protected_header = { "alg": "RSA-OAEP-256", "enc": "A256CBC-HS512", "typ": "JWE", "kid": public_key.thumbprint(), } >>> jwetoken = jwe.JWE(payload.encode('utf-8'), recipient=public_key, protected=protected_header) >>> enc = jwetoken.serialize()
- Decrypt a JWE token::
>>> jwetoken = jwe.JWE() >>> jwetoken.deserialize(enc, key=private_key) >>> payload = jwetoken.payload