Welcome to PyHPKE

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.

Index