hpke-dispatch 0.9.0

Runtime algorithm selection for hybrid public key encryption
Documentation
# Hybrid public key encryption with algorithms dispatched at runtime

This crate provides a generic-free interface to the [`hpke`][hpke]
crate, a Rust implementation of the [hybrid public key
encryption][hpke-datatracker]
scheme. If you know the specific (aead, kdf, kem) triple at compile
time, you should use the [`hpke`][hpke] crate directly.

Currently, this crate only exposes interfaces for the Base mode
described in the HPKE specification, and within base mode, only stateless
single-shot message encryption/decryption, as defined in
[Section 6, "Single-Shot APIs"][section-6].

The algorithms supported in this crate and their codepoints are as described in the [HPKE
specification][hpke-datatracker] and [draft-ietf-hpke-pq][hpke-pq].

[hpke]: https://github.com/rozbb/rust-hpke
[section-6]: https://www.ietf.org/archive/id/draft-ietf-hpke-hpke-04.html#section-6
[hpke-datatracker]: https://datatracker.ietf.org/doc/draft-ietf-hpke-hpke/
[hpke-pq]: https://datatracker.ietf.org/doc/draft-ietf-hpke-pq/

## Available cargo features:

`hpke-dispatch`'s cargo features are designed to align directly with those of [`hpke`][hpke]. See
that crate's documentation for discussion of how to selectively enable algorithms.

`hpke-dispatch` defines the following additional features:

* *algo-all*: enables all aead, kdf, and kem algorithms. Enabled by default.

* *aead-all*: Enables `aes` and `chacha` algorithm features. Enabled by default.

* *kdf-all*: Enables `hkdfsha2` and `shake` algorithm features. Enabled by default.

* *kem-all*: Enables `x25519`, `nistp` and `mlkem` algorithm features. Enabled by default.

* *serde*: Enables derived serde serialization and deserialization for all public structs and enums.
  Disabled by default.

## Example feature usage:

To depend on this crate with all algorithms, use default features.

To depend on this crate with only AES, NIST curves, SHA-2 and Serde enabled, use
`default-features = false, features = ["aes", "hkdfsha2", "nistp", "serde"]`.