From 98ddd58b480d0220a940dadb76f572838d70df4d Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 12 Dec 2023 18:24:13 +0000 Subject: [PATCH] Add a changelog Extracted from the `zcash_primitives` changelog. We only include changes relative to the `zcash_primitives::sapling` module as of 0.13.0; prior changes never corresponded to published `sapling-crypto` releases. Source: https://github.com/zcash/librustzcash Rev: zcash/librustzcash@6acc64e61cb67cbc216a36ab3a8c5d224e9af9a9 --- CHANGELOG.md | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..65d6660 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,167 @@ +# Changelog +All notable changes to this library will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this library adheres to Rust's notion of +[Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] +The entries below are relative to the `zcash_primitives::sapling` module as of +`zcash_primitives 0.13.0`. + +### Added +- `sapling_crypto::BatchValidator` (moved from `zcash_proofs::sapling`). +- `sapling_crypto::SaplingVerificationContext` (moved from + `zcash_proofs::sapling`). +- `sapling_crypto::builder` (moved from + `zcash_primitives::transaction::components::sapling::builder`). Additional + additions to this module: + - `UnauthorizedBundle` + - `InProgress` + - `{InProgressProofs, Unproven, Proven}` + - `{InProgressSignatures, Unsigned, PartiallyAuthorized}` + - `{MaybeSigned, SigningParts}` + - `SpendDescriptionInfo::value` + - `SaplingOutputInfo` + - `ProverProgress` +- `sapling_crypto::bundle` module: + - The following types moved from + `zcash_primitives::transaction::components::sapling`: + - `Bundle` + - `SpendDescription, SpendDescriptionV5` + - `OutputDescription, OutputDescriptionV5` + - `Authorization, Authorized, MapAuth` + - `GrothProofBytes` + - `Bundle::>::create_proofs` + - `Bundle::>::prepare` + - `Bundle::>::{sign, append_signatures}` + - `Bundle::>::finalize` + - `Bundle::>::apply_signatures` + - `Bundle::try_map_authorization` + - `TryMapAuth` + - `impl {MapAuth, TryMapAuth} for (FnMut, FnMut, FnMut, FnMut)` + helpers to enable calling `Bundle::{map_authorization, try_map_authorization}` + with a set of closures. + - `testing` module, containing the following functions moved from + `zcash_primitives::transaction::components::sapling::testing`: + - `arb_output_description` + - `arb_bundle` +- `sapling_crypto::circuit` module (moved from `zcash_proofs::circuit::sapling`). + Additional additions to this module: + - `{SpendParameters, OutputParameters}` + - `{SpendVerifyingKey, PreparedSpendVerifyingKey}` + - `{OutputVerifyingKey, PreparedOutputVerifyingKey}` +- `sapling_crypto::constants` module. +- `sapling_crypto::keys`: + - `SpendAuthorizingKey` + - `SpendValidatingKey` +- `sapling_crypto::note_encryption`: + - `CompactOutputDescription` (moved from + `zcash_primitives::transaction::components::sapling`). + - `SaplingDomain::new` + - `Zip212Enforcement` +- `sapling_crypto::prover::{SpendProver, OutputProver}` +- `sapling_crypto::tree::Node::{from_bytes, to_bytes}` +- `sapling_crypto::value`: + - `ValueCommitTrapdoor::from_bytes` + - `impl Sub for TrapdoorSum` + - `impl Sub for CommitmentSum` +- `sapling_crypto::zip32` module (moved from `zcash_primitives::zip32::sapling`). +- `impl Debug for sapling_crypto::keys::{ExpandedSpendingKey, ProofGenerationKey}` +- Test helpers, behind the `test-dependencies` feature flag: + - `sapling_crypto::prover::mock::{MockSpendProver, MockOutputProver}` + +### Changed +- `zcash_primitives::sapling`: + - `BatchValidator::validate` now takes the `SpendVerifyingKey` and + `OutputVerifyingKey` newtypes. + - `SaplingVerificationContext::new` now always creates a context with ZIP 216 + rules enforced, and no longer has a boolean for configuring this. + - `SaplingVerificationContext::{check_spend, final_check}` now use the + `redjubjub` crate types for `rk`, `spend_auth_sig`, and `binding_sig`. + - `SaplingVerificationContext::{check_spend, check_output}` now take + the `PreparedSpendVerifyingKey` and `PreparedOutputVerifyingKey` + newtypes. + - `SaplingVerificationContext::final_check` now takes its `value_balance` + argument as `V: Into` instead of `Amount`. +- `sapling_crypto::address::PaymentAddress::create_note` now takes its `value` + argument as a `NoteValue` instead of as a bare `u64`. +- `sapling_crypto::builder`: + - `SaplingBuilder` no longer has a `P: consensus::Parameters` type parameter. + - `SaplingBuilder::new` now takes a `Zip212Enforcement` argument instead of a + `P: consensus::Parameters` argument and a target height. + - `SaplingBuilder::add_spend` now takes `extsk` by reference. Also, it no + longer takes a `diversifier` argument as the diversifier may be obtained + from the note. + - `SaplingBuilder::add_output` now takes an `Option<[u8; 512]>` memo instead + of a `MemoBytes`. + - `SaplingBuilder::build` no longer takes a prover, proving context, progress + notifier, or target height. Instead, it has `SpendProver, OutputProver` + generic parameters and returns `(UnauthorizedBundle, SaplingMetadata)`. The + caller can then use `Bundle::>::create_proofs` to + create spend and output proofs for the bundle. + - `Error` has new error variants: + - `Error::DuplicateSignature` + - `Error::InvalidExternalSignature` + - `Error::MissingSignatures` +- `sapling_crypto::bundle`: + - `Bundle` now has a second generic parameter `V`. + - `Bundle::value_balance` now returns `&V` instead of `&Amount`. + - `Authorized::binding_sig` now has type `redjubjub::Signature`. + - `Authorized::AuthSig` now has type `redjubjub::Signature`. + - `SpendDescription::temporary_zcashd_from_parts` now takes `rk` as + `redjubjub::VerificationKey` instead of + `sapling_crypto::redjubjub::PublicKey`. + - `SpendDescription::rk` now returns `&redjubjub::VerificationKey`. + - `SpendDescriptionV5::into_spend_description` now takes `spend_auth_sig` as + `redjubjub::Signature` instead of + `sapling_crypto::redjubjub::Signature`. + - `testing::arb_bundle` now takes a `value_balance: V` argument. + - `MapAuth` trait methods now take `&mut self` instead of `&self`. +- `sapling_crypto::circuit::ValueCommitmentOpening::value` is now represented as + a `NoteValue` instead of as a bare `u64`. +- `sapling_crypto::keys`: + - `DecodingError` has a new variant `UnsupportedChildIndex`. + - `ExpandedSpendingKey.ask` now has type `SpendAuthorizingKey`. + - `ProofGenerationKey.ak` now has type `SpendValidatingKey`. + - `ViewingKey.ak` now has type `SpendValidatingKey`. +- `sapling_crypto::note_encryption`: + - `SaplingDomain` no longer has a `P: consensus::Parameters` type parameter. + - The following methods now take a `Zip212Enforcement` argument instead of a + `P: consensus::Parameters` argument: + - `plaintext_version_is_valid` + - `try_sapling_note_decryption` + - `try_sapling_compact_note_decryption` + - `try_sapling_output_recovery_with_ock` + - `try_sapling_output_recovery` + - `SaplingDomain::Memo` now has type `[u8; 512]` instead of `MemoBytes`. + - `sapling_note_encryption` now takes `memo` as a `[u8; 512]` instead of + `MemoBytes`. + - The following methods now return `[u8; 512]` instead of `MemoBytes`: + - `try_sapling_note_decryption` + - `try_sapling_output_recovery_with_ock` + - `try_sapling_output_recovery` +- `sapling_crypto::util::generate_random_rseed` now takes a `Zip212Enforcement` + argument instead of a `P: consensus::Parameters` argument and a height. +- `sapling_crypto::value`: + - `TrapdoorSum::into_bsk` now returns `redjubjub::SigningKey` instead + of `sapling_crypto::redjubjub::PrivateKey`. + - `CommitmentSum::into_bvk` now returns `redjubjub::VerificationKey` + instead of `sapling_crypto::redjubjub::PublicKey`. + +### Removed +- `sapling_crypto::bundle`: + - `SpendDescription::{read, read_nullifier, read_rk, read_spend_auth_sig}` + - `SpendDescription::{write_v4, write_v5_without_witness_data}` + - `SpendDescriptionV5::read` + - `OutputDescription::read` + - `OutputDescription::{write_v4, write_v5_without_proof}` + - `OutputDescriptionV5::read` +- `sapling_crypto::note_encryption::SaplingDomain::for_height` (use + `SaplingDomain::new` instead). +- `sapling_crypto::redjubjub` module (use the `redjubjub` crate instead). +- `sapling_crypto::spend_sig` (use `redjubjub::SigningKey::{randomize, sign}` + instead). + +## [0.0.1] - 2017-12-06 +Initial release to reserve crate name.