Auto merge of #4682 - str4d:rust-crate-updates, r=str4d

Rust crate updates
This commit is contained in:
Homu 2020-08-25 23:31:57 +00:00
commit 494f0341a8
99 changed files with 835 additions and 1089 deletions

522
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -20,20 +20,20 @@ path = "src/rust/src/rustzcash.rs"
crate-type = ["staticlib"] crate-type = ["staticlib"]
[dependencies] [dependencies]
bellman = "0.6" bellman = "0.7"
blake2b_simd = "0.5"
blake2s_simd = "0.5" blake2s_simd = "0.5"
ff = "0.6" bls12_381 = "0.2"
group = "0.7"
libc = "0.2" libc = "0.2"
pairing = "0.16" jubjub = "0.4"
lazy_static = "1" subtle = "2.2"
rand_core = "0.5.1" rand_core = "0.5.1"
tracing = "0.1" tracing = "0.1"
tracing-core = "0.1" tracing-core = "0.1"
tracing-appender = "0.1" tracing-appender = "0.1"
zcash_history = "0.2" zcash_history = "0.2"
zcash_primitives = "0.2" zcash_primitives = "0.3"
zcash_proofs = "0.2" zcash_proofs = "0.3"
ed25519-zebra = "2.0.0" ed25519-zebra = "2.0.0"
[dependencies.tracing-subscriber] [dependencies.tracing-subscriber]

View File

@ -1,9 +1,9 @@
package=crate_nodrop package=crate_addchain
$(package)_crate_name=nodrop $(package)_crate_name=addchain
$(package)_version=0.1.13 $(package)_version=0.2.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945 $(package)_sha256_hash=3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_aes package=crate_aes
$(package)_crate_name=aes $(package)_crate_name=aes
$(package)_version=0.3.2 $(package)_version=0.5.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9 $(package)_sha256_hash=dd2bc6d3f370b5666245ff421e231cba4353df936e26986d2918e61a8fd6aef6
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_aes_soft package=crate_aes_soft
$(package)_crate_name=aes-soft $(package)_crate_name=aes-soft
$(package)_version=0.3.3 $(package)_version=0.5.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d $(package)_sha256_hash=63dd91889c49327ad7ef3b500fd1109dbd3c509a03db0d4a9ce413b79f575cb6
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_aesni package=crate_aesni
$(package)_crate_name=aesni $(package)_crate_name=aesni
$(package)_version=0.6.0 $(package)_version=0.8.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100 $(package)_sha256_hash=0a6fe808308bb07d393e2ea47780043ec47683fcf19cf5efc8ca51c50cc8c68a
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_arrayref package=crate_arrayref
$(package)_crate_name=arrayref $(package)_crate_name=arrayref
$(package)_version=0.3.5 $(package)_version=0.3.6
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=0d382e583f07208808f6b1249e60848879ba3543f57c32277bf52d69c2f0f0ee $(package)_sha256_hash=a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_arrayvec package=crate_arrayvec
$(package)_crate_name=arrayvec $(package)_crate_name=arrayvec
$(package)_version=0.4.11 $(package)_version=0.5.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba $(package)_sha256_hash=cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_autocfg package=crate_autocfg
$(package)_crate_name=autocfg $(package)_crate_name=autocfg
$(package)_version=1.0.0 $(package)_version=1.0.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d $(package)_sha256_hash=cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,15 +0,0 @@
package=crate_autocfg
$(package)_crate_name=autocfg
$(package)_version=0.1.6
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875
$(package)_crate_versioned_name=$($(package)_crate_name)-$($(package)_version)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_semver package=crate_base64
$(package)_crate_name=semver $(package)_crate_name=base64
$(package)_version=0.9.0 $(package)_version=0.11.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403 $(package)_sha256_hash=b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_bellman package=crate_bellman
$(package)_crate_name=bellman $(package)_crate_name=bellman
$(package)_version=0.6.0 $(package)_version=0.7.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2be536193834affcd8a6d362963e66dec8c6bca4d2009f5bac55ec9002776ff2 $(package)_sha256_hash=5768c9425f64656561f5cf2442df39f808cb762dfdc73d8f0647122d33e2c340
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_bigint package=crate_bigint
$(package)_crate_name=bigint $(package)_crate_name=bigint
$(package)_version=4.4.1 $(package)_version=4.4.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=ebecac13b3c745150d7b6c3ea7572d372f09d627c2077e893bf26c5c7f70d282 $(package)_sha256_hash=c0e8c8a600052b52482eff2cf4d810e462fdff1f656ac1ecb6232132a1ed7def
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_bit_vec package=crate_bit_vec
$(package)_crate_name=bit-vec $(package)_crate_name=bit-vec
$(package)_version=0.4.4 $(package)_version=0.6.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f $(package)_sha256_hash=5f0dc55f2d8a1a85650ac47858bb001b4c0dd73d79e3c455a842925e68d29cd3
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_blake2b_simd package=crate_blake2b_simd
$(package)_crate_name=blake2b_simd $(package)_crate_name=blake2b_simd
$(package)_version=0.5.8 $(package)_version=0.5.10
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=5850aeee1552f495dd0250014cf64b82b7c8879a89d83b33bbdace2cc4f63182 $(package)_sha256_hash=d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_blake2s_simd package=crate_blake2s_simd
$(package)_crate_name=blake2s_simd $(package)_crate_name=blake2s_simd
$(package)_version=0.5.8 $(package)_version=0.5.10
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=979da0ce13c897d6be19e005ea77ac12b0fea0157aeeee7feb8c49f91386f0ea $(package)_sha256_hash=ab9e07352b829279624ceb7c64adb4f585dacdb81d35cafae81139ccd617cf44
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_block_buffer package=crate_block_buffer
$(package)_crate_name=block-buffer $(package)_crate_name=block-buffer
$(package)_version=0.7.3 $(package)_version=0.9.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b $(package)_sha256_hash=4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -0,0 +1,15 @@
package=crate_block_cipher
$(package)_crate_name=block-cipher
$(package)_version=0.8.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f337a3e6da609650eb74e02bc9fac7b735049f7623ab12f2e4c719316fcc7e80
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,15 +0,0 @@
package=crate_block_cipher_trait
$(package)_crate_name=block-cipher-trait
$(package)_version=0.6.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -0,0 +1,15 @@
package=crate_block_modes
$(package)_crate_name=block-modes
$(package)_version=0.6.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=0c9b14fd8a4739e6548d4b6018696cf991dcf8c6effd9ef9eb33b29b8a650972
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_block_padding package=crate_block_padding
$(package)_crate_name=block-padding $(package)_crate_name=block-padding
$(package)_version=0.1.4 $(package)_version=0.2.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09 $(package)_sha256_hash=8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_c2_chacha package=crate_bls12_381
$(package)_crate_name=c2-chacha $(package)_crate_name=bls12_381
$(package)_version=0.2.2 $(package)_version=0.2.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101 $(package)_sha256_hash=d4bb0547678ace536b8bd0cb9c033cffd6a8a660b70cbe0da3bb44a1dbda8ad0
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_byteorder package=crate_byteorder
$(package)_crate_name=byteorder $(package)_crate_name=byteorder
$(package)_version=1.3.2 $(package)_version=1.3.4
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5 $(package)_sha256_hash=08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_chrono package=crate_chrono
$(package)_crate_name=chrono $(package)_crate_name=chrono
$(package)_version=0.4.13 $(package)_version=0.4.15
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=c74d84029116787153e02106bf53e66828452a4b325cc8652b788b5967c0a0b6 $(package)_sha256_hash=942f72db697d8767c22d46a598e01f2d3b475501ea43d0db4f16d90259182d0b
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_constant_time_eq package=crate_constant_time_eq
$(package)_crate_name=constant_time_eq $(package)_crate_name=constant_time_eq
$(package)_version=0.1.4 $(package)_version=0.1.5
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=995a44c877f9212528ccc74b21a232f66ad69001e40ede5bcee2ac9ef2657120 $(package)_sha256_hash=245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_fake_simd package=crate_cpuid_bool
$(package)_crate_name=fake-simd $(package)_crate_name=cpuid-bool
$(package)_version=0.1.2 $(package)_version=0.1.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed $(package)_sha256_hash=8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_crossbeam package=crate_crossbeam
$(package)_crate_name=crossbeam $(package)_crate_name=crossbeam
$(package)_version=0.7.2 $(package)_version=0.7.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2d818a4990769aac0c7ff1360e233ef3a41adcb009ebb2036bf6915eb0f6b23c $(package)_sha256_hash=69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,15 +0,0 @@
package=crate_crossbeam_channel
$(package)_crate_name=crossbeam-channel
$(package)_version=0.3.9
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa
$(package)_crate_versioned_name=$($(package)_crate_name)-$($(package)_version)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_crossbeam_deque package=crate_crossbeam_deque
$(package)_crate_name=crossbeam-deque $(package)_crate_name=crossbeam-deque
$(package)_version=0.7.1 $(package)_version=0.7.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71 $(package)_sha256_hash=9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_crossbeam_epoch package=crate_crossbeam_epoch
$(package)_crate_name=crossbeam-epoch $(package)_crate_name=crossbeam-epoch
$(package)_version=0.7.2 $(package)_version=0.8.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9 $(package)_sha256_hash=058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_crossbeam_queue package=crate_crossbeam_queue
$(package)_crate_name=crossbeam-queue $(package)_crate_name=crossbeam-queue
$(package)_version=0.1.2 $(package)_version=0.2.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b $(package)_sha256_hash=774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,15 +0,0 @@
package=crate_crossbeam_utils
$(package)_crate_name=crossbeam-utils
$(package)_version=0.6.6
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6
$(package)_crate_versioned_name=$($(package)_crate_name)-$($(package)_version)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_crypto_api_chachapoly package=crate_crypto_api_chachapoly
$(package)_crate_name=crypto_api_chachapoly $(package)_crate_name=crypto_api_chachapoly
$(package)_version=0.2.2 $(package)_version=0.4.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=95b2ad7cab08fd71addba81df5077c49df208effdfb3118a1519f9cdeac5aaf2 $(package)_sha256_hash=d930b6a026ce9d358a17f9c9046c55d90b14bb847f36b6ebb6b19365d4feffb8
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_curve25519_dalek package=crate_curve25519_dalek
$(package)_crate_name=curve25519-dalek $(package)_crate_name=curve25519-dalek
$(package)_version=2.1.0 $(package)_version=3.0.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=5d85653f070353a16313d0046f173f70d1aadd5b42600a14de626f0dfb3473a5 $(package)_sha256_hash=c8492de420e9e60bc9a1d66e2dbb91825390b738a388606600663fc529b4b307
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_digest package=crate_digest
$(package)_crate_name=digest $(package)_crate_name=digest
$(package)_version=0.8.1 $(package)_version=0.9.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5 $(package)_sha256_hash=d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_directories package=crate_directories
$(package)_crate_name=directories $(package)_crate_name=directories
$(package)_version=1.0.2 $(package)_version=3.0.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=72d337a64190607d4fcca2cb78982c5dd57f4916e19696b48a575fa746b6cb0f $(package)_sha256_hash=f8fed639d60b58d0f53498ab13d26f621fd77569cc6edb031f4cc36a2ad9da0f
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -0,0 +1,15 @@
package=crate_dirs_sys
$(package)_crate_name=dirs-sys
$(package)_version=0.3.5
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_ed25519_zebra package=crate_ed25519_zebra
$(package)_crate_name=ed25519-zebra $(package)_crate_name=ed25519-zebra
$(package)_version=2.0.0 $(package)_version=2.1.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=beeba2b02b91dc7cc2d1f42c96b9e82db4cd20ad1c326f1dbf64ac8943c7bf32 $(package)_sha256_hash=fc69a9bf9de8ad6cfa9c32db73dbe06ace3eb9a50a2f8c8520d8f453e13ae32a
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -0,0 +1,15 @@
package=crate_equihash
$(package)_crate_name=equihash
$(package)_version=0.1.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=4127688f6177e3f57521881cb1cfd90d1228214f9dc43b8efe6f6c6948cd8280
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_ff package=crate_ff
$(package)_crate_name=ff $(package)_crate_name=ff
$(package)_version=0.6.0 $(package)_version=0.7.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=c4b967a3ee6ae993f0094174257d404a5818f58be79d67a1aea1ec8996d28906 $(package)_sha256_hash=01d11efdc125f2647dde5a0f5f88010a5b0f89b700f86052afa1d148c4696047
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_ff_derive package=crate_ff_derive
$(package)_crate_name=ff_derive $(package)_crate_name=ff_derive
$(package)_version=0.6.0 $(package)_version=0.7.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=a3776aaf60a45037a9c3cabdd8542b38693acaa3e241ff957181b72579d29feb $(package)_sha256_hash=6876796d97d4a5e7f1c4a1645c5111f3acb2fc924172b78d949b8a89eb970d6a
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_fpe package=crate_fpe
$(package)_crate_name=fpe $(package)_crate_name=fpe
$(package)_version=0.2.0 $(package)_version=0.3.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=21988a326139165b75e3196bc6962ca638e5fb0c95102fbf152a3743174b01e4 $(package)_sha256_hash=ef2196a22f6d98bbde79ae510eb4f397bd446cfbd6c26425e25ec81442a31bab
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_generic_array package=crate_generic_array
$(package)_crate_name=generic-array $(package)_crate_name=generic-array
$(package)_version=0.12.3 $(package)_version=0.14.4
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec $(package)_sha256_hash=501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_getrandom package=crate_getrandom
$(package)_crate_name=getrandom $(package)_crate_name=getrandom
$(package)_version=0.1.12 $(package)_version=0.1.14
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571 $(package)_sha256_hash=7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_group package=crate_group
$(package)_crate_name=group $(package)_crate_name=group
$(package)_version=0.6.0 $(package)_version=0.7.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f15be54742789e36f03307c8fdf0621201e1345e94f1387282024178b5e9ec8c $(package)_sha256_hash=a7010d72d6222af90b421f4dbc9c1f05a6d658cce9ed35d441c3dda0ede59fee
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_byte_tools package=crate_hermit_abi
$(package)_crate_name=byte-tools $(package)_crate_name=hermit-abi
$(package)_version=0.3.1 $(package)_version=0.1.15
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7 $(package)_sha256_hash=3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,10 +1,10 @@
package=crate_hex package=crate_hex
$(package)_crate_name=hex $(package)_crate_name=hex
$(package)_version=0.3.2 $(package)_version=0.4.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77 $(package)_sha256_hash=644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35
$(package)_crate_versioned_name="$($(package)_crate_name) 0.3.2" $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package)) $(call generate_crate_checksum,$(package))

View File

@ -1,15 +0,0 @@
package=crate_hex2
$(package)_crate_name=hex
$(package)_version=0.4.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35
$(package)_crate_versioned_name="$($(package)_crate_name) 0.4.2"
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_memchr package=crate_jubjub
$(package)_crate_name=memchr $(package)_crate_name=jubjub
$(package)_version=2.3.3 $(package)_version=0.4.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400 $(package)_sha256_hash=c3b0d7e8d9439803f270fbeb2285f2818dfa989ecf47465fa4c87a59ea9c90e6
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_libc package=crate_libc
$(package)_crate_name=libc $(package)_crate_name=libc
$(package)_version=0.2.72 $(package)_version=0.2.76
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=a9f8082297d534141b30c8d39e9b1773713ab50fdbe4ff30f750d063b3bfd701 $(package)_sha256_hash=755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_log package=crate_log
$(package)_crate_name=log $(package)_crate_name=log
$(package)_version=0.4.8 $(package)_version=0.4.11
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7 $(package)_sha256_hash=4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -0,0 +1,15 @@
package=crate_maybe_uninit
$(package)_crate_name=maybe-uninit
$(package)_version=2.0.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_memoffset package=crate_memoffset
$(package)_crate_name=memoffset $(package)_crate_name=memoffset
$(package)_version=0.5.1 $(package)_version=0.5.5
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f $(package)_sha256_hash=c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_num_bigint package=crate_num_bigint
$(package)_crate_name=num-bigint $(package)_crate_name=num-bigint
$(package)_version=0.2.3 $(package)_version=0.3.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f9c3f34cdd24f334cb265d9bf8bfa8a241920d026916785747a92f0e55541a1a $(package)_sha256_hash=b7f3fc75e3697059fb1bc465e3d8cca6cf92f56854f201158b3f9c77d5a3cfa0
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_num_cpus package=crate_num_cpus
$(package)_crate_name=num_cpus $(package)_crate_name=num_cpus
$(package)_version=1.10.1 $(package)_version=1.13.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273 $(package)_sha256_hash=05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_num_integer package=crate_num_integer
$(package)_crate_name=num-integer $(package)_crate_name=num-integer
$(package)_version=0.1.41 $(package)_version=0.1.43
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09 $(package)_sha256_hash=8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_num_traits package=crate_num_traits
$(package)_crate_name=num-traits $(package)_crate_name=num-traits
$(package)_version=0.2.8 $(package)_version=0.2.12
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32 $(package)_sha256_hash=ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_opaque_debug package=crate_opaque_debug
$(package)_crate_name=opaque-debug $(package)_crate_name=opaque-debug
$(package)_version=0.2.3 $(package)_version=0.3.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c $(package)_sha256_hash=624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_pairing package=crate_pairing
$(package)_crate_name=pairing $(package)_crate_name=pairing
$(package)_version=0.16.0 $(package)_version=0.17.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b8290dea210a712682cd65031dc2b34fd132cf2729def3df7ee08f0737ff5ed6 $(package)_sha256_hash=8b6f13c321bf1105ef510ced10d0bc84ff9be6e8f593dd635af7a797b0335b91
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_ppv_lite86 package=crate_ppv_lite86
$(package)_crate_name=ppv-lite86 $(package)_crate_name=ppv-lite86
$(package)_version=0.2.5 $(package)_version=0.2.9
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b $(package)_sha256_hash=c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_proc_macro2 package=crate_proc_macro2
$(package)_crate_name=proc-macro2 $(package)_crate_name=proc-macro2
$(package)_version=1.0.3 $(package)_version=1.0.19
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8 $(package)_sha256_hash=04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_quote package=crate_quote
$(package)_crate_name=quote $(package)_crate_name=quote
$(package)_version=1.0.2 $(package)_version=1.0.7
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe $(package)_sha256_hash=aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_rand package=crate_rand
$(package)_crate_name=rand $(package)_crate_name=rand
$(package)_version=0.7.0 $(package)_version=0.7.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c $(package)_sha256_hash=6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_rand_chacha package=crate_rand_chacha
$(package)_crate_name=rand_chacha $(package)_crate_name=rand_chacha
$(package)_version=0.2.1 $(package)_version=0.2.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853 $(package)_sha256_hash=f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -0,0 +1,15 @@
package=crate_redox_syscall
$(package)_crate_name=redox_syscall
$(package)_version=0.1.57
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -0,0 +1,15 @@
package=crate_redox_users
$(package)_crate_name=redox_users
$(package)_version=0.3.4
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=09b23093265f8d200fa7b4c2c76297f47e681c655f6f1285a8780d6a022f7431
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_semver_parser package=crate_rust_argon2
$(package)_crate_name=semver-parser $(package)_crate_name=rust-argon2
$(package)_version=0.7.0 $(package)_version=0.7.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3 $(package)_sha256_hash=2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,15 +0,0 @@
package=crate_rustc_version
$(package)_crate_name=rustc_version
$(package)_version=0.2.3
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a
$(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds
$(call generate_crate_checksum,$(package))
endef
define $(package)_stage_cmds
$(call vendor_crate_source,$(package))
endef

View File

@ -1,9 +1,9 @@
package=crate_scopeguard package=crate_scopeguard
$(package)_crate_name=scopeguard $(package)_crate_name=scopeguard
$(package)_version=1.0.0 $(package)_version=1.1.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d $(package)_sha256_hash=d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_serde package=crate_serde
$(package)_crate_name=serde $(package)_crate_name=serde
$(package)_version=1.0.113 $(package)_version=1.0.115
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=6135c78461981c79497158ef777264c51d9d0f4f3fc3a4d22b915900e42dac6a $(package)_sha256_hash=e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_serde_derive package=crate_serde_derive
$(package)_crate_name=serde_derive $(package)_crate_name=serde_derive
$(package)_version=1.0.113 $(package)_version=1.0.115
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=93c5eaa17d0954cb481cdcfffe9d84fcfa7a1a9f2349271e678677be4c26ae31 $(package)_sha256_hash=609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_sha2 package=crate_sha2
$(package)_crate_name=sha2 $(package)_crate_name=sha2
$(package)_version=0.8.0 $(package)_version=0.9.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=7b4d8bfd0e469f417657573d8451fb33d16cfe0989359b93baf3a1ffc639543d $(package)_sha256_hash=2933378ddfeda7ea26f48c555bdad8bb446bf8a3d17832dc83e380d444cfb8c1
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_syn package=crate_syn
$(package)_crate_name=syn $(package)_crate_name=syn
$(package)_version=1.0.11 $(package)_version=1.0.39
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=dff0acdb207ae2fe6d5976617f887eb1e35a2ba52c13c7234c790960cdad9238 $(package)_sha256_hash=891d8d6567fe7c7f8835a3a98af4208f3846fba258c1bc3c31d6e506239f11f9
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_tracing package=crate_tracing
$(package)_crate_name=tracing $(package)_crate_name=tracing
$(package)_version=0.1.18 $(package)_version=0.1.19
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f0aae59226cf195d8e74d4b34beae1859257efb4e5fed3f147d2dc2c7d372178 $(package)_sha256_hash=6d79ca061b032d6ce30c660fded31189ca0b9922bf483cd70759f13a2d86786c
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_tracing_attributes package=crate_tracing_attributes
$(package)_crate_name=tracing-attributes $(package)_crate_name=tracing-attributes
$(package)_version=0.1.9 $(package)_version=0.1.11
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f0693bf8d6f2bf22c690fc61a9d21ac69efdbb894a17ed596b9af0f01e64b84b $(package)_sha256_hash=80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_tracing_core package=crate_tracing_core
$(package)_crate_name=tracing-core $(package)_crate_name=tracing-core
$(package)_version=0.1.13 $(package)_version=0.1.15
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=d593f98af59ebc017c0648f0117525db358745a8894a8d684e185ba3f45954f9 $(package)_sha256_hash=4f0e00789804e99b20f12bc7003ca416309d28a6f495d6af58d1e2c2842461b5
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_tracing_subscriber package=crate_tracing_subscriber
$(package)_crate_name=tracing-subscriber $(package)_crate_name=tracing-subscriber
$(package)_version=0.2.10 $(package)_version=0.2.11
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=f7b33f8b2ef2ab0c3778c12646d9c42a24f7772bee4cdafc72199644a9f58fdc $(package)_sha256_hash=abd165311cc4d7a555ad11cc77a37756df836182db0d81aac908c8184c584f40
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_typenum package=crate_typenum
$(package)_crate_name=typenum $(package)_crate_name=typenum
$(package)_version=1.11.2 $(package)_version=1.12.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9 $(package)_sha256_hash=373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_unicode_xid package=crate_unicode_xid
$(package)_crate_name=unicode-xid $(package)_crate_name=unicode-xid
$(package)_version=0.2.0 $(package)_version=0.2.1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c $(package)_sha256_hash=f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_aho_corasick package=crate_version_check
$(package)_crate_name=aho-corasick $(package)_crate_name=version_check
$(package)_version=0.7.13 $(package)_version=0.9.2
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86 $(package)_sha256_hash=b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_wasi package=crate_wasi
$(package)_crate_name=wasi $(package)_crate_name=wasi
$(package)_version=0.7.0 $(package)_version=0.9.0+wasi-snapshot-preview1
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d $(package)_sha256_hash=cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_winapi package=crate_winapi
$(package)_crate_name=winapi $(package)_crate_name=winapi
$(package)_version=0.3.8 $(package)_version=0.3.9
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6 $(package)_sha256_hash=5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_zcash_primitives package=crate_zcash_primitives
$(package)_crate_name=zcash_primitives $(package)_crate_name=zcash_primitives
$(package)_version=0.2.0 $(package)_version=0.3.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=8f33b9e4f3b4db97234fc79ea67b12f2d5778bde8f3eab6dbba52eb54c596585 $(package)_sha256_hash=c00f10013279ae11155d41b29a0d366012d4ed8c1a1886d72c247b244eb2adbc
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,9 +1,9 @@
package=crate_zcash_proofs package=crate_zcash_proofs
$(package)_crate_name=zcash_proofs $(package)_crate_name=zcash_proofs
$(package)_version=0.2.0 $(package)_version=0.3.0
$(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name) $(package)_download_path=https://static.crates.io/crates/$($(package)_crate_name)
$(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate $(package)_file_name=$($(package)_crate_name)-$($(package)_version).crate
$(package)_sha256_hash=2011f78f14d5121248d3b4f921434207b1d870fb3bf2efc7d784cae79b19bfbc $(package)_sha256_hash=a72603377d95702e4d5ed6146135d55cb38057f9e021c19a3247e109ecdf620d
$(package)_crate_versioned_name=$($(package)_crate_name) $(package)_crate_versioned_name=$($(package)_crate_name)
define $(package)_preprocess_cmds define $(package)_preprocess_cmds

View File

@ -1,33 +1,32 @@
rust_crates := \ rust_crates := \
crate_addchain \
crate_aes \ crate_aes \
crate_aesni \ crate_aesni \
crate_aes_soft \ crate_aes_soft \
crate_aho_corasick \
crate_ansi_term \ crate_ansi_term \
crate_arrayref \ crate_arrayref \
crate_arrayvec \ crate_arrayvec \
crate_autocfg_0.1 \
crate_autocfg \ crate_autocfg \
crate_base64 \
crate_bellman \ crate_bellman \
crate_bigint \ crate_bigint \
crate_bit_vec \ crate_bit_vec \
crate_blake2b_simd \ crate_blake2b_simd \
crate_blake2s_simd \ crate_blake2s_simd \
crate_block_buffer \ crate_block_buffer \
crate_block_cipher_trait \ crate_block_cipher \
crate_block_modes \
crate_block_padding \ crate_block_padding \
crate_byte_tools \ crate_bls12_381 \
crate_byteorder \ crate_byteorder \
crate_c2_chacha \
crate_cfg_if \ crate_cfg_if \
crate_chrono \ crate_chrono \
crate_constant_time_eq \ crate_constant_time_eq \
crate_crossbeam_channel_0.3 \ crate_cpuid_bool \
crate_crossbeam_channel \ crate_crossbeam_channel \
crate_crossbeam_deque \ crate_crossbeam_deque \
crate_crossbeam_epoch \ crate_crossbeam_epoch \
crate_crossbeam_queue \ crate_crossbeam_queue \
crate_crossbeam_utils_0.6 \
crate_crossbeam_utils \ crate_crossbeam_utils \
crate_crossbeam \ crate_crossbeam \
crate_crunchy \ crate_crunchy \
@ -36,8 +35,9 @@ rust_crates := \
crate_curve25519_dalek \ crate_curve25519_dalek \
crate_digest \ crate_digest \
crate_directories \ crate_directories \
crate_dirs_sys \
crate_ed25519_zebra \ crate_ed25519_zebra \
crate_fake_simd \ crate_equihash \
crate_ff_derive \ crate_ff_derive \
crate_ff \ crate_ff \
crate_fpe \ crate_fpe \
@ -46,15 +46,15 @@ rust_crates := \
crate_generic_array \ crate_generic_array \
crate_getrandom \ crate_getrandom \
crate_group \ crate_group \
crate_hermit_abi \
crate_hex \ crate_hex \
crate_hex2 \ crate_jubjub \
crate_lazy_static \ crate_lazy_static \
crate_libc \ crate_libc \
crate_log \ crate_log \
crate_matchers \ crate_matchers \
crate_memchr \ crate_maybe_uninit \
crate_memoffset \ crate_memoffset \
crate_nodrop \
crate_num_bigint \ crate_num_bigint \
crate_num_cpus \ crate_num_cpus \
crate_num_integer \ crate_num_integer \
@ -69,13 +69,13 @@ rust_crates := \
crate_rand_hc \ crate_rand_hc \
crate_rand_xorshift \ crate_rand_xorshift \
crate_rand \ crate_rand \
crate_redox_syscall \
crate_redox_users \
crate_regex_automata \ crate_regex_automata \
crate_regex_syntax \ crate_regex_syntax \
crate_regex \ crate_regex \
crate_rustc_version \ crate_rust_argon2 \
crate_scopeguard \ crate_scopeguard \
crate_semver_parser \
crate_semver \
crate_serde \ crate_serde \
crate_serde_derive \ crate_serde_derive \
crate_sha2 \ crate_sha2 \
@ -93,6 +93,7 @@ rust_crates := \
crate_tracing \ crate_tracing \
crate_typenum \ crate_typenum \
crate_unicode_xid \ crate_unicode_xid \
crate_version_check \
crate_wasi \ crate_wasi \
crate_winapi_i686_pc_windows_gnu \ crate_winapi_i686_pc_windows_gnu \
crate_winapi \ crate_winapi \

View File

@ -50,203 +50,20 @@ zeromq 4.3.2 2020-10-01
leveldb 1.19 2020-10-01 leveldb 1.19 2020-10-01
leveldb 1.20 2020-10-01 leveldb 1.20 2020-10-01
utfcpp 3.1.1 2020-10-01 utfcpp 3.1.1 2020-10-01
crate_aes 0.4.0 2020-10-01
crate_aesni 0.7.0 2020-10-01
crate_aes_soft 0.4.0 2020-10-01
crate_arrayvec 0.4.12 2020-10-01
crate_arrayvec 0.5.0 2020-10-01
crate_arrayvec 0.5.1 2020-10-01
crate_arrayref 0.3.6 2020-10-01
crate_autocfg_0.1 0.1.7 2020-10-01
crate_autocfg_0.1 1.0.0 2020-10-01
crate_bigint 4.4.2 2020-10-01
crate_bigint 4.4.3 2020-10-01
crate_blake2b_simd 0.5.9 2020-10-01
crate_blake2b_simd 0.5.10 2020-10-01
crate_blake2s_simd 0.5.9 2020-10-01
crate_blake2s_simd 0.5.10 2020-10-01
crate_bit_vec 0.5.0 2020-10-01
crate_bit_vec 0.5.1 2020-10-01
crate_bit_vec 0.6.0 2020-10-01
crate_bit_vec 0.6.1 2020-10-01
crate_bit_vec 0.6.2 2020-10-01
crate_block_cipher_trait 0.7.0 2020-10-01
crate_byteorder 1.3.3 2020-10-01
crate_byteorder 1.3.4 2020-10-01
crate_block_buffer 0.8.0 2020-10-01
crate_block_buffer 0.9.0 2020-10-01
crate_block_padding 0.1.5 2020-10-01
crate_block_padding 0.2.0 2020-10-01
crate_c2_chacha 0.2.3 2020-10-01
crate_c2_chacha 0.2.4 2020-10-01
crate_cfg_if 0.1.10 2020-10-01
crate_crunchy 0.2.1 2020-10-01
crate_crunchy 0.2.2 2020-10-01
crate_constant_time_eq 0.1.5 2020-10-01
crate_crossbeam 0.7.3 2020-10-01
crate_digest 0.9.0 2020-10-01
crate_crossbeam_channel_0.3 0.4.0 2020-10-01
crate_crossbeam_channel_0.3 0.4.1 2020-10-01
crate_crossbeam_channel_0.3 0.4.2 2020-10-01
crate_crossbeam_deque 0.7.2 2020-10-01
crate_crossbeam_deque 0.7.3 2020-10-01
crate_crossbeam_epoch 0.8.0 2020-10-01
crate_crossbeam_epoch 0.8.1 2020-10-01
crate_crossbeam_epoch 0.8.2 2020-10-01
crate_crossbeam_utils_0.6 0.7.0 2020-10-01
crate_crossbeam_utils_0.6 0.7.1 2020-10-01
crate_crossbeam_utils_0.6 0.7.2 2020-10-01
crate_crossbeam_queue 0.2.0 2020-10-01
crate_crossbeam_queue 0.2.1 2020-10-01
crate_crossbeam_queue 0.2.2 2020-10-01
crate_crossbeam_queue 0.2.3 2020-10-01
crate_crypto_api_chachapoly 0.3.0 2020-10-01
crate_crypto_api_chachapoly 0.4.0 2020-10-01
crate_crypto_api_chachapoly 0.4.1 2020-10-01
crate_crypto_api_chachapoly 0.4.2 2020-10-01
crate_directories 2.0.0 2020-10-01
crate_directories 2.0.1 2020-10-01
crate_directories 2.0.2 2020-10-01
crate_directories 3.0.0 2020-10-01
crate_getrandom 0.1.13 2020-10-01
crate_getrandom 0.1.14 2020-10-01
crate_hex 0.4.0 2020-10-01
crate_hex 0.4.1 2020-10-01
crate_hex 0.4.2 2020-10-01
crate_log 0.4.9 2020-10-01
crate_log 0.4.10 2020-10-01
crate_futures 0.2.0 2020-10-01
crate_futures 0.2.1 2020-10-01
crate_futures 0.3.0 2020-10-01
crate_futures 0.3.1 2020-10-01
crate_futures 0.3.2 2020-10-01
crate_futures 0.3.3 2020-10-01
crate_futures 0.3.4 2020-10-01
crate_futures 0.3.5 2020-10-01
crate_generic_array 0.13.0 2020-10-01
crate_generic_array 0.13.1 2020-10-01
crate_generic_array 0.13.2 2020-10-01
crate_generic_array 0.14.0 2020-10-01
crate_generic_array 0.14.1 2020-10-01
crate_generic_array 0.14.2 2020-10-01
crate_libc 0.2.63 2020-10-01
crate_libc 0.2.64 2020-10-01
crate_libc 0.2.65 2020-10-01
crate_libc 0.2.66 2020-10-01
crate_libc 0.2.67 2020-10-01
crate_libc 0.2.68 2020-10-01
crate_libc 0.2.69 2020-10-01
crate_libc 0.2.70 2020-10-01
crate_libc 0.2.71 2020-10-01
crate_nodrop 0.1.14 2020-10-01
crate_num_bigint 0.2.4 2020-10-01
crate_num_bigint 0.2.5 2020-10-01
crate_num_bigint 0.2.6 2020-10-01
crate_num_bigint 0.3.0 2020-10-01
crate_memoffset 0.5.2 2020-10-01
crate_memoffset 0.5.3 2020-10-01
crate_memoffset 0.5.4 2020-10-01
crate_ppv_lite86 0.2.6 2020-10-01
crate_ppv_lite86 0.2.7 2020-10-01
crate_ppv_lite86 0.2.8 2020-10-01
crate_proc_macro2 1.0.4 2020-10-01
crate_proc_macro2 1.0.5 2020-10-01
crate_proc_macro2 1.0.6 2020-10-01
crate_proc_macro2 1.0.7 2020-10-01
crate_proc_macro2 1.0.8 2020-10-01
crate_proc_macro2 1.0.9 2020-10-01
crate_proc_macro2 1.0.10 2020-10-01
crate_proc_macro2 1.0.11 2020-10-01
crate_proc_macro2 1.0.12 2020-10-01
crate_proc_macro2 1.0.13 2020-10-01
crate_proc_macro2 1.0.14 2020-10-01
crate_proc_macro2 1.0.15 2020-10-01
crate_proc_macro2 1.0.16 2020-10-01
crate_proc_macro2 1.0.17 2020-10-01
crate_proc_macro2 1.0.18 2020-10-01
crate_quote 1.0.3 2020-10-01
crate_quote 1.0.4 2020-10-01
crate_quote 1.0.5 2020-10-01
crate_quote 1.0.6 2020-10-01
crate_quote 1.0.7 2020-10-01
crate_num_cpus 1.11.0 2020-10-01
crate_num_cpus 1.11.1 2020-10-01
crate_num_cpus 1.12.0 2020-10-01
crate_num_cpus 1.13.0 2020-10-01
crate_num_integer 0.1.42 2020-10-01
crate_num_integer 0.1.43 2020-10-01
crate_num_traits 0.2.9 2020-10-01
crate_num_traits 0.2.10 2020-10-01
crate_num_traits 0.2.11 2020-10-01
crate_num_traits 0.2.12 2020-10-01
crate_opaque_debug 0.3.0 2020-10-01
crate_rand 0.7.1 2020-10-01
crate_rand 0.7.2 2020-10-01
crate_rand 0.7.3 2020-10-01
crate_typenum 1.12.0 2020-10-01
crate_rand_chacha 0.2.2 2020-10-01
crate_scopeguard 1.1.0 2020-10-01
crate_semver 0.10.0 2020-10-01
crate_semver_parser 0.9.0 2020-10-01
crate_sha2 0.8.1 2020-10-01
crate_sha2 0.8.2 2020-10-01
crate_sha2 0.9.0 2020-10-01
crate_sha2 0.9.1 2020-10-01
crate_syn 1.0.6 2020-10-01
crate_syn 1.0.7 2020-10-01
crate_syn 1.0.8 2020-10-01
crate_syn 1.0.9 2020-10-01
crate_syn 1.0.10 2020-10-01
crate_syn 1.0.11 2020-10-01
crate_syn 1.0.12 2020-10-01
crate_syn 1.0.13 2020-10-01
crate_syn 1.0.14 2020-10-01
crate_syn 1.0.15 2020-10-01
crate_syn 1.0.16 2020-10-01
crate_syn 1.0.17 2020-10-01
crate_syn 1.0.18 2020-10-01
crate_syn 1.0.19 2020-10-01
crate_syn 1.0.20 2020-10-01
crate_syn 1.0.21 2020-10-01
crate_syn 1.0.22 2020-10-01
crate_syn 1.0.23 2020-10-01
crate_syn 1.0.24 2020-10-01
crate_syn 1.0.25 2020-10-01
crate_syn 1.0.26 2020-10-01
crate_syn 1.0.27 2020-10-01
crate_syn 1.0.28 2020-10-01
crate_syn 1.0.29 2020-10-01
crate_syn 1.0.30 2020-10-01
crate_syn 1.0.31 2020-10-01
crate_syn 1.0.32 2020-10-01
crate_syn 1.0.33 2020-10-01
crate_unicode_xid 0.2.1 2020-10-01
libevent 2.1.12 2020-10-01 libevent 2.1.12 2020-10-01
native_ccache 3.7.11 2020-10-01 native_ccache 3.7.11 2020-10-01
crate_crossbeam_channel 0.4.3 2020-10-01
crate_crypto_api_chachapoly 0.4.3 2020-10-01
crate_directories 3.0.1 2020-10-01
crate_ed25519_zebra 2.1.0 2020-10-01
crate_ed25519_zebra 2.1.1 2020-10-01
crate_log 0.4.11 2020-10-01
crate_generic_array 0.14.3 2020-10-01
crate_libc 0.2.72 2020-10-01
crate_libc 0.2.73 2020-10-01
crate_libc 0.2.74 2020-10-01
crate_memoffset 0.5.5 2020-10-01
crate_proc_macro2 1.0.19 2020-10-01
crate_serde 1.0.114 2020-10-01
crate_serde_derive 1.0.114 2020-10-01
crate_syn 1.0.34 2020-10-01
crate_syn 1.0.35 2020-10-01
crate_syn 1.0.36 2020-10-01
crate_syn 1.0.37 2020-10-01
crate_winapi 0.3.9 2020-10-01
rust 1.45.0 2020-10-01 rust 1.45.0 2020-10-01
rust 1.45.1 2020-10-01 rust 1.45.1 2020-10-01
rust 1.45.2 2020-10-01 rust 1.45.2 2020-10-01
# The aes crate depends on "aesni ^0.8"
crate_aesni 0.9.0 2020-11-01
# The bigint crate depends on "crunchy ^0.1.5"
crate_crunchy 0.2.1 2020-11-01
crate_crunchy 0.2.2 2020-11-01
# The chrono crate depends on "time ^0.1.43", and is highly unlikely to # The chrono crate depends on "time ^0.1.43", and is highly unlikely to
# upgrade to v0.2: https://github.com/chronotope/chrono/issues/400 # upgrade to v0.2: https://github.com/chronotope/chrono/issues/400
crate_time 0.2.0 2021-02-01 crate_time 0.2.0 2021-02-01
@ -266,3 +83,30 @@ crate_time 0.2.13 2021-02-01
crate_time 0.2.14 2021-02-01 crate_time 0.2.14 2021-02-01
crate_time 0.2.15 2021-02-01 crate_time 0.2.15 2021-02-01
crate_time 0.2.16 2021-02-01 crate_time 0.2.16 2021-02-01
# The futures-cpupool crate depends on "futures ^0.1", which was last
# updated 3 years ago. We plan to move away from it when we refactor
# bellman's multicore support.
crate_futures 0.2.0 2021-02-01
crate_futures 0.2.1 2021-02-01
crate_futures 0.3.0 2021-02-01
crate_futures 0.3.1 2021-02-01
crate_futures 0.3.2 2021-02-01
crate_futures 0.3.3 2021-02-01
crate_futures 0.3.4 2021-02-01
crate_futures 0.3.5 2021-02-01
# The redox_users crate depends on:
# - "redox_syscall ^0.1"
# - "rust-argon2 ^0.7", which in turn depends on "base64 ^0.11"
crate_base64 0.12.0 2020-11-01
crate_base64 0.12.1 2020-11-01
crate_base64 0.12.2 2020-11-01
crate_base64 0.12.3 2020-11-01
crate_redox_syscall 0.2.0 2020-11-01
crate_rust_argon2 0.8.0 2020-11-01
crate_rust_argon2 0.8.1 2020-11-01
crate_rust_argon2 0.8.2 2020-11-01
# tracing 0.1.20 was yanked.
crate_tracing 0.1.20 9999-12-31

View File

@ -97,28 +97,32 @@ def get_dependency_list():
# Rust crates (filename portion: depends/packages/crate_<NAME>.mk). # Rust crates (filename portion: depends/packages/crate_<NAME>.mk).
crates = [ crates = [
"aes", "aesni", "aes_soft", "aho_corasick", "ansi_term", "addchain", "aes", "aesni", "aes_soft", "ansi_term",
"arrayvec", "arrayref", "autocfg", "autocfg_0.1", "arrayvec", "arrayref", "autocfg",
"bellman", "bigint", "blake2b_simd", "blake2s_simd", "bit_vec", "base64", "bellman", "bigint", "bit_vec", "blake2b_simd", "blake2s_simd",
"block_cipher_trait", "byteorder", "byte_tools", "block_buffer", "block_buffer", "block_cipher", "block_modes", "block_padding",
"block_padding", "c2_chacha", "cfg_if", "chrono", "crunchy", "bls12_381", "byteorder",
"curve25519_dalek", "constant_time_eq", "crossbeam", "digest", "fpe", "cfg_if", "chrono", "constant_time_eq", "cpuid_bool",
"crossbeam_channel_0.3", "crossbeam_utils_0.6",
"crossbeam_channel", "crossbeam_deque", "crossbeam_epoch", "crossbeam_channel", "crossbeam_deque", "crossbeam_epoch",
"crossbeam_utils", "crossbeam_queue", "crypto_api", "crossbeam_utils", "crossbeam_queue", "crossbeam",
"crypto_api_chachapoly", "directories", "ed25519_zebra", "fake_simd", "crunchy", "crypto_api", "crypto_api_chachapoly", "curve25519_dalek",
"ff", "ff_derive", "getrandom", "hex", "hex2", "log", "directories", "dirs_sys", "digest",
"futures_cpupool", "futures", "generic_array", "group", "ed25519_zebra", "equihash",
"lazy_static", "libc", "matchers", "memchr", "memoffset", "nodrop", "num_bigint", "ff", "ff_derive", "fpe", "futures_cpupool", "futures",
"ppv_lite86", "proc_macro2", "quote", "num_cpus", "num_integer", "generic_array", "getrandom", "group",
"num_traits", "opaque_debug", "pairing", "rand", "typenum", "hermit_abi", "hex", "jubjub", "log",
"lazy_static", "libc", "matchers", "maybe_uninit", "memoffset",
"num_bigint", "num_cpus", "num_integer", "num_traits",
"ppv_lite86", "proc_macro2", "quote",
"opaque_debug", "pairing", "rand", "typenum",
"rand_chacha", "rand_core", "rand_hc", "rand_xorshift", "rand_chacha", "rand_core", "rand_hc", "rand_xorshift",
"regex", "regex_automata", "regex_syntax", "redox_syscall", "redox_users",
"rustc_version", "scopeguard", "semver", "semver_parser", "serde", "regex", "regex_automata", "regex_syntax", "rust_argon2",
"scopeguard", "serde",
"serde_derive", "sha2", "sharded_slab", "subtle", "syn", "thiserror", "serde_derive", "sha2", "sharded_slab", "subtle", "syn", "thiserror",
"thiserror_impl", "thread_local", "time", "tracing", "tracing_appender", "thiserror_impl", "thread_local", "time", "tracing", "tracing_appender",
"tracing_attributes", "tracing_core", "tracing_subscriber", "tracing_attributes", "tracing_core", "tracing_subscriber",
"unicode_xid", "wasi", "unicode_xid", "version_check", "wasi",
"winapi_i686_pc_windows_gnu", "winapi", "winapi_i686_pc_windows_gnu", "winapi",
"winapi_x86_64_pc_windows_gnu", "zcash_history", "zcash_primitives", "winapi_x86_64_pc_windows_gnu", "zcash_history", "zcash_primitives",
"zcash_proofs", "zeroize" "zcash_proofs", "zeroize"
@ -127,10 +131,6 @@ def get_dependency_list():
# Sometimes we need multiple versions of a crate, in which case there can't # Sometimes we need multiple versions of a crate, in which case there can't
# be a direct mapping between the filename portion and the crate name. # be a direct mapping between the filename portion and the crate name.
crate_name_exceptions = { crate_name_exceptions = {
"autocfg_0.1": "autocfg",
"crossbeam_channel_0.3": "crossbeam_channel",
"crossbeam_utils_0.6": "crossbeam_utils",
"hex2": "hex"
} }
for crate in crates: for crate in crates:
@ -299,7 +299,9 @@ class DependsVersionGetter:
"package\)_version=(\d+)\.(\d+)\.(\d+)$", "package\)_version=(\d+)\.(\d+)\.(\d+)$",
"package\)_version=(\d+)\.(\d+)$", "package\)_version=(\d+)\.(\d+)$",
"package\)_version=(\d+)_(\d+)_(\d+)$", "package\)_version=(\d+)_(\d+)_(\d+)$",
"package\)_version=(\d+)\.(\d+)\.(\d+)([a-z])$" "package\)_version=(\d+)\.(\d+)\.(\d+)([a-z])$",
# Workaround for wasi 0.9.0 preview
"package\)_version=(\d+)\.(\d+)\.(\d+)\+wasi-snapshot-preview1$",
] ]
current_version = None current_version = None

View File

@ -34,13 +34,10 @@ main(int argc, char** argv)
librustzcash_init_zksnark_params( librustzcash_init_zksnark_params(
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()), reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
sapling_spend_str.length(), sapling_spend_str.length(),
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()), reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
sapling_output_str.length(), sapling_output_str.length(),
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()), reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
sprout_groth16_str.length(), sprout_groth16_str.length()
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
); );
benchmark::BenchRunner::RunAll(); benchmark::BenchRunner::RunAll();

View File

@ -31,13 +31,10 @@ int main(int argc, char **argv) {
librustzcash_init_zksnark_params( librustzcash_init_zksnark_params(
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()), reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
sapling_spend_str.length(), sapling_spend_str.length(),
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()), reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
sapling_output_str.length(), sapling_output_str.length(),
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()), reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
sprout_groth16_str.length(), sprout_groth16_str.length()
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
); );
testing::InitGoogleMock(&argc, argv); testing::InitGoogleMock(&argc, argv);

View File

@ -714,13 +714,10 @@ static void ZC_LoadParams(
librustzcash_init_zksnark_params( librustzcash_init_zksnark_params(
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()), reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
sapling_spend_str.length(), sapling_spend_str.length(),
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()), reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
sapling_output_str.length(), sapling_output_str.length(),
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()), reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
sprout_groth16_str.length(), sprout_groth16_str.length()
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
); );
gettimeofday(&tv_end, 0); gettimeofday(&tv_end, 0);

View File

@ -51,13 +51,10 @@ extern "C" {
void librustzcash_init_zksnark_params( void librustzcash_init_zksnark_params(
const codeunit* spend_path, const codeunit* spend_path,
size_t spend_path_len, size_t spend_path_len,
const char* spend_hash,
const codeunit* output_path, const codeunit* output_path,
size_t output_path_len, size_t output_path_len,
const char* output_hash,
const codeunit* sprout_path, const codeunit* sprout_path,
size_t sprout_path_len, size_t sprout_path_len
const char* sprout_hash
); );
/// Validates the provided Equihash solution against /// Validates the provided Equihash solution against
@ -207,7 +204,7 @@ extern "C" {
const unsigned char *diversifier, const unsigned char *diversifier,
const unsigned char *pk_d, const unsigned char *pk_d,
const uint64_t value, const uint64_t value,
const unsigned char *r, const unsigned char *rcm,
const unsigned char *ak, const unsigned char *ak,
const unsigned char *nk, const unsigned char *nk,
const uint64_t position, const uint64_t position,
@ -220,11 +217,11 @@ extern "C" {
/// The `pk_d` and `r` parameters must be of length 32. /// The `pk_d` and `r` parameters must be of length 32.
/// The result is also of length 32 and placed in `result`. /// The result is also of length 32 and placed in `result`.
/// Returns false if the diversifier or pk_d is not valid /// Returns false if the diversifier or pk_d is not valid
bool librustzcash_sapling_compute_cm( bool librustzcash_sapling_compute_cmu(
const unsigned char *diversifier, const unsigned char *diversifier,
const unsigned char *pk_d, const unsigned char *pk_d,
const uint64_t value, const uint64_t value,
const unsigned char *r, const unsigned char *rcm,
unsigned char *result unsigned char *result
); );

View File

@ -21,16 +21,15 @@
use bellman::groth16::{Parameters, PreparedVerifyingKey, Proof}; use bellman::groth16::{Parameters, PreparedVerifyingKey, Proof};
use blake2s_simd::Params as Blake2sParams; use blake2s_simd::Params as Blake2sParams;
use ff::{PrimeField, PrimeFieldRepr}; use bls12_381::Bls12;
use lazy_static; use group::{cofactor::CofactorGroup, GroupEncoding};
use libc::{c_char, c_uchar, size_t}; use libc::{c_uchar, size_t};
use pairing::bls12_381::{Bls12, Fr, FrRepr};
use rand_core::{OsRng, RngCore}; use rand_core::{OsRng, RngCore};
use std::ffi::CStr;
use std::fs::File; use std::fs::File;
use std::io::BufReader; use std::io::BufReader;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::slice; use std::slice;
use subtle::CtOption;
#[cfg(not(target_os = "windows"))] #[cfg(not(target_os = "windows"))]
use std::ffi::OsStr; use std::ffi::OsStr;
@ -44,19 +43,14 @@ use std::os::windows::ffi::OsStringExt;
use zcash_primitives::{ use zcash_primitives::{
block::equihash, block::equihash,
constants::CRH_IVK_PERSONALIZATION, constants::{CRH_IVK_PERSONALIZATION, PROOF_GENERATION_KEY_GENERATOR, SPENDING_KEY_GENERATOR},
jubjub::{
edwards,
fs::{Fs, FsRepr},
FixedGenerators, JubjubEngine, JubjubParams, PrimeOrder, ToUniform, Unknown,
},
merkle_tree::MerklePath, merkle_tree::MerklePath,
note_encryption::sapling_ka_agree, note_encryption::sapling_ka_agree,
primitives::{Diversifier, Note, PaymentAddress, ProofGenerationKey, ViewingKey}, primitives::{Diversifier, Note, PaymentAddress, ProofGenerationKey, Rseed, ViewingKey},
redjubjub::{self, Signature}, redjubjub::{self, Signature},
sapling::{merkle_hash, spend_sig}, sapling::{merkle_hash, spend_sig},
transaction::components::Amount, transaction::components::Amount,
zip32, JUBJUB, zip32,
}; };
use zcash_proofs::{ use zcash_proofs::{
circuit::sapling::TREE_DEPTH as SAPLING_TREE_DEPTH, circuit::sapling::TREE_DEPTH as SAPLING_TREE_DEPTH,
@ -81,26 +75,22 @@ static mut SAPLING_SPEND_PARAMS: Option<Parameters<Bls12>> = None;
static mut SAPLING_OUTPUT_PARAMS: Option<Parameters<Bls12>> = None; static mut SAPLING_OUTPUT_PARAMS: Option<Parameters<Bls12>> = None;
static mut SPROUT_GROTH16_PARAMS_PATH: Option<PathBuf> = None; static mut SPROUT_GROTH16_PARAMS_PATH: Option<PathBuf> = None;
/// Reads an FrRepr from a [u8; 32]. /// Converts CtOption<t> into Option<T>
fn read_fr(from: &[u8; 32]) -> FrRepr { fn de_ct<T>(ct: CtOption<T>) -> Option<T> {
let mut f = FrRepr::default(); if ct.is_some().into() {
f.read_le(&from[..]).expect("length is 32 bytes"); Some(ct.unwrap())
f } else {
} None
}
/// Reads an FsRepr from a [u8; 32].
fn read_fs(from: &[u8; 32]) -> FsRepr {
let mut f = <<Bls12 as JubjubEngine>::Fs as PrimeField>::Repr::default();
f.read_le(&from[..]).expect("length is 32 bytes");
f
} }
/// Reads an FsRepr from a [u8; 32] /// Reads an FsRepr from a [u8; 32]
/// and multiplies it by the given base. /// and multiplies it by the given base.
fn fixed_scalar_mult(from: &[u8; 32], p_g: FixedGenerators) -> edwards::Point<Bls12, PrimeOrder> { fn fixed_scalar_mult(from: &[u8; 32], p_g: &jubjub::SubgroupPoint) -> jubjub::SubgroupPoint {
let f = read_fs(from); // We only call this with `from` being a valid jubjub::Scalar.
let f = jubjub::Scalar::from_bytes(from).unwrap();
JUBJUB.generator(p_g).mul(f, &JUBJUB) p_g * f
} }
/// Loads the zk-SNARK parameters into memory and saves paths as necessary. /// Loads the zk-SNARK parameters into memory and saves paths as necessary.
@ -110,13 +100,10 @@ fn fixed_scalar_mult(from: &[u8; 32], p_g: FixedGenerators) -> edwards::Point<Bl
pub extern "C" fn librustzcash_init_zksnark_params( pub extern "C" fn librustzcash_init_zksnark_params(
spend_path: *const u8, spend_path: *const u8,
spend_path_len: usize, spend_path_len: usize,
spend_hash: *const c_char,
output_path: *const u8, output_path: *const u8,
output_path_len: usize, output_path_len: usize,
output_hash: *const c_char,
sprout_path: *const u8, sprout_path: *const u8,
sprout_path_len: usize, sprout_path_len: usize,
sprout_hash: *const c_char,
) { ) {
let spend_path = Path::new(OsStr::from_bytes(unsafe { let spend_path = Path::new(OsStr::from_bytes(unsafe {
slice::from_raw_parts(spend_path, spend_path_len) slice::from_raw_parts(spend_path, spend_path_len)
@ -132,14 +119,7 @@ pub extern "C" fn librustzcash_init_zksnark_params(
}))) })))
}; };
init_zksnark_params( init_zksnark_params(spend_path, output_path, sprout_path)
spend_path,
spend_hash,
output_path,
output_hash,
sprout_path,
sprout_hash,
)
} }
/// Loads the zk-SNARK parameters into memory and saves paths as necessary. /// Loads the zk-SNARK parameters into memory and saves paths as necessary.
@ -149,13 +129,10 @@ pub extern "C" fn librustzcash_init_zksnark_params(
pub extern "C" fn librustzcash_init_zksnark_params( pub extern "C" fn librustzcash_init_zksnark_params(
spend_path: *const u16, spend_path: *const u16,
spend_path_len: usize, spend_path_len: usize,
spend_hash: *const c_char,
output_path: *const u16, output_path: *const u16,
output_path_len: usize, output_path_len: usize,
output_hash: *const c_char,
sprout_path: *const u16, sprout_path: *const u16,
sprout_path_len: usize, sprout_path_len: usize,
sprout_hash: *const c_char,
) { ) {
let spend_path = let spend_path =
OsString::from_wide(unsafe { slice::from_raw_parts(spend_path, spend_path_len) }); OsString::from_wide(unsafe { slice::from_raw_parts(spend_path, spend_path_len) });
@ -171,52 +148,15 @@ pub extern "C" fn librustzcash_init_zksnark_params(
init_zksnark_params( init_zksnark_params(
Path::new(&spend_path), Path::new(&spend_path),
spend_hash,
Path::new(&output_path), Path::new(&output_path),
output_hash,
sprout_path.as_ref().map(|p| Path::new(p)), sprout_path.as_ref().map(|p| Path::new(p)),
sprout_hash,
) )
} }
fn init_zksnark_params( fn init_zksnark_params(spend_path: &Path, output_path: &Path, sprout_path: Option<&Path>) {
spend_path: &Path,
spend_hash: *const c_char,
output_path: &Path,
output_hash: *const c_char,
sprout_path: Option<&Path>,
sprout_hash: *const c_char,
) {
// Initialize jubjub parameters here
lazy_static::initialize(&JUBJUB);
let spend_hash = unsafe { CStr::from_ptr(spend_hash) }
.to_str()
.expect("hash should be a valid string");
let output_hash = unsafe { CStr::from_ptr(output_hash) }
.to_str()
.expect("hash should be a valid string");
let sprout_hash = if sprout_path.is_none() {
None
} else {
Some(
unsafe { CStr::from_ptr(sprout_hash) }
.to_str()
.expect("hash should be a valid string"),
)
};
// Load params // Load params
let (spend_params, spend_vk, output_params, output_vk, sprout_vk) = load_parameters( let (spend_params, spend_vk, output_params, output_vk, sprout_vk) =
spend_path, load_parameters(spend_path, output_path, sprout_path);
spend_hash,
output_path,
output_hash,
sprout_path,
sprout_hash,
);
// Caller is responsible for calling this function once, so // Caller is responsible for calling this function once, so
// these global mutations are safe. // these global mutations are safe.
@ -236,12 +176,12 @@ fn init_zksnark_params(
/// `result` must be a valid pointer to 32 bytes which will be written. /// `result` must be a valid pointer to 32 bytes which will be written.
#[no_mangle] #[no_mangle]
pub extern "C" fn librustzcash_tree_uncommitted(result: *mut [c_uchar; 32]) { pub extern "C" fn librustzcash_tree_uncommitted(result: *mut [c_uchar; 32]) {
let tmp = Note::<Bls12>::uncommitted().into_repr(); let tmp = Note::uncommitted().to_bytes();
// Should be okay, caller is responsible for ensuring the pointer // Should be okay, caller is responsible for ensuring the pointer
// is a valid pointer to 32 bytes that can be mutated. // is a valid pointer to 32 bytes that can be mutated.
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
tmp.write_le(&mut result[..]).expect("length is 32 bytes"); *result = tmp;
} }
/// Computes a merkle tree hash for a given depth. The `depth` parameter should /// Computes a merkle tree hash for a given depth. The `depth` parameter should
@ -259,21 +199,13 @@ pub extern "C" fn librustzcash_merkle_hash(
result: *mut [c_uchar; 32], result: *mut [c_uchar; 32],
) { ) {
// Should be okay, because caller is responsible for ensuring // Should be okay, because caller is responsible for ensuring
// the pointer is a valid pointer to 32 bytes, and that is the // the pointers are valid pointers to 32 bytes.
// size of the representation let tmp = merkle_hash(depth, unsafe { &*a }, unsafe { &*b });
let a_repr = read_fr(unsafe { &*a });
// Should be okay, because caller is responsible for ensuring
// the pointer is a valid pointer to 32 bytes, and that is the
// size of the representation
let b_repr = read_fr(unsafe { &*b });
let tmp = merkle_hash(depth, &a_repr, &b_repr);
// Should be okay, caller is responsible for ensuring the pointer // Should be okay, caller is responsible for ensuring the pointer
// is a valid pointer to 32 bytes that can be mutated. // is a valid pointer to 32 bytes that can be mutated.
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
tmp.write_le(&mut result[..]).expect("length is 32 bytes"); *result = tmp;
} }
#[no_mangle] // ToScalar #[no_mangle] // ToScalar
@ -281,33 +213,31 @@ pub extern "C" fn librustzcash_to_scalar(input: *const [c_uchar; 64], result: *m
// Should be okay, because caller is responsible for ensuring // Should be okay, because caller is responsible for ensuring
// the pointer is a valid pointer to 32 bytes, and that is the // the pointer is a valid pointer to 32 bytes, and that is the
// size of the representation // size of the representation
let scalar = <Bls12 as JubjubEngine>::Fs::to_uniform(unsafe { &(&*input)[..] }).into_repr(); let scalar = jubjub::Scalar::from_bytes_wide(unsafe { &*input });
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
scalar *result = scalar.to_bytes();
.write_le(&mut result[..])
.expect("length is 32 bytes");
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn librustzcash_ask_to_ak(ask: *const [c_uchar; 32], result: *mut [c_uchar; 32]) { pub extern "C" fn librustzcash_ask_to_ak(ask: *const [c_uchar; 32], result: *mut [c_uchar; 32]) {
let ask = unsafe { &*ask }; let ask = unsafe { &*ask };
let ak = fixed_scalar_mult(ask, FixedGenerators::SpendingKeyGenerator); let ak = fixed_scalar_mult(ask, &SPENDING_KEY_GENERATOR);
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
ak.write(&mut result[..]).expect("length is 32 bytes"); *result = ak.to_bytes();
} }
#[no_mangle] #[no_mangle]
pub extern "C" fn librustzcash_nsk_to_nk(nsk: *const [c_uchar; 32], result: *mut [c_uchar; 32]) { pub extern "C" fn librustzcash_nsk_to_nk(nsk: *const [c_uchar; 32], result: *mut [c_uchar; 32]) {
let nsk = unsafe { &*nsk }; let nsk = unsafe { &*nsk };
let nk = fixed_scalar_mult(nsk, FixedGenerators::ProofGenerationKey); let nk = fixed_scalar_mult(nsk, &PROOF_GENERATION_KEY_GENERATOR);
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
nk.write(&mut result[..]).expect("length is 32 bytes"); *result = nk.to_bytes();
} }
#[no_mangle] #[no_mangle]
@ -338,7 +268,7 @@ pub extern "C" fn librustzcash_crh_ivk(
#[no_mangle] #[no_mangle]
pub extern "C" fn librustzcash_check_diversifier(diversifier: *const [c_uchar; 11]) -> bool { pub extern "C" fn librustzcash_check_diversifier(diversifier: *const [c_uchar; 11]) -> bool {
let diversifier = Diversifier(unsafe { *diversifier }); let diversifier = Diversifier(unsafe { *diversifier });
diversifier.g_d::<Bls12>(&JUBJUB).is_some() diversifier.g_d().is_some()
} }
#[no_mangle] #[no_mangle]
@ -347,14 +277,14 @@ pub extern "C" fn librustzcash_ivk_to_pkd(
diversifier: *const [c_uchar; 11], diversifier: *const [c_uchar; 11],
result: *mut [c_uchar; 32], result: *mut [c_uchar; 32],
) -> bool { ) -> bool {
let ivk = read_fs(unsafe { &*ivk }); let ivk = de_ct(jubjub::Scalar::from_bytes(unsafe { &*ivk }));
let diversifier = Diversifier(unsafe { *diversifier }); let diversifier = Diversifier(unsafe { *diversifier });
if let Some(g_d) = diversifier.g_d::<Bls12>(&JUBJUB) { if let (Some(ivk), Some(g_d)) = (ivk, diversifier.g_d()) {
let pk_d = g_d.mul(ivk, &JUBJUB); let pk_d = g_d * ivk;
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
pk_d.write(&mut result[..]).expect("length is 32 bytes"); *result = pk_d.to_bytes();
true true
} else { } else {
@ -374,11 +304,8 @@ fn test_gen_r() {
assert_ne!(r1, r2); assert_ne!(r1, r2);
// Verify r values are valid in the field // Verify r values are valid in the field
let mut repr = FsRepr::default(); let _ = jubjub::Scalar::from_bytes(&r1).unwrap();
repr.read_le(&r1[..]).expect("length is not 32 bytes"); let _ = jubjub::Scalar::from_bytes(&r2).unwrap();
let _ = Fs::from_repr(repr).unwrap();
repr.read_le(&r2[..]).expect("length is not 32 bytes");
let _ = Fs::from_repr(repr).unwrap();
} }
/// Generate uniformly random scalar in Jubjub. The result is of length 32. /// Generate uniformly random scalar in Jubjub. The result is of length 32.
@ -390,11 +317,9 @@ pub extern "C" fn librustzcash_sapling_generate_r(result: *mut [c_uchar; 32]) {
rng.fill_bytes(&mut buffer); rng.fill_bytes(&mut buffer);
// reduce to uniform value // reduce to uniform value
let r = <Bls12 as JubjubEngine>::Fs::to_uniform(&buffer[..]); let r = jubjub::Scalar::from_bytes_wide(&buffer);
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
r.into_repr() *result = r.to_bytes();
.write_le(&mut result[..])
.expect("result must be 32 bytes");
} }
// Private utility function to get Note from C parameters // Private utility function to get Note from C parameters
@ -402,24 +327,25 @@ fn priv_get_note(
diversifier: *const [c_uchar; 11], diversifier: *const [c_uchar; 11],
pk_d: *const [c_uchar; 32], pk_d: *const [c_uchar; 32],
value: u64, value: u64,
r: *const [c_uchar; 32], rcm: *const [c_uchar; 32],
) -> Result<Note<Bls12>, ()> { ) -> Result<Note, ()> {
let diversifier = Diversifier(unsafe { *diversifier }); let diversifier = Diversifier(unsafe { *diversifier });
let g_d = diversifier.g_d::<Bls12>(&JUBJUB).ok_or(())?; let g_d = diversifier.g_d().ok_or(())?;
let pk_d = edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*pk_d })[..], &JUBJUB) let pk_d = de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*pk_d })).ok_or(())?;
.map_err(|_| ())?;
let pk_d = pk_d.as_prime_order(&JUBJUB).ok_or(())?; let pk_d = de_ct(pk_d.into_subgroup()).ok_or(())?;
// Deserialize randomness // Deserialize randomness
let r = Fs::from_repr(read_fs(unsafe { &*r })).map_err(|_| ())?; // If this is after ZIP 212, the caller has calculated rcm, and we don't need to call
// Note::derive_esk, so we just pretend the note was using this rcm all along.
let rseed = Rseed::BeforeZip212(de_ct(jubjub::Scalar::from_bytes(unsafe { &*rcm })).ok_or(())?);
let note = Note { let note = Note {
value, value,
g_d, g_d,
pk_d, pk_d,
r, rseed,
}; };
Ok(note) Ok(note)
@ -436,39 +362,39 @@ pub extern "C" fn librustzcash_sapling_compute_nf(
diversifier: *const [c_uchar; 11], diversifier: *const [c_uchar; 11],
pk_d: *const [c_uchar; 32], pk_d: *const [c_uchar; 32],
value: u64, value: u64,
r: *const [c_uchar; 32], rcm: *const [c_uchar; 32],
ak: *const [c_uchar; 32], ak: *const [c_uchar; 32],
nk: *const [c_uchar; 32], nk: *const [c_uchar; 32],
position: u64, position: u64,
result: *mut [c_uchar; 32], result: *mut [c_uchar; 32],
) -> bool { ) -> bool {
let note = match priv_get_note(diversifier, pk_d, value, r) { let note = match priv_get_note(diversifier, pk_d, value, rcm) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
let ak = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*ak })[..], &JUBJUB) { let ak = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*ak })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
let ak = match ak.as_prime_order(&JUBJUB) { let ak = match de_ct(ak.into_subgroup()) {
Some(ak) => ak, Some(ak) => ak,
None => return false, None => return false,
}; };
let nk = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*nk })[..], &JUBJUB) { let nk = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*nk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
let nk = match nk.as_prime_order(&JUBJUB) { let nk = match de_ct(nk.into_subgroup()) {
Some(nk) => nk, Some(nk) => nk,
None => return false, None => return false,
}; };
let vk = ViewingKey { ak, nk }; let vk = ViewingKey { ak, nk };
let nf = note.nf(&vk, position, &JUBJUB); let nf = note.nf(&vk, position);
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
result.copy_from_slice(&nf); result.copy_from_slice(&nf);
@ -482,23 +408,20 @@ pub extern "C" fn librustzcash_sapling_compute_nf(
/// The result is also of length 32 and placed in `result`. /// The result is also of length 32 and placed in `result`.
/// Returns false if `diversifier` or `pk_d` is not valid. /// Returns false if `diversifier` or `pk_d` is not valid.
#[no_mangle] #[no_mangle]
pub extern "C" fn librustzcash_sapling_compute_cm( pub extern "C" fn librustzcash_sapling_compute_cmu(
diversifier: *const [c_uchar; 11], diversifier: *const [c_uchar; 11],
pk_d: *const [c_uchar; 32], pk_d: *const [c_uchar; 32],
value: u64, value: u64,
r: *const [c_uchar; 32], rcm: *const [c_uchar; 32],
result: *mut [c_uchar; 32], result: *mut [c_uchar; 32],
) -> bool { ) -> bool {
let note = match priv_get_note(diversifier, pk_d, value, r) { let note = match priv_get_note(diversifier, pk_d, value, rcm) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
note.cm(&JUBJUB) *result = note.cmu().to_bytes();
.into_repr()
.write_le(&mut result[..])
.expect("length is 32 bytes");
true true
} }
@ -514,15 +437,15 @@ pub extern "C" fn librustzcash_sapling_ka_agree(
result: *mut [c_uchar; 32], result: *mut [c_uchar; 32],
) -> bool { ) -> bool {
// Deserialize p // Deserialize p
let p = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*p })[..], &JUBJUB) { let p = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*p })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Deserialize sk // Deserialize sk
let sk = match Fs::from_repr(read_fs(unsafe { &*sk })) { let sk = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*sk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Compute key agreement // Compute key agreement
@ -530,7 +453,7 @@ pub extern "C" fn librustzcash_sapling_ka_agree(
// Produce result // Produce result
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
ka.write(&mut result[..]).expect("length is not 32 bytes"); *result = ka.to_bytes();
true true
} }
@ -547,21 +470,21 @@ pub extern "C" fn librustzcash_sapling_ka_derivepublic(
let diversifier = Diversifier(unsafe { *diversifier }); let diversifier = Diversifier(unsafe { *diversifier });
// Compute g_d from the diversifier // Compute g_d from the diversifier
let g_d = match diversifier.g_d::<Bls12>(&JUBJUB) { let g_d = match diversifier.g_d() {
Some(g) => g, Some(g) => g,
None => return false, None => return false,
}; };
// Deserialize esk // Deserialize esk
let esk = match Fs::from_repr(read_fs(unsafe { &*esk })) { let esk = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*esk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
let p = g_d.mul(esk, &JUBJUB); let p = g_d * esk;
let result = unsafe { &mut *result }; let result = unsafe { &mut *result };
p.write(&mut result[..]).expect("length is not 32 bytes"); *result = p.to_bytes();
true true
} }
@ -585,7 +508,7 @@ pub extern "C" fn librustzcash_eh_isvalid(
let rs_input = unsafe { slice::from_raw_parts(input, input_len) }; let rs_input = unsafe { slice::from_raw_parts(input, input_len) };
let rs_nonce = unsafe { slice::from_raw_parts(nonce, nonce_len) }; let rs_nonce = unsafe { slice::from_raw_parts(nonce, nonce_len) };
let rs_soln = unsafe { slice::from_raw_parts(soln, soln_len) }; let rs_soln = unsafe { slice::from_raw_parts(soln, soln_len) };
equihash::is_valid_solution(n, k, rs_input, rs_nonce, rs_soln) equihash::is_valid_solution(n, k, rs_input, rs_nonce, rs_soln).is_ok()
} }
/// Creates a Sapling verification context. Please free this when you're done. /// Creates a Sapling verification context. Please free this when you're done.
@ -621,20 +544,20 @@ pub extern "C" fn librustzcash_sapling_check_spend(
sighash_value: *const [c_uchar; 32], sighash_value: *const [c_uchar; 32],
) -> bool { ) -> bool {
// Deserialize the value commitment // Deserialize the value commitment
let cv = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*cv })[..], &JUBJUB) { let cv = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*cv })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Deserialize the anchor, which should be an element // Deserialize the anchor, which should be an element
// of Fr. // of Fr.
let anchor = match Fr::from_repr(read_fr(unsafe { &*anchor })) { let anchor = match de_ct(bls12_381::Scalar::from_bytes(unsafe { &*anchor })) {
Ok(a) => a, Some(a) => a,
Err(_) => return false, None => return false,
}; };
// Deserialize rk // Deserialize rk
let rk = match redjubjub::PublicKey::<Bls12>::read(&(unsafe { &*rk })[..], &JUBJUB) { let rk = match redjubjub::PublicKey::read(&(unsafe { &*rk })[..]) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
@ -646,7 +569,7 @@ pub extern "C" fn librustzcash_sapling_check_spend(
}; };
// Deserialize the proof // Deserialize the proof
let zkproof = match Proof::<Bls12>::read(&(unsafe { &*zkproof })[..]) { let zkproof = match Proof::read(&(unsafe { &*zkproof })[..]) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
@ -660,7 +583,6 @@ pub extern "C" fn librustzcash_sapling_check_spend(
spend_auth_sig, spend_auth_sig,
zkproof, zkproof,
unsafe { SAPLING_SPEND_VK.as_ref() }.unwrap(), unsafe { SAPLING_SPEND_VK.as_ref() }.unwrap(),
&JUBJUB,
) )
} }
@ -675,26 +597,26 @@ pub extern "C" fn librustzcash_sapling_check_output(
zkproof: *const [c_uchar; GROTH_PROOF_SIZE], zkproof: *const [c_uchar; GROTH_PROOF_SIZE],
) -> bool { ) -> bool {
// Deserialize the value commitment // Deserialize the value commitment
let cv = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*cv })[..], &JUBJUB) { let cv = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*cv })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Deserialize the commitment, which should be an element // Deserialize the commitment, which should be an element
// of Fr. // of Fr.
let cm = match Fr::from_repr(read_fr(unsafe { &*cm })) { let cm = match de_ct(bls12_381::Scalar::from_bytes(unsafe { &*cm })) {
Ok(a) => a, Some(a) => a,
Err(_) => return false, None => return false,
}; };
// Deserialize the ephemeral key // Deserialize the ephemeral key
let epk = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*epk })[..], &JUBJUB) { let epk = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*epk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Deserialize the proof // Deserialize the proof
let zkproof = match Proof::<Bls12>::read(&(unsafe { &*zkproof })[..]) { let zkproof = match Proof::read(&(unsafe { &*zkproof })[..]) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
@ -705,7 +627,6 @@ pub extern "C" fn librustzcash_sapling_check_output(
epk, epk,
zkproof, zkproof,
unsafe { SAPLING_OUTPUT_VK.as_ref() }.unwrap(), unsafe { SAPLING_OUTPUT_VK.as_ref() }.unwrap(),
&JUBJUB,
) )
} }
@ -729,12 +650,7 @@ pub extern "C" fn librustzcash_sapling_final_check(
Err(_) => return false, Err(_) => return false,
}; };
unsafe { &*ctx }.final_check( unsafe { &*ctx }.final_check(value_balance, unsafe { &*sighash_value }, binding_sig)
value_balance,
unsafe { &*sighash_value },
binding_sig,
&JUBJUB,
)
} }
/// Sprout JoinSplit proof generation. /// Sprout JoinSplit proof generation.
@ -784,7 +700,7 @@ pub extern "C" fn librustzcash_sprout_prove(
let mut sprout_fs = BufReader::with_capacity(1024 * 1024, sprout_fs); let mut sprout_fs = BufReader::with_capacity(1024 * 1024, sprout_fs);
let params = Parameters::<Bls12>::read(&mut sprout_fs, false) let params = Parameters::read(&mut sprout_fs, false)
.expect("couldn't deserialize Sprout JoinSplit parameters file"); .expect("couldn't deserialize Sprout JoinSplit parameters file");
drop(sprout_fs); drop(sprout_fs);
@ -863,22 +779,21 @@ pub extern "C" fn librustzcash_sapling_output_proof(
zkproof: *mut [c_uchar; GROTH_PROOF_SIZE], zkproof: *mut [c_uchar; GROTH_PROOF_SIZE],
) -> bool { ) -> bool {
// Grab `esk`, which the caller should have constructed for the DH key exchange. // Grab `esk`, which the caller should have constructed for the DH key exchange.
let esk = match Fs::from_repr(read_fs(unsafe { &*esk })) { let esk = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*esk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Grab the payment address from the caller // Grab the payment address from the caller
let payment_address = let payment_address = match PaymentAddress::from_bytes(unsafe { &*payment_address }) {
match PaymentAddress::<Bls12>::from_bytes(unsafe { &*payment_address }, &JUBJUB) { Some(pa) => pa,
Some(pa) => pa, None => return false,
None => return false, };
};
// The caller provides the commitment randomness for the output note // The caller provides the commitment randomness for the output note
let rcm = match Fs::from_repr(read_fs(unsafe { &*rcm })) { let rcm = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*rcm })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Create proof // Create proof
@ -888,7 +803,6 @@ pub extern "C" fn librustzcash_sapling_output_proof(
rcm, rcm,
value, value,
unsafe { SAPLING_OUTPUT_PARAMS.as_ref() }.unwrap(), unsafe { SAPLING_OUTPUT_PARAMS.as_ref() }.unwrap(),
&JUBJUB,
); );
// Write the proof out to the caller // Write the proof out to the caller
@ -897,9 +811,7 @@ pub extern "C" fn librustzcash_sapling_output_proof(
.expect("should be able to serialize a proof"); .expect("should be able to serialize a proof");
// Write the value commitment to the caller // Write the value commitment to the caller
value_commitment *unsafe { &mut *cv } = value_commitment.to_bytes();
.write(&mut (unsafe { &mut *cv })[..])
.expect("should be able to serialize rcv");
true true
} }
@ -917,13 +829,13 @@ pub extern "C" fn librustzcash_sapling_spend_sig(
result: *mut [c_uchar; 64], result: *mut [c_uchar; 64],
) -> bool { ) -> bool {
// The caller provides the re-randomization of `ak`. // The caller provides the re-randomization of `ak`.
let ar = match Fs::from_repr(read_fs(unsafe { &*ar })) { let ar = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*ar })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// The caller provides `ask`, the spend authorizing key. // The caller provides `ask`, the spend authorizing key.
let ask = match redjubjub::PrivateKey::<Bls12>::read(&(unsafe { &*ask })[..]) { let ask = match redjubjub::PrivateKey::read(&(unsafe { &*ask })[..]) {
Ok(p) => p, Ok(p) => p,
Err(_) => return false, Err(_) => return false,
}; };
@ -932,7 +844,7 @@ pub extern "C" fn librustzcash_sapling_spend_sig(
let mut rng = OsRng; let mut rng = OsRng;
// Do the signing // Do the signing
let sig = spend_sig(ask, ar, unsafe { &*sighash }, &mut rng, &JUBJUB); let sig = spend_sig(ask, ar, unsafe { &*sighash }, &mut rng);
// Write out the signature // Write out the signature
sig.write(&mut (unsafe { &mut *result })[..]) sig.write(&mut (unsafe { &mut *result })[..])
@ -958,7 +870,7 @@ pub extern "C" fn librustzcash_sapling_binding_sig(
}; };
// Sign // Sign
let sig = match unsafe { &*ctx }.binding_sig(value_balance, unsafe { &*sighash }, &JUBJUB) { let sig = match unsafe { &*ctx }.binding_sig(value_balance, unsafe { &*sighash }) {
Ok(s) => s, Ok(s) => s,
Err(_) => return false, Err(_) => return false,
}; };
@ -989,21 +901,21 @@ pub extern "C" fn librustzcash_sapling_spend_proof(
zkproof: *mut [c_uchar; GROTH_PROOF_SIZE], zkproof: *mut [c_uchar; GROTH_PROOF_SIZE],
) -> bool { ) -> bool {
// Grab `ak` from the caller, which should be a point. // Grab `ak` from the caller, which should be a point.
let ak = match edwards::Point::<Bls12, Unknown>::read(&(unsafe { &*ak })[..], &JUBJUB) { let ak = match de_ct(jubjub::ExtendedPoint::from_bytes(unsafe { &*ak })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// `ak` should be prime order. // `ak` should be prime order.
let ak = match ak.as_prime_order(&JUBJUB) { let ak = match de_ct(ak.into_subgroup()) {
Some(p) => p, Some(p) => p,
None => return false, None => return false,
}; };
// Grab `nsk` from the caller // Grab `nsk` from the caller
let nsk = match Fs::from_repr(read_fs(unsafe { &*nsk })) { let nsk = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*nsk })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Construct the proof generation key // Construct the proof generation key
@ -1016,21 +928,23 @@ pub extern "C" fn librustzcash_sapling_spend_proof(
let diversifier = Diversifier(unsafe { *diversifier }); let diversifier = Diversifier(unsafe { *diversifier });
// The caller chooses the note randomness // The caller chooses the note randomness
let rcm = match Fs::from_repr(read_fs(unsafe { &*rcm })) { // If this is after ZIP 212, the caller has calculated rcm, and we don't need to call
Ok(p) => p, // Note::derive_esk, so we just pretend the note was using this rcm all along.
Err(_) => return false, let rseed = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*rcm })) {
Some(p) => Rseed::BeforeZip212(p),
None => return false,
}; };
// The caller also chooses the re-randomization of ak // The caller also chooses the re-randomization of ak
let ar = match Fs::from_repr(read_fs(unsafe { &*ar })) { let ar = match de_ct(jubjub::Scalar::from_bytes(unsafe { &*ar })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// We need to compute the anchor of the Spend. // We need to compute the anchor of the Spend.
let anchor = match Fr::from_repr(read_fr(unsafe { &*anchor })) { let anchor = match de_ct(bls12_381::Scalar::from_bytes(unsafe { &*anchor })) {
Ok(p) => p, Some(p) => p,
Err(_) => return false, None => return false,
}; };
// Parse the Merkle path from the caller // Parse the Merkle path from the caller
@ -1044,21 +958,18 @@ pub extern "C" fn librustzcash_sapling_spend_proof(
.spend_proof( .spend_proof(
proof_generation_key, proof_generation_key,
diversifier, diversifier,
rcm, rseed,
ar, ar,
value, value,
anchor, anchor,
merkle_path, merkle_path,
unsafe { SAPLING_SPEND_PARAMS.as_ref() }.unwrap(), unsafe { SAPLING_SPEND_PARAMS.as_ref() }.unwrap(),
unsafe { SAPLING_SPEND_VK.as_ref() }.unwrap(), unsafe { SAPLING_SPEND_VK.as_ref() }.unwrap(),
&JUBJUB,
) )
.expect("proving should not fail"); .expect("proving should not fail");
// Write value commitment to caller // Write value commitment to caller
value_commitment *unsafe { &mut *cv } = value_commitment.to_bytes();
.write(&mut unsafe { &mut *cv }[..])
.expect("should be able to serialize cv");
// Write proof out to caller // Write proof out to caller
proof proof

View File

@ -1,7 +1,5 @@
use ff::{PrimeField, PrimeFieldRepr}; use group::{Group, GroupEncoding};
use pairing::bls12_381::Bls12;
use rand_core::{OsRng, RngCore}; use rand_core::{OsRng, RngCore};
use zcash_primitives::jubjub::{edwards, JubjubBls12};
use zcash_primitives::primitives::{Diversifier, ViewingKey}; use zcash_primitives::primitives::{Diversifier, ViewingKey};
use crate::{ use crate::{
@ -11,20 +9,19 @@ use crate::{
#[test] #[test]
fn test_key_agreement() { fn test_key_agreement() {
let params = JubjubBls12::new();
let mut rng = OsRng; let mut rng = OsRng;
// Create random viewing key // Create random viewing key
let vk = ViewingKey::<Bls12> { let vk = ViewingKey {
ak: edwards::Point::rand(&mut rng, &params).mul_by_cofactor(&params), ak: jubjub::SubgroupPoint::random(&mut rng),
nk: edwards::Point::rand(&mut rng, &params).mul_by_cofactor(&params), nk: jubjub::SubgroupPoint::random(&mut rng),
}; };
// Create a random address with the viewing key // Create a random address with the viewing key
let addr = loop { let addr = loop {
let mut d = [0; 11]; let mut d = [0; 11];
rng.fill_bytes(&mut d); rng.fill_bytes(&mut d);
match vk.to_payment_address(Diversifier(d), &params) { match vk.to_payment_address(Diversifier(d)) {
Some(a) => break a, Some(a) => break a,
None => {} None => {}
} }
@ -32,8 +29,7 @@ fn test_key_agreement() {
// Grab ivk from our viewing key in serialized form // Grab ivk from our viewing key in serialized form
let ivk = vk.ivk(); let ivk = vk.ivk();
let mut ivk_serialized = [0u8; 32]; let ivk_serialized = ivk.to_bytes();
ivk.into_repr().write_le(&mut ivk_serialized[..]).unwrap();
// Create random esk // Create random esk
let mut esk = [0u8; 32]; let mut esk = [0u8; 32];
@ -45,8 +41,7 @@ fn test_key_agreement() {
let mut shared_secret_sender = [0u8; 32]; let mut shared_secret_sender = [0u8; 32];
// Serialize pk_d for the call to librustzcash_sapling_ka_agree // Serialize pk_d for the call to librustzcash_sapling_ka_agree
let mut addr_pk_d = [0u8; 32]; let addr_pk_d = addr.pk_d().to_bytes();
addr.pk_d().write(&mut addr_pk_d[..]).unwrap();
assert!(librustzcash_sapling_ka_agree( assert!(librustzcash_sapling_ka_agree(
&addr_pk_d, &addr_pk_d,

View File

@ -1,12 +1,9 @@
use ff::{PrimeField, PrimeFieldRepr}; use group::GroupEncoding;
use pairing::bls12_381::Bls12;
use zcash_primitives::{ use zcash_primitives::{
jubjub::{fs::FsRepr, FixedGenerators, JubjubEngine, JubjubParams}, constants::SPENDING_KEY_GENERATOR,
primitives::{Diversifier, ProofGenerationKey}, primitives::{Diversifier, ProofGenerationKey, Rseed},
}; };
use super::JUBJUB;
use crate::{ use crate::{
librustzcash_ask_to_ak, librustzcash_check_diversifier, librustzcash_crh_ivk, librustzcash_ask_to_ak, librustzcash_check_diversifier, librustzcash_crh_ivk,
librustzcash_ivk_to_pkd, librustzcash_nsk_to_nk, librustzcash_ivk_to_pkd, librustzcash_nsk_to_nk,
@ -657,20 +654,11 @@ fn key_components() {
]; ];
for tv in test_vectors { for tv in test_vectors {
let mut ask_repr = FsRepr::default(); let ask = jubjub::Scalar::from_bytes(&tv.ask).unwrap();
let mut nsk_repr = FsRepr::default(); let nsk = jubjub::Scalar::from_bytes(&tv.nsk).unwrap();
ask_repr.read_le(&tv.ask[..]).unwrap();
nsk_repr.read_le(&tv.nsk[..]).unwrap();
let nsk = <Bls12 as JubjubEngine>::Fs::from_repr(nsk_repr).unwrap();
let ak = JUBJUB let ak = SPENDING_KEY_GENERATOR * ask;
.generator(FixedGenerators::SpendingKeyGenerator) assert_eq!(&ak.to_bytes(), &tv.ak);
.mul(ask_repr.clone(), &JUBJUB);
{
let mut vec = Vec::new();
ak.write(&mut vec).unwrap();
assert_eq!(&vec, &tv.ak);
}
{ {
let mut ak = [0u8; 32]; let mut ak = [0u8; 32];
librustzcash_ask_to_ak(&tv.ask, &mut ak); librustzcash_ask_to_ak(&tv.ask, &mut ak);
@ -678,23 +666,15 @@ fn key_components() {
} }
let pgk = ProofGenerationKey { ak, nsk }; let pgk = ProofGenerationKey { ak, nsk };
let fvk = pgk.to_viewing_key(&JUBJUB); let fvk = pgk.to_viewing_key();
{ assert_eq!(&fvk.nk.to_bytes(), &tv.nk);
let mut vec = Vec::new();
fvk.nk.write(&mut vec).unwrap();
assert_eq!(&vec, &tv.nk);
}
{ {
let mut nk = [0u8; 32]; let mut nk = [0u8; 32];
librustzcash_nsk_to_nk(&tv.nsk, &mut nk); librustzcash_nsk_to_nk(&tv.nsk, &mut nk);
assert_eq!(&nk, &tv.nk); assert_eq!(&nk, &tv.nk);
} }
{ assert_eq!(&fvk.ivk().to_bytes(), &tv.ivk);
let mut vec = Vec::new();
fvk.ivk().into_repr().write_le(&mut vec).unwrap();
assert_eq!(&vec, &tv.ivk);
}
{ {
let mut ivk = [0u8; 32]; let mut ivk = [0u8; 32];
librustzcash_crh_ivk(&tv.ak, &tv.nk, &mut ivk); librustzcash_crh_ivk(&tv.ak, &tv.nk, &mut ivk);
@ -704,28 +684,20 @@ fn key_components() {
let diversifier = Diversifier(tv.default_d); let diversifier = Diversifier(tv.default_d);
assert!(librustzcash_check_diversifier(&tv.default_d)); assert!(librustzcash_check_diversifier(&tv.default_d));
let addr = fvk.to_payment_address(diversifier, &JUBJUB).unwrap(); let addr = fvk.to_payment_address(diversifier).unwrap();
{ assert_eq!(&addr.pk_d().to_bytes(), &tv.default_pk_d);
let mut vec = Vec::new();
addr.pk_d().write(&mut vec).unwrap();
assert_eq!(&vec, &tv.default_pk_d);
}
{ {
let mut default_pk_d = [0u8; 32]; let mut default_pk_d = [0u8; 32];
librustzcash_ivk_to_pkd(&tv.ivk, &tv.default_d, &mut default_pk_d); librustzcash_ivk_to_pkd(&tv.ivk, &tv.default_d, &mut default_pk_d);
assert_eq!(&default_pk_d, &tv.default_pk_d); assert_eq!(&default_pk_d, &tv.default_pk_d);
} }
let mut note_r_repr = FsRepr::default(); let note_r = jubjub::Scalar::from_bytes(&tv.note_r).unwrap();
note_r_repr.read_le(&tv.note_r[..]).unwrap(); let note = addr
let note_r = <Bls12 as JubjubEngine>::Fs::from_repr(note_r_repr).unwrap(); .create_note(tv.note_v, Rseed::BeforeZip212(note_r))
let note = addr.create_note(tv.note_v, note_r, &JUBJUB).unwrap(); .unwrap();
{ assert_eq!(&note.cmu().to_bytes(), &tv.note_cm);
let mut vec = Vec::new();
note.cm(&JUBJUB).into_repr().write_le(&mut vec).unwrap();
assert_eq!(&vec, &tv.note_cm);
}
assert_eq!(note.nf(&fvk, tv.note_pos, &JUBJUB), tv.note_nf); assert_eq!(note.nf(&fvk, tv.note_pos), tv.note_nf);
} }
} }

View File

@ -1,6 +1,9 @@
use zcash_primitives::jubjub::{FixedGenerators, JubjubParams}; use group::GroupEncoding;
use zcash_primitives::constants::{
use super::JUBJUB; NOTE_COMMITMENT_RANDOMNESS_GENERATOR, NULLIFIER_POSITION_GENERATOR,
PROOF_GENERATION_KEY_GENERATOR, SPENDING_KEY_GENERATOR, VALUE_COMMITMENT_RANDOMNESS_GENERATOR,
VALUE_COMMITMENT_VALUE_GENERATOR,
};
mod key_agreement; mod key_agreement;
mod key_components; mod key_components;
@ -53,45 +56,25 @@ fn sapling_generators() {
], ],
}; };
{ assert_eq!(&SPENDING_KEY_GENERATOR.to_bytes(), &sapling_generators.skb);
let mut vec = Vec::new(); assert_eq!(
let p = JUBJUB.generator(FixedGenerators::SpendingKeyGenerator); &PROOF_GENERATION_KEY_GENERATOR.to_bytes(),
p.write(&mut vec).unwrap(); &sapling_generators.pkb
assert_eq!(&vec, &sapling_generators.skb); );
} assert_eq!(
&NULLIFIER_POSITION_GENERATOR.to_bytes(),
{ &sapling_generators.npb
let mut vec = Vec::new(); );
let p = JUBJUB.generator(FixedGenerators::ProofGenerationKey); assert_eq!(
p.write(&mut vec).unwrap(); &NOTE_COMMITMENT_RANDOMNESS_GENERATOR.to_bytes(),
assert_eq!(&vec, &sapling_generators.pkb); &sapling_generators.wprb
} );
assert_eq!(
{ &VALUE_COMMITMENT_VALUE_GENERATOR.to_bytes(),
let mut vec = Vec::new(); &sapling_generators.vcvb
let p = JUBJUB.generator(FixedGenerators::NullifierPosition); );
p.write(&mut vec).unwrap(); assert_eq!(
assert_eq!(&vec, &sapling_generators.npb); &VALUE_COMMITMENT_RANDOMNESS_GENERATOR.to_bytes(),
} &sapling_generators.vcrb
);
{
let mut vec = Vec::new();
let p = JUBJUB.generator(FixedGenerators::NoteCommitmentRandomness);
p.write(&mut vec).unwrap();
assert_eq!(&vec, &sapling_generators.wprb);
}
{
let mut vec = Vec::new();
let p = JUBJUB.generator(FixedGenerators::ValueCommitmentValue);
p.write(&mut vec).unwrap();
assert_eq!(&vec, &sapling_generators.vcvb);
}
{
let mut vec = Vec::new();
let p = JUBJUB.generator(FixedGenerators::ValueCommitmentRandomness);
p.write(&mut vec).unwrap();
assert_eq!(&vec, &sapling_generators.vcrb);
}
} }

View File

@ -1,4 +1,4 @@
use crate::librustzcash_sapling_compute_cm; use crate::librustzcash_sapling_compute_cmu;
use crate::librustzcash_sapling_compute_nf; use crate::librustzcash_sapling_compute_nf;
#[test] #[test]
@ -648,7 +648,7 @@ fn notes() {
for tv in test_vectors { for tv in test_vectors {
// Compute commitment and compare with test vector // Compute commitment and compare with test vector
let mut result = [0u8; 32]; let mut result = [0u8; 32];
assert!(librustzcash_sapling_compute_cm( assert!(librustzcash_sapling_compute_cmu(
&tv.default_d, &tv.default_d,
&tv.default_pk_d, &tv.default_pk_d,
tv.note_v, tv.note_v,

View File

@ -1,9 +1,7 @@
use ff::{PrimeField, PrimeFieldRepr}; use zcash_primitives::{
use pairing::bls12_381::Bls12; constants::SPENDING_KEY_GENERATOR,
use zcash_primitives::jubjub::{FixedGenerators, JubjubEngine}; redjubjub::{PrivateKey, PublicKey, Signature},
use zcash_primitives::redjubjub::{PrivateKey, PublicKey, Signature}; };
use super::JUBJUB;
#[test] #[test]
fn redjubjub_signatures() { fn redjubjub_signatures() {
@ -483,15 +481,13 @@ fn redjubjub_signatures() {
]; ];
for tv in test_vectors { for tv in test_vectors {
let sk = PrivateKey::<Bls12>::read(&tv.sk[..]).unwrap(); let sk = PrivateKey::read(&tv.sk[..]).unwrap();
let vk = PublicKey::<Bls12>::read(&tv.vk[..], &JUBJUB).unwrap(); let vk = PublicKey::read(&tv.vk[..]).unwrap();
let rvk = PublicKey::<Bls12>::read(&tv.rvk[..], &JUBJUB).unwrap(); let rvk = PublicKey::read(&tv.rvk[..]).unwrap();
let sig = Signature::read(&tv.sig[..]).unwrap(); let sig = Signature::read(&tv.sig[..]).unwrap();
let rsig = Signature::read(&tv.rsig[..]).unwrap(); let rsig = Signature::read(&tv.rsig[..]).unwrap();
let mut alpha_repr = <<Bls12 as JubjubEngine>::Fs as PrimeField>::Repr::default(); let alpha = jubjub::Scalar::from_bytes(&tv.alpha).unwrap();
alpha_repr.read_le(&tv.alpha[..]).unwrap();
let alpha = <Bls12 as JubjubEngine>::Fs::from_repr(alpha_repr).unwrap();
{ {
let mut vec = Vec::new(); let mut vec = Vec::new();
@ -500,15 +496,15 @@ fn redjubjub_signatures() {
} }
{ {
let mut vec = Vec::new(); let mut vec = Vec::new();
vk.randomize(alpha, FixedGenerators::SpendingKeyGenerator, &JUBJUB) vk.randomize(alpha, SPENDING_KEY_GENERATOR)
.write(&mut vec) .write(&mut vec)
.unwrap(); .unwrap();
assert_eq!(&vec, &tv.rvk); assert_eq!(&vec, &tv.rvk);
} }
assert!(vk.verify(&tv.m, &sig, FixedGenerators::SpendingKeyGenerator, &JUBJUB)); assert!(vk.verify(&tv.m, &sig, SPENDING_KEY_GENERATOR));
assert!(rvk.verify(&tv.m, &rsig, FixedGenerators::SpendingKeyGenerator, &JUBJUB)); assert!(rvk.verify(&tv.m, &rsig, SPENDING_KEY_GENERATOR));
assert!(!vk.verify(&tv.m, &rsig, FixedGenerators::SpendingKeyGenerator, &JUBJUB)); assert!(!vk.verify(&tv.m, &rsig, SPENDING_KEY_GENERATOR));
assert!(!rvk.verify(&tv.m, &sig, FixedGenerators::SpendingKeyGenerator, &JUBJUB)); assert!(!rvk.verify(&tv.m, &sig, SPENDING_KEY_GENERATOR));
} }
} }

View File

@ -55,13 +55,10 @@ JoinSplitTestingSetup::JoinSplitTestingSetup(const std::string& chainName) : Bas
librustzcash_init_zksnark_params( librustzcash_init_zksnark_params(
reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()), reinterpret_cast<const codeunit*>(sapling_spend_str.c_str()),
sapling_spend_str.length(), sapling_spend_str.length(),
"8270785a1a0d0bc77196f000ee6d221c9c9894f55307bd9357c3f0105d31ca63991ab91324160d8f53e2bbd3c2633a6eb8bdf5205d822e7f3f73edac51b2b70c",
reinterpret_cast<const codeunit*>(sapling_output_str.c_str()), reinterpret_cast<const codeunit*>(sapling_output_str.c_str()),
sapling_output_str.length(), sapling_output_str.length(),
"657e3d38dbb5cb5e7dd2970e8b03d69b4787dd907285b5a7f0790dcc8072f60bf593b32cc2d1c030e00ff5ae64bf84c5c3beb84ddc841d48264b4a171744d028",
reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()), reinterpret_cast<const codeunit*>(sprout_groth16_str.c_str()),
sprout_groth16_str.length(), sprout_groth16_str.length()
"e9b238411bd6c0ec4791e9d04245ec350c9c5744f5610dfcce4365d5ca49dfefd5054e371842b3f88fa1b9d7e8e075249b3ebabd167fa8b0f3161292d36c180a"
); );
} }

View File

@ -62,7 +62,7 @@ SaplingNote::SaplingNote(
boost::optional<uint256> SaplingNote::cmu() const { boost::optional<uint256> SaplingNote::cmu() const {
uint256 result; uint256 result;
uint256 rcm_tmp = rcm(); uint256 rcm_tmp = rcm();
if (!librustzcash_sapling_compute_cm( if (!librustzcash_sapling_compute_cmu(
d.data(), d.data(),
pk_d.begin(), pk_d.begin(),
value(), value(),
@ -277,7 +277,7 @@ boost::optional<SaplingNotePlaintext> SaplingNotePlaintext::plaintext_checks_wit
uint256 cmu_expected; uint256 cmu_expected;
uint256 rcm = plaintext.rcm(); uint256 rcm = plaintext.rcm();
if (!librustzcash_sapling_compute_cm( if (!librustzcash_sapling_compute_cmu(
plaintext.d.data(), plaintext.d.data(),
pk_d.begin(), pk_d.begin(),
plaintext.value(), plaintext.value(),
@ -392,7 +392,7 @@ boost::optional<SaplingNotePlaintext> SaplingNotePlaintext::plaintext_checks_wit
uint256 cmu_expected; uint256 cmu_expected;
uint256 rcm = plaintext.rcm(); uint256 rcm = plaintext.rcm();
if (!librustzcash_sapling_compute_cm( if (!librustzcash_sapling_compute_cmu(
plaintext.d.data(), plaintext.d.data(),
pk_d.begin(), pk_d.begin(),
plaintext.value(), plaintext.value(),