str4d
993925e049
Merge pull request #437 from nuttycom/zcash_note_encryption_doc_fixes
...
Fix a couple of broken doc links.
2021-09-01 21:43:46 +01:00
Kris Nuttycombe
5541552453
Fix a couple of broken doc links.
2021-09-01 14:01:47 -06:00
Kris Nuttycombe
427e6acbd4
Allow CompactSize deserialization to target any type that can be TryFrom<u64>
2021-09-01 13:57:51 -06:00
str4d
edcde252de
Merge pull request #428 from nuttycom/public_compact_size
...
Move the CompactSize, Vector, Array and Option encodings to a new zcash_encoding crate.
2021-09-01 20:45:28 +01:00
str4d
21a0d0760c
zcash_encoding: Adjust doc comments on public APIs
2021-09-01 20:43:59 +01:00
Kris Nuttycombe
c1bad64fbd
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-09-01 11:08:52 -06:00
Kris Nuttycombe
e9c18ebaed
Document zcash_encoding functions.
2021-09-01 10:17:03 -06:00
Kris Nuttycombe
fa092da456
Fix stray clippy complaints.
2021-08-31 13:19:24 -06:00
Kris Nuttycombe
ef98c7e48c
Add zcash_encoding crate.
...
The CompactSize type, and the standardized encodings for the Vector,
Array and Option types are moved to the newly created crate.
2021-08-31 13:19:24 -06:00
Jack Grigg
f03f05f251
zcash_note_encryption: Switch to chacha20poly1305 crate
2021-08-30 15:03:39 +01:00
Jack Grigg
0d00e1eb53
proptest 1
2021-08-23 20:21:13 +01:00
str4d
9be36f3e54
Merge pull request #417 from nuttycom/incremental_merkle_tree_ser
...
Add manual serialization for bridgetree::Frontier
2021-08-17 14:57:59 +01:00
Jack Grigg
4b4dd2ea55
zcash_note_encryption: Add support for batch-parsing `ephemeral_key`
...
This is useful when the underlying curve requires an inversion to parse
an encoded point (such as for Jubjub).
2021-08-10 02:57:11 +01:00
Jack Grigg
8a615c4393
zcash_note_encryption: Add batched trial decryption APIs
2021-08-10 02:17:10 +01:00
Jack Grigg
279a8b6bb6
Use `EphemeralKeyBytes` type in place of `[u8; 32]`
2021-08-09 21:28:42 +01:00
Jack Grigg
0f15743200
Disable default benchmark harness for all workspace crates
...
This is necessary in order to provide criterion-specific arguments to
`cargo bench`, such as `--profile-time`.
2021-08-05 22:39:36 +01:00
Kris Nuttycombe
2945905d52
Implement manual serialization for incremental Merkle tree components.
...
This also adds parsing of the legacy CommitmentTree format,
to permit easy migration of persisted data.
2021-08-05 09:32:44 -06:00
str4d
c02931dc82
Tweak test comment
2021-07-30 20:35:23 +01:00
Jack Grigg
00b369b2a4
zcash_address: Include HRP inside Unified Address Padding bytes
...
Closes zcash/librustzcash#418 .
2021-07-30 15:34:36 +01:00
Jack Grigg
b875f6c34b
zcash_address: Fix clippy lint by using matches! macro
2021-07-12 21:17:25 +01:00
Jack Grigg
8527dcbc32
zcash_address: Remove outdated unified::Receiver documentation
...
Receiver ordering is now explicitly defined by Typecode, and Receiver
is now a public type.
2021-07-12 21:11:24 +01:00
Jack Grigg
478625f72d
zcash_address: Add UA test cases for truncation and invalid padding
2021-07-12 20:56:35 +01:00
Jack Grigg
77d1f0c778
zcash_address: Invert Typecode::is_shielded to Typecode::is_transparent
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-07-12 20:19:26 +01:00
Jack Grigg
060a15eaf8
zcash_address: Enable constructing a unified::Address from Vec<Receiver>
...
This enforces the same structural validity checks as at parsing time.
2021-07-12 13:39:01 +01:00
Jack Grigg
384af079a8
zcash_address: Add `unified::Address::receivers{_as_parsed}` APIs
...
These expose the receivers in sorted order, and in parsed order.
2021-07-12 13:35:06 +01:00
Jack Grigg
b175b9bec9
zcash_address: Use preference ordering for Receivers
2021-07-12 13:34:44 +01:00
Jack Grigg
7708b27202
zcash_address: Enforce UA structural validity checks
2021-07-12 12:10:23 +01:00
Jack Grigg
cd94b41d61
zcash_address: Introduce UA-specific parser error type
2021-07-12 11:45:25 +01:00
Jack Grigg
01a8dba450
zcash_address: Add a Typecode enum
2021-07-12 11:42:49 +01:00
Jack Grigg
752ee442f8
zcash_address: Add Unified Address test vectors
2021-06-18 20:06:02 +01:00
Jack Grigg
c7c79d266e
zcash_note_encryption: Add `ShieldedOutput::ephemeral_key() -> EphemeralKeyBytes`
...
This replaces the `ShieldedOutput::epk() -> &Domain::EphemeralPublicKey`
which could not be satisfied by output types that did not parse epk.
2021-06-10 18:35:19 +01:00
str4d
2f3e4989ba
Merge pull request #352 from str4d/zcash_address
...
New component: zcash_address crate
2021-06-07 00:36:48 +01:00
Jack Grigg
af02e1142b
zcash_address: Fix clippy lint
2021-06-07 00:13:21 +01:00
str4d
1590565f04
zcash_address: Minor cleanups
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-06-06 23:58:52 +01:00
str4d
f36034cfac
zcash_address: Use exhaustive matching in Display impl
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-06-06 23:54:11 +01:00
Jack Grigg
1222391dd7
Migrate to bitvec 0.22, ff 0.10, etc.
...
Requires patching three dependencies:
- bellman is pending a new release.
- nom is part of the funty breakage; we are blocking on a new release.
- orchard is in development.
2021-06-04 22:02:48 +01:00
Jack Grigg
eba6f417fe
zcash_note_encryption: Doc fixes
2021-05-29 00:15:25 +01:00
Jack Grigg
362838c3fa
zcash_note_encryption: Fix array size in Domain::extract_{esk, pk_d}
...
Decrypted output size is `OUT_PLAINTEXT_BYTES`, which the decryptor
can always provide (either by decrypting into the correct size array
as now, or truncating the buffer before passing it to the domain).
2021-05-28 23:48:03 +01:00
Jack Grigg
f6705f23c3
zcash_note_encryption: Add ovk recovery API
2021-05-28 23:45:23 +01:00
Jack Grigg
ae43e6c074
zcash_note_encryption: Pass cmstar_bytes to Domain::derive_ock
...
PRF^ock in the spec takes cm* as a byte array.
2021-05-28 23:41:13 +01:00
Jack Grigg
ee2b96c82d
zcash_note_encryption: s/TryFrom/From on ExtractedCommitmentBytes bound
...
This was left over from an earlier refactor where we could call a domain
API to extract cmstar from a note commitment (which could fail for
Orchard). This part of extraction was subsequently refactored into the
domain logic (and is rejected earlier for Orchard). The resulting bound
is wrong because it's always possible to serialize a scalar.
2021-05-28 22:57:48 +01:00
Jack Grigg
16627b4569
zcash_note_encryption: Enforce ZIP 212 check on esk from outPlaintext
...
It needs to equal the esk derived from the note (for v2 note plaintexts).
2021-05-28 22:33:00 +01:00
Jack Grigg
ff94f66d8e
zcash_address: Fix padding and F4Jumble positions in Address::to_bytes
...
These need to be applied to the entire UA encoding, not to the encoding
of each individual receiver.
2021-05-25 21:24:47 +01:00
Jack Grigg
ff8695de03
zcash_address: Add failing test showing unified::Address encoding bug
2021-05-25 21:24:47 +01:00
str4d
c2b57048bf
Update components/zcash_address/README.md
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-05-25 16:37:25 +01:00
Jack Grigg
e982d7211f
zcash_address: Implement Unified Address encoding / decoding
2021-05-20 22:50:59 +01:00
Jack Grigg
6717cd821c
Move F4Jumble implementation into zcash_address
2021-05-20 22:50:59 +01:00
Jack Grigg
ae2b8bfd6d
zcash_address: Replace Orchard address encodings with Unified Addresses
...
This commit removes the now-undefined Orchard encoding logic, and adds
the general Bech32m encoding/decoding logic for Unified Addresses. The
internal data format of Unified Addresses is not correct in this commit.
2021-05-20 22:50:59 +01:00
Jack Grigg
9f7398cd05
zcash_address: Add convert::ToAddress helper trait
2021-05-20 14:54:27 +01:00
Jack Grigg
ce8797e4b1
zcash_address: impl {Clone, Copy, Eq, Hash} for ZcashAddress
2021-05-20 14:54:27 +01:00