# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).


## [0.14.0-pre.2] — 2026-02-25

### Changes

* Renamed every function that took an RNG to `*_with_rng`, and removed the `rng` parameter from the function with the original name (gated by `getrandom`)
* Feature-gated AES-GCM and ChaCha20Poly1305 behind `aes` and `chacha` features, respectively
* Added zeroizing for more intermediate secrets, and improved no-std support

### Additions

* Implemented the X-Wing (aka MLKEM768-X25519) hybrid post-quantum KEM, gated by the `xwing` feature
* Added `streaming_enc` module for creating streaming encryption contexts, gated by the `hazmat-streaming-enc` feature

## [0.14.0-pre.1] — 2025-11-24

### Changes

* Updated RustCrypto crates `aead`, `aes-gcm`, `chacha20poly1305`, `digest`, `hkdf`, `hmac`
* Updated `rand` and `rand_core`
* Replaced `generic-array` with `hybrid-array`
* Switched all `_in_place` algorithms to `_inout`, and replace `&mut [u8]` with `inout::InOut<'_, '_, u8>`
* Bumped MSRV to 1.85.0 (2025-02-20)

## [0.13.0] - 2025-02-19

### Changes

* Made `PskBundle` require an explicit constructor that performs validation on inputs
* Updated `rand` and `rand_core` to 0.9

## [0.12.0] - 2024-07-03

### Additions

* Added `Serializable::write_exact` so serialization requires less stack space
* Added support for the P-521 curve

### Changes

* Constrained `Aead::AeadImpl` to be `Send + Sync`
* Bumped `subtle` dependency and removed `byteorder` dependency

### Removals

* Removed all impls of `serde::{Serialize, Deserialize}` from crate. See [wiki](https://github.com/rozbb/rust-hpke/wiki/Migrating-away-from-the-serde_impls-feature) for migration instructions.

## [0.11.0] - 2023-10-11

### Removals

* Removed the redundant re-export of the first encapsulated key type as `kem::EncappedKey`

### Changes

* Updated `x25519-dalek` to 2.0
* Updated `subtle` to 2.5

## [0.10.0] - 2022-10-01

### Additions
* Added `alloc` feature and feature-gated the `open()` and `seal()` methods behind it

### Changes
* Bumped MSRV from 1.56.1 (`59eed8a2a` 2021-11-01) to 1.57.0 (`f1edd0429` 2021-11-29)
* Updated dependencies and weakened `zeroize` dependency from `>=1.3` to just `^1`
* Improved documentation for the AEAD `export()` method and the KDF `labeled_expand()` method

## [0.9.0] - 2022-05-04

### Additions
* Refactored some internals so end users can theoretically define their own KEMs. See PR [#27](https://github.com/rozbb/rust-hpke/pull/27).

### Changes
* Bumped MSRV from 1.51.0 (`2fd73fabe` 2021-03-23) to 1.56.1 (`59eed8a2a` 2021-11-01)
* Updated dependencies
