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
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
Jack Grigg
9282c7da29
Replace tx_read_write() test vector with one from current testnet chain
2018-11-16 09:50:27 +00:00
Jack Grigg
2d2e4aad86
Pass &[E] into Vector::write() instead of &Vec<E>
2018-11-16 08:55:06 +00:00
Jack Grigg
cc183efda4
Define MAX_SIZE constant for CompactSize serialization
2018-11-16 08:52:53 +00:00
Jack Grigg
1f11c404dc
Convert Transaction into a wrapping struct with impl Deref
...
Users who have a Transaction can now only obtain an immutable reference
to its underlying data.
2018-11-09 08:34:49 +13:00
Jack Grigg
0c81695731
ZIP 243
2018-11-09 08:34:49 +13:00
Jack Grigg
2d8b1fe504
ZIP 143
2018-11-09 08:34:38 +13:00
Jack Grigg
bbec1b841d
Use slices of native strings to pass parameter paths into Rust
...
On Windows, the slices are [u16] representing UTF-16. On all other
platforms, the slices are [u8] in the native filesystem encoding.
Closes #44 .
2018-10-27 16:27:49 +13:00
Jack Grigg
041671f642
Merge branch 'zcash-2.0.1'
2018-10-11 20:57:50 +01:00
Jack Grigg
e490b79907
Transaction serialization
2018-10-11 18:05:50 +01:00
Jack Grigg
91ff2c71cf
Helper for serializing CompactSize-prefixed vectors
2018-10-11 17:48:12 +01:00
Jack Grigg
77ee1d6a8f
ZIP 32 APIs
2018-08-30 00:05:49 +01:00
Jack Grigg
6e0364cd42
Update workspace after pulling in zip32 crate
2018-08-29 09:57:52 +01:00
Jack Grigg
6526b9fb53
Add 'zip32/' from commit '176470ef41583b5bd0bd749bd1b61d417aa8ec79'
...
git-subtree-dir: zip32
git-subtree-mainline: a9059c9372
git-subtree-split: 176470ef41
2018-08-29 09:55:40 +01:00
Jack Grigg
a9059c9372
Update workspace after pulling in external crates
2018-08-28 23:06:15 +01:00
Jack Grigg
051027cb6d
Add 'sapling-crypto/' from commit '21084bde2019c04bd34208e63c3560fe2c02fb0e'
...
git-subtree-dir: sapling-crypto
git-subtree-mainline: 9f748554d0
git-subtree-split: 21084bde20
2018-08-28 23:04:13 +01:00
Jack Grigg
9f748554d0
Add 'bellman/' from commit '10c5010fd9c2ca69442dc9775ea271e286e776d8'
...
git-subtree-dir: bellman
git-subtree-mainline: e924247e73
git-subtree-split: 10c5010fd9
2018-08-28 23:03:52 +01:00
Jack Grigg
e924247e73
Add 'pairing/' from commit '09b6e6f9212020f385218e5cf5287e381ccd312b'
...
git-subtree-dir: pairing
git-subtree-mainline: ad16ba6a35
git-subtree-split: 09b6e6f921
2018-08-28 23:03:42 +01:00
Jack Grigg
ad16ba6a35
Empty crates as a base for code refactoring
2018-08-28 22:24:14 +01:00
Jack Grigg
0ec85d362d
Set up a Cargo workspace
2018-08-23 21:10:04 +01:00
Jack Grigg
d7257ce010
Move librustzcash crate into subdir
2018-08-23 21:04:02 +01:00
Jack Grigg
6671234ad1
cargo fmt
2018-08-22 23:59:40 +01:00
Jack Grigg
770c4bef25
Simplify creation of FVKFingerprint and FVKTag
2018-08-22 23:59:20 +01:00
Jack Grigg
e27fc674f5
Tidy up DiversifierIndex::increment()
2018-08-22 23:45:56 +01:00
Jack Grigg
5c16673724
cargo fmt
2018-08-20 12:47:43 +01:00
Jack Grigg
ac8b27a5ba
Expose contents of DiversifierIndex
2018-08-03 13:22:50 +01:00
Jack Grigg
a4e86be665
Check ivk in test vectors
2018-08-03 13:22:35 +01:00
Jack Grigg
80130f5656
Expose underlying ExpandedSpendingKey and FullViewingKey for writing
2018-08-01 10:41:50 +01:00
Jack Grigg
599079fafe
Rename xsk: ExpandedSpendingKey -> expsk to disambiguate
2018-08-01 10:38:07 +01:00
Jack Grigg
39f978bb4f
ExtendedSpendingKey::read() and ExtendedFullViewingKey::read()
2018-08-01 10:33:37 +01:00
Jack Grigg
9c9607e47a
Add missing wrapping_add() caught by test vectors
2018-08-01 03:00:19 +01:00
Jack Grigg
342d97ac15
Test vectors from Python implementation
2018-08-01 02:52:41 +01:00
Jack Grigg
e47cafd691
ExtendedSpendingKey::write() and ExtendedFullViewingKey::write()
2018-08-01 02:51:18 +01:00
Jack Grigg
3b31854de7
Payment address derivation
2018-07-31 17:24:02 +01:00
Jack Grigg
fea07c52de
Diversifier derivation
2018-07-31 17:24:02 +01:00
Jack Grigg
f5d6091c93
Path derivation
2018-07-31 17:24:02 +01:00
Jack Grigg
e87fb329f9
Child key derivation
2018-07-31 17:24:02 +01:00