Jack Grigg
4606a0cefb
Migrate bellman to rand 0.5
2019-07-19 00:35:06 +02:00
Jack Grigg
a7e22b3550
Migrate pairing to rand 0.5
2019-07-19 00:35:06 +02:00
Jack Grigg
ce6e2a5825
Migrate group to rand 0.5
2019-07-19 00:35:06 +02:00
Jack Grigg
7a6642b221
Migrate ff to rand_core 0.3 (used by rand 0.5)
2019-07-19 00:35:06 +02:00
str4d
9e758dc7d9
Merge pull request #83 from str4d/blake2_simd
...
Migrate to blake2b_simd and blake2s_simd crates
2019-07-18 17:41:59 +01:00
str4d
8361674efc
Merge branch 'master' into blake2_simd
2019-07-18 18:22:20 +02:00
str4d
5e3409ea85
Merge pull request #68 from str4d/sapling-commitment-tree
...
Sapling commitment tree
2019-07-15 16:52:46 +02:00
Jack Grigg
504c3eaeae
Address Daira's review comments
2019-07-15 16:33:43 +02:00
Jack Grigg
07dbfbef59
Address Eirik's review comments
2019-07-10 13:53:22 -04:00
Jack Grigg
79006ecbdf
Unify Sapling tree depth constants
...
When sapling-crypto is refactored, the zcash_primitives::sapling
constant would become the canonical one.
2019-07-10 13:53:22 -04:00
Jack Grigg
e67560b154
Document merkle_tree module
2019-07-10 13:53:22 -04:00
Jack Grigg
b9cea33804
Move merkle_tree::Node into sapling module
...
This makes the merkle_tree module properly generic over the tree hash.
It still hard-codes a depth 32 tree, because Rust doesn't yet support
generic sizes, and we are unlikely to need to alter the tree depth in
future circuit changes.
2019-07-10 13:53:22 -04:00
Jack Grigg
263bbe1207
Use Iterator::all() in place of Iterator::fold()
2019-07-10 13:53:22 -04:00
Jack Grigg
98d7621135
Don't assert when parsing a CommitmentTreeWitness
2019-07-10 13:53:22 -04:00
Jack Grigg
9b4186705a
Add serialization APIs to CommitmentTree and IncrementalWitness
2019-07-10 13:53:22 -04:00
Jack Grigg
70a7069058
Helper for serializing Option<T>
2019-07-10 13:53:22 -04:00
Jack Grigg
667d6101c9
Sapling incremental witnesses
2019-07-10 13:53:20 -04:00
Jack Grigg
bf74915053
Move CommitmentTreeWitness into zcash_primitives
2019-07-10 13:52:47 -04:00
Jack Grigg
f4059a5faa
Sapling commitment tree
2019-07-10 13:44:21 -04:00
Jack Grigg
8f3f95ee08
Sapling commitment tree empty roots
2019-07-10 13:44:21 -04:00
Jack Grigg
785f22ca5a
Move Sapling commitment tree hash into zcash_primitives
2019-07-10 13:44:19 -04:00
Jack Grigg
d1ce6749fe
Bump minimum Rust version to 1.36
2019-07-10 13:12:26 -04:00
Jack Grigg
999dcbfcab
Migrate to blake2b_simd and blake2s_simd crates
...
The primary reason for migrating is that these crates provide APIs for
setting the personalisation string. This enables us to depend solely on
published crates, and thus publish our own crates.
The SIMD implementations are ported from libsodium.
Closes #67 .
2019-07-10 13:12:14 -04:00
str4d
91c6b0b3f0
Merge pull request #88 from str4d/address-encodings
...
Sapling address encodings
2019-07-10 07:04:37 -04:00
Jack Grigg
a3a9ee2682
Validate PaymentAddress diversifier when decoding
2019-07-02 00:07:48 +01:00
Jack Grigg
dd9c9ffa3f
Add encodings for ExtendedSpendingKey and ExtendedFullViewingKey
2019-06-27 16:21:32 +01:00
Jack Grigg
17f60a0354
Implement PaymentAddress encoding and decoding
2019-06-27 16:21:00 +01:00
Jack Grigg
81b2b1b554
Wallet spending key derivation path
2019-06-27 16:19:33 +01:00
Jack Grigg
f25a8a557e
Convert zip32 crate into a module of zcash_primitives
2019-06-27 16:14:24 +01:00
Jack Grigg
fae919ec1c
Rename zcash_wallet to zcash_client_backend, set to 2018 edition
2019-06-27 16:02:12 +01:00
str4d
3b6f5e3d5e
Merge pull request #69 from str4d/sapling-note-encryption
...
Sapling note encryption
2019-06-06 20:50:17 +01:00
Jack Grigg
b65aae9bc1
Test both invalid and incorrect diversifiers
2019-06-06 13:56:06 +01:00
Jack Grigg
fdb6e208db
Check note plaintext version byte when decrypting
2019-06-06 13:38:34 +01:00
Jack Grigg
060977fe54
Return edwards::Point from sapling_ka_agree
...
This matches how sapling_ka_agree and kdf_sapling are defined in the
protocol spec. kdf_sapling also now takes ownership of dhsecret to
discourage use of the sapling_ka_agree output elsewhere.
2019-06-06 13:38:33 +01:00
Jack Grigg
9d80be62f9
Simplify Memo::to_utf8 implementation
2019-06-06 13:38:32 +01:00
Jack Grigg
6846ac5f9e
Require that ak in FullViewingKey is prime order
2019-06-06 13:38:31 +01:00
Jack Grigg
75bede4bc8
Use fixed-length arrays instead of Vec
2019-06-06 13:38:30 +01:00
Jack Grigg
d4fce58019
Tweaks to debug output and function names
2019-06-05 14:19:50 +01:00
Jack Grigg
23aa869bf4
Add comments with specification references
2019-06-05 14:19:33 +01:00
Jack Grigg
6d03b5c1db
Replace AeadCipher::seal with AeadCipher::seal_to
2019-06-05 13:55:17 +01:00
str4d
0ee1e81f5d
Merge pull request #61 from rex4539/fix-typos
...
Fix typos
2019-05-29 17:38:30 +01:00
str4d
2d97ccb7b8
Merge pull request #81 from bitcartel/52_wrapped_shr
...
Closes #52 . Fix test error "attempt to shift right with overflow".
2019-05-28 18:55:25 +01:00
str4d
c5642f9f5e
Merge pull request #70 from rex4539/electric-coin-company
...
Electric Coin Company
2019-05-23 17:33:38 +01:00
str4d
c2d0a7d048
Merge pull request #74 from str4d/bellman-multicore
...
Place bellman multicore operations behind a (default) feature flag
2019-05-22 21:25:29 +01:00
Jack Grigg
edf7bc144d
Document note_encryption module
2019-04-11 16:08:32 -07:00
Jack Grigg
34658c4bd3
Raise minimum Rust version to 1.32
...
The crypto_api_chachapoly uses two new features introduced in 1.32:
- Self struct constructors
- u64::to_le_bytes()
2019-04-11 06:41:22 -07:00
Jack Grigg
6dcb4040af
Switch to crypto_api_chachapoly crate
...
This crate exposes both the ChaCha20Poly1305 IETF construction, and the
underlying ChaCha20 IETF primitive, removing the need for depending on
our own fork of the previous chacha20-poly1305-aead crate.
2019-04-11 06:33:41 -07:00
Jack Grigg
e17e4b1346
Test invalid decryption edge cases
2019-04-05 21:05:05 +01:00
Jack Grigg
9086dd9afb
Enforce consistent plaintext and ciphertext lengths
2019-04-05 21:05:05 +01:00
Jack Grigg
899d852c39
Inline empty nonces
2019-04-05 21:05:05 +01:00
Jack Grigg
566db65a91
Use a slice instead of a vector in prf_expand()
2019-04-05 21:05:05 +01:00
Jack Grigg
2b1583d75f
Deduplicate Sapling key agreement logic
2019-04-05 21:05:05 +01:00
Jack Grigg
247f3fb038
Impl traits and functions for Memo
2019-04-05 21:05:05 +01:00
Jack Grigg
484330ebd9
Trial Sapling compact note decryption
...
Part of ZIP 307.
2019-04-05 21:05:05 +01:00
Jack Grigg
8e098d4d72
Trial Sapling output recovery
2019-04-05 21:05:05 +01:00
Jack Grigg
6996853168
Trial Sapling note decryption
2019-04-05 21:05:05 +01:00
Jack Grigg
757316d355
Test prf_ock
2019-04-05 21:05:05 +01:00
Jack Grigg
70caa7d4b0
Sapling note encryption test vectors
2019-04-05 21:05:05 +01:00
Jack Grigg
9b455a12cc
Move Sapling key structs from zip32 to zcash_primitives
2019-04-05 21:05:03 +01:00
Jack Grigg
6c99d71d4f
cargo fmt
2019-04-02 01:30:00 +01:00
Jack Grigg
3501365950
Test Transaction::txid()
2019-04-02 01:29:48 +01:00
Jack Grigg
663f9d619d
Use named fields in Transaction struct
2019-04-02 01:29:22 +01:00
Jack Grigg
b856d23069
Reverse a clone of [u8; 32] instead of allocating
2019-03-07 23:43:58 +00:00
Jack Grigg
4289843852
Compute TxId for Transaction
2019-03-07 23:42:00 +00:00
Jack Grigg
670bb277e9
Block header serialisation
2019-03-07 23:41:59 +00:00
Jack Grigg
a1664c6bbc
impl Display for BlockHash and TxId
2019-03-07 23:41:46 +00:00
Jack Grigg
20d5cdc571
TxId struct
2019-03-07 23:26:03 +00:00
Jack Grigg
e21be37042
Block header representation
2019-03-07 23:26:00 +00:00
Jack Grigg
3d39706aee
Make SpendDescription.spend_auth_sig optional
2019-02-26 13:44:28 -07:00
Jack Grigg
012d43bc8c
derive Debug for various structs
2019-02-26 13:44:28 -07:00
Jack Grigg
34ca75cceb
impl Clone for ExtendedFullViewingKey
2019-02-26 13:44:28 -07:00
Jack Grigg
80db0ae2f9
ExpandedSpendingKey::proof_generation_key(), visibility tweaks
2019-02-26 13:44:28 -07:00
Jack Grigg
9ae5a9d624
Make loading of Sprout key optional in zcash_proofs API
2019-02-26 13:44:28 -07:00
Jack Grigg
2d43e3be7c
Move parameter-loading into zcash_proofs
2019-02-26 13:44:28 -07:00
Jack Grigg
09a20aacfe
Make zcash_primitives::JUBJUB the canonical instantiation of JubjubBls12
2019-02-26 13:44:28 -07:00
Jack Grigg
6b43b2d0d6
Refactor Sapling spendAuthSig creation into zcash_primitives::sapling
2019-02-26 13:44:28 -07:00
Jack Grigg
482bef87f0
Add ff and group crates to Cargo workspace
2019-01-06 09:50:07 +00:00
Jack Grigg
b1ce3905d6
Add 'group/' from commit 'ef56fabf7ba3ed990a7886836c855298c9c5eefa'
...
git-subtree-dir: group
git-subtree-mainline: af9f9c17ee
git-subtree-split: ef56fabf7b
2019-01-06 09:38:21 +00:00
Jack Grigg
af9f9c17ee
Add 'ff/' from commit '661558e0c8a5e02e08dac6530d39b2e38919aa04'
...
git-subtree-dir: ff
git-subtree-mainline: 07955092f3
git-subtree-split: 661558e0c8
2019-01-06 09:37:22 +00:00
Jack Grigg
07955092f3
Update librustzcash crate to use ff crate
2019-01-06 09:36:32 +00:00
Jack Grigg
00983c48cd
Update zcash_proofs crate to use ff crate
2019-01-06 09:32:50 +00:00
Jack Grigg
538de482f3
Update zcash_primitives crate to use ff crate
2019-01-06 09:31:20 +00:00
Jack Grigg
2e408957db
Update zip32 crate to use ff crate
2019-01-06 09:22:10 +00:00
Jack Grigg
22ccd1bceb
Update sapling-crypto crate to use ff crate
2019-01-06 09:22:03 +00:00
Jack Grigg
76cd0d92bb
Merge commit '4272cfa5b0dceac471bef115955e1534be84a018' into ff-traits
...
git-subtree-dir: bellman
git-subtree-split: 4272cfa5b0
2019-01-06 09:21:44 +00:00
Jack Grigg
88746e76fa
Cargo.lock changes after pairing update
2019-01-06 09:20:00 +00:00
Jack Grigg
794cf79db2
Merge commit '3d41ee5abaa4888ff3607689aba007be8856816d' into ff-traits
...
git-subtree-dir: pairing
git-subtree-split: 3d41ee5aba
2019-01-06 09:19:29 +00:00
Jack Grigg
9f7e5fa3ce
Dependency updates after pairing update
2019-01-06 09:02:30 +00:00
Jack Grigg
fe16e4a412
Merge commit '183a64b08e9dc7067f78624ec161371f1829623e' into ff-traits
...
git-subtree-dir: pairing
git-subtree-split: 183a64b08e
2019-01-06 09:01:44 +00:00
Jack Grigg
1a1c77536d
cargo fmt 1.31.1
2019-01-03 21:52:06 +00:00
Jack Grigg
e378229bdd
Move Sapling proving and binding signature into zcash_proofs crate
2018-12-01 00:10:51 +00:00
Jack Grigg
922ffe6002
Refactor Sapling proving and binding signature
2018-12-01 00:06:50 +00:00
Jack Grigg
e1841806c5
Move Sapling verification checks into zcash_proofs crate
2018-11-30 23:53:10 +00:00
Jack Grigg
eb2db2e667
Refactor Sapling verification checks
2018-11-30 23:50:50 +00:00
Jack Grigg
c9b23dfdef
Extract single-TxOut hashing from signature_hash_data() for clarity
2018-11-30 23:13:39 +00:00
Jack Grigg
e25b614573
Match error message in Amount::Read_i64() to allow_negative value
2018-11-30 23:04:04 +00:00
Jack Grigg
7ff32b04d6
Document enforcement of consensus rules on transaction components
2018-11-30 22:59:48 +00:00
Jack Grigg
d707ebd321
Use Option<[u8; N]> for JoinSplit pubkey and signature in a transaction
2018-11-30 01:08:45 +00:00
Jack Grigg
9b06205ed6
Reject unexpected binding sig during transaction write
2018-11-30 00:54:30 +00:00
Jack Grigg
61ce4dd3d6
Enforce range checks when reading Amounts
2018-11-30 00:30:37 +00:00