This performs a consistent renaming of the issuance authorizing key to make it consistent with the ZIP.
It also reworks the `IssuanceAuthorizingKey` struct in place of the `IssuanceKey` and `IssuanceAuthorizingKey` structs, as part of using a two key structure for issuance, as specified in ZIP 227.
This Pull Request introduces the `zcash_note_encryption_zsa` alias,
ensuring compatibility with the Zebra project. This alias is used to
prevent conflicts with the original `zcash_note_encryption` crate, which
is also used in Zebra through the original `orchard` crate that is used
in parallel with our `orchard` (Orchard ZSA) crate.
Additionally, this PR includes minor enhancements to ensure
compatibility with the Zebra project.
---------
Co-authored-by: Dmitry Demin <dmitry@qed-it.com>
Updated constants for master (extended) issuance key according to ZIP
227. Previously, we used the same personalization for the master
extended spending key and the master extended issuance key, as well as
the same purpose constant for the spending master key and the issuance
master key.
Now, the following updates have been made:
- Personalization for the master extended issuance key: ZIP32ZSAIssue_V1
- Purpose constant for the issuance master key: 227"
This PR updates the test-vectors from the updates to the zcash-test-vectors repository (see here).
The keys test is also updated to now use the asset base from the test vectors instead of just using the native asset.
- Renamed AssetId to AssetBase
- Changed the AssetBase implementation to support the zip update.
- Updated visibility for various members of issuance.rs
* rename 2 note_type -> asset as per https://github.com/zcash/orchard/pull/356#discussion_r967636009
* added a dedicated type for "IssuanceAuth"
* disabled codecov github action due to bad behavior.
* extracted "is_asset_desc_of_valid_size()" into asset_id.rs
This enables `InProgress<Unproven, Unauthorized>: Clone`, which allows
the bundle returned by `Builder::build` to be cloned. In pure-Rust
wallets this should not be necessary, but it is required for `zcashd`
due to FFI-crossing.
`ak_P` is not allowed to be the identity in the Orchard protocol. We
were enforcing this by construction in most places, except for the
parsing of an Orchard full viewing key.
Closeszcash/orchard#261.