2020-06-05 09:35:14 -07:00
|
|
|
# Changelog
|
|
|
|
|
|
2026-03-26 17:17:13 -07:00
|
|
|
## 4.1.0-pre.2 (March 26, 2026)
|
|
|
|
|
* Upgraded ml-kem from 0.2 to 0.3.0-rc.0
|
|
|
|
|
* Increased MSRV to 1.87
|
|
|
|
|
|
2025-11-18 10:28:27 -08:00
|
|
|
## 4.1.0-pre.1 (November 17, 2025)
|
|
|
|
|
* Added ml-kem re-export behind the kem feature
|
|
|
|
|
|
2025-11-12 13:49:39 -08:00
|
|
|
## 4.1.0-pre.0 (November 11, 2025)
|
|
|
|
|
* Fixed dependency exporting for the rand crate
|
|
|
|
|
* Added TripleDhKem key exchange protocol
|
|
|
|
|
|
2025-10-30 17:09:53 -07:00
|
|
|
## 4.0.1 (October 30, 2025)
|
|
|
|
|
* Fixing docs building issue
|
|
|
|
|
|
2025-10-23 16:28:30 -07:00
|
|
|
## 4.0.0 (October 23, 2025)
|
2025-09-08 11:27:47 -07:00
|
|
|
* Increased MSRV to 1.83
|
|
|
|
|
* Synced implementation with RFC 9807 (no core protocol changes)
|
|
|
|
|
* Added a SIGMA-I key exchange implementation
|
|
|
|
|
* Removed KeGroup type from the Ciphersuite trait (now part of KeyExchange type)
|
|
|
|
|
* **Breaking: existing Ciphersuite trait definitions need to be updated**
|
|
|
|
|
* Ensured that dummy record is always created to avoid timing attack issues
|
|
|
|
|
* Modified the dummy registration file to only contain the public key
|
|
|
|
|
instead of the keypair
|
|
|
|
|
* **Breaking: existing `ServerSetup`s need to be updated**
|
2025-09-09 09:25:04 +02:00
|
|
|
```rust
|
|
|
|
|
// Given `old` is a `ServerSetup` from `opaque-ke` v3.
|
|
|
|
|
let old_serialized = old.serialize();
|
|
|
|
|
|
|
|
|
|
type OldSeedLen = <<<OldCipherSuite as opaque_ke_3::CipherSuite>::OprfCs as voprf::CipherSuite>::Hash as OutputSizeUser>::OutputSize;
|
|
|
|
|
type OldSkLen = <<OldCipherSuite as opaque_ke_3::CipherSuite>::KeGroup as opaque_ke_3::key_exchange::group::KeGroup>::SkLen;
|
|
|
|
|
|
|
|
|
|
let (old_serialied_rest, old_fake_keypair_serialized): (
|
|
|
|
|
GenericArray<u8, Sum<OldSeedLen, OldSkLen>>,
|
|
|
|
|
_,
|
|
|
|
|
) = old_serialized.split();
|
|
|
|
|
|
|
|
|
|
let old_fake_keypair =
|
|
|
|
|
KeyPair::<<OldCipherSuite as opaque_ke_3::CipherSuite>::KeGroup>::from_private_key_slice(
|
|
|
|
|
&old_fake_keypair_serialized,
|
|
|
|
|
)
|
|
|
|
|
.unwrap();
|
|
|
|
|
let old_fake_pk_serialized = old_fake_keypair.public().serialize();
|
|
|
|
|
|
|
|
|
|
let new_serialized = old_serialied_rest.concat(old_fake_pk_serialized);
|
|
|
|
|
// Given `NewCipherSuite` is a `CipherSuite` implementation equivalent to `OldCipherSuite`.
|
|
|
|
|
ServerSetup::<NewCipherSuite>::deserialize(&new_serialized).unwrap()
|
|
|
|
|
```
|
2025-09-08 11:27:47 -07:00
|
|
|
* Added remote OPRF seed support
|
|
|
|
|
* Replace remote private key trait with a state machine, facilitating async support.
|
|
|
|
|
* Serde de/serialization formats have been simplified
|
2025-09-09 09:25:04 +02:00
|
|
|
* **Breaking: existing `ServerRegistration`s may need to be updated**
|
|
|
|
|
```rust
|
|
|
|
|
// Given `old` is a `ServerRegistration` from `opaque-ke` v3.
|
|
|
|
|
let old_serialized = old.serialize();
|
|
|
|
|
// Given `NewCipherSuite` is a `CipherSuite` implementation equivalent to the old cipher suite.
|
|
|
|
|
ServerRegistration::<NewCipherSuite>::deserialize(&old_serialized).unwrap()
|
|
|
|
|
```
|
2025-09-08 11:27:47 -07:00
|
|
|
|
|
|
|
|
|
2024-10-09 22:13:13 -07:00
|
|
|
## 3.0.0 (October 10, 2024)
|
2024-09-24 06:28:40 +02:00
|
|
|
* Synced implementation with draft-irtf-cfrg-opaque-16
|
|
|
|
|
* **Breaking: protocol context string changed from `RFCXXXX` to `OPAQUEv1-`**
|
|
|
|
|
* Dropped unmaintained json crate in favor of serde_json
|
|
|
|
|
* Updated dependencies
|
2024-09-18 14:58:35 -07:00
|
|
|
* Increased MSRV to 1.74
|
2023-06-08 01:39:28 -07:00
|
|
|
* Adjusted curve25519 support logic
|
|
|
|
|
* Adjusted key generation logic to be in line with commit 727b9ac of
|
|
|
|
|
https://github.com/cfrg/draft-irtf-cfrg-opaque
|
2023-03-14 19:07:10 -07:00
|
|
|
* Updated VOPRF to draft 19
|
2024-09-24 06:28:40 +02:00
|
|
|
* **Breaking: backwards-incompatible changes introduced in OPRF protocol**
|
2023-03-14 19:07:10 -07:00
|
|
|
* Added P384 testing support
|
2023-02-08 17:46:28 -08:00
|
|
|
* Renaming of X25519 to Curve25519
|
|
|
|
|
|
2022-09-21 20:31:31 -07:00
|
|
|
## 2.0.0 (September 21, 2022)
|
2022-07-11 19:17:29 -04:00
|
|
|
* Synced implementation with draft-irtf-cfrg-opaque-10
|
|
|
|
|
* Changed argon2 salt length to recommended value (16 bytes)
|
|
|
|
|
* Fixed issue from 2.0.0-pre.2 not pinning voprf dependency correctly
|
2022-03-15 19:51:40 -07:00
|
|
|
* Split out VOPRF implementation into its own crate
|
|
|
|
|
* Added support for running the API without performing
|
|
|
|
|
allocations
|
|
|
|
|
* Revamped the way the Group trait was used, so as to be more
|
|
|
|
|
easily extendable to other groups
|
|
|
|
|
* Added support for p256 as the group and x25519 as the key exchange group
|
|
|
|
|
* Added common traits for each public-facing struct, including serde support
|
|
|
|
|
|
|
|
|
|
## 1.2.0 (October 7, 2021)
|
|
|
|
|
|
|
|
|
|
* Added explicit support for the thumbv6m-none-eabi target (no-std)
|
|
|
|
|
|
|
|
|
|
## 1.1.0 (August 18, 2021)
|
|
|
|
|
|
|
|
|
|
* Updated dependencies and bumped MSRV to 1.51
|
|
|
|
|
* Added no_std support
|
|
|
|
|
|
|
|
|
|
## 1.0.0 (July 19, 2021)
|
|
|
|
|
|
|
|
|
|
* Branched from v0.5.0
|
|
|
|
|
* Various security improvements: non-zero scalars, zeroizing on drop,
|
|
|
|
|
constant-time operations, reflected value check, and adding an
|
|
|
|
|
i2osp error condition
|
|
|
|
|
|
2021-06-30 12:14:38 -07:00
|
|
|
## 0.6.0 (June 30, 2021)
|
|
|
|
|
|
|
|
|
|
* Synced implementation with draft-irtf-cfrg-opaque-05, which changes
|
|
|
|
|
the envelope structure and introduces a ServerSetup object to be
|
|
|
|
|
maintained by the server
|
|
|
|
|
* Various security improvements: non-zero scalars, zeroizing on drop,
|
|
|
|
|
constant-time operations
|
|
|
|
|
* Adding serde support behind a feature
|
|
|
|
|
* Supporting common traits (eb59676)
|
|
|
|
|
* Swapping out scrypt for argon2 (535b9b8) for the slow-hash feature
|
|
|
|
|
* Adding support for common traits on public structs
|
|
|
|
|
* Updated dependencies
|
|
|
|
|
|
2021-07-16 00:41:16 -07:00
|
|
|
## 0.5.1 (July 16, 2021)
|
|
|
|
|
|
|
|
|
|
* Various security improvements: non-zero scalars, zeroizing on drop,
|
|
|
|
|
constant-time operations, reflected value check, and adding an
|
|
|
|
|
i2osp error condition
|
|
|
|
|
|
2021-03-02 00:39:53 -08:00
|
|
|
## 0.5.0 (March 1, 2021)
|
2021-03-01 19:23:09 -08:00
|
|
|
|
|
|
|
|
* Removed dependency on generic-bytes-derive package
|
|
|
|
|
|
2021-03-02 00:39:53 -08:00
|
|
|
## 0.4.0 (February 26, 2021)
|
2021-02-26 15:18:10 -08:00
|
|
|
|
|
|
|
|
* Adherence to protocol format described in
|
|
|
|
|
https://tools.ietf.org/html/draft-irtf-cfrg-opaque-03
|
|
|
|
|
* Renamed to_bytes() and try_from() to serialize() and deserialize() for
|
|
|
|
|
top-level structs
|
|
|
|
|
* Conformed all message type parameters to be parameterized in the
|
|
|
|
|
Ciphersuite object
|
|
|
|
|
|
2021-03-02 00:39:53 -08:00
|
|
|
## 0.3.1 (February 11, 2021)
|
2021-02-11 18:20:11 -08:00
|
|
|
|
|
|
|
|
* Re-exporting the rand library (and including it as a dependency instead of
|
|
|
|
|
just rand_core)
|
|
|
|
|
* Exposing a convenience function for converting from byte array to Key type
|
|
|
|
|
|
2021-03-02 00:39:53 -08:00
|
|
|
## 0.3.0 (February 8, 2021)
|
2021-02-08 12:52:46 -08:00
|
|
|
|
|
|
|
|
* General API and documentation improvements, including the support of custom
|
|
|
|
|
identifiers, optional result parameters, and the use of the export key
|
|
|
|
|
* Compliance with RFC 8017 on data serialization functions (I2OSP / OS2IP)
|
|
|
|
|
* Adherence to protocol format described in
|
|
|
|
|
https://tools.ietf.org/html/draft-irtf-cfrg-opaque-02
|
|
|
|
|
* Added parameters for key exchange additional data
|
|
|
|
|
* Added simple_login and digital_locker examples
|
|
|
|
|
|
2020-10-22 10:23:25 -07:00
|
|
|
## 0.2.1 (October 22, 2020)
|
|
|
|
|
|
|
|
|
|
* Changed visibility of hash module to be public
|
|
|
|
|
|
2020-09-03 13:21:27 -07:00
|
|
|
## 0.2.0 (September 3, 2020)
|
|
|
|
|
|
|
|
|
|
* Added CipherSuite API for specifying underlying primitives
|
|
|
|
|
* Added support for specifying a slow password hashing function
|
|
|
|
|
* Collapsed SignalKeyPair to X25519KeyPair
|
|
|
|
|
* Updated the envelope implementation to match the suggested XOR-based
|
|
|
|
|
construction in https://tools.ietf.org/html/draft-krawczyk-cfrg-opaque-06
|
|
|
|
|
* Included randomized tests for testing try_from crashes
|
|
|
|
|
* Implemented Elligator2 map instead of try-and-increment for hash-to-curve
|
|
|
|
|
* Added extensibility for supporting different key exchange protocols
|
|
|
|
|
* Added benchmarks for the OPRF & switchable dalek backend depending on platform
|
|
|
|
|
|
2020-06-05 09:35:14 -07:00
|
|
|
## 0.1.0 (June 5, 2020)
|
|
|
|
|
|
|
|
|
|
* Initial release
|