PyHPKE is a HPKE (Hybrid Public Key Encryption) implementation written in Python.
You can install PyHPKE with pip:
$ pip install pyhpke
And then, you can use it as follows:
>>> from pyhpke import CipherSuite, KEMKey, KEMId, KDFId, AEADId
>>> public_key_pem = b"-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VuAyEAoMfvlI5DN08JRFP2fhWvZ6vBEl28yFeS9O9YQUjNyCY=\n-----END PUBLIC KEY-----"
>>> pkr = KEMKey.from_pem(public_key_pem)
>>> suite = CipherSuite.new(
... KEMId.DHKEM_X25519_HKDF_SHA256, KDFId.HKDF_SHA256, AEADId.AES128_GCM
... )
>>> enc, sender = suite.create_sender_context(pkr)
>>> ct = sender.seal(b"Hello world!")
>>>
>>> private_key_pem = b"-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VuBCIEIMAXvyHjAeXy9x4MXF6rwGbDKw7crgDriFTFXO+XsS1F\n-----END PRIVATE KEY-----"
>>> skr = KEMKey.from_pem(private_key_pem)
>>> recipient = suite.create_recipient_context(enc, skr)
>>> pt = recipient.open(ct)
>>> pt
b'Hello world!'
You can find other samples in PyHPKE README.
installation api changes