diff --git a/README.md b/README.md index a1c35cb8..0101e837 100644 --- a/README.md +++ b/README.md @@ -40,9 +40,33 @@ Refer to the [ZF FROST book](https://frost.zfnd.org/). ## Status ⚠ The FROST specification is not yet finalized, though no significant changes are -expected at this point. This code base has been audited by NCC. The APIs and -types in `frost-core` are subject to change during the release candidate phase, -and will follow SemVer guarantees after 1.0.0. +expected at this point. This code base has been partially audited by NCC, see +below for details. The APIs and types in the crates contained in this repository +follow SemVer guarantees. + +### NCC Audit + +NCC performed [an +audit](https://research.nccgroup.com/2023/10/23/public-report-zcash-frost-security-assessment/) +of the v0.6.0 release (corresponding to commit 5fa17ed) of the following crates: + +- frost-core +- frost-ed25519 +- frost-ed448 +- frost-p256 +- frost-secp256k1 +- frost-ristretto255 + +This includes key generation (both trusted dealer and DKG) and FROST signing. +This does not include rerandomized FROST. + +The parts of the +[`Ed448-Goldilocks`](https://github.com/crate-crypto/Ed448-Goldilocks) +dependency that are used by `frost-ed448` were also in scope, namely the +elliptic curve operations. + +All issues identified in the audit were addressed by us and reviewed by NCC. + ## Usage diff --git a/book/src/tutorial/importing.md b/book/src/tutorial/importing.md index 1988bbed..7fd3c563 100644 --- a/book/src/tutorial/importing.md +++ b/book/src/tutorial/importing.md @@ -6,7 +6,7 @@ Add to your `Cargo.toml` file: ``` [dependencies] -frost-ristretto255 = "1.0.0-rc.0" +frost-ristretto255 = "1.0.0" ``` ## Handling errors diff --git a/frost-core/CHANGELOG.md b/frost-core/CHANGELOG.md index ebff51b8..4821c475 100644 --- a/frost-core/CHANGELOG.md +++ b/frost-core/CHANGELOG.md @@ -4,10 +4,18 @@ Entries are listed in reverse chronological order. ## Unreleased +## Released + +## 1.0.0 + * Exposed the `SigningKey::from_scalar()` and `to_scalar()` methods. This helps interoperability with other implementations. - -## Released +* Exposed the `SigningNonces::from_nonces()` method to allow it to be + deserialized. +* Fixed bug that prevented deserialization with in some cases (e.g. JSON + containing escape codes). +* Added `new()` methods for `VerifirableSecretSharingCommitment` and + `CoefficientCommitment`. ## 1.0.0-rc.0 diff --git a/frost-core/Cargo.toml b/frost-core/Cargo.toml index 7b1d248d..0dcaa8b6 100644 --- a/frost-core/Cargo.toml +++ b/frost-core/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" # When releasing to crates.io: # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = [ "Deirdre Connolly ", "Chelsea Komlo ", diff --git a/frost-ed25519/Cargo.toml b/frost-ed25519/Cargo.toml index 24e2cfb0..4bd685af 100644 --- a/frost-ed25519/Cargo.toml +++ b/frost-ed25519/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" # - Update html_root_url # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = [ "Deirdre Connolly ", "Chelsea Komlo ", @@ -25,15 +25,15 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] curve25519-dalek = { version = "=4.1.2", features = ["rand_core"] } document-features = "0.2.7" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0" } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0" } +frost-core = { path = "../frost-core", version = "1.0.0" } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0" } rand_core = "0.6" sha2 = "0.10.2" [dev-dependencies] criterion = "0.5" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["test-impl"] } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0", features = ["test-impl"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["test-impl"] } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0", features = ["test-impl"] } ed25519-dalek = "2.0.0" insta = { version = "1.31.0", features = ["yaml"] } hex = "0.4.3" diff --git a/frost-ed448/Cargo.toml b/frost-ed448/Cargo.toml index 6463229b..dcae381d 100644 --- a/frost-ed448/Cargo.toml +++ b/frost-ed448/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" # When releasing to crates.io: # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = [ "Deirdre Connolly ", "Chelsea Komlo ", @@ -24,15 +24,15 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] document-features = "0.2.7" ed448-goldilocks = { version = "0.9.0" } -frost-core = { path = "../frost-core", version = "1.0.0-rc.0" } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0" } +frost-core = { path = "../frost-core", version = "1.0.0" } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0" } rand_core = "0.6" sha3 = "0.10.6" [dev-dependencies] criterion = "0.5" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["test-impl"] } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0", features = ["test-impl"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["test-impl"] } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0", features = ["test-impl"] } lazy_static = "1.4" insta = { version = "1.31.0", features = ["yaml"] } hex = "0.4.3" diff --git a/frost-p256/Cargo.toml b/frost-p256/Cargo.toml index 276ca65d..f0dd0786 100644 --- a/frost-p256/Cargo.toml +++ b/frost-p256/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" # - Update html_root_url # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = [ "Deirdre Connolly ", "Chelsea Komlo ", @@ -25,15 +25,15 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] document-features = "0.2.7" p256 = { version = "0.13.0", features = ["hash2curve"] } -frost-core = { path = "../frost-core", version = "1.0.0-rc.0" } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0" } +frost-core = { path = "../frost-core", version = "1.0.0" } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0" } rand_core = "0.6" sha2 = "0.10.2" [dev-dependencies] criterion = "0.5" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["test-impl"] } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0", features = ["test-impl"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["test-impl"] } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0", features = ["test-impl"] } insta = { version = "1.31.0", features = ["yaml"] } hex = "0.4.3" lazy_static = "1.4" diff --git a/frost-rerandomized/Cargo.toml b/frost-rerandomized/Cargo.toml index 32684ea5..71c37335 100644 --- a/frost-rerandomized/Cargo.toml +++ b/frost-rerandomized/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" # - Update html_root_url # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = ["Deirdre Connolly ", "Chelsea Komlo ", "Conrado Gouvea "] readme = "README.md" @@ -22,7 +22,7 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] derive-getters = "0.3.0" document-features = "0.2.7" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["internals"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["internals"] } rand_core = "0.6" [dev-dependencies] diff --git a/frost-ristretto255/Cargo.toml b/frost-ristretto255/Cargo.toml index 16b90359..a886f8e8 100644 --- a/frost-ristretto255/Cargo.toml +++ b/frost-ristretto255/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" # - Update html_root_url # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = ["Deirdre Connolly ", "Chelsea Komlo ", "Conrado Gouvea "] readme = "README.md" license = "MIT OR Apache-2.0" @@ -21,15 +21,15 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] curve25519-dalek = { version = "=4.1.2", features = ["serde", "rand_core"] } document-features = "0.2.7" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0" } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0" } +frost-core = { path = "../frost-core", version = "1.0.0" } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0" } rand_core = "0.6" sha2 = "0.10.2" [dev-dependencies] criterion = { version = "0.5", features = ["html_reports"] } -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["test-impl"] } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0", features = ["test-impl"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["test-impl"] } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0", features = ["test-impl"] } insta = { version = "1.31.0", features = ["yaml"] } hex = "0.4.3" lazy_static = "1.4" diff --git a/frost-secp256k1/Cargo.toml b/frost-secp256k1/Cargo.toml index bed22b35..30e726a3 100644 --- a/frost-secp256k1/Cargo.toml +++ b/frost-secp256k1/Cargo.toml @@ -4,7 +4,7 @@ edition = "2021" # When releasing to crates.io: # - Update CHANGELOG.md # - Create git tag. -version = "1.0.0-rc.0" +version = "1.0.0" authors = [ "Deirdre Connolly ", "Chelsea Komlo ", @@ -23,16 +23,16 @@ rustdoc-args = ["--cfg", "docsrs"] [dependencies] document-features = "0.2.7" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0" } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0" } +frost-core = { path = "../frost-core", version = "1.0.0" } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0" } k256 = { version = "0.13.0", features = ["arithmetic", "expose-field", "hash2curve"] } rand_core = "0.6" sha2 = "0.10.2" [dev-dependencies] criterion = "0.5" -frost-core = { path = "../frost-core", version = "1.0.0-rc.0", features = ["test-impl"] } -frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0-rc.0", features = ["test-impl"] } +frost-core = { path = "../frost-core", version = "1.0.0", features = ["test-impl"] } +frost-rerandomized = { path = "../frost-rerandomized", version = "1.0.0", features = ["test-impl"] } insta = { version = "1.31.0", features = ["yaml"] } hex = "0.4.3" lazy_static = "1.4"