diff --git a/Cargo.lock b/Cargo.lock index 6e5f08f3..20ee8d05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,7 +8,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ - "gimli", + "gimli 0.27.2", ] [[package]] @@ -23,6 +23,18 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.0.1" @@ -32,6 +44,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "android_system_properties" version = "0.1.5" @@ -150,19 +177,21 @@ dependencies = [ [[package]] name = "base64" -version = "0.9.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" -dependencies = [ - "byteorder", - "safemem", -] +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bitflags" @@ -205,9 +234,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.9.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array 0.14.7", ] @@ -221,6 +250,16 @@ dependencies = [ "byte-tools", ] +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + [[package]] name = "buf_redux" version = "0.8.4" @@ -257,9 +296,9 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" [[package]] name = "cfg-if" @@ -309,6 +348,12 @@ dependencies = [ "bitflags", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -327,6 +372,15 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + [[package]] name = "cpufeatures" version = "0.2.7" @@ -389,45 +443,56 @@ dependencies = [ ] [[package]] -name = "curl" -version = "0.4.44" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2", - "winapi", + "generic-array 0.14.7", + "typenum", ] [[package]] -name = "curl-sys" -version = "0.4.61+curl-8.0.1" +name = "curve25519-dalek" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14d05c10f541ae6f3bc5b3d923c20001f47db7d5f0b2bc6ad16490133842db79" +checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version", + "subtle", + "zeroize", ] [[package]] -name = "curve25519-dalek" -version = "3.2.1" +name = "curve25519-dalek-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "dary_heap" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", "zeroize", ] @@ -442,11 +507,12 @@ dependencies = [ [[package]] name = "digest" -version = "0.9.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "generic-array 0.14.7", + "block-buffer 0.10.4", + "crypto-common", ] [[package]] @@ -463,26 +529,27 @@ dependencies = [ [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ + "pkcs8", "serde", "signature", ] [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "rand 0.7.3", "serde", - "serde_bytes", - "sha2 0.9.9", + "sha2 0.10.8", + "signature", + "subtle", "zeroize", ] @@ -554,6 +621,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + [[package]] name = "fastrand" version = "1.9.0" @@ -563,6 +636,12 @@ dependencies = [ "instant", ] +[[package]] +name = "fiat-crypto" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38793c55593b33412e3ae40c2c9781ffaa6f438f6f8c10f24e71846fbd7ae01e" + [[package]] name = "filetime" version = "0.2.21" @@ -656,7 +735,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", ] [[package]] @@ -710,24 +789,24 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.1.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "wasi", ] [[package]] -name = "getrandom" -version = "0.2.9" +name = "gimli" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "fallible-iterator", + "indexmap", + "stable_deref_trait", ] [[package]] @@ -742,15 +821,24 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + [[package]] name = "hc_seed_bundle" -version = "0.1.6" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63bba5629a49d90007bb81a27a9ba8f9c597a82246d44e73126130617f11c52b" +checksum = "1524f81cc7a05bfacd666324692d1cd46c9f8dce68aa524a4c8a993449617f6b" dependencies = [ "futures", "one_err", - "rmp-serde", + "rmp-serde 0.15.5", "rmpv", "serde", "serde_bytes", @@ -775,15 +863,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.1" @@ -792,7 +871,7 @@ checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" [[package]] name = "hpos-config-core" -version = "0.2.0" +version = "0.2.1" dependencies = [ "argon2min", "arrayref", @@ -809,7 +888,7 @@ dependencies = [ [[package]] name = "hpos-config-gen-cli" -version = "0.2.0" +version = "0.2.1" dependencies = [ "docopt", "ed25519-dalek", @@ -823,7 +902,7 @@ dependencies = [ [[package]] name = "hpos-config-gen-web" -version = "0.2.0" +version = "0.2.1" dependencies = [ "arrayref", "base64 0.13.1", @@ -838,7 +917,7 @@ dependencies = [ [[package]] name = "hpos-config-into-base36-id" -version = "0.2.0" +version = "0.2.1" dependencies = [ "anyhow", "ed25519-dalek", @@ -851,7 +930,7 @@ dependencies = [ [[package]] name = "hpos-config-is-valid" -version = "0.2.0" +version = "0.2.1" dependencies = [ "anyhow", "hpos-config-core", @@ -860,14 +939,14 @@ dependencies = [ [[package]] name = "hpos-config-seed-bundle-explorer" -version = "0.2.0" +version = "0.2.1" dependencies = [ "base64 0.13.1", "ed25519-dalek", "hc_seed_bundle", "hpos-config-core", "one_err", - "rmp-serde", + "rmp-serde 1.1.1", "serde_json", "sodoken", "thiserror", @@ -876,7 +955,7 @@ dependencies = [ [[package]] name = "hpos-config-seed-encoder" -version = "0.2.0" +version = "0.2.1" dependencies = [ "anyhow", "ed25519-dalek", @@ -954,7 +1033,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg 1.1.0", - "hashbrown", + "hashbrown 0.12.3", ] [[package]] @@ -1006,35 +1085,39 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.144" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libflate" -version = "1.3.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97822bf791bd4d5b403713886a5fbe8bf49520fe78e323b0dc480ca1a03e50b0" +checksum = "9f7d5654ae1795afc7ff76f4365c2c8791b0feb18e8996a96adad8ffd7c3b2bf" dependencies = [ "adler32", + "core2", "crc32fast", + "dary_heap", "libflate_lz77", ] [[package]] name = "libflate_lz77" -version = "1.2.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" +checksum = "be5f52fb8c451576ec6b79d3f4deb327398bc05bbdbd99021a6e77a4c855d524" dependencies = [ + "core2", + "hashbrown 0.13.2", "rle-decode-fast", ] [[package]] name = "libsodium-sys-stable" -version = "1.19.27" +version = "1.20.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c2e36a6759ec7f4d772d2e01af0bf5ba63eb114bbab488cbcf53884c6408bb9" +checksum = "956ff84815195b3d40db429f6cb8c7b1c6548c618797b3b919e08fec250bcdd2" dependencies = [ "cc", "libc", @@ -1047,18 +1130,6 @@ dependencies = [ "zip", ] -[[package]] -name = "libz-sys" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linux-raw-sys" version = "0.3.7" @@ -1141,14 +1212,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.45.0", + "wasi", + "windows-sys 0.48.0", ] [[package]] @@ -1196,11 +1266,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.1", "libc", ] @@ -1224,9 +1294,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "one_err" @@ -1246,30 +1316,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "parking_lot" version = "0.12.1" @@ -1307,9 +1353,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -1317,12 +1363,28 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +[[package]] +name = "platforms" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1355,9 +1417,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -1370,9 +1432,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.27" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1387,7 +1449,7 @@ dependencies = [ "libc", "rand_chacha 0.1.1", "rand_core 0.4.2", - "rand_hc 0.1.0", + "rand_hc", "rand_isaac", "rand_jitter", "rand_os", @@ -1396,19 +1458,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - [[package]] name = "rand" version = "0.8.5" @@ -1430,16 +1479,6 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - [[package]] name = "rand_chacha" version = "0.3.1" @@ -1465,22 +1504,13 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - [[package]] name = "rand_core" version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.9", + "getrandom", ] [[package]] @@ -1492,15 +1522,6 @@ dependencies = [ "rand_core 0.3.1", ] -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - [[package]] name = "rand_isaac" version = "0.1.1" @@ -1623,17 +1644,17 @@ checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" [[package]] name = "ring" -version = "0.16.20" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", + "getrandom", "libc", - "once_cell", "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1653,6 +1674,17 @@ dependencies = [ "paste", ] +[[package]] +name = "rmp-serde" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "723ecff9ad04f4ad92fe1c8ca6c20d2196d9286e9c60727c4cb5511629260e9d" +dependencies = [ + "byteorder", + "rmp", + "serde", +] + [[package]] name = "rmp-serde" version = "1.1.1" @@ -1704,6 +1736,15 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.37.19" @@ -1720,14 +1761,33 @@ dependencies = [ [[package]] name = "rustls" -version = "0.20.8" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", "ring", - "sct", - "webpki", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" + +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] @@ -1742,15 +1802,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" -[[package]] -name = "schannel" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" -dependencies = [ - "windows-sys 0.42.0", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -1758,14 +1809,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "sct" -version = "0.7.0" +name = "semver" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" @@ -1793,7 +1840,7 @@ checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", ] [[package]] @@ -1823,20 +1870,18 @@ dependencies = [ "block-buffer 0.7.3", "digest 0.8.1", "fake-simd", - "opaque-debug 0.2.3", + "opaque-debug", ] [[package]] name = "sha2" -version = "0.9.9" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug 0.3.0", + "digest 0.10.7", ] [[package]] @@ -1850,9 +1895,13 @@ dependencies = [ [[package]] name = "signature" -version = "1.6.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] [[package]] name = "slab" @@ -1871,19 +1920,19 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" -version = "0.4.9" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "sodoken" -version = "0.0.9" +version = "0.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebd7d30290221181652f7a08112f5e7871e3deffde718dfa621025aa0e9c290" +checksum = "907e0ea9699b846c2586ea5685e9abf5963fca64a5179a406e6ac02b94564e30" dependencies = [ "libc", "libsodium-sys-stable", @@ -1896,9 +1945,25 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" @@ -1955,9 +2020,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.16" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -2035,7 +2100,7 @@ checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", ] [[package]] @@ -2094,11 +2159,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.28.1" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ - "autocfg 1.1.0", + "backtrace", "bytes", "libc", "mio", @@ -2113,13 +2178,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", ] [[package]] @@ -2187,22 +2252,25 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.6.2" +version = "2.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "338b31dd1314f68f3aabf3ed57ab922df95ffcd902476ca7ba3c4ce7b908c46d" +checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" dependencies = [ - "base64 0.13.1", + "base64 0.21.7", + "brotli-decompressor", + "flate2", "log", "once_cell", "rustls", + "rustls-pki-types", + "rustls-webpki", "url", - "webpki", "webpki-roots", ] @@ -2237,16 +2305,18 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walrus" -version = "0.19.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb08e48cde54c05f363d984bb54ce374f49e242def9468d2e1b6c2372d291f8" +checksum = "2c03529cd0c4400a2449f640d2f27cd1b48c3065226d15e26d98e4429ab0adb7" dependencies = [ "anyhow", + "gimli 0.26.2", "id-arena", "leb128", "log", "rayon", "walrus-macro", + "wasm-encoder", "wasmparser", ] @@ -2262,12 +2332,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2276,9 +2340,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "serde", @@ -2288,27 +2352,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-cli" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146a06192d4ba08eb0ba16fa6a188a7de4f6610305096329f64d29cbe778f95a" +checksum = "08f61e21873f51e3059a8c7c3eef81ede7513d161cfc60751c7b2ffa6ed28270" dependencies = [ "anyhow", - "curl", "docopt", "env_logger", "log", @@ -2316,6 +2379,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", + "ureq", "walrus", "wasm-bindgen-cli-support", "wasm-bindgen-shared", @@ -2323,12 +2387,12 @@ dependencies = [ [[package]] name = "wasm-bindgen-cli-support" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f1cabc1f05d000bb97b10633b4e8ac73e97914b042ab95418a95621b9d986b7" +checksum = "ca821da8c1ae6c87c5e94493939a206daa8587caff227c6032e0061a3d80817f" dependencies = [ "anyhow", - "base64 0.9.3", + "base64 0.21.7", "log", "rustc-demangle", "serde_json", @@ -2345,9 +2409,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-externref-xform" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "210d6edce27dfda0ea08dc121741265b6a0b355d793d752d08daeeed12e910a1" +checksum = "102582726b35a30d53157fbf8de3d0f0fed4c40c0c7951d69a034e9ef01da725" dependencies = [ "anyhow", "walrus", @@ -2355,9 +2419,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2365,22 +2429,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-multi-value-xform" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae5176f81a841577be95577377b683afd4e55dc5f09970181696592f3b2ac6b" +checksum = "3498e4799f43523d780ceff498f04d882a8dbc9719c28020034822e5952f32a4" dependencies = [ "anyhow", "walrus", @@ -2388,15 +2452,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-bindgen-threads-xform" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f482e5457007cde7b2d0b5e8b99b87c3ec964b8be9a0fbf1761468016abc5e7" +checksum = "2d5add359b7f7d09a55299a9d29be54414264f2b8cf84f8c8fda5be9269b5dd9" dependencies = [ "anyhow", "walrus", @@ -2405,9 +2469,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-wasm-conventions" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e77c856d9a4a0769ad72d6bfd7c90a67261750d788b57725c14c77973897eb" +checksum = "8c04e3607b810e76768260db3a5f2e8beb477cb089ef8726da85c8eb9bd3b575" dependencies = [ "anyhow", "walrus", @@ -2415,9 +2479,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-wasm-interpreter" -version = "0.2.85" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c5f06c674d78ce83868c751f11e6c066397fbf2c1bed67058a22301dc02086" +checksum = "9ea966593c8243a33eb4d643254eb97a69de04e89462f46cf6b4f506aae89b3a" dependencies = [ "anyhow", "log", @@ -2426,38 +2490,27 @@ dependencies = [ ] [[package]] -name = "wasmparser" -version = "0.77.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe3d5405e9ea6c1317a656d6e0820912d8b7b3607823a7596117c8f666daf6f" - -[[package]] -name = "web-sys" -version = "0.3.62" +name = "wasm-encoder" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721" +checksum = "18c41dbd92eaebf3612a39be316540b8377c871cb9bde6b064af962984912881" dependencies = [ - "js-sys", - "wasm-bindgen", + "leb128", ] [[package]] -name = "webpki" -version = "0.22.0" +name = "wasmparser" +version = "0.80.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" -dependencies = [ - "ring", - "untrusted", -] +checksum = "449167e2832691a1bff24cde28d2804e90e09586a448c8e76984792c44334a6b" [[package]] name = "webpki-roots" -version = "0.22.6" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" dependencies = [ - "webpki", + "rustls-pki-types", ] [[package]] @@ -2500,21 +2553,6 @@ dependencies = [ "windows-targets 0.48.0", ] -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -2533,6 +2571,15 @@ dependencies = [ "windows-targets 0.48.0", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -2563,6 +2610,22 @@ dependencies = [ "windows_x86_64_msvc 0.48.0", ] +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -2575,6 +2638,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -2587,6 +2656,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -2599,6 +2674,18 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -2611,6 +2698,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -2623,6 +2716,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -2635,6 +2734,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -2647,6 +2752,12 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + [[package]] name = "xattr" version = "0.2.3" @@ -2657,25 +2768,31 @@ dependencies = [ ] [[package]] -name = "zeroize" -version = "1.3.0" +name = "zerocopy" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ - "zeroize_derive", + "zerocopy-derive", ] [[package]] -name = "zeroize_derive" -version = "1.4.2" +name = "zerocopy-derive" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.16", + "syn 2.0.60", ] +[[package]] +name = "zeroize" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63381fa6624bf92130a6b87c0d07380116f80b565c42cf0d754136f0238359ef" + [[package]] name = "zip" version = "0.6.5" diff --git a/Cargo.toml b/Cargo.toml index 15088094..b6c19d71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,3 +9,13 @@ members = [ "seed-bundle-explorer", "is-valid" ] + +[workspace.dependencies] +ed25519-dalek = "2.1.1" +anyhow = "1.0" +serde_json = "1.0.64" +tokio = "1.12.0" +structopt = "0.3.25" +serde = { version = "1.0.123", features = ["derive"] } +base64 = "0.13.0" +failure = "0.1.5" diff --git a/core/Cargo.toml b/core/Cargo.toml index 49ba4876..35c577f7 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-core" -version = "0.2.0" +version = "0.2.1" authors = [ "Perry Kundert ", "Yegor Timoshenko ", @@ -11,13 +11,13 @@ repository = "https://github.com/Holo-Host/hpos-config" [dependencies] arrayref = "0.3.5" -base64 = "0.13.0" +base64 = { workspace = true } blake2b_simd = {version = "1.0.0"} -ed25519-dalek = { version = "1.0.1", features = ["serde"] } -failure = "0.1.5" +ed25519-dalek = { workspace = true, features = ["serde", "digest"] } +failure = { workspace = true } lazy_static = "1.2" rand = "0.6.5" -serde = { version = "1.0.123", features = ["derive"] } +serde = { workspace = true } url = "2.1.0" base36 = "=0.0.1" diff --git a/core/src/config.rs b/core/src/config.rs index 84c1a571..2ebed2e5 100644 --- a/core/src/config.rs +++ b/core/src/config.rs @@ -1,20 +1,23 @@ use arrayref::array_ref; -use ed25519_dalek::*; +use ed25519_dalek::{Digest, Sha512, SigningKey, VerifyingKey}; use failure::Error; use rand::{rngs::OsRng, Rng}; use serde::*; pub const SEED_SIZE: usize = 32; -fn public_key_from_base64<'de, D>(deserializer: D) -> Result +fn public_key_from_base64<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { String::deserialize(deserializer) .and_then(|s| { - base64::decode_config(&s, base64::STANDARD_NO_PAD) + base64::decode_config(s, base64::STANDARD_NO_PAD) .map_err(|err| de::Error::custom(err.to_string())) }) - .map(|bytes| PublicKey::from_bytes(&bytes)) + .map(|bytes| match bytes[0..32].try_into() { + Ok(b) => VerifyingKey::from_bytes(&b).map_err(|e| e.to_string()), + Err(_) => Err("Public key is not 32 bytes long".to_string()), + }) .and_then(|maybe_key| maybe_key.map_err(|err| de::Error::custom(err.to_string()))) } @@ -23,8 +26,8 @@ where D: Deserializer<'de>, { String::deserialize(deserializer) - .and_then(|s| base64::decode(&s).map_err(|err| de::Error::custom(err.to_string()))) - .map(|bytes| array_ref!(bytes, 0, SEED_SIZE).clone()) + .and_then(|s| base64::decode(s).map_err(|err| de::Error::custom(err.to_string()))) + .map(|bytes| *array_ref!(bytes, 0, SEED_SIZE)) } fn to_base64(x: &T, serializer: S) -> Result @@ -46,7 +49,7 @@ pub struct Admin { deserialize_with = "public_key_from_base64", serialize_with = "to_base64" )] - pub public_key: PublicKey, + pub public_key: VerifyingKey, } #[derive(Debug, Deserialize, Serialize)] @@ -80,12 +83,12 @@ impl Config { email: String, password: String, maybe_seed: Option, - ) -> Result<(Self, PublicKey), Error> { + ) -> Result<(Self, VerifyingKey), Error> { let (seed, admin_keypair, holochain_public_key) = generate_keypair(email.clone(), password, maybe_seed)?; let admin = Admin { - email: email, - public_key: admin_keypair.public, + email, + public_key: admin_keypair.verifying_key(), }; Ok(( @@ -103,25 +106,25 @@ impl Config { registration_code: String, derivation_path: String, device_bundle: String, - device_pub_key: PublicKey, - ) -> Result<(Self, PublicKey), Error> { + device_pub_key: VerifyingKey, + ) -> Result<(Self, VerifyingKey), Error> { let admin_keypair = admin_keypair_from(device_pub_key, &email, &password)?; let admin = Admin { - email: email, - public_key: admin_keypair.public, + email, + public_key: admin_keypair.verifying_key(), }; Ok(( Config::V2 { device_bundle, derivation_path, registration_code, - settings: Settings { admin: admin }, + settings: Settings { admin }, }, device_pub_key, )) } - pub fn admin_public_key(&self) -> PublicKey { + pub fn admin_public_key(&self) -> VerifyingKey { match self { Config::V1 { settings, .. } | Config::V2 { settings, .. } => settings.admin.public_key, } @@ -132,23 +135,23 @@ fn generate_keypair( email: String, password: String, maybe_seed: Option, -) -> Result<(Seed, Keypair, PublicKey), Error> { +) -> Result<(Seed, SigningKey, VerifyingKey), Error> { let master_seed = match maybe_seed { None => OsRng::new()?.gen::(), Some(s) => s, }; - let master_secret_key = SecretKey::from_bytes(&master_seed)?; - let master_public_key = PublicKey::from(&master_secret_key); + let master_secret_key = SigningKey::from_bytes(&master_seed); + let master_public_key = VerifyingKey::from(&master_secret_key); let admin_keypair = admin_keypair_from(master_public_key, &email, &password)?; Ok((master_seed, admin_keypair, master_public_key)) } pub fn admin_keypair_from( - holochain_public_key: PublicKey, + holochain_public_key: VerifyingKey, email: &str, password: &str, -) -> Result { +) -> Result { // This allows to use email addresses shorter than 8 bytes. let salt = Sha512::digest(email.as_bytes()); let mut hash = [0; SEED_SIZE]; @@ -161,11 +164,5 @@ pub fn admin_keypair_from( ARGON2_ADDITIONAL_DATA, ); - let secret_key = SecretKey::from_bytes(&hash)?; - let public_key = PublicKey::from(&secret_key); - - Ok(Keypair { - public: public_key, - secret: secret_key, - }) + Ok(SigningKey::from_bytes(&hash)) } diff --git a/core/src/public_key.rs b/core/src/public_key.rs index 6b2c005d..b182ae24 100644 --- a/core/src/public_key.rs +++ b/core/src/public_key.rs @@ -1,13 +1,13 @@ -use ed25519_dalek::PublicKey; +use ed25519_dalek::VerifyingKey; use failure::*; use url::Url; -pub fn to_base36_id(public_key: &PublicKey) -> String { +pub fn to_base36_id(public_key: &VerifyingKey) -> String { base36::encode(&public_key.to_bytes()) } -pub fn to_url(public_key: &PublicKey) -> Fallible { - let url = format!("https://{}.holohost.net", to_base36_id(&public_key)); +pub fn to_url(public_key: &VerifyingKey) -> Fallible { + let url = format!("https://{}.holohost.net", to_base36_id(public_key)); Ok(Url::parse(&url)?) } @@ -36,12 +36,12 @@ pub fn holo_dht_location_bytes(data: &[u8]) -> Vec { pub(crate) const AGENT_PREFIX: &[u8] = &[0x84, 0x20, 0x24]; // uhCAk [132, 32, 36] /// convert public key to holochain compatible format -pub fn to_holochain_encoded_agent_key(public_key: &PublicKey) -> String { +pub fn to_holochain_encoded_agent_key(public_key: &VerifyingKey) -> String { let x: [u8; 32] = public_key.to_bytes(); format!( "u{}", base64::encode_config( - &[AGENT_PREFIX, &x, &holo_dht_location_bytes(x.as_ref())].concat(), + [AGENT_PREFIX, &x, &holo_dht_location_bytes(x.as_ref())].concat(), base64::URL_SAFE_NO_PAD ) ) diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..ca01d26f --- /dev/null +++ b/flake.lock @@ -0,0 +1,411 @@ +{ + "nodes": { + "cargo-chef": { + "flake": false, + "locked": { + "lastModified": 1695999026, + "narHash": "sha256-UtLoZd7YBRSF9uXStfC3geEFqSqZXFh1rLHaP8hre0Y=", + "owner": "LukeMathWalker", + "repo": "cargo-chef", + "rev": "6e96ae5cd023b718ae40d608981e50a6e7d7facf", + "type": "github" + }, + "original": { + "owner": "LukeMathWalker", + "ref": "main", + "repo": "cargo-chef", + "type": "github" + } + }, + "cargo-rdme": { + "flake": false, + "locked": { + "lastModified": 1675118998, + "narHash": "sha256-lrYWqu3h88fr8gG3Yo5GbFGYaq5/1Os7UtM+Af0Bg4k=", + "owner": "orium", + "repo": "cargo-rdme", + "rev": "f9dbb6bccc078f4869f45ae270a2890ac9a75877", + "type": "github" + }, + "original": { + "owner": "orium", + "ref": "v1.1.0", + "repo": "cargo-rdme", + "type": "github" + } + }, + "crane": { + "inputs": { + "nixpkgs": [ + "holochain-flake", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707363936, + "narHash": "sha256-QbqyvGFYt84QNOQLOOTWplZZkzkyDhYrAl/N/9H0vFM=", + "owner": "ipetkov", + "repo": "crane", + "rev": "9107434eda6991e9388ad87b815dafa337446d16", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crate2nix": { + "flake": false, + "locked": { + "lastModified": 1706909251, + "narHash": "sha256-T7G9Uhh77P0kKri/u+Mwa/4YnXwdPsJSwYCiJCCW+fs=", + "owner": "kolloch", + "repo": "crate2nix", + "rev": "15656bb6cb15f55ee3344bf4362e6489feb93db6", + "type": "github" + }, + "original": { + "owner": "kolloch", + "repo": "crate2nix", + "type": "github" + } + }, + "empty": { + "flake": false, + "locked": { + "lastModified": 1683792623, + "narHash": "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo=", + "owner": "steveej", + "repo": "empty", + "rev": "8e328e450e4cd32e072eba9e99fe92cf2a1ef5cf", + "type": "github" + }, + "original": { + "owner": "steveej", + "repo": "empty", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "holochain": { + "flake": false, + "locked": { + "lastModified": 1712710944, + "narHash": "sha256-ye4bu3XgmufPZWwd2RCBkdkyV9dCVAx4CLiL8QKgixg=", + "owner": "holochain", + "repo": "holochain", + "rev": "28dce06eef726cc7320637ab76ffe6f2798b12b8", + "type": "github" + }, + "original": { + "owner": "holochain", + "ref": "holochain-0.3.0-beta-dev.45", + "repo": "holochain", + "type": "github" + } + }, + "holochain-flake": { + "inputs": { + "cargo-chef": "cargo-chef", + "cargo-rdme": "cargo-rdme", + "crane": "crane", + "crate2nix": "crate2nix", + "empty": "empty", + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "holochain": [ + "holochain-flake", + "empty" + ], + "lair": [ + "holochain-flake", + "empty" + ], + "launcher": [ + "holochain-flake", + "empty" + ], + "nix-filter": "nix-filter", + "nixpkgs": "nixpkgs", + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "repo-git": "repo-git", + "rust-overlay": "rust-overlay", + "scaffolding": [ + "holochain-flake", + "empty" + ], + "versions": [ + "versions" + ] + }, + "locked": { + "lastModified": 1714532771, + "narHash": "sha256-hFdfaMzk28AyIjOTXitEt2QPXB68bezrQbD2pSBLw/U=", + "owner": "holochain", + "repo": "holochain", + "rev": "fe679885c459898cd398507ced10f5e34044a168", + "type": "github" + }, + "original": { + "owner": "holochain", + "repo": "holochain", + "type": "github" + } + }, + "lair": { + "flake": false, + "locked": { + "lastModified": 1709335027, + "narHash": "sha256-rKMhh7TLuR1lqze2YFWZCGYKZQoB4dZxjpX3sb7r7Jk=", + "owner": "holochain", + "repo": "lair", + "rev": "826be915efc839d1d1b8a2156b158999b8de8d5b", + "type": "github" + }, + "original": { + "owner": "holochain", + "ref": "lair_keystore-v0.4.4", + "repo": "lair", + "type": "github" + } + }, + "launcher": { + "flake": false, + "locked": { + "lastModified": 1712599324, + "narHash": "sha256-MNUTplS5O+w1G70kZMpFGfBTqOzzTRU6DYarl1bGVFY=", + "owner": "holochain", + "repo": "launcher", + "rev": "597592253c9d2ca64a4e4ac4675ff5081c9dd9b5", + "type": "github" + }, + "original": { + "owner": "holochain", + "ref": "holochain-weekly", + "repo": "launcher", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1705332318, + "narHash": "sha256-kcw1yFeJe9N4PjQji9ZeX47jg0p9A0DuU4djKvg1a7I=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "3449dc925982ad46246cfc36469baf66e1b64f17", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1706550542, + "narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "97b17f32362e475016f942bbdfda4a4a72a8a652", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks-nix": { + "flake": false, + "locked": { + "lastModified": 1707297608, + "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "repo-git": { + "flake": false, + "locked": { + "narHash": "sha256-d6xi4mKdjkX2JFicDIv5niSzpyI0m/Hnm8GGAIU04kY=", + "type": "file", + "url": "file:/dev/null" + }, + "original": { + "type": "file", + "url": "file:/dev/null" + } + }, + "root": { + "inputs": { + "flake-parts": [ + "holochain-flake", + "flake-parts" + ], + "holochain-flake": "holochain-flake", + "nixpkgs": [ + "holochain-flake", + "nixpkgs" + ], + "versions": "versions" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "holochain-flake", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714443211, + "narHash": "sha256-lKTA3XqRo4aVgkyTSCtpcALpGXdmkilHTtN00eRg0QU=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "ce35c36f58f82cee6ec959e0d44c587d64281b6f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "scaffolding": { + "flake": false, + "locked": { + "lastModified": 1712589090, + "narHash": "sha256-neMBujjSEsOI0/MT1JpYnjtMq4tKHloCbYd8w6ARAKQ=", + "owner": "holochain", + "repo": "scaffolding", + "rev": "55b17239fb7aa80d6afce24479bb2b7ef18c5b6b", + "type": "github" + }, + "original": { + "owner": "holochain", + "ref": "holochain-weekly", + "repo": "scaffolding", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "versions": { + "inputs": { + "holochain": "holochain", + "lair": "lair", + "launcher": "launcher", + "scaffolding": "scaffolding" + }, + "locked": { + "dir": "versions/weekly", + "lastModified": 1712710944, + "narHash": "sha256-ye4bu3XgmufPZWwd2RCBkdkyV9dCVAx4CLiL8QKgixg=", + "owner": "holochain", + "repo": "holochain", + "rev": "28dce06eef726cc7320637ab76ffe6f2798b12b8", + "type": "github" + }, + "original": { + "dir": "versions/weekly", + "owner": "holochain", + "ref": "holochain-0.3.0-beta-dev.45", + "repo": "holochain", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..541889f0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,38 @@ +{ + description = "Template for Holochain app development"; + + inputs = { + versions.url = "github:holochain/holochain/holochain-0.3.0-beta-dev.45?dir=versions/weekly"; + versions.inputs.holochain.url = "github:holochain/holochain/holochain-0.3.0-beta-dev.45"; + + holochain-flake.url = "github:holochain/holochain"; + holochain-flake.inputs.versions.follows = "versions"; + + nixpkgs.follows = "holochain-flake/nixpkgs"; + flake-parts.follows = "holochain-flake/flake-parts"; + }; + + outputs = inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } + { + systems = builtins.attrNames inputs.holochain-flake.devShells; + + perSystem = + { inputs' + , config + , pkgs + , system + , ... + }: { + + devShells.default = pkgs.mkShell { + inputsFrom = [ inputs'.holochain-flake.devShells.holonix ]; + packages = [ + pkgs.nodejs-18_x + pkgs.binaryen + # more packages go here + ]; + }; + }; + }; +} \ No newline at end of file diff --git a/gen-cli/Cargo.toml b/gen-cli/Cargo.toml index b5a025b8..46db6cad 100644 --- a/gen-cli/Cargo.toml +++ b/gen-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-gen-cli" -version = "0.2.0" +version = "0.2.1" authors = [ "Yegor Timoshenko ", "zo-el " @@ -10,10 +10,10 @@ repository = "https://github.com/Holo-Host/hpos-config" [dependencies] docopt = "1.0.2" -failure = "0.1.5" -ed25519-dalek = { version = "1.0.1", features = ["serde"] } +failure = { workspace = true } +ed25519-dalek = { workspace = true, features = ["serde"] } hpos-config-core = { path = "../core" } rand = "0.8.5" -serde = { version = "1.0.123", features = ["derive"] } -serde_json = "1.0.64" +serde = { workspace = true } +serde_json = { workspace = true } sha2 = "0.8" diff --git a/gen-cli/src/main.rs b/gen-cli/src/main.rs index 028068c6..fe642c11 100644 --- a/gen-cli/src/main.rs +++ b/gen-cli/src/main.rs @@ -8,7 +8,7 @@ use serde::*; use sha2::{Digest, Sha512Trunc256}; use std::{env, fs::File, io, path::PathBuf}; -const USAGE: &'static str = " +const USAGE: &str = " Usage: hpos-config-gen-cli --email EMAIL --password STRING --registration-code STRING --derivation-path STRING --device-bundle STRING [--seed-from PATH] hpos-config-gen-cli --help @@ -35,7 +35,7 @@ struct Args { fn main() -> Result<(), Error> { let args: Args = Docopt::new(USAGE) - .and_then(|d| d.argv(env::args().into_iter()).deserialize()) + .and_then(|d| d.argv(env::args()).deserialize()) .unwrap_or_else(|e| e.exit()); let seed = match args.flag_seed_from { @@ -50,7 +50,7 @@ fn main() -> Result<(), Error> { } }; - let secret_key = SecretKey::from_bytes(&seed)?; + let secret_key = SigningKey::from_bytes(&seed); let (config, public_key) = Config::new_v2( args.flag_email, @@ -58,7 +58,7 @@ fn main() -> Result<(), Error> { args.flag_registration_code, args.flag_derivation_path, args.flag_device_bundle, - PublicKey::from(&secret_key), + VerifyingKey::from(&secret_key), )?; eprintln!("{}", public_key::to_url(&public_key)?); println!("{}", serde_json::to_string_pretty(&config)?); diff --git a/gen-web/Cargo.toml b/gen-web/Cargo.toml index 4a9a60f7..6fba6c9f 100644 --- a/gen-web/Cargo.toml +++ b/gen-web/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-gen-web" -version = "0.2.0" +version = "0.2.1" authors = [ "Lisa Jetton ", "PJ Klimek ", @@ -12,14 +12,14 @@ repository = "https://github.com/Holo-Host/hpos-config" [dependencies] arrayref = "0.3.5" -base64 = "0.13.0" -ed25519-dalek = { version = "1.0.1", features = ["serde"] } -failure = "0.1.5" +base64 = { workspace = true } +ed25519-dalek = { workspace = true, features = ["serde"] } +failure = { workspace = true } hpos-config-core = { path = "../core", features = ["wasm-bindgen"] } -serde = { version = "1.0.123", features = ["derive"] } -serde_json = "1.0.64" +serde = { workspace = true } +serde_json = { workspace = true } wasm-bindgen = { version = "0.2.51", features = ["serde-serialize"] } -wasm-bindgen-cli = "0.2.51" +wasm-bindgen-cli = "0.2.92" [lib] crate-type = ["cdylib", "rlib"] diff --git a/gen-web/src/lib.rs b/gen-web/src/lib.rs index 8b9cbbed..719438f2 100644 --- a/gen-web/src/lib.rs +++ b/gen-web/src/lib.rs @@ -1,5 +1,5 @@ -use ed25519_dalek::PublicKey; -use failure::Error; +use ed25519_dalek::VerifyingKey; +use failure::{format_err, Error}; use hpos_config_core::{public_key, Config}; use serde::*; use wasm_bindgen::prelude::*; @@ -20,8 +20,14 @@ fn config_raw( device_bundle: String, device_pub_key: String, ) -> Result { - let device_pub_key: PublicKey = base64::decode_config(&device_pub_key, base64::URL_SAFE_NO_PAD) - .map(|bytes| PublicKey::from_bytes(&bytes))??; + let bytes: [u8; 32] = + match (base64::decode_config(device_pub_key, base64::URL_SAFE_NO_PAD)?)[0..32].try_into() { + Ok(b) => b, + Err(_) => return Err(format_err!("Device pub key is not 32 bytes in size")), + }; + + let device_pub_key: VerifyingKey = VerifyingKey::from_bytes(&bytes)?; + let (config, public_key) = Config::new_v2( email, password, diff --git a/into-base36-id/Cargo.toml b/into-base36-id/Cargo.toml index 7d421971..941dd78b 100644 --- a/into-base36-id/Cargo.toml +++ b/into-base36-id/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-into-base36-id" -version = "0.2.0" +version = "0.2.1" authors = [ "Yegor Timoshenko ", "Joel U " @@ -9,10 +9,10 @@ edition = "2021" repository = "https://github.com/Holo-Host/hpos-config" [dependencies] -ed25519-dalek = { version = "1.0.0-pre.1" } -anyhow = "1.0" +ed25519-dalek = { workspace = true } +anyhow = { workspace = true } hpos-config-core = { path = "../core" } hpos-config-seed-bundle-explorer = { path = "../seed-bundle-explorer" } -serde_json = "1.0.64" -tokio = { version = "1.12.0", features = ["rt-multi-thread", "macros"] } -structopt = "0.3.25" +serde_json = { workspace = true } +tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } +structopt = { workspace = true } diff --git a/into-base36-id/src/main.rs b/into-base36-id/src/main.rs index 9d85a5dc..17e99061 100644 --- a/into-base36-id/src/main.rs +++ b/into-base36-id/src/main.rs @@ -2,9 +2,9 @@ use anyhow::{Context, Result}; use ed25519_dalek::*; use hpos_config_core::*; use hpos_config_seed_bundle_explorer::unlock; +use std::fs::File; use std::path::PathBuf; use structopt::StructOpt; -use std::fs::File; #[tokio::main] async fn main() -> Result<()> { @@ -24,24 +24,24 @@ async fn main() -> Result<()> { .. } = Cli::from_args(); - let config_file = - File::open(&config_path).context(format!("failed to open file {}", &config_path.to_string_lossy()))?; + let config_file = File::open(&config_path).context(format!( + "failed to open file {}", + &config_path.to_string_lossy() + ))?; match serde_json::from_reader(config_file)? { Config::V1 { seed, .. } => { - let secret_key = SecretKey::from_bytes(&seed)?; - let public_key = PublicKey::from(&secret_key); + let public_key = VerifyingKey::from_bytes(&seed)?; println!("{}", public_key::to_base36_id(&public_key)); } Config::V2 { device_bundle, .. } => { // take in password - let Keypair { public, .. } = - unlock(&device_bundle, Some(password)) - .await - .context(format!( - "unable to unlock the device bundle from {}", - &config_path.to_string_lossy() - ))?; - println!("{}", public_key::to_base36_id(&public)); + let secret = unlock(&device_bundle, Some(password)) + .await + .context(format!( + "unable to unlock the device bundle from {}", + &config_path.to_string_lossy() + ))?; + println!("{}", public_key::to_base36_id(&secret.verifying_key())); } } diff --git a/is-valid/Cargo.toml b/is-valid/Cargo.toml index 8a68b350..1afe351a 100644 --- a/is-valid/Cargo.toml +++ b/is-valid/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-is-valid" -version = "0.2.0" +version = "0.2.1" authors = [ "Sam Rose " ] @@ -8,6 +8,6 @@ edition = "2021" repository = "https://github.com/Holo-Host/hpos-config" [dependencies] -anyhow = "1.0" +anyhow = { workspace = true } hpos-config-core = { path = "../core" } -serde_json = "1.0.64" +serde_json = { workspace = true } diff --git a/nixpkgs.nix b/nixpkgs.nix deleted file mode 100644 index 7c1129fb..00000000 --- a/nixpkgs.nix +++ /dev/null @@ -1,4 +0,0 @@ -import (fetchTarball { - url = "https://github.com/Holo-Host/holo-nixpkgs/archive/a00a3d8cbec58e7433d75b5f6b709ef4eb9faabd.tar.gz"; - sha256 = "0pw92fbbkq9d628dgfqz3xkxynqvwfdm2jif4iddyfgncliih96y"; -}) diff --git a/seed-bundle-explorer/Cargo.toml b/seed-bundle-explorer/Cargo.toml index 0faf6dd3..ae3e5aa7 100644 --- a/seed-bundle-explorer/Cargo.toml +++ b/seed-bundle-explorer/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-seed-bundle-explorer" -version = "0.2.0" +version = "0.2.1" authors = [ "Joel U " ] @@ -8,15 +8,15 @@ edition = "2021" repository = "https://github.com/Holo-Host/hpos-config" [dependencies] -base64 = "0.13.0" -ed25519-dalek = { version = "1", features = ["serde"] } +base64 = { workspace = true } +ed25519-dalek = { workspace = true, features = ["serde"] } hpos-config-core = { path = "../core" } -serde_json = "1.0.64" -hc_seed_bundle = "0.1.5" -sodoken = "0.0.9" +serde_json = { workspace = true } +hc_seed_bundle = "0.2.3" +sodoken = "0.0.11" rmp-serde = "1.1.0" thiserror = "1.0" one_err = "0.0.8" [dev-dependencies] -tokio = { version = "1.12.0", features = [ "full" ] } +tokio = { workspace = true, features = [ "full" ] } diff --git a/seed-bundle-explorer/src/lib.rs b/seed-bundle-explorer/src/lib.rs index 777b19fc..d66709cf 100644 --- a/seed-bundle-explorer/src/lib.rs +++ b/seed-bundle-explorer/src/lib.rs @@ -1,4 +1,4 @@ -use ed25519_dalek::{ed25519, Keypair, PublicKey, SecretKey}; +use ed25519_dalek::{ed25519, SigningKey, VerifyingKey}; use hc_seed_bundle::*; use hpos_config_core::Config; @@ -6,11 +6,11 @@ use hpos_config_core::Config; pub async fn holoport_public_key( config: &Config, passphrase: Option, -) -> SeedExplorerResult { +) -> SeedExplorerResult { match config { Config::V1 { seed, .. } => { - let secret_key = SecretKey::from_bytes(seed)?; - Ok(PublicKey::from(&secret_key)) + let secret_key = SigningKey::from_bytes(seed); + Ok(VerifyingKey::from(&secret_key)) } Config::V2 { device_bundle, .. } => { /* @@ -18,8 +18,8 @@ pub async fn holoport_public_key( password is pass for now unlock it and get the signPubKey */ - let Keypair { public, .. } = unlock(device_bundle, passphrase).await?; - Ok(public) + let secret = unlock(device_bundle, passphrase).await?; + Ok(secret.verifying_key()) } } } @@ -28,15 +28,9 @@ pub async fn holoport_public_key( pub async fn holoport_key( config: &Config, passphrase: Option, -) -> SeedExplorerResult { +) -> SeedExplorerResult { match config { - Config::V1 { seed, .. } => { - let secret = SecretKey::from_bytes(seed)?; - Ok(Keypair { - public: PublicKey::from(&secret), - secret, - }) - } + Config::V1 { seed, .. } => Ok(SigningKey::from_bytes(seed)), Config::V2 { device_bundle, .. } => { /* decode base64 string to locked device bundle @@ -55,8 +49,8 @@ pub async fn encoded_ed25519_keypair( ) -> SeedExplorerResult { match config { Config::V1 { seed, .. } => { - let secret_key = SecretKey::from_bytes(seed)?; - Ok(encrypt_key(&secret_key, &PublicKey::from(&secret_key))) + let secret_key = SigningKey::from_bytes(seed); + Ok(encrypt_key(&secret_key, &VerifyingKey::from(&secret_key))) } Config::V2 { device_bundle, .. } => { /* @@ -65,23 +59,30 @@ pub async fn encoded_ed25519_keypair( unlock it and get the signPubKey Pass the Seed and PublicKey into `encrypt_key(seed, pubKey)` */ - let Keypair { public, secret } = unlock(device_bundle, passphrase).await?; - Ok(encrypt_key(&secret, &public)) + let secret = unlock(device_bundle, passphrase).await?; + Ok(encrypt_key(&secret, &secret.verifying_key())) } } } /// decode the ed25519 keypair making it compatible with lair ( SeedExplorerResult { +pub fn decoded_to_ed25519_keypair(blob: &String) -> SeedExplorerResult { let decoded_key = base64::decode(blob)?; - Ok(Keypair { - public: PublicKey::from_bytes(&decoded_key[32..64].to_vec())?, - secret: SecretKey::from_bytes(&decoded_key[64..].to_vec())?, - }) + + let decoded_key_bytes: [u8; 32] = match decoded_key[64..].try_into() { + Ok(b) => b, + Err(_) => { + return Err(SeedExplorerError::Generic( + "Unable to extract private key starting at position 64".into(), + )) + } + }; + + Ok(SigningKey::from_bytes(&decoded_key_bytes)) } /// For now lair does not take in any encrypted bytes so we pass back an empty encrypted byte string -pub fn encrypt_key(seed: &SecretKey, public_key: &PublicKey) -> String { +pub fn encrypt_key(seed: &SigningKey, public_key: &VerifyingKey) -> String { let mut encrypted_key = vec![ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -95,7 +96,7 @@ pub fn encrypt_key(seed: &SecretKey, public_key: &PublicKey) -> String { pub async fn unlock( device_bundle: &String, passphrase: Option, -) -> SeedExplorerResult { +) -> SeedExplorerResult { let cipher = base64::decode_config(device_bundle, base64::URL_SAFE_NO_PAD)?; match UnlockedSeedBundle::from_locked(&cipher).await?.remove(0) { LockedSeedCipher::PwHash(cipher) => { @@ -104,10 +105,17 @@ pub async fn unlock( .ok_or(SeedExplorerError::PasswordRequired)?; let passphrase = sodoken::BufRead::from(passphrase.as_bytes().to_vec()); let seed = cipher.unlock(passphrase).await?; - Ok(Keypair { - public: PublicKey::from_bytes(&*seed.get_sign_pub_key().read_lock())?, - secret: SecretKey::from_bytes(&*seed.get_seed().read_lock())?, - }) + + let seed_bytes: [u8; 32] = match (&*seed.get_seed().read_lock())[0..32].try_into() { + Ok(b) => b, + Err(_) => { + return Err(SeedExplorerError::Generic( + "Seed buffer is not 32 bytes long".into(), + )) + } + }; + + Ok(SigningKey::from_bytes(&seed_bytes)) } _ => Err(SeedExplorerError::UnsupportedCipher), } diff --git a/seed-bundle-explorer/tests/explorer.rs b/seed-bundle-explorer/tests/explorer.rs index 05375e9f..ff80684e 100644 --- a/seed-bundle-explorer/tests/explorer.rs +++ b/seed-bundle-explorer/tests/explorer.rs @@ -1,6 +1,6 @@ #[cfg(test)] mod tests { - use ed25519_dalek::PublicKey; + use ed25519_dalek::VerifyingKey; use hpos_config_core::Config; use hpos_config_seed_bundle_explorer::holoport_public_key; @@ -31,11 +31,11 @@ mod tests { .unwrap(); Ok(config) } - fn get_mock_pub_key() -> Result { + fn get_mock_pub_key() -> Result { let device_pub_key: String = "To4PzBU8BcVghpjGjnYjLQnP_mkT9uBJ2v969Cs7-xw".to_string(); Ok( base64::decode_config(&device_pub_key, base64::URL_SAFE_NO_PAD) - .map(|bytes| PublicKey::from_bytes(&bytes)) + .map(|bytes| VerifyingKey::from_bytes(&bytes[0..32].try_into().unwrap())) .unwrap() .unwrap(), ) diff --git a/seed-encoder/Cargo.toml b/seed-encoder/Cargo.toml index 5ce3ddff..dcc1e836 100644 --- a/seed-encoder/Cargo.toml +++ b/seed-encoder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "hpos-config-seed-encoder" -version = "0.2.0" +version = "0.2.1" authors = [ "Joel U " ] @@ -8,10 +8,10 @@ edition = "2021" repository = "https://github.com/Holo-Host/hpos-config" [dependencies] -ed25519-dalek = { version = "1.0.0-pre.1" } -anyhow = "1.0" +ed25519-dalek = { workspace = true } +anyhow = { workspace = true } hpos-config-core = { path = "../core" } hpos-config-seed-bundle-explorer = { path = "../seed-bundle-explorer" } -serde_json = "1.0.64" -tokio = { version = "1.12.0", features = ["rt-multi-thread", "macros"] } -structopt = "0.3.25" +serde_json = { workspace = true } +tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } +structopt = { workspace = true } diff --git a/seed-encoder/src/main.rs b/seed-encoder/src/main.rs index ae7a8809..e2363a80 100644 --- a/seed-encoder/src/main.rs +++ b/seed-encoder/src/main.rs @@ -2,8 +2,8 @@ //! seed, this is used by the `--load_ed25519_keypair_from_seed` in lair //! -use ed25519_dalek::*; -use anyhow::{ Context, Result }; +use anyhow::{Context, Result}; +use ed25519_dalek::SigningKey; use hpos_config_core::*; use hpos_config_seed_bundle_explorer::{encrypt_key, unlock}; use std::path::PathBuf; @@ -26,23 +26,25 @@ async fn main() -> Result<()> { password, } = Cli::from_args(); use std::fs::File; - let config_file = File::open(&config_path).context(format!("failed to open file {}", &config_path.to_string_lossy()))?; + let config_file = File::open(&config_path).context(format!( + "failed to open file {}", + &config_path.to_string_lossy() + ))?; match serde_json::from_reader(config_file)? { Config::V1 { seed, .. } => { - let secret_key = SecretKey::from_bytes(&seed)?; - let public_key = PublicKey::from(&secret_key); + let secret_key = SigningKey::from_bytes(&seed); + let public_key = secret_key.verifying_key(); println!("{}", encrypt_key(&secret_key, &public_key)); } Config::V2 { device_bundle, .. } => { // take in password - let Keypair { public, secret } = - unlock(&device_bundle, Some(password)) - .await - .context(format!( - "unable to unlock the device bundle from {}", - &config_path.to_string_lossy() - ))?; - println!("{}", encrypt_key(&secret, &public)); + let secret = unlock(&device_bundle, Some(password)) + .await + .context(format!( + "unable to unlock the device bundle from {}", + &config_path.to_string_lossy() + ))?; + println!("{}", encrypt_key(&secret, &secret.verifying_key())); } } diff --git a/shell.nix b/shell.nix deleted file mode 100644 index 3c2a50ba..00000000 --- a/shell.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs ? import ./nixpkgs.nix {} }: - -with pkgs; - -mkShell { - inputsFrom = lib.attrValues (import ./. { inherit pkgs; }); - - buildInputs = [ wrangler ]; -}