From 84e3a2212f9c4d0dcd9d9c6d2c0a24bec4a76fac Mon Sep 17 00:00:00 2001 From: Jay Graber Date: Thu, 17 May 2018 06:13:52 -0700 Subject: [PATCH] Change librustzcash dependency hash to work for new Sapling classes --- depends/packages/librustzcash.mk | 4 ++-- src/zcash/prf.cpp | 4 +++- src/zcash/prf.h | 14 ++++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/depends/packages/librustzcash.mk b/depends/packages/librustzcash.mk index 446080f9a..d33115a6e 100644 --- a/depends/packages/librustzcash.mk +++ b/depends/packages/librustzcash.mk @@ -3,8 +3,8 @@ $(package)_version=0.1 $(package)_download_path=https://github.com/zcash/$(package)/archive/ $(package)_file_name=$(package)-$($(package)_git_commit).tar.gz $(package)_download_file=$($(package)_git_commit).tar.gz -$(package)_sha256_hash=1fb331a92b63da41e95ef9db671982d243a13bcd6d25570760c9ca83b8996887 -$(package)_git_commit=36d7acf3f37570f499fc8fe79fda372e5eb873ca +$(package)_sha256_hash=ed8de6f820f4441a80457a25db022168df09ca945302d27004975b0d71c32718 +$(package)_git_commit=0ef61e6d460e49e70202f8599bbdb2d39e41d061 $(package)_dependencies=rust $(rust_crates) $(package)_patches=cargo.config diff --git a/src/zcash/prf.cpp b/src/zcash/prf.cpp index 45dfd9c27..e79bc814b 100644 --- a/src/zcash/prf.cpp +++ b/src/zcash/prf.cpp @@ -8,7 +8,7 @@ const unsigned char ZCASH_EXPANDSEED_PERSONALIZATION[crypto_generichash_blake2b_PERSONALBYTES] = {'Z','c','a','s','h','_','E','x','p','a','n','d','S','e','e','d'}; // Sapling -std::array PRF_expand(const uint256& x, unsigned char t) +std::array PRF_expand(const uint256& sk, unsigned char t) { std::array res; unsigned char blob[33]; @@ -65,6 +65,8 @@ std::array default_diversifier(const uint256& sk) if (librustzcash_check_diversifier(res.data())) { break; + } else if (blob[33] > 255) { + throw std::runtime_error("librustzcash_check_diversifier did not return valid diversifier"); } blob[33] += 1; } diff --git a/src/zcash/prf.h b/src/zcash/prf.h index 0d74f294f..f666cfa23 100644 --- a/src/zcash/prf.h +++ b/src/zcash/prf.h @@ -11,16 +11,18 @@ within the zkSNARK circuit. #include -uint256 PRF_ask(const uint256& sk); -uint256 PRF_nsk(const uint256& sk); -uint256 PRF_ovk(const uint256& sk); - -std::array default_diversifier(const uint256& sk); - +//! Sprout functions uint256 PRF_addr_a_pk(const uint252& a_sk); uint256 PRF_addr_sk_enc(const uint252& a_sk); uint256 PRF_nf(const uint252& a_sk, const uint256& rho); uint256 PRF_pk(const uint252& a_sk, size_t i0, const uint256& h_sig); uint256 PRF_rho(const uint252& phi, size_t i0, const uint256& h_sig); +//! Sapling functions +uint256 PRF_ask(const uint256& sk); +uint256 PRF_nsk(const uint256& sk); +uint256 PRF_ovk(const uint256& sk); + +std::array default_diversifier(const uint256& sk); + #endif // ZC_PRF_H_