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
Jack Grigg
ff07eeaabb
zcash_address: Document ZcashAddress::convert
2021-05-20 14:54:27 +01:00
Jack Grigg
b9f704955a
zcash_address: Move ZcashAddress::convert into root
...
Using two separate `impl ZcashAddress` blocks resulted in separate
blocks in the documentation, which is unnecessary.
2021-05-20 14:54:27 +01:00
Jack Grigg
c7fcee27a2
zcash_address: Add ZcashAddress::try_from_encoded method
...
This places parsing documentation front and centre, while also making
it clear that `str::parse` is the anticipated main entry point.
2021-05-20 14:54:27 +01:00
Jack Grigg
f7b1058171
zcash_address: Extend MaybeZcash heuristics to 64-byte addresses
2021-05-20 14:54:27 +01:00
Jack Grigg
a366460157
zcash_address: ZcashAddress::convert() -> T: FromAddress
...
This enables easy conversion of an encoded Zcash address to a target
type, with automatic handling of Zcash address types that are not
supported by the target.
2021-05-20 14:54:27 +01:00
Jack Grigg
ec77175d2b
zcash_address: Add address-encoding support
...
This provides round-trip encoding for Zcash addresses.
2021-05-20 14:54:27 +01:00
Jack Grigg
c754363c07
zcash_address: Initial empty library crate
2021-05-20 14:54:25 +01:00
Jack Grigg
5623e02a7c
Migrate to ff 0.9 et al.
2021-05-19 18:29:37 +01:00
Jack Grigg
28a45028ab
cargo fmt
2021-04-16 14:03:55 +12:00
Daira Hopwood
dc0f6e7115
Update comment about which case is covered by example code
2021-04-16 00:10:05 +01:00
Kris Nuttycombe
b2b3efd4c2
Fix naming cmstar -> cmstar_bytes and cm -> cmstar
2021-04-15 15:24:45 -06:00
Kris Nuttycombe
00d04de547
Make cmstar check follow the spec more closely.
2021-04-14 15:38:58 -06:00
Kris Nuttycombe
389e6ca6a3
Minor comment on epk canonicity.
2021-04-12 18:43:21 -06:00
Kris Nuttycombe
f34e87884a
Update documentation for note encryption traits.
2021-04-12 17:41:06 -06:00
Kris Nuttycombe
6fc1d1d1c0
Use ephemeral_key bytes instead of the epk abstract point where specified.
2021-04-12 16:19:50 -06:00
Kris Nuttycombe
324fc36521
Use ShieldedOutput trait for note encryption/decryption.
...
This change modifies note encryption and decryption functions
to treat a shielded output as a single value instead of handling
the parts of an output as independent arguments.
2021-04-12 12:59:06 -06:00
Kris Nuttycombe
4f22f1d578
Apply suggestions from code review
...
Co-authored-by: Daira Hopwood <daira@jacaranda.org>
2021-04-12 09:18:51 -06:00
Kris Nuttycombe
e654cc4ce6
Use constant-time equality for EphemeralKeyBytes.
...
Fixes #370
2021-04-12 09:13:04 -06:00
Kris Nuttycombe
cfdbafe2e3
Add myself to crate contributors.
2021-04-08 10:13:04 -06:00
Kris Nuttycombe
24e62d3a7b
Update comments describing COMPACT_NOTE_SIZE components.
...
Co-authored-by: ebfull <ewillbefull@gmail.com>
2021-04-08 10:08:58 -06:00
Kris Nuttycombe
a560101bb2
Remove spurious mut references.
2021-04-08 10:08:00 -06:00
Kris Nuttycombe
879eea863a
Apply suggestions from code review
...
Co-authored-by: str4d <jack@electriccoin.co>
2021-04-08 08:20:23 -06:00
Kris Nuttycombe
dad8663c55
Fix zcash_note_encryption doctests.
2021-04-08 08:20:23 -06:00
Kris Nuttycombe
213cd6cce9
Fix Clippy complaints.
2021-04-08 08:20:23 -06:00
Kris Nuttycombe
be225daabf
Update zcash_primitives dev dependency for zcash_note_encryption
2021-04-08 08:20:23 -06:00
Kris Nuttycombe
5b13bb3a1e
Add try_output_recovery_with_ovk to shared note encryption code.
2021-04-08 08:20:23 -06:00
Kris Nuttycombe
266285b536
Move generalized note encryption functionality to zcash_note_encryption crate.
2021-04-08 08:20:21 -06:00
Jack Grigg
56b577b31e
clippy: Fix small lints
2021-03-27 19:01:03 +13:00
str4d
6fa90197fe
Merge pull request #357 from str4d/zcash_note_encryption
...
Empty zcash_note_encryption crate
2021-03-27 17:59:15 +13:00
Jack Grigg
9d9c0579f8
Use new name for broken_intra_doc_links lint
...
We also add the lint to crates in the workspace that didn't have it.
Closes zcash/librustzcash#279 .
2021-03-27 08:27:17 +13:00
Jack Grigg
b7c31e3f54
Empty zcash_note_encryption crate
2021-03-20 09:56:20 +13:00
Jack Grigg
bd3e18984c
Changelogs: s/project/library
2021-02-04 15:16:32 +00:00
Jack Grigg
b5c7d7f1e7
Add changelogs to the crates
...
The changelogs are accurate for the 0.4.0 release tag, but don't yet
include changes before or after that tag.
2021-02-04 15:13:22 +00:00
Jack Grigg
e6c2230afa
equihash: Silence clippy mis-lint
2020-10-23 17:38:24 +01:00
Jack Grigg
20bb9a6c0f
equihash: Test vectors for expand_array and indices_from_minimal
...
Migrated from src/gtest/test_equihash.cpp
2020-07-10 21:12:39 +12:00
Jack Grigg
c89d1c8470
equihash: Test that all bits of the solution matter
...
Migrated from src/test/equihash_tests.cpp
2020-07-10 20:52:47 +12:00
Jack Grigg
30fe588cca
equihash: Valid and invalid test vectors
...
Includes existing test vectors from src/test/equihash_tests.cpp, and
additional test vectors from https://github.com/zcash/zcash/pull/1487 .
2020-07-10 20:35:23 +12:00
Jack Grigg
b5bd52e7a1
equihash 0.1.0
2020-07-10 10:25:52 +12:00
Jack Grigg
1b059d4ae0
equihash: Remove unnecessary log dependency
2020-07-09 20:53:50 +12:00
Jack Grigg
72fbd2071d
equihash: Clarify order of operations in indices_from_minimal
2020-07-09 20:51:52 +12:00
Jack Grigg
7740658084
equihash: Add additional constraints on Params
...
These are requirements of the general Equihash implementation, that are
satisfied by the Zcash parameters.
2020-07-09 20:50:58 +12:00
Jack Grigg
092ffc7373
equihash: Crate documentation
2020-07-08 17:34:52 +12:00
Jack Grigg
bcd687cffb
equihash: Remove iterative and recursive APIs
...
The canonical verification API from Heartwood activation is the
recursive API exposed through is_valid_solution. We retain
is_valid_solution_iterative internally for testing.
2020-07-08 15:22:38 +12:00
Jack Grigg
8759684fad
equihash: Add parameter validity checks
2020-07-07 22:09:24 +12:00
Jane Lusby
997657f256
Move `error!` logs into proper error type ( #14 )
...
hey kid, want some error handling?
2020-07-07 21:00:53 +12:00
Jack Grigg
5b2c71e112
Move Equihash verification APIs into equihash crate
2020-06-26 13:01:04 +12:00
Jack Grigg
d71a599191
Empty equihash crate
2020-06-26 12:53:07 +12:00