Commit Graph
100 Commits
Author SHA1 Message Date
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
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