From d240bc9af7b6e35da038d1edce9b3eee1bfabaaf Mon Sep 17 00:00:00 2001 From: Tony Arcieri Date: Fri, 18 Oct 2019 10:35:10 -0700 Subject: [PATCH] Upgrade signatory -> 0.15; yubihsm -> 0.28; use chacha20poly1305 crate This commit updates `signatory` and `yubihsm` to the latest versions. This requires either upgrading *ring* to 0.16, or replacing it: https://github.com/interchainio/tendermint-rs/issues/11 This commit has opted to replace it with the (i.e. my) `chacha20poly1305` crate: https://github.com/RustCrypto/AEADs/tree/master/chacha20poly1305 While *ring* is a great crate with excellent cryptographic implementations, the inability to link two versions of `ring-asm` is a major impediment to doing upgrades, as it requires updating all *ring*-dependent dependencies at once, or not at all, which so far has been a major blocker and has been stalling KMS development for awhile. As we're only using it for ChaCha20Poly1305, it seems like a rather heavyweight dependency just to serve that one purpose. --- .circleci/config.yml | 13 +- Cargo.lock | 557 ++++++++++++++---- Cargo.toml | 16 +- src/commands/softsign/import.rs | 10 +- src/commands/softsign/keygen.rs | 2 +- src/commands/yubihsm/setup.rs | 4 +- src/config/validator.rs | 5 +- src/connection/secret_connection.rs | 145 ++--- src/connection/secret_connection/nonce.rs | 16 +- .../secret_connection/public_key.rs | 9 +- src/connection/tcp.rs | 4 +- src/keyring/ed25519/ledgertm.rs | 18 +- src/keyring/ed25519/signer.rs | 6 +- src/keyring/ed25519/softsign.rs | 23 +- src/keyring/ed25519/yubihsm.rs | 25 +- src/session.rs | 6 +- tests/integration.rs | 7 +- 17 files changed, 611 insertions(+), 255 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7867024..534ee0d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,14 +49,11 @@ jobs: rustc --version cargo --version cargo test --all-features -- --test-threads 1 - # TODO(tarcieri): upgrade cargo-audit and/or yubihsm-rs - # Audit is failing on RUSTSEC-2016-0004 and cargo-audit is too old to - # support the --ignore option - #- run: - # name: audit - # command: | - # cargo audit --version - # cargo audit + - run: + name: audit + command: | + cargo audit --version + cargo audit - run: name: validate against test harness command: | diff --git a/Cargo.lock b/Cargo.lock index eee455e..9dc7f48 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,7 +12,7 @@ dependencies = [ "generational-arena 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "gumdrop 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "secrecy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -37,6 +37,19 @@ dependencies = [ "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "adler32" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "aead" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "aes" version = "0.3.2" @@ -106,35 +119,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "backtrace" -version = "0.3.38" +version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "backtrace-sys" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bit-set" -version = "0.2.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bit-vec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bit-vec" -version = "0.6.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -187,6 +200,11 @@ dependencies = [ "byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "bumpalo" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byte-tools" version = "0.2.0" @@ -227,7 +245,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cc" -version = "1.0.35" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -235,12 +253,33 @@ name = "cfg-if" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "chacha20" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "salsa20-core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "chacha20poly1305" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aead 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "chacha20 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "poly1305 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "chrono" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", @@ -257,7 +296,7 @@ name = "clear_on_drop" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -278,6 +317,14 @@ dependencies = [ "dbl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "crc32fast" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "crypto-mac" version = "0.7.0" @@ -355,6 +402,14 @@ dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ed25519" +version = "1.0.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "signature 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ed25519-dalek" version = "1.0.0-pre.2" @@ -377,7 +432,7 @@ name = "failure" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)", + "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -397,6 +452,17 @@ name = "fake-simd" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "filetime" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "fnv" version = "1.0.6" @@ -407,15 +473,6 @@ name = "fuchsia-cprng" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "gaunt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "generational-arena" version = "0.2.3" @@ -446,7 +503,7 @@ version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -468,6 +525,11 @@ dependencies = [ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "harp" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "hashbrown" version = "0.1.8" @@ -477,6 +539,14 @@ dependencies = [ "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "heck" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hex" version = "0.3.2" @@ -487,10 +557,10 @@ name = "hidapi" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -544,7 +614,7 @@ name = "iovec" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -560,6 +630,14 @@ name = "itoa" version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "js-sys" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -584,7 +662,7 @@ dependencies = [ "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "hidapi 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -604,26 +682,31 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.62" +version = "0.2.65" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "libusb" -version = "0.3.0" +name = "libflate" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bit-set 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "libusb-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "libusb-sys" -version = "0.2.3" +name = "libusb1-sys" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", + "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -658,9 +741,9 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -670,12 +753,21 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "nom" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num-integer" version = "0.1.41" @@ -720,7 +812,7 @@ name = "parking_lot_core" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -746,6 +838,14 @@ name = "pkg-config" version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "poly1305" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "universal-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ppv-lite86" version = "0.2.5" @@ -817,7 +917,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -829,7 +929,7 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -847,7 +947,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -921,7 +1021,7 @@ name = "rand_jitter" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -933,7 +1033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -995,27 +1095,42 @@ dependencies = [ [[package]] name = "ring" -version = "0.14.6" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rle-decode-fast" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "rpassword" version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rusb" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "libusb1-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rustc-demangle" version = "0.1.16" @@ -1034,6 +1149,15 @@ name = "ryu" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "salsa20-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "scopeguard" version = "0.3.3" @@ -1041,10 +1165,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "secp256k1" -version = "0.13.0" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1125,7 +1250,7 @@ name = "signal-hook" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1135,7 +1260,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arc-swap 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1157,62 +1282,79 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "signature 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "subtle-encoding 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "signatory" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ed25519 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signature 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle-encoding 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "signatory-dalek" -version = "0.12.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "ed25519-dalek 1.0.0-pre.2 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "signatory-ledger-tm" -version = "0.12.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "ledger-tendermint 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "signatory-secp256k1" -version = "0.12.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "secp256k1 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signature 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signature 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "signature" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "signature" +version = "1.0.0-pre.0" +source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", - "signature_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "signature_derive 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "signature_derive" -version = "0.2.1" +version = "1.0.0-pre.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", - "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1220,11 +1362,24 @@ name = "smallvec" version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "sourcefile" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "spin" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "stream-cipher" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "strsim" version = "0.9.2" @@ -1250,6 +1405,14 @@ dependencies = [ "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "subtle-encoding" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "syn" version = "0.14.9" @@ -1311,6 +1474,22 @@ dependencies = [ "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "take_mut" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "tar" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", + "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", + "xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tempdir" version = "0.3.7" @@ -1326,7 +1505,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1335,7 +1514,7 @@ dependencies = [ [[package]] name = "tendermint" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1376,7 +1555,7 @@ name = "time" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1415,6 +1594,7 @@ dependencies = [ "atomicwrites 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", + "chacha20poly1305 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "gumdrop 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1427,23 +1607,22 @@ dependencies = [ "prost-amino-derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory-dalek 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory-ledger-tm 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory-secp256k1 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory-dalek 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory-ledger-tm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory-secp256k1 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "subtle-encoding 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle-encoding 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tendermint 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tendermint 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "yubihsm 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)", + "yubihsm 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1476,6 +1655,11 @@ dependencies = [ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-segmentation" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "unicode-xid" version = "0.1.0" @@ -1486,9 +1670,18 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "universal-hash" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", + "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "untrusted" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1509,6 +1702,16 @@ dependencies = [ "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "vcpkg" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "void" version = "1.0.2" @@ -1519,7 +1722,7 @@ name = "wait-timeout" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1527,6 +1730,90 @@ name = "wasi" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "wasm-bindgen" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "wasm-bindgen-webidl" +version = "0.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "web-sys" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)", + "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-webidl 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "weedle" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "winapi" version = "0.2.8" @@ -1583,9 +1870,17 @@ dependencies = [ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "xattr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "yubihsm" -version = "0.26.4" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1593,27 +1888,22 @@ dependencies = [ "block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", "cmac 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "gaunt 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "harp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "hmac 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libusb 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", + "rusb 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signature 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "signature_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "signature 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)", "subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "tiny_http 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", - "zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1657,6 +1947,8 @@ dependencies = [ [metadata] "checksum abscissa_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "554dbd9957063496821d7d1bae8d39e9ce61027ba0b3564461251a703b3398b0" "checksum abscissa_derive 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f01d0b6cae0164593a54183db96193d2c2eee941dcf3e118a72a26b00a06e586" +"checksum adler32 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5d2e7343e7fc9de883d1b0341e0b13970f764c14101234857d2ddafa1cb1cac2" +"checksum aead 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "529ae27769da55d955d190396e67896f49b440aff94a5b2f50900e091d168b77" "checksum aes 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "54eb1d8fe354e5fc611daf4f2ea97dd45a765f4f1e4512306ec183ae2e8f20c9" "checksum aes-soft 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cfd7e7ae3f9a1fb5c03b389fc6bb9a51400d0c13053f0dca698c832bfd893a0d" "checksum aesni 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2f70a6b5f971e473091ab7cfb5ffac6cde81666c4556751d8d5620ead8abf100" @@ -1666,29 +1958,33 @@ dependencies = [ "checksum ascii 0.8.7 (registry+https://github.com/rust-lang/crates.io-index)" = "97be891acc47ca214468e09425d02cef3af2c94d0d82081cd02061f996802f14" "checksum atomicwrites 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6a2baf2feb820299c53c7ad1cc4f5914a220a1cb76d7ce321d2522a94b54651f" "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" -"checksum backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)" = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5" -"checksum backtrace-sys 0.1.30 (registry+https://github.com/rust-lang/crates.io-index)" = "5b3a000b9c543553af61bc01cbfc403b04b5caa9e421033866f2e98061eb3e61" -"checksum bit-set 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e6e1e6fb1c9e3d6fcdec57216a74eaa03e41f52a22f13a16438251d8e88b89da" -"checksum bit-vec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a4523a10839ffae575fb08aa3423026c8cb4687eef43952afb956229d4f246f7" +"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea" +"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491" +"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" +"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum block-buffer 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a076c298b9ecdb530ed9d967e74a6027d6a7478924520acddcddc24c1c8ab3ab" "checksum block-buffer 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" "checksum block-cipher-trait 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1c924d49bd09e7c06003acda26cd9742e796e34282ec6c1189404dee0c1f4774" "checksum block-modes 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "31aa8410095e39fdb732909fb5730a48d5bd7c2e3cd76bd1b07b3dbea130c529" "checksum block-padding 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "6d4dc3af3ee2e12f3e5d224e5e1e3d73668abbeb69e566d361f7d5563a4fdf09" +"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708" "checksum byte-tools 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "560c32574a12a89ecd91f5e742165893f86e3ab98d21f8ea548658eb9eef5f40" "checksum byte-tools 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" "checksum canonical-path 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e6e9e01327e6c86e92ec72b1c798d4a94810f147209bbe3ffab6a86954937a6f" -"checksum cc 1.0.35 (registry+https://github.com/rust-lang/crates.io-index)" = "5e5f3fee5eeb60324c2781f1e41286bdee933850fff9b3c672587fed5ec58c83" +"checksum cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +"checksum chacha20 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9ce602601e1450409cfe3a6dea32a5de678e08c43368e860c2afa2eec58ce3dc" +"checksum chacha20poly1305 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9261a6a78b72157d4855dced409e5e976ea77eb0045f5dc4cf8ba459ae293954" "checksum chrono 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e8493056968583b0193c1bb04d6f7684586f3726992d6c573261941a895dbd68" "checksum chunked_transfer 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "498d20a7aaf62625b9bf26e637cf7736417cde1d0c99f1d04d1170229a85cf87" "checksum clear_on_drop 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "97276801e127ffb46b66ce23f35cc96bd454fa311294bced4bbace7baa8b1d17" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum cmac 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6f4a435124bcc292eba031f1f725d7abacdaf13cbf9f935450e8c45aa9e96cad" +"checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum curve25519-dalek 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8b7dcd30ba50cdf88b55b033456138b7c0ac4afdc436d82e1b79f370f24cc66d" "checksum darling 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe629a532efad5526454efb0700f86d5ad7ff001acb37e431c8bf017a432a8e" @@ -1697,21 +1993,24 @@ dependencies = [ "checksum dbl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "28dc203b75decc900220c4d9838e738d08413e663c26826ba92b669bed1d0795" "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90" "checksum digest 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +"checksum ed25519 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)" = "48fac43d8e4e9e7e3164e93daaf13657b6374102c8c11938ff56db63c7abf2da" "checksum ed25519-dalek 1.0.0-pre.2 (registry+https://github.com/rust-lang/crates.io-index)" = "845aaacc16f01178f33349e7c992ecd0cee095aa5e577f0f4dee35971bd36455" "checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" "checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9" "checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +"checksum filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd7380b54ced79dda72ecc35cc4fbbd1da6bba54afaa37e96fd1c2a308cd469" "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" -"checksum gaunt 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0348d3b5fbd30311ea16ce573f137c689e5a3fb2d7b037eefe0a6384143298b6" "checksum generational-arena 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "921c3803adaeb9f9639de5149d9f0f9f4b79f00c423915b701db2e02ed80b9ce" "checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" "checksum generic-array 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef25c5683767570c2bbd7deba372926a55eaae9982d7726ee2a1050239d45b9d" "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" "checksum gumdrop 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee50908bc1beeac1f2902e0b4e0cd0d844e716f5ebdc6f0cfc1163fe5e10bcde" "checksum gumdrop_derive 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "90454ce4de40b7ca6a8968b5ef367bdab48413962588d0d2b1638d60090c35d7" +"checksum harp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60bf12c625ed5e96f81609ae4377c34e9fa3e4d1fada392404322daeace511ab" "checksum hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3bae29b6653b3412c2e71e9d486db9f9df5d701941d86683005efb9f2d28e3da" +"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" "checksum hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "805026a5d0141ffc30abb3be3173848ad46a1b1664fe632428479619a3644d77" "checksum hidapi 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "25440089a47b7c63b7a3515d1cdfcd0ac3d649fdc360540944e05c4e7899b4fe" "checksum hkd32 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ec8449a5d1c7ea34a75bc45e91097d2768dfb056f37fa55a465f3c3ba7c0721" @@ -1722,19 +2021,21 @@ dependencies = [ "checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" "checksum itertools 0.7.11 (registry+https://github.com/rust-lang/crates.io-index)" = "0d47946d458e94a1b7bcabbf6521ea7c037062c81f534615abcad76e84d4970d" "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" +"checksum js-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)" = "2cc9a97d7cec30128fd8b28a7c1f9df1c001ceb9b441e2b755e24130a6b43c79" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" "checksum ledger 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6c9a2f47929b010a64a4bf9cdfe03b0d02175d44db0b91e16283f5a4a731d52c" "checksum ledger-tendermint 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "798701caf0fe437d7d72939eed5f18ae187e9c414eb5f4e9b8eeceaa16f99a23" -"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" -"checksum libusb 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5f990ddd929cbe53de4ecd6cf26e1f4e0c5b9796e4c629d9046570b03738aa53" -"checksum libusb-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4c53b6582563d64ad3e692f54ef95239c3ea8069e82c9eb70ca948869a7ad767" +"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8" +"checksum libflate 0.1.27 (registry+https://github.com/rust-lang/crates.io-index)" = "d9135df43b1f5d0e333385cb6e7897ecd1a43d7d11b91ac003f4d2c2d2401fdd" +"checksum libusb1-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2dd1dbe21cad1920c47802ad7d594963810f66e5367b46f9bd8f77cb8610b951" "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" "checksum nix 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4dbdc256eaac2e3bd236d93ad999d3479ef775c863dbda3068c4006a92eec51b" "checksum nix 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" "checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" "checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" "checksum once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "532c29a261168a45ce28948f9537ddd7a5dd272cc513b3017b1e82a88f962c37" @@ -1744,6 +2045,7 @@ dependencies = [ "checksum pbkdf2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "006c038a43a45995a9670da19e67600114740e8511d4333bf97a56e66a7542d9" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" +"checksum poly1305 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6899e98776f3ac983287ccc1df176e7805cc5a1051d56d019e1ffb12423b4b2e" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" "checksum proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90cf5f418035b98e655e9cdb225047638296b862b42411c4e45bb88d700f7fc0" @@ -1772,13 +2074,16 @@ dependencies = [ "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" -"checksum ring 0.14.6 (registry+https://github.com/rust-lang/crates.io-index)" = "426bc186e3e95cac1e4a4be125a4aca7e84c2d616ffc02244eef36e2a60a093c" +"checksum ring 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6747f8da1f2b1fabbee1aaa4eb8a11abf9adef0bf58a41cee45db5d59cecdfac" +"checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" "checksum rpassword 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c34fa7bcae7fca3c8471e8417088bbc3ad9af8066b0ecf4f3c0d98a0d772716e" +"checksum rusb 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "27eefdf69646cba63ce8f80816e45b4f422a0e89c723ab3b187c9e33960d459e" "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8" +"checksum salsa20-core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bcdccf8a9f62def82659a213dc80e1cb169e6b6801af318e5ae1e040f1f212fd" "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" -"checksum secp256k1 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fb1f2c586f44331cd22561405885bb55d869e042715f29d019dbe68558b4f7ec" +"checksum secp256k1 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" "checksum secrecy 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9eb052cf770a381fa9a6ee63038ff9a0b11d30abb53be970672e950649ff0bfb" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" @@ -1791,26 +2096,33 @@ dependencies = [ "checksum signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1797d48f38f91643908bb14e35e79928f9f4b3cefb2420a564dde0991b4358dc" "checksum signatory 0.11.5 (registry+https://github.com/rust-lang/crates.io-index)" = "45329515bd428e81eb5b08c1629fb8099d79ea8ce8e1b9f3b68ee766be82f66d" "checksum signatory 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92785dea71e4d1d2b2c5dceee9cdaf809a177e3865b29d246b0314f4ecc110b0" -"checksum signatory-dalek 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad3891c134888db96183ebfa6d1f6bf5b4c566b3a43d40d219cd5959620bbcdd" -"checksum signatory-ledger-tm 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d1175610eb08aa9147e5317c7b3358d3c8a78adaac9c2c940bd1fc92df8e0f12" -"checksum signatory-secp256k1 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97a10de0732f951ceb8401ecd60ab016ca5ee7eb988e3819b3b23ae3611bb9f4" +"checksum signatory 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "714a562bdd42b7b97fb88dcb4a1e699a84822a6269870b7a0abb50570987c8a9" +"checksum signatory-dalek 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c263d5decd654b8f3f7bf3ec8999faa142ffd3751426880845a9d95ae84e454" +"checksum signatory-ledger-tm 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a3c42dd0a143970599263e594f67cc222fd07ba4a3b8ab10cdc5750c1a69d535" +"checksum signatory-secp256k1 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "10c01e4a87996e76aeebeb5751ca73e7df05b8f74d9e79144c47498af7e1e1b1" "checksum signature 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "144b5d1138a4339c839603f15f69ffe3195e51b5caa92f815b47d4553db47337" -"checksum signature_derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "21de160b58596767f60a674960253756643aa84674a1afa813148abb9a91815e" +"checksum signature 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d6e483c183785ef062c61c5cbd40531c014857796a15fd230a552aec914b1d7d" +"checksum signature_derive 1.0.0-pre.0 (registry+https://github.com/rust-lang/crates.io-index)" = "30d0e333aec3605c822b1c7c760f6fa3d28a78d7d762a7b59d21fac4ebbf3680" "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" +"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" "checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +"checksum stream-cipher 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8131256a5896cabcf5eb04f4d6dacbe1aefda854b0d9896e09cb58829ec5638c" "checksum strsim 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)" = "032c03039aae92b350aad2e3779c352e104d919cb192ba2fabbd7b831ce4f0f6" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum subtle 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab3af2eb31c42e8f0ccf43548232556c42737e01a96db6e1777b0be108e79799" "checksum subtle-encoding 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "661a0cd6c74eca6fab1a5b452d9f2201fbac9004e958bd70d5b4f288b1aed479" +"checksum subtle-encoding 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30492c59ec8bdeee7d6dd2d851711cae5f1361538f10ecfdcd1d377d57c2a783" "checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" "checksum synstructure 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f085a5855930c0441ca1288cf044ea4aecf4f43a91668abdb870b4ba546a203" "checksum tai64 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f442aa71b3f67bc82699063a608b32331ab5b0fcdd078694d3d4b84716b0942" +"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" +"checksum tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "b3196bfbffbba3e57481b6ea32249fbaf590396a52505a2615adbb79d9d826d3" "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum tendermint 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "57b5925a210a2349c18a0bba413507bcd533926f34e1ee5eb730145b55f59f9d" +"checksum tendermint 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd8b64810746ce3c3a2fdbfb6ade56751f3cabd335afa8c0e6bb822ddc2ef11" "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" "checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f" @@ -1820,14 +2132,26 @@ dependencies = [ "checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9" "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" +"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" +"checksum universal-hash 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df0c900f2f9b4116803415878ff48b63da9edb268668e08cf9292d7503114a01" +"checksum untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60369ef7a31de49bcb3f6ca728d4ba7300d9a1658f94c727d4cab8c8d9f4aece" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" +"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" +"checksum wasm-bindgen 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "cd34c5ba0d228317ce388e87724633c57edca3e7531feb4e25e35aaa07a656af" +"checksum wasm-bindgen-backend 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "927196b315c23eed2748442ba675a4c54a1a079d90d9bdc5ad16ce31cf90b15b" +"checksum wasm-bindgen-macro 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "92c2442bf04d89792816650820c3fb407af8da987a9f10028d5317f5b04c2b4a" +"checksum wasm-bindgen-macro-support 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "9c075d27b7991c68ca0f77fe628c3513e64f8c477d422b859e03f28751b46fc5" +"checksum wasm-bindgen-shared 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "83d61fe986a7af038dd8b5ec660e5849cbd9f38e7492b9404cc48b2b4df731d1" +"checksum wasm-bindgen-webidl 0.2.51 (registry+https://github.com/rust-lang/crates.io-index)" = "9b979afb0535fe4749906a674082db1211de8aef466331d43232f63accb7c07c" +"checksum web-sys 0.3.28 (registry+https://github.com/rust-lang/crates.io-index)" = "c84440699cd02ca23bed6f045ffb1497bc18a3c2628bd13e2093186faaaacf6b" +"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" @@ -1836,7 +2160,8 @@ dependencies = [ "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" "checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" "checksum x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7ee1585dc1484373cbc1cee7aafda26634665cf449436fd6e24bfd1fad230538" -"checksum yubihsm 0.26.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b66dcc264cbb543bc6ac6ea2400f841f531544a61e1a1a7346636bc63381811e" +"checksum xattr 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" +"checksum yubihsm 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d77b7a0c4d43982fb022b0b39ff809efdf94d6c3e66b7cbb400dcb5e8514d89" "checksum zeroize 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "45af6a010d13e4cf5b54c94ba5a2b2eba5596b9e46bf5875612d332a1f2b3f86" "checksum zeroize 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cdc979d9b5ead18184c357c4d8a3f81b579aae264e32507223032e64715462d3" "checksum zeroize_derive 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "080616bd0e31f36095288bb0acdf1f78ef02c2fa15527d7e993f2a6c7591643e" diff --git a/Cargo.toml b/Cargo.toml index 936e37c..f33808d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ abscissa_core = "0.4" atomicwrites = "0.2" byteorder = "1.2" bytes = "0.4" +chacha20poly1305 = "0.2" chrono = "0.4" failure = "0.1" gumdrop = "0.7" @@ -29,25 +30,24 @@ log = "0.4" prost-amino = "0.4.0" prost-amino-derive = "0.4.0" rand_os = "0.1" -ring = "0.14" rpassword = { version = "3", optional = true } serde = { version = "1", features = ["serde_derive"] } serde_json = "1" sha2 = "0.8" -signatory = { version = "0.12", features = ["ed25519", "ecdsa"] } -signatory-dalek = "0.12" -signatory-secp256k1 = "0.12" -signatory-ledger-tm = { version = "0.12", optional = true } +signatory = { version = "0.15", features = ["ecdsa", "ed25519", "encoding"] } +signatory-dalek = "0.15" +signatory-secp256k1 = "0.15" +signatory-ledger-tm = { version = "0.15", optional = true } subtle = "2" -subtle-encoding = { version = "0.3", features = ["bech32-preview"] } +subtle-encoding = { version = "0.4", features = ["bech32-preview"] } tiny-bip39 = "0.6" wait-timeout = "0.2" x25519-dalek = "0.5" -yubihsm = { version = "0.26", features = ["setup", "usb"], optional = true } +yubihsm = { version = "0.28", features = ["setup", "usb"], optional = true } zeroize = "1" [dependencies.tendermint] -version = "0.10" +version = "0.10.1" features = ["amino-types", "config"] [dev-dependencies] diff --git a/src/commands/softsign/import.rs b/src/commands/softsign/import.rs index 141ec7e..b035b9f 100644 --- a/src/commands/softsign/import.rs +++ b/src/commands/softsign/import.rs @@ -2,7 +2,10 @@ use crate::{config::provider::softsign::KeyFormat, keyring::SecretKeyEncoding, prelude::*}; use abscissa_core::{Command, Runnable}; -use signatory::{ed25519, Decode, Encode}; +use signatory::{ + ed25519, + encoding::{Decode, Encode}, +}; use std::{path::PathBuf, process}; use subtle_encoding::IDENTITY; use tendermint::{config::PrivValidatorKey, PrivateKey}; @@ -54,7 +57,10 @@ impl Runnable for ImportCommand { .priv_key; match private_key { - PrivateKey::Ed25519(pk) => pk.to_seed(), + PrivateKey::Ed25519(pk) => { + // TODO(tarcieri): upgrade Signatory version + ed25519::Seed::from_bytes(pk.to_seed().as_secret_slice()).unwrap() + } } } KeyFormat::Raw => { diff --git a/src/commands/softsign/keygen.rs b/src/commands/softsign/keygen.rs index 9c18872..a39c345 100644 --- a/src/commands/softsign/keygen.rs +++ b/src/commands/softsign/keygen.rs @@ -2,7 +2,7 @@ use crate::{keyring::SecretKeyEncoding, prelude::*}; use abscissa_core::{Command, Runnable}; -use signatory::{ed25519, Encode}; +use signatory::{ed25519, encoding::Encode}; use std::{path::PathBuf, process}; /// `keygen` command diff --git a/src/commands/yubihsm/setup.rs b/src/commands/yubihsm/setup.rs index c5dd2b6..e39721e 100644 --- a/src/commands/yubihsm/setup.rs +++ b/src/commands/yubihsm/setup.rs @@ -156,7 +156,7 @@ impl Runnable for SetupCommand { crate::yubihsm::config().auth.credentials(), profile, ) - .unwrap_or_else(|e| hsm_error(e.as_fail())); + .unwrap_or_else(|e| hsm_error(&e)); status_ok!( "Success", @@ -489,7 +489,7 @@ fn prompt_for_user_approval(prompt: &str) { } /// Handler for HSM errors -fn hsm_error(e: &dyn failure::Fail) -> ! { +fn hsm_error(e: &dyn std::error::Error) -> ! { status_err!("HSM error: {}", e); // TODO: handle exits via abscissa diff --git a/src/config/validator.rs b/src/config/validator.rs index ed83e61..7587a20 100644 --- a/src/config/validator.rs +++ b/src/config/validator.rs @@ -5,7 +5,10 @@ use crate::{ keyring::SecretKeyEncoding, }; use serde::Deserialize; -use signatory::{ed25519, Decode, Encode}; +use signatory::{ + ed25519, + encoding::{Decode, Encode}, +}; use std::path::PathBuf; use tendermint::{chain, net}; diff --git a/src/connection/secret_connection.rs b/src/connection/secret_connection.rs index 37c3a8e..29fdacc 100644 --- a/src/connection/secret_connection.rs +++ b/src/connection/secret_connection.rs @@ -5,12 +5,19 @@ mod nonce; mod public_key; pub use self::{kdf::Kdf, nonce::Nonce, public_key::PublicKey}; +use crate::error::{Error, ErrorKind}; use byteorder::{ByteOrder, LE}; use bytes::BufMut; +use chacha20poly1305::{ + aead::{generic_array::GenericArray, NewAead}, + ChaCha20Poly1305, +}; use prost::{encoding::encode_varint, Message}; use rand_os::OsRng; -use ring::aead; -use signatory::{ed25519, Signature, Signer, Verifier}; +use signatory::{ + ed25519, + signature::{Signature, Signer, Verifier}, +}; use signatory_dalek::Ed25519Verifier; use std::{ cmp, @@ -18,10 +25,7 @@ use std::{ marker::{Send, Sync}, }; use subtle::ConstantTimeEq; -use tendermint::{ - amino_types::AuthSigMessage, - error::{Error, ErrorKind}, -}; +use tendermint::amino_types::AuthSigMessage; use x25519_dalek::{EphemeralSecret, PublicKey as EphemeralPublic}; /// Size of the MAC tag @@ -37,8 +41,8 @@ pub struct SecretConnection { io_handler: IoHandler, recv_nonce: Nonce, send_nonce: Nonce, - recv_secret: aead::OpeningKey, - send_secret: aead::SealingKey, + recv_cipher: ChaCha20Poly1305, + send_cipher: ChaCha20Poly1305, remote_pubkey: PublicKey, recv_buffer: Vec, } @@ -48,7 +52,7 @@ impl SecretConnection { pub fn remote_pubkey(&self) -> PublicKey { self.remote_pubkey } - #[allow(clippy::new_ret_no_self)] + /// Performs handshake and returns a new authenticated SecretConnection. pub fn new( mut handler: IoHandler, @@ -94,13 +98,11 @@ impl SecretConnection { recv_buffer: vec![], recv_nonce: Nonce::default(), send_nonce: Nonce::default(), - recv_secret: aead::OpeningKey::new(&aead::CHACHA20_POLY1305, &kdf.recv_secret) - .map_err(|_| ErrorKind::Crypto)?, - send_secret: aead::SealingKey::new(&aead::CHACHA20_POLY1305, &kdf.send_secret) - .map_err(|_| ErrorKind::Crypto)?, + recv_cipher: ChaCha20Poly1305::new(kdf.recv_secret.into()), + send_cipher: ChaCha20Poly1305::new(kdf.send_secret.into()), remote_pubkey: PublicKey::from( ed25519::PublicKey::from_bytes(remote_eph_pubkey.as_bytes()) - .ok_or_else(|| ErrorKind::Crypto)?, + .ok_or_else(|| ErrorKind::CryptoError)?, ), }; @@ -114,13 +116,15 @@ impl SecretConnection { } }; - let remote_pubkey = - ed25519::PublicKey::from_bytes(&auth_sig_msg.key).ok_or_else(|| ErrorKind::Crypto)?; + let remote_pubkey = ed25519::PublicKey::from_bytes(&auth_sig_msg.key) + .ok_or_else(|| ErrorKind::CryptoError)?; let remote_signature: &[u8] = &auth_sig_msg.sig; - let remote_sig = ed25519::Signature::from_bytes(remote_signature)?; + let remote_sig = + ed25519::Signature::from_bytes(remote_signature).map_err(|_| ErrorKind::CryptoError)?; - let remote_verifier = Ed25519Verifier::from(&remote_pubkey); - remote_verifier.verify(&kdf.challenge, &remote_sig)?; + Ed25519Verifier::from(&remote_pubkey) + .verify(&kdf.challenge, &remote_sig) + .map_err(|_| ErrorKind::CryptoError)?; // We've authorized. sc.remote_pubkey = PublicKey::from(remote_pubkey); @@ -128,54 +132,59 @@ impl SecretConnection { Ok(sc) } - /// Unseal (i.e. decrypt) AEAD authenticated data - fn open(&self, ciphertext: &[u8], out: &mut [u8]) -> Result { - let nonce = aead::Nonce::from(&self.recv_nonce); - let associated_data = aead::Aad::empty(); - - // optimize if the provided buffer is sufficiently large - let len = if out.len() >= ciphertext.len() { - let in_out = &mut out[..ciphertext.len()]; - in_out.copy_from_slice(ciphertext); - - aead::open_in_place(&self.recv_secret, nonce, associated_data, 0, in_out) - .map_err(|_| ErrorKind::Crypto)? - .len() - } else { - let mut in_out = ciphertext.to_vec(); - let out0 = - aead::open_in_place(&self.recv_secret, nonce, aead::Aad::empty(), 0, &mut in_out) - .map_err(|_| ErrorKind::Crypto)?; - out[..out0.len()].copy_from_slice(out0); - out0.len() - }; - - Ok(len) - } - - /// Seal (i.e. encrypt) AEAD authenticated data - fn seal( + /// Encrypt AEAD authenticated data + fn encrypt( &self, chunk: &[u8], sealed_frame: &mut [u8; TAG_SIZE + TOTAL_FRAME_SIZE], ) -> Result<(), Error> { - let chunk_length = chunk.len(); - let mut frame = [0u8; TOTAL_FRAME_SIZE]; - LE::write_u32(&mut frame[..DATA_LEN_SIZE], chunk_length as u32); - frame[DATA_LEN_SIZE..DATA_LEN_SIZE + chunk_length].copy_from_slice(chunk); - sealed_frame[..frame.len()].copy_from_slice(&frame); - - aead::seal_in_place( - &self.send_secret, - aead::Nonce::from(&self.send_nonce), - aead::Aad::empty(), - sealed_frame, - TAG_SIZE, - ) - .map_err(|_| ErrorKind::Crypto)?; + debug_assert!(chunk.len() <= TOTAL_FRAME_SIZE - DATA_LEN_SIZE); + LE::write_u32(&mut sealed_frame[..DATA_LEN_SIZE], chunk.len() as u32); + sealed_frame[DATA_LEN_SIZE..DATA_LEN_SIZE + chunk.len()].copy_from_slice(chunk); + + let tag = self + .send_cipher + .encrypt_in_place_detached( + GenericArray::from_slice(self.send_nonce.to_bytes()), + b"", + &mut sealed_frame[..TOTAL_FRAME_SIZE], + ) + .map_err(|_| ErrorKind::CryptoError)?; + + sealed_frame[TOTAL_FRAME_SIZE..].copy_from_slice(tag.as_slice()); Ok(()) } + + /// Decrypt AEAD authenticated data + fn decrypt(&self, ciphertext: &[u8], out: &mut [u8]) -> Result { + // Ensure ciphertext is at least as long as a Poly1305 tag + if ciphertext.len() < TAG_SIZE { + return Err(ErrorKind::CryptoError.into()); + } + + // Split ChaCha20 ciphertext from the Poly1305 tag + let (ct, tag) = ciphertext.split_at(ciphertext.len() - TAG_SIZE); + + // Return a length error if the output buffer is too small + if out.len() < ct.len() { + return Err(ErrorKind::CryptoError.into()); + } + + let in_out = &mut out[..ct.len()]; + in_out.copy_from_slice(ct); + + self.recv_cipher + .decrypt_in_place_detached( + GenericArray::from_slice(self.recv_nonce.to_bytes()), + b"", + in_out, + tag.into(), + ) + .map_err(|_| ErrorKind::CryptoError)?; + + Ok(in_out.len()) + } } impl Read for SecretConnection @@ -199,7 +208,7 @@ where // decrypt the frame let mut frame = [0u8; TOTAL_FRAME_SIZE]; - let res = self.open(&sealed_frame, &mut frame); + let res = self.decrypt(&sealed_frame, &mut frame); if res.is_err() { return Err(io::Error::new( @@ -255,7 +264,7 @@ where data_copy = &[0u8; 0]; } let sealed_frame = &mut [0u8; TAG_SIZE + TOTAL_FRAME_SIZE]; - let res = self.seal(chunk, sealed_frame); + let res = self.encrypt(chunk, sealed_frame); if res.is_err() { return Err(io::Error::new( io::ErrorKind::Other, @@ -315,7 +324,7 @@ fn share_eph_pubkey( // https://github.com/tendermint/tendermint/blob/013b9cef642f875634c614019ab13b17570778ad/p2p/conn/secret_connection.go#L208-L238 let mut remote_eph_pubkey_fixed: [u8; 32] = Default::default(); if buf[0] != 33 || buf[1] != 32 { - return Err(ErrorKind::Protocol.into()); + return Err(ErrorKind::ProtocolError.into()); } // after total length (33) and byte length (32), we expect the raw bytes // of the pub key: @@ -394,7 +403,7 @@ fn sign_challenge( ) -> Result { local_privkey .try_sign(challenge) - .map_err(|_| ErrorKind::Crypto.into()) + .map_err(|_| ErrorKind::CryptoError.into()) } // TODO(ismail): change from DecodeError to something more generic @@ -406,19 +415,17 @@ fn share_auth_signature( ) -> Result { let amsg = AuthSigMessage { key: pubkey.to_vec(), - sig: signature.into_bytes().to_vec(), + sig: signature.as_ref().to_vec(), }; let mut buf: Vec = vec![]; - amsg.encode_length_delimited(&mut buf) - .map_err(|e| Error::new(ErrorKind::Parse, Some(e.to_string())))?; + amsg.encode_length_delimited(&mut buf)?; sc.write_all(&buf)?; let mut rbuf = vec![0; 106]; // 100 = 32 + 64 + (amino overhead = 2 fields + 2 lengths + 4 prefix bytes + total length) sc.read_exact(&mut rbuf)?; // TODO: proper error handling: - Ok(AuthSigMessage::decode_length_delimited(&rbuf) - .map_err(|e| Error::new(ErrorKind::Parse, Some(e.to_string())))?) + Ok(AuthSigMessage::decode_length_delimited(&rbuf)?) } #[cfg(tests)] diff --git a/src/connection/secret_connection/nonce.rs b/src/connection/secret_connection/nonce.rs index fe6d43f..a4117fc 100644 --- a/src/connection/secret_connection/nonce.rs +++ b/src/connection/secret_connection/nonce.rs @@ -1,5 +1,4 @@ use byteorder::{ByteOrder, LE}; -use ring::aead; /// Size of a ChaCha20 nonce pub const SIZE: usize = 12; @@ -27,12 +26,6 @@ impl Nonce { } } -impl From<&Nonce> for aead::Nonce { - fn from(nonce: &Nonce) -> aead::Nonce { - aead::Nonce::assume_unique_for_key(nonce.0) - } -} - #[cfg(test)] mod tests { use super::*; @@ -54,12 +47,9 @@ mod tests { for i in 0..1024 { nonce.increment(); - match check_points.get(&i) { - Some(want) => { - let got = &nonce.to_bytes(); - assert_eq!(got, want); - } - None => (), + if let Some(want) = check_points.get(&i) { + let got = &nonce.to_bytes(); + assert_eq!(got, want); } } } diff --git a/src/connection/secret_connection/public_key.rs b/src/connection/secret_connection/public_key.rs index d689b17..def2cf3 100644 --- a/src/connection/secret_connection/public_key.rs +++ b/src/connection/secret_connection/public_key.rs @@ -1,5 +1,6 @@ //! Secret Connection peer public keys +use sha2::{digest::Digest, Sha256}; use signatory::ed25519; use std::fmt::{self, Display}; use tendermint::{ @@ -32,7 +33,13 @@ impl PublicKey { /// Get the remote Peer ID pub fn peer_id(self) -> node::Id { match self { - PublicKey::Ed25519(pk) => node::Id::from(pk), + PublicKey::Ed25519(pk) => { + // TODO(tarcieri): use `tendermint::node::Id::from` + let digest = Sha256::digest(pk.as_bytes()); + let mut bytes = [0u8; 20]; + bytes.copy_from_slice(&digest[..20]); + node::Id::new(bytes) + } } } } diff --git a/src/connection/tcp.rs b/src/connection/tcp.rs index 296c6ef..164a09a 100644 --- a/src/connection/tcp.rs +++ b/src/connection/tcp.rs @@ -5,7 +5,7 @@ use crate::{ error::{Error, ErrorKind::*}, prelude::*, }; -use signatory::{ed25519, PublicKeyed}; +use signatory::{ed25519, public_key::PublicKeyed}; use signatory_dalek::Ed25519Signer; use std::{net::TcpStream, time::Duration}; use subtle::ConstantTimeEq; @@ -29,7 +29,7 @@ pub fn open_secret_connection( let connection = SecretConnection::new(socket, &public_key, &signer)?; let actual_peer_id = connection.remote_pubkey().peer_id(); - // TODO(tarcieri): move this into `SecretConnection::new` in `tendermint-rs`? + // TODO(tarcieri): move this into `SecretConnection::new` if let Some(expected_peer_id) = peer_id { if expected_peer_id.ct_eq(&actual_peer_id).unwrap_u8() == 0 { fail!( diff --git a/src/keyring/ed25519/ledgertm.rs b/src/keyring/ed25519/ledgertm.rs index 7069555..0dc1bc4 100644 --- a/src/keyring/ed25519/ledgertm.rs +++ b/src/keyring/ed25519/ledgertm.rs @@ -6,7 +6,7 @@ use crate::{ error::{Error, ErrorKind::*}, keyring::{ed25519::Signer, SigningProvider}, }; -use signatory::PublicKeyed; +use signatory::public_key::PublicKeyed; use signatory_ledger_tm::Ed25519LedgerTmAppSigner; use tendermint::TendermintKey; @@ -28,16 +28,20 @@ pub fn init( } let provider = Ed25519LedgerTmAppSigner::connect().map_err(|_| Error::from(SigningError))?; + let public_key = provider.public_key().map_err(|_| Error::from(InvalidKey))?; - // TODO(tarcieri): support for adding account keys into keyrings - let public_key = TendermintKey::ConsensusKey( - provider - .public_key() - .map_err(|_| Error::from(InvalidKey))? + // TODO(tarcieri): support for adding account keys into keyrings; signatory upgrade + let consensus_pubkey = TendermintKey::ConsensusKey( + tendermint::signatory::ed25519::PublicKey::from_bytes(public_key.as_bytes()) + .unwrap() .into(), ); - let signer = Signer::new(SigningProvider::LedgerTm, public_key, Box::new(provider)); + let signer = Signer::new( + SigningProvider::LedgerTm, + consensus_pubkey, + Box::new(provider), + ); for chain_id in &ledgertm_configs[0].chain_ids { chain_registry.add_to_keyring(chain_id, signer.clone())?; diff --git a/src/keyring/ed25519/signer.rs b/src/keyring/ed25519/signer.rs index 0109868..1ce1622 100644 --- a/src/keyring/ed25519/signer.rs +++ b/src/keyring/ed25519/signer.rs @@ -4,7 +4,7 @@ use crate::{ error::{Error, ErrorKind::*}, keyring::SigningProvider, }; -use signatory::ed25519::Signature; +use signatory::{ed25519::Signature, signature}; use std::sync::Arc; use tendermint::TendermintKey; @@ -18,7 +18,7 @@ pub struct Signer { public_key: TendermintKey, /// Signer trait object - signer: Arc + Send + Sync>>, + signer: Arc + Send + Sync>>, } impl Signer { @@ -26,7 +26,7 @@ impl Signer { pub fn new( provider: SigningProvider, public_key: TendermintKey, - signer: Box + Send + Sync>, + signer: Box + Send + Sync>, ) -> Self { Self { provider, diff --git a/src/keyring/ed25519/softsign.rs b/src/keyring/ed25519/softsign.rs index 1affe62..595eee7 100644 --- a/src/keyring/ed25519/softsign.rs +++ b/src/keyring/ed25519/softsign.rs @@ -9,7 +9,7 @@ use crate::{ error::{Error, ErrorKind::*}, keyring::{SecretKeyEncoding, SigningProvider}, }; -use signatory::{ed25519, encoding::Decode, PublicKeyed}; +use signatory::{ed25519, encoding::Decode, public_key::PublicKeyed}; use signatory_dalek::Ed25519Signer; use std::{fs, process}; use tendermint::{config::PrivValidatorKey, PrivateKey, TendermintKey}; @@ -84,22 +84,29 @@ pub fn init(chain_registry: &mut chain::Registry, configs: &[SoftsignConfig]) -> .priv_key; match private_key { - PrivateKey::Ed25519(pk) => pk.to_seed(), + PrivateKey::Ed25519(pk) => { + // TODO(tarcieri): upgrade Signatory version + ed25519::Seed::from_bytes(pk.to_seed().as_secret_slice()).unwrap() + } } } }; let provider = Ed25519Signer::from(&seed); + let public_key = provider.public_key().map_err(|_| Error::from(InvalidKey))?; - // TODO(tarcieri): support for adding account keys into keyrings - let public_key = TendermintKey::ConsensusKey( - provider - .public_key() - .map_err(|_| Error::from(InvalidKey))? + // TODO(tarcieri): support for adding account keys into keyrings; upgrade Signatory version + let consensus_pubkey = TendermintKey::ConsensusKey( + tendermint::signatory::ed25519::PublicKey::from_bytes(public_key.as_bytes()) + .unwrap() .into(), ); - let signer = Signer::new(SigningProvider::SoftSign, public_key, Box::new(provider)); + let signer = Signer::new( + SigningProvider::SoftSign, + consensus_pubkey, + Box::new(provider), + ); for chain_id in &config.chain_ids { chain_registry.add_to_keyring(chain_id, signer.clone())?; diff --git a/src/keyring/ed25519/yubihsm.rs b/src/keyring/ed25519/yubihsm.rs index 90edff7..fb71a6a 100644 --- a/src/keyring/ed25519/yubihsm.rs +++ b/src/keyring/ed25519/yubihsm.rs @@ -6,7 +6,7 @@ use crate::{ error::{Error, ErrorKind::*}, keyring::{ed25519::Signer, SigningProvider}, }; -use signatory::PublicKeyed; +use signatory::public_key::PublicKeyed; use tendermint::TendermintKey; /// Create hardware-backed YubiHSM signer objects from the given configuration @@ -37,20 +37,21 @@ pub fn init( ) })?; - // TODO(tarcieri): support for adding account keys into keyrings - let public_key = TendermintKey::ConsensusKey( - signer - .public_key() - .map_err(|_| { - err!( - InvalidKey, - "couldn't get public key for YubiHSM key ID 0x{:04x}" - ) - })? + let public_key = signer.public_key().map_err(|_| { + err!( + InvalidKey, + "couldn't get public key for YubiHSM key ID 0x{:04x}" + ) + })?; + + // TODO(tarcieri): support for adding account keys into keyrings; signatory upgrade + let consensus_pubkey = TendermintKey::ConsensusKey( + tendermint::signatory::ed25519::PublicKey::from_bytes(public_key.as_bytes()) + .unwrap() .into(), ); - let signer = Signer::new(SigningProvider::Yubihsm, public_key, Box::new(signer)); + let signer = Signer::new(SigningProvider::Yubihsm, consensus_pubkey, Box::new(signer)); for chain_id in &config.chain_ids { chain_registry.add_to_keyring(chain_id, signer.clone())?; diff --git a/src/session.rs b/src/session.rs index c1ea363..e02e31f 100644 --- a/src/session.rs +++ b/src/session.rs @@ -164,7 +164,11 @@ impl Session { let signature = chain.keyring.sign_ed25519(None, &to_sign)?; self.log_signing_request(&request, started_at).unwrap(); - request.set_signature(&signature); + + // TODO(tarcieri): bump Signatory version in the `tendermint` crate + request.set_signature(&tendermint::signatory::ed25519::Signature::new( + signature.to_bytes(), + )); Ok(request.build_response(None)) } diff --git a/tests/integration.rs b/tests/integration.rs index 1a2399d..b654b4d 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -5,7 +5,12 @@ extern crate prost_amino as prost; use crate::prost::Message; use chrono::{DateTime, Utc}; use rand::Rng; -use signatory::{ed25519, Decode, PublicKeyed, Signature, Verifier}; +use signatory::{ + ed25519, + encoding::Decode, + public_key::PublicKeyed, + signature::{Signature, Verifier}, +}; use signatory_dalek::{Ed25519Signer, Ed25519Verifier}; use std::{ fs,