# Changelog Entries are listed in reverse chronological order. ## Unreleased ## 0.8.0 ## Released ## 0.7.0 * Challenge hashing during DKG computation was changed to match the paper. This means that code running this version won't interoperate with code running previous versions. * A new `min_signers` field was added to `KeyPackage`, which changes its `new()` method and its serde serialization. * `reconstruct()` was changed to take a slice of `KeyPackage`s instead of `SecretShare`s since users are expect to store the former and not the latter. * New `serialize()`/`deserialize()` methods were added so that a default byte-oriented serialization is available for all structs that need to be communicated. It is still possible to use serde with you own encoder. Note that the format will likely change in the next release. * Audit findings were addressed. ## 0.6.0 * The following structs had a `Identifier` field removed, which affects how they are encoded and instantiated: * `dkg::round1::Package` * `dkg::round2::Package` * `SigningCommitments` * `SignatureShare` * The following functions and methods changed parameters from `Vec` to `HashMap` so that callers need to indicate the identifier of the source of each value being passed: * `aggregate()` * `dkg::part2()` * `dkg::part3()` * `SigningPackage::new()` * `commit()` and `preprocess()` no longer take an identifier as input * `SignatureResponse` was removed. `SignatureShare` can now be encoded directly with `from/to_bytes()`. * rename all `to_bytes()`/`from_bytes()` to `serialize()`/`deserialize()` * The group public key is now included in the hash inside the binding factor computation. This reflects an upcoming change to the specification: https://github.com/cfrg/draft-irtf-cfrg-frost/pull/439 * `generate_with_dealer()` was change to allow specifying which identifiers to use * Identifiers can now be derived from arbitrary strings with `Identifier::derive()` * Added `RandomizerParams::from_randomizer()` to allow specifying a randomizer * Added `Error::culprit()` to easily get the identifier of a misbehaving participant * Most public types now implement common traits such as Clone and Debug ## 0.5.0 * expose SigningShare, VerifyingShare, NonceCommitment and SignatureResponse in ciphersuite libraries * most structs now have a private field which mean that they can no longer be instantiated directly. `new()` methods have been added to them. * change `SigningPackage::new()` to take `&[u8]P instead of `Vec` * add `serde` support under `serde` feature to allow encoding structs which need to be communicated between participants. * expand docs to show the overall structure and contents ## 0.4.0 * add serialize and deserialize functions for VerifiableSecretSharingCommitment * add value, serialize and deserialize functions for CoefficientCommitment ## 0.3.0 * add multiscalar support to speed up signing and aggregating * change errors caused by protocol violations to contain the misbehaving party * add frost::keys::split() * rename reconstruct_secret() to reconstruct(), make it takes a slice instead of a Vector, make it return SigningKey, fix it to return Error instead of an error string * rename keygen_with_dealer() to generate_with_dealer() * change SigningKey::new() to take a reference instead of a value ## 0.2.0 * Implement Zeroize where needed or skip where not needed (fixes compiling error) (#301) * Change keygen_with_dealer() to return a HashMap (#288) * Re-export the frost-core traits and rand-core as part of top-level impls API (#297) ## 0.1.0 * Initial release.