Commit Graph

45 Commits

Author SHA1 Message Date
Deirdre Connolly 8a4add55f1
Fix Orchard implementation, refactor, and add more test vectors (#2445)
* Support incomplete Pallas addition, all the way down

* Check Orchard key derivation against test vectors (currently not passing)

* Fix up Orchard keys, notes, nullifiers, address, and their tests

* Fix Incoming Viewing Key generation

* Move around test vectors, impl From<SpendingKey> for FullViewingKey

* Add orchard test vectors module

* Pull in and use the Sinsemilla test vectors

* Test Pallas group hashes for Orchard with test vectors

* Move Orchard Arbitrary implementations to arbitrary.rs

* Improvements from code review

* Derive Eq instead of implementing it for SpendAuthorizingKey

* Dedupe Orchard NoteCommitment::extract_x; fix documentation

* Update zebra-chain/src/orchard/note.rs

Co-authored-by: Deirdre Connolly <deirdre@zfnd.org>

Co-authored-by: Conrado P. L. Gouvea <conradoplg@gmail.com>
Co-authored-by: teor <teor@riseup.net>
Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
2021-07-16 13:52:35 +00:00
Deirdre Connolly bb974fd282
Orchard note commitment tree test vectors (#2384)
* Orchard note commitment tree and hash test vectors?

* Add failing sinsemilla test vector test

* Support incomplete Pallas addition, all the way down

* Fix sinsemilla sub function S(j), add note commitment tree empty root tests

* Clippy nightly lints

* allow(clippy::derive_hash_xor_eq) for orchard::tree

* Update zebra-chain/src/orchard/sinsemilla.rs

Co-authored-by: Conrado Gouvea <conrado@zfnd.org>
2021-06-25 16:27:47 +00:00
Conrado Gouvea 9688811e35
Update multiple crates to ensure bitvec 0.22.3 is being used (#2351)
* Update multiple crates to ensure bitvec 0.22.3 is being used and avoid package conflicts

* Add documentation to zebra-chain::sapling to indicate that ZIP-216 rules are enforced by jubjub

Co-authored-by: Janito Vaqueiro Ferreira Filho <janito.vff@gmail.com>
Co-authored-by: teor <teor@riseup.net>
Co-authored-by: Deirdre Connolly <durumcrustulum@gmail.com>
2021-06-23 13:16:22 +10:00
teor 8ebb415e7c Clippy: remove needless borrows 2021-06-07 18:33:58 -04:00
Deirdre Connolly 7894cec814
Test Eq/PartialEq for orchard keys (#2187)
* Add ConstantTimeEq's for Orchard FullViewingKey and DiversifierKey and affirmatively test

* Fix orchard::keys doc comments with links to make them automatic links

* Exercise ConstantTimeEq for FullViewingKey with a cheap clone

* Allow some clippy lints to pass for somewhat contrived tests

Co-authored-by: teor <teor@riseup.net>
2021-05-27 07:46:05 +10:00
teor d4f3ecd755
Remove redundant cmp_owned and comments (#2186)
* Remove redundant cmp_owned and comments

This is a cleanup after PR #2184.
2021-05-23 21:40:47 +00:00
Deirdre Connolly ad7a29517c
Fix clippy::cmp_owned for (sapling, orchard)::keys with `ConstantTimeEq` (#2184)
* Impl subtle::ConstantTimeEq for orchard SpendingKey, use that in Eq/PartialEq

* Use constant time comparisons for secret key data where applicable

This also makes Clippy happier so that we aren't creating types just to compare.

* Fix clippy::cmp_owned for orchard::keys Eq/PartialEq

By impl'ing ConstantTimeEq for those types where leaks of the value
would compromise access or privacy.

* Make clippy::cmp_owned happy for some sapling::keys
2021-05-22 09:40:49 -03:00
teor 2827f6a7e6
Orchard: disable clippy warnings about comparing a newly created struct (#2117)
In Orchard, we compare canonical Pallas bytes with a supplied byte array.

Since we need to perform calculations to get it into canonical form, we
need to create a newly owned object.
2021-05-10 19:16:21 -03:00
Deirdre Connolly 42999b2112 Remove FromStr impls for orchard keys for now, pending Unifed versions of those
Also modify the string encoding/decoding rountrip proptest to be just an exerciser of the keygen
for now.
2021-04-30 00:48:23 -04:00
Deirdre Connolly 6d4ecff24b Pin halo2 commit and update usage of pasta_curves accordingly 2021-04-30 00:48:23 -04:00
Deirdre Connolly f5206af470 Rename all Orchard spec references to nu5.pdf 2021-04-30 00:48:23 -04:00
Deirdre Connolly d7d8986849 Tidy up network handling for Orchard keys/addresses 2021-04-30 00:48:23 -04:00
Deirdre Connolly 86c3b69720 IncomingViewingKey inherits network when derived from FullViewingKey 2021-04-30 00:48:23 -04:00
Deirdre Connolly d33947b331 Impl FullViewingKey::from_spending_key(SpendingKey, Network)
Remove From impl
2021-04-30 00:48:23 -04:00
Deirdre Connolly d8d25d1a82 Add TODO 2021-04-30 00:48:23 -04:00
Deirdre Connolly 698f9620da Clippy +nightly 2021-04-30 00:48:23 -04:00
Deirdre Connolly 72491df4ff orchard: move IncomingViewingKey::from([u8; 32]) to a ::from_bytes([u8; 32], Newtwork) 2021-04-30 00:48:23 -04:00
Deirdre Connolly db8f9cb81a orchard: Better Debug impls for some keys 2021-04-30 00:48:23 -04:00
Deirdre Connolly 376603d4c0 Flesh out Orchard note and nullifier derivation 2021-04-30 00:48:23 -04:00
Deirdre Connolly 34fe78bd0c Fix str match for key and addr decoding 2021-04-30 00:48:23 -04:00
Deirdre Connolly b23093ca66 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly bbb6b341ae Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly a73914a838 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly bba99098f3 Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly e2989e3edf Update zebra-chain/src/orchard/keys.rs
Co-authored-by: teor <teor@riseup.net>
2021-04-30 00:48:23 -04:00
Deirdre Connolly 8461c2153e Update diversify_hash and its use to match spec updates 2021-04-30 00:48:23 -04:00
Deirdre Connolly 73e0f4f98a Orchard: fix some tests, etc 2021-04-30 00:48:23 -04:00
Deirdre Connolly c892b93f61 Orchard: update merkle_crh_orchard correctly 2021-04-30 00:48:23 -04:00
Deirdre Connolly 218bb9b7c2 Orchard: remove unused imports 2021-04-30 00:48:23 -04:00
Deirdre Connolly f3501333b7 Orchard: tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly 0351e6481d Orchard: tidy keys 2021-04-30 00:48:23 -04:00
Deirdre Connolly e85359c756 Orchard: tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly cb9d6956d7 Orchard: Fix trait imports and Arbitrary for Action 2021-04-30 00:48:23 -04:00
Deirdre Connolly 981080f049 Orchard: Tidy Debug impl's for keys, cast a pallas::Base into a pallas::Scalar 2021-04-30 00:48:23 -04:00
Deirdre Connolly 6e51671c93 Tidy prf's 2021-04-30 00:48:23 -04:00
Deirdre Connolly 01fed3e0f3 Tidy impl From<SpendingKey> for IvkCommitRandomness 2021-04-30 00:48:23 -04:00
Deirdre Connolly bd4e5e1f38 Cleanup 2021-04-30 00:48:23 -04:00
Deirdre Connolly df1ecc72b1 Most things are filled in, including a guess at Pallas-based Mixing Pedersen Hash 2021-04-30 00:48:23 -04:00
Deirdre Connolly 23e391894b Tidy 2021-04-30 00:48:23 -04:00
Deirdre Connolly de051c727c orchard: DiversifierKey is a newtype refinement of 32 bytes 2021-04-30 00:48:23 -04:00
Deirdre Connolly fd29708ecc orchard: derive IncomingViewingKey from FullViewingKey
Includes sinsemilla commit and short commit
2021-04-30 00:48:23 -04:00
Deirdre Connolly 6e1d2f1fb1 orchard: impl From<SpendingKey> for NullifierDerivingKey 2021-04-30 00:48:23 -04:00
Deirdre Connolly f50d8697d4 impl orchard SpendingKey::new() 2021-04-30 00:48:23 -04:00
Deirdre Connolly c3e40d73cf Bunch more work implementing orchard, porting from sapling where applicable 2021-04-30 00:48:23 -04:00
Deirdre Connolly 40383b2741 Partway done with typing out Orchard chain types 2021-04-30 00:48:23 -04:00