Fetch User Keys - simple tool for fetching SSH keys from various sources

ft: add support for Tangled.sh keys stored in ATProto

Changed files
+1365 -529
cli
docs
+864 -393
Cargo.lock
···
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
-
version = 3
[[package]]
name = "addr2line"
-
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
dependencies = [
"gimli",
]
[[package]]
-
name = "adler"
-
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "anstream"
-
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"utf8parse",
]
[[package]]
name = "anstyle"
-
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
[[package]]
name = "anstyle-parse"
-
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
dependencies = [
-
"windows-sys 0.52.0",
]
[[package]]
name = "anstyle-wincon"
-
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
dependencies = [
"anstyle",
-
"windows-sys 0.52.0",
]
[[package]]
name = "async-trait"
-
version = "0.1.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
dependencies = [
"proc-macro2",
"quote",
···
]
[[package]]
name = "autocfg"
-
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
-
version = "0.3.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
dependencies = [
"addr2line",
-
"cc",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
]
[[package]]
···
[[package]]
name = "base64"
-
version = "0.21.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
[[package]]
name = "base64ct"
-
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
[[package]]
name = "bitflags"
-
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-
[[package]]
-
name = "bitflags"
-
version = "2.4.2"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
[[package]]
name = "block-buffer"
···
[[package]]
name = "bumpalo"
-
version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "byteorder"
···
[[package]]
name = "bytes"
-
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cc"
-
version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
dependencies = [
-
"libc",
]
[[package]]
···
[[package]]
name = "clap"
-
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f"
dependencies = [
"clap_builder",
"clap_derive",
···
[[package]]
name = "clap_builder"
-
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99"
dependencies = [
"anstream",
"anstyle",
···
[[package]]
name = "clap_derive"
-
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
dependencies = [
"heck",
"proc-macro2",
···
[[package]]
name = "clap_lex"
-
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
[[package]]
name = "colorchoice"
-
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
name = "const-oid"
···
[[package]]
name = "core-foundation-sys"
-
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
[[package]]
name = "cpufeatures"
-
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
dependencies = [
"libc",
]
···
[[package]]
name = "der"
-
version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
dependencies = [
"const-oid",
"zeroize",
···
]
[[package]]
name = "ecdsa"
version = "0.16.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
[[package]]
name = "encoding_rs"
-
version = "0.8.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
dependencies = [
"cfg-if",
]
[[package]]
name = "equivalent"
-
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
dependencies = [
"libc",
-
"windows-sys 0.52.0",
]
[[package]]
···
[[package]]
name = "fastrand"
-
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
[[package]]
name = "ff"
-
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449"
dependencies = [
"rand_core",
"subtle",
···
[[package]]
name = "futures"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
dependencies = [
"futures-channel",
"futures-core",
···
[[package]]
name = "futures-channel"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
dependencies = [
"futures-core",
"futures-sink",
···
[[package]]
name = "futures-core"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
[[package]]
name = "futures-executor"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
dependencies = [
"futures-core",
"futures-task",
···
[[package]]
name = "futures-io"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
[[package]]
name = "futures-macro"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "futures-sink"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
[[package]]
name = "futures-task"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
[[package]]
name = "futures-util"
-
version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
dependencies = [
"futures-channel",
"futures-core",
···
[[package]]
name = "getrandom"
-
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
dependencies = [
"cfg-if",
"libc",
-
"wasi",
]
[[package]]
name = "gimli"
-
version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "group"
···
[[package]]
name = "h2"
-
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
dependencies = [
"bytes",
"fnv",
"futures-core",
"futures-sink",
-
"futures-util",
"http",
"indexmap",
"slab",
···
[[package]]
name = "hashbrown"
-
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
[[package]]
name = "heck"
-
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
-
-
[[package]]
-
name = "hermit-abi"
-
version = "0.3.5"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3"
[[package]]
name = "hmac"
···
[[package]]
name = "http"
-
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
dependencies = [
"bytes",
"fnv",
···
[[package]]
name = "http-body"
-
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
dependencies = [
"bytes",
"http",
-
"pin-project-lite",
]
[[package]]
-
name = "httparse"
-
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
[[package]]
-
name = "httpdate"
-
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
[[package]]
name = "hyper"
-
version = "0.14.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
dependencies = [
"bytes",
"futures-channel",
-
"futures-core",
"futures-util",
"h2",
"http",
"http-body",
"httparse",
-
"httpdate",
"itoa",
"pin-project-lite",
-
"socket2",
"tokio",
-
"tower-service",
-
"tracing",
"want",
]
[[package]]
name = "hyper-tls"
-
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
dependencies = [
"bytes",
"hyper",
"native-tls",
"tokio",
"tokio-native-tls",
]
[[package]]
name = "idna"
-
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
dependencies = [
-
"unicode-bidi",
-
"unicode-normalization",
]
[[package]]
···
[[package]]
name = "indexmap"
-
version = "2.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520"
dependencies = [
"equivalent",
"hashbrown",
···
[[package]]
name = "inout"
-
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
dependencies = [
"generic-array",
]
[[package]]
name = "ipnet"
-
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
[[package]]
name = "itoa"
-
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
[[package]]
name = "js-sys"
-
version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
dependencies = [
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
-
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
dependencies = [
"spin",
]
[[package]]
name = "libc"
-
version = "0.2.153"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
[[package]]
name = "libm"
-
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
[[package]]
name = "linux-raw-sys"
-
version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
[[package]]
name = "log"
-
version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
name = "memchr"
-
version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
[[package]]
name = "mime"
···
[[package]]
name = "miniz_oxide"
-
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
dependencies = [
-
"adler",
]
[[package]]
name = "mio"
-
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
dependencies = [
"libc",
-
"wasi",
-
"windows-sys 0.48.0",
]
[[package]]
name = "native-tls"
-
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
dependencies = [
-
"lazy_static",
"libc",
"log",
"openssl",
···
[[package]]
name = "num-iter"
-
version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
dependencies = [
"autocfg",
"num-integer",
···
[[package]]
name = "num-traits"
-
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
dependencies = [
"autocfg",
"libm",
]
[[package]]
-
name = "num_cpus"
-
version = "1.16.0"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-
dependencies = [
-
"hermit-abi",
-
"libc",
-
]
-
-
[[package]]
name = "object"
-
version = "0.32.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
-
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "openssl"
-
version = "0.10.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8"
dependencies = [
-
"bitflags 2.4.2",
"cfg-if",
"foreign-types",
"libc",
···
[[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.99"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae"
dependencies = [
"cc",
"libc",
···
[[package]]
name = "p384"
-
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209"
dependencies = [
"ecdsa",
"elliptic-curve",
···
[[package]]
name = "pin-project-lite"
-
version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
[[package]]
name = "pin-utils"
···
[[package]]
name = "pkg-config"
-
version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
[[package]]
name = "ppv-lite86"
-
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "primeorder"
···
[[package]]
name = "proc-macro2"
-
version = "1.0.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
-
"getrandom",
]
[[package]]
name = "reqwest"
-
version = "0.11.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251"
dependencies = [
"base64",
"bytes",
···
"h2",
"http",
"http-body",
"hyper",
"hyper-tls",
"ipnet",
"js-sys",
"log",
···
"system-configuration",
"tokio",
"tokio-native-tls",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
-
"winreg",
]
[[package]]
···
]
[[package]]
name = "rsa"
-
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc"
dependencies = [
"const-oid",
"digest",
···
[[package]]
name = "rustc-demangle"
-
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
[[package]]
name = "rustix"
-
version = "0.38.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
dependencies = [
-
"bitflags 2.4.2",
"errno",
"libc",
"linux-raw-sys",
-
"windows-sys 0.52.0",
]
[[package]]
name = "rustls-pemfile"
-
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
dependencies = [
-
"base64",
]
[[package]]
name = "ryu"
-
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
[[package]]
name = "schannel"
-
version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
dependencies = [
-
"windows-sys 0.52.0",
]
[[package]]
···
[[package]]
name = "security-framework"
-
version = "2.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
dependencies = [
-
"bitflags 1.3.2",
"core-foundation",
"core-foundation-sys",
"libc",
···
[[package]]
name = "security-framework-sys"
-
version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
dependencies = [
"core-foundation-sys",
"libc",
···
[[package]]
name = "serde"
-
version = "1.0.196"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-
version = "1.0.196"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "serde_json"
-
version = "1.0.113"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "serde_spanned"
-
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
dependencies = [
"serde",
]
···
"cpufeatures",
"digest",
]
[[package]]
name = "signal-hook-registry"
-
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
dependencies = [
"libc",
]
···
[[package]]
name = "smallvec"
-
version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
[[package]]
name = "socket2"
-
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
dependencies = [
"libc",
-
"windows-sys 0.48.0",
]
[[package]]
name = "spin"
-
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "spki"
···
[[package]]
name = "ssh-key"
-
version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "01f8f4ea73476c0aa5d5e6a75ce1e8634e2c3f82005ef3bbed21547ac57f2bf7"
dependencies = [
"p256",
"p384",
···
]
[[package]]
name = "strsim"
-
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
[[package]]
name = "subtle"
-
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
[[package]]
name = "syn"
-
version = "2.0.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "sync_wrapper"
-
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
[[package]]
name = "system-configuration"
-
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
dependencies = [
-
"bitflags 1.3.2",
"core-foundation",
"system-configuration-sys",
]
[[package]]
name = "system-configuration-sys"
-
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
dependencies = [
"core-foundation-sys",
"libc",
···
[[package]]
name = "tempfile"
-
version = "3.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
dependencies = [
-
"cfg-if",
"fastrand",
"rustix",
-
"windows-sys 0.52.0",
]
[[package]]
-
name = "tinyvec"
-
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
dependencies = [
-
"tinyvec_macros",
]
[[package]]
-
name = "tinyvec_macros"
-
version = "0.1.1"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-
[[package]]
name = "tokio"
-
version = "1.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
dependencies = [
"backtrace",
"bytes",
"libc",
"mio",
-
"num_cpus",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
-
"windows-sys 0.48.0",
]
[[package]]
name = "tokio-macros"
-
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",
···
]
[[package]]
name = "tokio-util"
-
version = "0.7.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
-
"tracing",
]
[[package]]
name = "toml"
-
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
dependencies = [
"serde",
"serde_spanned",
···
[[package]]
name = "toml_datetime"
-
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-
version = "0.22.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951"
dependencies = [
"indexmap",
"serde",
···
]
[[package]]
name = "tower-service"
-
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
[[package]]
name = "tracing"
-
version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"pin-project-lite",
"tracing-core",
···
[[package]]
name = "tracing-core"
-
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
dependencies = [
"once_cell",
]
···
[[package]]
name = "typenum"
-
version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
-
-
[[package]]
-
name = "unicode-bidi"
-
version = "0.3.15"
-
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
[[package]]
name = "unicode-ident"
-
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
-
name = "unicode-normalization"
-
version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
-
dependencies = [
-
"tinyvec",
-
]
[[package]]
name = "url"
-
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
dependencies = [
"form_urlencoded",
"idna",
···
]
[[package]]
name = "utf8parse"
-
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "vcpkg"
···
[[package]]
name = "version_check"
-
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "want"
···
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
-
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
dependencies = [
"bumpalo",
"log",
-
"once_cell",
"proc-macro2",
"quote",
"syn",
···
[[package]]
name = "wasm-bindgen-futures"
-
version = "0.4.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
dependencies = [
"cfg-if",
"js-sys",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
-
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
···
[[package]]
name = "wasm-bindgen-macro-support"
-
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "wasm-bindgen-shared"
-
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
[[package]]
name = "web-sys"
-
version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
-
name = "windows-sys"
-
version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
-
"windows-targets 0.48.5",
]
[[package]]
···
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
-
"windows-targets 0.52.0",
]
[[package]]
name = "windows-targets"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
-
"windows_aarch64_gnullvm 0.48.5",
-
"windows_aarch64_msvc 0.48.5",
-
"windows_i686_gnu 0.48.5",
-
"windows_i686_msvc 0.48.5",
-
"windows_x86_64_gnu 0.48.5",
-
"windows_x86_64_gnullvm 0.48.5",
-
"windows_x86_64_msvc 0.48.5",
]
[[package]]
name = "windows-targets"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
dependencies = [
-
"windows_aarch64_gnullvm 0.52.0",
-
"windows_aarch64_msvc 0.52.0",
-
"windows_i686_gnu 0.52.0",
-
"windows_i686_msvc 0.52.0",
-
"windows_x86_64_gnu 0.52.0",
-
"windows_x86_64_gnullvm 0.52.0",
-
"windows_x86_64_msvc 0.52.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_gnullvm"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
[[package]]
name = "windows_aarch64_msvc"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_aarch64_msvc"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
[[package]]
name = "windows_i686_gnu"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_gnu"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
[[package]]
name = "windows_i686_msvc"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_i686_msvc"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
[[package]]
name = "windows_x86_64_gnu"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnu"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
[[package]]
name = "windows_x86_64_gnullvm"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_gnullvm"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
[[package]]
name = "windows_x86_64_msvc"
-
version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "windows_x86_64_msvc"
-
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
[[package]]
name = "winnow"
-
version = "0.5.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29"
dependencies = [
"memchr",
]
[[package]]
-
name = "winreg"
-
version = "0.50.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
dependencies = [
-
"cfg-if",
-
"windows-sys 0.48.0",
]
[[package]]
name = "xshell"
-
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "ce2107fe03e558353b4c71ad7626d58ed82efaf56c54134228608893c77023ad"
dependencies = [
"xshell-macros",
]
[[package]]
name = "xshell-macros"
-
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e"
[[package]]
name = "xtask"
···
]
[[package]]
name = "zeroize"
-
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
···
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+
version = 4
[[package]]
name = "addr2line"
+
version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
dependencies = [
"gimli",
]
[[package]]
+
name = "adler2"
+
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "anstream"
+
version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
+
"is_terminal_polyfill",
"utf8parse",
]
[[package]]
name = "anstyle"
+
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
[[package]]
name = "anstyle-parse"
+
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
+
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
dependencies = [
+
"windows-sys 0.59.0",
]
[[package]]
name = "anstyle-wincon"
+
version = "3.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
dependencies = [
"anstyle",
+
"once_cell",
+
"windows-sys 0.59.0",
]
[[package]]
name = "async-trait"
+
version = "0.1.88"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5"
dependencies = [
"proc-macro2",
"quote",
···
]
[[package]]
+
name = "atomic-waker"
+
version = "1.1.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+
[[package]]
name = "autocfg"
+
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "backtrace"
+
version = "0.3.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
dependencies = [
"addr2line",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
+
"windows-targets 0.52.6",
]
[[package]]
···
[[package]]
name = "base64"
+
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "base64ct"
+
version = "1.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3"
[[package]]
name = "bitflags"
+
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
[[package]]
name = "block-buffer"
···
[[package]]
name = "bumpalo"
+
version = "3.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
[[package]]
name = "byteorder"
···
[[package]]
name = "bytes"
+
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
[[package]]
name = "cc"
+
version = "1.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362"
dependencies = [
+
"shlex",
]
[[package]]
···
[[package]]
name = "clap"
+
version = "4.5.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2df961d8c8a0d08aa9945718ccf584145eee3f3aa06cddbeac12933781102e04"
dependencies = [
"clap_builder",
"clap_derive",
···
[[package]]
name = "clap_builder"
+
version = "4.5.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "132dbda40fb6753878316a489d5a1242a8ef2f0d9e47ba01c951ea8aa7d013a5"
dependencies = [
"anstream",
"anstyle",
···
[[package]]
name = "clap_derive"
+
version = "4.5.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
dependencies = [
"heck",
"proc-macro2",
···
[[package]]
name = "clap_lex"
+
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
[[package]]
name = "colorchoice"
+
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
[[package]]
name = "const-oid"
···
[[package]]
name = "core-foundation-sys"
+
version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "cpufeatures"
+
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
dependencies = [
"libc",
]
···
[[package]]
name = "der"
+
version = "0.7.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
dependencies = [
"const-oid",
"zeroize",
···
]
[[package]]
+
name = "displaydoc"
+
version = "0.2.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
]
+
+
[[package]]
name = "ecdsa"
version = "0.16.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
[[package]]
name = "encoding_rs"
+
version = "0.8.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
dependencies = [
"cfg-if",
]
[[package]]
name = "equivalent"
+
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
+
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
dependencies = [
"libc",
+
"windows-sys 0.59.0",
]
[[package]]
···
[[package]]
name = "fastrand"
+
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
[[package]]
name = "ff"
+
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393"
dependencies = [
"rand_core",
"subtle",
···
[[package]]
name = "futures"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
dependencies = [
"futures-channel",
"futures-core",
···
[[package]]
name = "futures-channel"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
dependencies = [
"futures-core",
"futures-sink",
···
[[package]]
name = "futures-core"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
[[package]]
name = "futures-executor"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
dependencies = [
"futures-core",
"futures-task",
···
[[package]]
name = "futures-io"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-macro"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "futures-sink"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
[[package]]
name = "futures-task"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
[[package]]
name = "futures-util"
+
version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
dependencies = [
"futures-channel",
"futures-core",
···
[[package]]
name = "getrandom"
+
version = "0.2.15"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+
dependencies = [
+
"cfg-if",
+
"libc",
+
"wasi 0.11.0+wasi-snapshot-preview1",
+
]
+
+
[[package]]
+
name = "getrandom"
+
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
dependencies = [
"cfg-if",
"libc",
+
"r-efi",
+
"wasi 0.14.2+wasi-0.2.4",
]
[[package]]
name = "gimli"
+
version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
[[package]]
name = "group"
···
[[package]]
name = "h2"
+
version = "0.4.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "75249d144030531f8dee69fe9cea04d3edf809a017ae445e2abdff6629e86633"
dependencies = [
+
"atomic-waker",
"bytes",
"fnv",
"futures-core",
"futures-sink",
"http",
"indexmap",
"slab",
···
[[package]]
name = "hashbrown"
+
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
[[package]]
name = "heck"
+
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hmac"
···
[[package]]
name = "http"
+
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
dependencies = [
"bytes",
"fnv",
···
[[package]]
name = "http-body"
+
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
dependencies = [
"bytes",
"http",
]
[[package]]
+
name = "http-body-util"
+
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
+
dependencies = [
+
"bytes",
+
"futures-core",
+
"http",
+
"http-body",
+
"pin-project-lite",
+
]
[[package]]
+
name = "httparse"
+
version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]
name = "hyper"
+
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
dependencies = [
"bytes",
"futures-channel",
"futures-util",
"h2",
"http",
"http-body",
"httparse",
"itoa",
"pin-project-lite",
+
"smallvec",
"tokio",
"want",
]
[[package]]
+
name = "hyper-rustls"
+
version = "0.27.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
+
dependencies = [
+
"futures-util",
+
"http",
+
"hyper",
+
"hyper-util",
+
"rustls",
+
"rustls-pki-types",
+
"tokio",
+
"tokio-rustls",
+
"tower-service",
+
]
+
+
[[package]]
name = "hyper-tls"
+
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0"
dependencies = [
"bytes",
+
"http-body-util",
"hyper",
+
"hyper-util",
"native-tls",
"tokio",
"tokio-native-tls",
+
"tower-service",
+
]
+
+
[[package]]
+
name = "hyper-util"
+
version = "0.1.11"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2"
+
dependencies = [
+
"bytes",
+
"futures-channel",
+
"futures-util",
+
"http",
+
"http-body",
+
"hyper",
+
"libc",
+
"pin-project-lite",
+
"socket2",
+
"tokio",
+
"tower-service",
+
"tracing",
+
]
+
+
[[package]]
+
name = "icu_collections"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+
dependencies = [
+
"displaydoc",
+
"yoke",
+
"zerofrom",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_locid"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+
dependencies = [
+
"displaydoc",
+
"litemap",
+
"tinystr",
+
"writeable",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_locid_transform"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+
dependencies = [
+
"displaydoc",
+
"icu_locid",
+
"icu_locid_transform_data",
+
"icu_provider",
+
"tinystr",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_locid_transform_data"
+
version = "1.5.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d"
+
+
[[package]]
+
name = "icu_normalizer"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+
dependencies = [
+
"displaydoc",
+
"icu_collections",
+
"icu_normalizer_data",
+
"icu_properties",
+
"icu_provider",
+
"smallvec",
+
"utf16_iter",
+
"utf8_iter",
+
"write16",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_normalizer_data"
+
version = "1.5.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7"
+
+
[[package]]
+
name = "icu_properties"
+
version = "1.5.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+
dependencies = [
+
"displaydoc",
+
"icu_collections",
+
"icu_locid_transform",
+
"icu_properties_data",
+
"icu_provider",
+
"tinystr",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_properties_data"
+
version = "1.5.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2"
+
+
[[package]]
+
name = "icu_provider"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+
dependencies = [
+
"displaydoc",
+
"icu_locid",
+
"icu_provider_macros",
+
"stable_deref_trait",
+
"tinystr",
+
"writeable",
+
"yoke",
+
"zerofrom",
+
"zerovec",
+
]
+
+
[[package]]
+
name = "icu_provider_macros"
+
version = "1.5.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
]
[[package]]
name = "idna"
+
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
dependencies = [
+
"idna_adapter",
+
"smallvec",
+
"utf8_iter",
+
]
+
+
[[package]]
+
name = "idna_adapter"
+
version = "1.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+
dependencies = [
+
"icu_normalizer",
+
"icu_properties",
]
[[package]]
···
[[package]]
name = "indexmap"
+
version = "2.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
dependencies = [
"equivalent",
"hashbrown",
···
[[package]]
name = "inout"
+
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
dependencies = [
"generic-array",
]
[[package]]
name = "ipnet"
+
version = "2.11.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
+
+
[[package]]
+
name = "is_terminal_polyfill"
+
version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itoa"
+
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
[[package]]
name = "js-sys"
+
version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
+
"once_cell",
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
+
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
dependencies = [
"spin",
]
[[package]]
name = "libc"
+
version = "0.2.172"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
[[package]]
name = "libm"
+
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
[[package]]
name = "linux-raw-sys"
+
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
+
+
[[package]]
+
name = "litemap"
+
version = "0.7.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856"
[[package]]
name = "log"
+
version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "memchr"
+
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "mime"
···
[[package]]
name = "miniz_oxide"
+
version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
dependencies = [
+
"adler2",
]
[[package]]
name = "mio"
+
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
dependencies = [
"libc",
+
"wasi 0.11.0+wasi-snapshot-preview1",
+
"windows-sys 0.52.0",
]
[[package]]
name = "native-tls"
+
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
dependencies = [
"libc",
"log",
"openssl",
···
[[package]]
name = "num-iter"
+
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
dependencies = [
"autocfg",
"num-integer",
···
[[package]]
name = "num-traits"
+
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
"libm",
]
[[package]]
name = "object"
+
version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
+
version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "openssl"
+
version = "0.10.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da"
dependencies = [
+
"bitflags",
"cfg-if",
"foreign-types",
"libc",
···
[[package]]
name = "openssl-probe"
+
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "openssl-sys"
+
version = "0.9.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07"
dependencies = [
"cc",
"libc",
···
[[package]]
name = "p384"
+
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6"
dependencies = [
"ecdsa",
"elliptic-curve",
···
[[package]]
name = "pin-project-lite"
+
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
[[package]]
name = "pin-utils"
···
[[package]]
name = "pkg-config"
+
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
[[package]]
name = "ppv-lite86"
+
version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+
dependencies = [
+
"zerocopy",
+
]
[[package]]
name = "primeorder"
···
[[package]]
name = "proc-macro2"
+
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
+
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
+
name = "r-efi"
+
version = "5.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+
[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
···
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
+
"getrandom 0.2.15",
]
[[package]]
name = "reqwest"
+
version = "0.12.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb"
dependencies = [
"base64",
"bytes",
···
"h2",
"http",
"http-body",
+
"http-body-util",
"hyper",
+
"hyper-rustls",
"hyper-tls",
+
"hyper-util",
"ipnet",
"js-sys",
"log",
···
"system-configuration",
"tokio",
"tokio-native-tls",
+
"tower",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
+
"windows-registry",
]
[[package]]
···
]
[[package]]
+
name = "ring"
+
version = "0.17.14"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+
dependencies = [
+
"cc",
+
"cfg-if",
+
"getrandom 0.2.15",
+
"libc",
+
"untrusted",
+
"windows-sys 0.52.0",
+
]
+
+
[[package]]
name = "rsa"
+
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b"
dependencies = [
"const-oid",
"digest",
···
[[package]]
name = "rustc-demangle"
+
version = "0.1.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
[[package]]
name = "rustix"
+
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
dependencies = [
+
"bitflags",
"errno",
"libc",
"linux-raw-sys",
+
"windows-sys 0.59.0",
+
]
+
+
[[package]]
+
name = "rustls"
+
version = "0.23.26"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0"
+
dependencies = [
+
"once_cell",
+
"rustls-pki-types",
+
"rustls-webpki",
+
"subtle",
+
"zeroize",
]
[[package]]
name = "rustls-pemfile"
+
version = "2.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50"
+
dependencies = [
+
"rustls-pki-types",
+
]
+
+
[[package]]
+
name = "rustls-pki-types"
+
version = "1.11.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c"
+
+
[[package]]
+
name = "rustls-webpki"
+
version = "0.103.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03"
dependencies = [
+
"ring",
+
"rustls-pki-types",
+
"untrusted",
]
[[package]]
+
name = "rustversion"
+
version = "1.0.20"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+
[[package]]
name = "ryu"
+
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
[[package]]
name = "schannel"
+
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
dependencies = [
+
"windows-sys 0.59.0",
]
[[package]]
···
[[package]]
name = "security-framework"
+
version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
+
"bitflags",
"core-foundation",
"core-foundation-sys",
"libc",
···
[[package]]
name = "security-framework-sys"
+
version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32"
dependencies = [
"core-foundation-sys",
"libc",
···
[[package]]
name = "serde"
+
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
+
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "serde_json"
+
version = "1.0.140"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
dependencies = [
"itoa",
+
"memchr",
"ryu",
"serde",
]
[[package]]
name = "serde_spanned"
+
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
dependencies = [
"serde",
]
···
"cpufeatures",
"digest",
]
+
+
[[package]]
+
name = "shlex"
+
version = "1.3.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "signal-hook-registry"
+
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
dependencies = [
"libc",
]
···
[[package]]
name = "smallvec"
+
version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
[[package]]
name = "socket2"
+
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
dependencies = [
"libc",
+
"windows-sys 0.52.0",
]
[[package]]
name = "spin"
+
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
[[package]]
name = "spki"
···
[[package]]
name = "ssh-key"
+
version = "0.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3b86f5297f0f04d08cabaa0f6bff7cb6aec4d9c3b49d87990d63da9d9156a8c3"
dependencies = [
"p256",
"p384",
···
]
[[package]]
+
name = "stable_deref_trait"
+
version = "1.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+
[[package]]
name = "strsim"
+
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
[[package]]
name = "subtle"
+
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
+
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "sync_wrapper"
+
version = "1.0.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+
dependencies = [
+
"futures-core",
+
]
+
+
[[package]]
+
name = "synstructure"
+
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
]
[[package]]
name = "system-configuration"
+
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
+
"bitflags",
"core-foundation",
"system-configuration-sys",
]
[[package]]
name = "system-configuration-sys"
+
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
dependencies = [
"core-foundation-sys",
"libc",
···
[[package]]
name = "tempfile"
+
version = "3.19.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
dependencies = [
"fastrand",
+
"getrandom 0.3.2",
+
"once_cell",
"rustix",
+
"windows-sys 0.59.0",
]
[[package]]
+
name = "tinystr"
+
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
dependencies = [
+
"displaydoc",
+
"zerovec",
]
[[package]]
name = "tokio"
+
version = "1.44.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
dependencies = [
"backtrace",
"bytes",
"libc",
"mio",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tokio-macros",
+
"windows-sys 0.52.0",
]
[[package]]
name = "tokio-macros"
+
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8"
dependencies = [
"proc-macro2",
"quote",
···
]
[[package]]
+
name = "tokio-rustls"
+
version = "0.26.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b"
+
dependencies = [
+
"rustls",
+
"tokio",
+
]
+
+
[[package]]
name = "tokio-util"
+
version = "0.7.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6b9590b93e6fcc1739458317cccd391ad3955e2bde8913edf6f95f9e65a8f034"
dependencies = [
"bytes",
"futures-core",
"futures-sink",
"pin-project-lite",
"tokio",
]
[[package]]
name = "toml"
+
version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148"
dependencies = [
"serde",
"serde_spanned",
···
[[package]]
name = "toml_datetime"
+
version = "0.6.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
+
version = "0.22.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474"
dependencies = [
"indexmap",
"serde",
···
]
[[package]]
+
name = "tower"
+
version = "0.5.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
+
dependencies = [
+
"futures-core",
+
"futures-util",
+
"pin-project-lite",
+
"sync_wrapper",
+
"tokio",
+
"tower-layer",
+
"tower-service",
+
]
+
+
[[package]]
+
name = "tower-layer"
+
version = "0.3.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+
[[package]]
name = "tower-service"
+
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tracing"
+
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
dependencies = [
"pin-project-lite",
"tracing-core",
···
[[package]]
name = "tracing-core"
+
version = "0.1.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
dependencies = [
"once_cell",
]
···
[[package]]
name = "typenum"
+
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "unicode-ident"
+
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
[[package]]
+
name = "untrusted"
+
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
+
version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
dependencies = [
"form_urlencoded",
"idna",
···
]
[[package]]
+
name = "utf16_iter"
+
version = "1.0.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
+
[[package]]
+
name = "utf8_iter"
+
version = "1.0.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+
[[package]]
name = "utf8parse"
+
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "vcpkg"
···
[[package]]
name = "version_check"
+
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "want"
···
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
+
name = "wasi"
+
version = "0.14.2+wasi-0.2.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+
dependencies = [
+
"wit-bindgen-rt",
+
]
+
+
[[package]]
name = "wasm-bindgen"
+
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
dependencies = [
"cfg-if",
+
"once_cell",
+
"rustversion",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
+
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
dependencies = [
"bumpalo",
"log",
"proc-macro2",
"quote",
"syn",
···
[[package]]
name = "wasm-bindgen-futures"
+
version = "0.4.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
dependencies = [
"cfg-if",
"js-sys",
+
"once_cell",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
+
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
···
[[package]]
name = "wasm-bindgen-macro-support"
+
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
dependencies = [
"proc-macro2",
"quote",
···
[[package]]
name = "wasm-bindgen-shared"
+
version = "0.2.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+
dependencies = [
+
"unicode-ident",
+
]
[[package]]
name = "web-sys"
+
version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
+
name = "windows-link"
+
version = "0.1.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
+
+
[[package]]
+
name = "windows-registry"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3"
+
dependencies = [
+
"windows-result",
+
"windows-strings",
+
"windows-targets 0.53.0",
+
]
+
+
[[package]]
+
name = "windows-result"
+
version = "0.3.2"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
+
dependencies = [
+
"windows-link",
+
]
+
+
[[package]]
+
name = "windows-strings"
+
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319"
dependencies = [
+
"windows-link",
]
[[package]]
···
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
dependencies = [
+
"windows-targets 0.52.6",
+
]
+
+
[[package]]
+
name = "windows-sys"
+
version = "0.59.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+
dependencies = [
+
"windows-targets 0.52.6",
]
[[package]]
name = "windows-targets"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
+
"windows_aarch64_gnullvm 0.52.6",
+
"windows_aarch64_msvc 0.52.6",
+
"windows_i686_gnu 0.52.6",
+
"windows_i686_gnullvm 0.52.6",
+
"windows_i686_msvc 0.52.6",
+
"windows_x86_64_gnu 0.52.6",
+
"windows_x86_64_gnullvm 0.52.6",
+
"windows_x86_64_msvc 0.52.6",
]
[[package]]
name = "windows-targets"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b"
dependencies = [
+
"windows_aarch64_gnullvm 0.53.0",
+
"windows_aarch64_msvc 0.53.0",
+
"windows_i686_gnu 0.53.0",
+
"windows_i686_gnullvm 0.53.0",
+
"windows_i686_msvc 0.53.0",
+
"windows_x86_64_gnu 0.53.0",
+
"windows_x86_64_gnullvm 0.53.0",
+
"windows_x86_64_msvc 0.53.0",
]
[[package]]
name = "windows_aarch64_gnullvm"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
[[package]]
name = "windows_aarch64_gnullvm"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
[[package]]
name = "windows_aarch64_msvc"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
[[package]]
name = "windows_aarch64_msvc"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
[[package]]
name = "windows_i686_gnu"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
[[package]]
name = "windows_i686_gnu"
+
version = "0.53.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+
[[package]]
+
name = "windows_i686_gnullvm"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+
[[package]]
+
name = "windows_i686_gnullvm"
+
version = "0.53.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
[[package]]
name = "windows_i686_msvc"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
[[package]]
name = "windows_i686_msvc"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
[[package]]
name = "windows_x86_64_gnu"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
[[package]]
name = "windows_x86_64_gnu"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
[[package]]
name = "windows_x86_64_gnullvm"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
[[package]]
name = "windows_x86_64_gnullvm"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
[[package]]
name = "windows_x86_64_msvc"
+
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "windows_x86_64_msvc"
+
version = "0.53.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
[[package]]
name = "winnow"
+
version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "63d3fcd9bba44b03821e7d699eeee959f3126dcc4aa8e4ae18ec617c2a5cea10"
dependencies = [
"memchr",
]
[[package]]
+
name = "wit-bindgen-rt"
+
version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
+
"bitflags",
]
[[package]]
+
name = "write16"
+
version = "1.0.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+
[[package]]
+
name = "writeable"
+
version = "0.5.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+
+
[[package]]
name = "xshell"
+
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9e7290c623014758632efe00737145b6867b66292c42167f2ec381eb566a373d"
dependencies = [
"xshell-macros",
]
[[package]]
name = "xshell-macros"
+
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "32ac00cd3f8ec9c1d33fb3e7958a82df6989c42d747bd326c822b1d625283547"
[[package]]
name = "xtask"
···
]
[[package]]
+
name = "yoke"
+
version = "0.7.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40"
+
dependencies = [
+
"serde",
+
"stable_deref_trait",
+
"yoke-derive",
+
"zerofrom",
+
]
+
+
[[package]]
+
name = "yoke-derive"
+
version = "0.7.5"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
"synstructure",
+
]
+
+
[[package]]
+
name = "zerocopy"
+
version = "0.8.24"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
+
dependencies = [
+
"zerocopy-derive",
+
]
+
+
[[package]]
+
name = "zerocopy-derive"
+
version = "0.8.24"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
]
+
+
[[package]]
+
name = "zerofrom"
+
version = "0.1.6"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+
dependencies = [
+
"zerofrom-derive",
+
]
+
+
[[package]]
+
name = "zerofrom-derive"
+
version = "0.1.6"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
"synstructure",
+
]
+
+
[[package]]
name = "zeroize"
+
version = "1.8.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+
+
[[package]]
+
name = "zerovec"
+
version = "0.10.4"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+
dependencies = [
+
"yoke",
+
"zerofrom",
+
"zerovec-derive",
+
]
+
+
[[package]]
+
name = "zerovec-derive"
+
version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+
dependencies = [
+
"proc-macro2",
+
"quote",
+
"syn",
+
]
+1 -1
cli/Cargo.toml
···
async-trait = "0.1.77"
clap = { version = "4.4.18", features = ["derive"] }
futures = "0.3.30"
-
reqwest = "0.11.24"
serde = { version = "1.0.196", features = ["derive"] }
serde_json = "1.0.113"
simple-eyre = "0.3.1"
···
async-trait = "0.1.77"
clap = { version = "4.4.18", features = ["derive"] }
futures = "0.3.30"
+
reqwest = "0.12.15"
serde = { version = "1.0.196", features = ["derive"] }
serde_json = "1.0.113"
simple-eyre = "0.3.1"
+2 -2
cli/src/config.rs
···
#[derive(Debug, serde::Deserialize)]
pub struct Entry {
pub name: String,
-
pub keys: Vec<Box<Source>>,
}
impl Entry {
···
#[derive(Debug, serde::Deserialize)]
pub struct Config {
#[serde(rename = "entry")]
-
pub entries: Vec<Entry>,
}
impl Config {
···
#[derive(Debug, serde::Deserialize)]
pub struct Entry {
pub name: String,
+
pub keys: Box<[Box<Source>]>,
}
impl Entry {
···
#[derive(Debug, serde::Deserialize)]
pub struct Config {
#[serde(rename = "entry")]
+
pub entries: Box<[Entry]>,
}
impl Config {
+10 -1
cli/src/output/mod.rs
···
pub enum Format {
JSON,
JSONPretty,
}
impl Format {
···
match self {
Format::JSON => serde_json::to_string(&output.keys).unwrap(),
Format::JSONPretty => serde_json::to_string_pretty(&output.keys).unwrap(),
}
}
}
···
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match *self {
Format::JSON => f.write_str("json"),
-
Format::JSONPretty => f.write_str("pretty"),
}
}
}
···
match s {
"json" => Format::JSON,
"pretty" => Format::JSONPretty,
_ => unreachable!()
}
}
···
pub enum Format {
JSON,
JSONPretty,
+
TOML,
+
TOMLPretty,
}
impl Format {
···
match self {
Format::JSON => serde_json::to_string(&output.keys).unwrap(),
Format::JSONPretty => serde_json::to_string_pretty(&output.keys).unwrap(),
+
Format::TOML => toml::to_string(&output.keys).unwrap(),
+
Format::TOMLPretty => toml::to_string_pretty(&output.keys).unwrap(),
}
}
}
···
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match *self {
Format::JSON => f.write_str("json"),
+
Format::JSONPretty => f.write_str("json-pretty"),
+
Format::TOML => f.write_str("toml"),
+
Format::TOMLPretty => f.write_str("toml-pretty"),
}
}
}
···
match s {
"json" => Format::JSON,
"pretty" => Format::JSONPretty,
+
"json-pretty" => Format::JSONPretty,
+
"toml" => Format::TOML,
+
"toml-pretty" => Format::TOMLPretty,
_ => unreachable!()
}
}
+209
cli/src/sources/atproto.rs
···
···
+
// SPDX-FileCopyrightText: 2025 Łukasz Niemier <#@hauleth.dev>
+
//
+
// SPDX-License-Identifier: EUPL-1.2
+
+
use std::fmt;
+
use std::str::FromStr;
+
+
use super::helpers;
+
+
use async_trait::async_trait;
+
use serde::Deserialize;
+
use ssh_key::PublicKey;
+
+
#[derive(Debug)]
+
pub struct DID {
+
method: String,
+
id: String,
+
}
+
+
impl FromStr for DID {
+
type Err = ();
+
+
fn from_str(input: &str) -> Result<Self, ()> {
+
if !input.starts_with("did:") {
+
return Err(());
+
}
+
if input.ends_with(":") {
+
return Err(());
+
}
+
+
let chunks: Box<[_]> = input.splitn(3, ":").collect();
+
+
if chunks.len() != 3 {
+
return Err(());
+
}
+
+
Ok(DID {
+
method: chunks[1].into(),
+
id: chunks[2].into(),
+
})
+
}
+
}
+
+
impl fmt::Display for DID {
+
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+
write!(f, "did:{}:{}", self.method, self.id)
+
}
+
}
+
+
#[derive(Debug)]
+
pub struct Handle(String);
+
+
impl fmt::Display for Handle {
+
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+
write!(f, "{}", self.0)
+
}
+
}
+
+
impl FromStr for Handle {
+
type Err = ();
+
+
fn from_str(input: &str) -> Result<Self, ()> {
+
if input.len() > 253 {
+
return Err(());
+
}
+
+
let input = {
+
let mut input = input.to_ascii_lowercase();
+
if input.starts_with("@") {
+
input.remove(0);
+
}
+
+
input
+
};
+
+
let segments: Box<[_]> = input.split('.').collect();
+
+
if segments.len() < 2 {
+
return Err(());
+
}
+
+
if !segments.iter().all(|&s| legal_segment(s)) {
+
return Err(());
+
}
+
+
if (b'0'..=b'9').contains(&segments.last().unwrap().as_bytes()[0]) {
+
return Err(());
+
}
+
+
Ok(Handle(input))
+
}
+
}
+
+
pub struct InvalidHandle(String);
+
+
impl fmt::Display for InvalidHandle {
+
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+
write!(f, "Invalid handle: {}", self.0)
+
}
+
}
+
+
#[derive(Debug)]
+
pub enum Identifier {
+
DID(DID),
+
Handle(Handle),
+
}
+
+
impl FromStr for Identifier {
+
type Err = InvalidHandle;
+
+
fn from_str(input: &str) -> Result<Self, Self::Err> {
+
input
+
.parse()
+
.map(Identifier::DID)
+
.or_else(|_| input.parse().map(Identifier::Handle))
+
.map_err(|_| InvalidHandle(input.into()))
+
}
+
}
+
+
impl fmt::Display for Identifier {
+
fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> {
+
match *self {
+
Identifier::DID(ref did) => write!(f, "{}", did),
+
Identifier::Handle(ref handle) => write!(f, "{}", handle),
+
}
+
}
+
}
+
+
#[derive(Debug, Deserialize)]
+
pub struct ATProto {
+
#[serde(default = "default_atproto")]
+
pub host: String,
+
#[serde(deserialize_with = "helpers::from_str")]
+
pub handle: Identifier,
+
}
+
+
impl FromStr for ATProto {
+
type Err = InvalidHandle;
+
+
fn from_str(input: &str) -> Result<Self, InvalidHandle> {
+
Ok(ATProto {
+
host: default_atproto(),
+
handle: input.parse().map_err(|_| InvalidHandle(input.into()))?,
+
})
+
}
+
}
+
+
fn legal_segment(segment: &str) -> bool {
+
let bytes = segment.as_bytes();
+
segment != ""
+
&& bytes.into_iter().all(|&b| allowed_byte(b))
+
&& *bytes.first().unwrap() != b'-'
+
&& *bytes.last().unwrap() != b'-'
+
}
+
+
fn allowed_byte(c: u8) -> bool {
+
(b'0'..=b'9').contains(&c) || (b'a'..=b'z').contains(&c) || c == b'-'
+
}
+
+
fn default_atproto() -> String {
+
"https://bsky.social/".into()
+
}
+
+
mod resp {
+
use serde::Deserialize;
+
use ssh_key::PublicKey;
+
+
#[derive(Debug, Deserialize)]
+
pub struct Resp {
+
pub records: Box<[Record]>,
+
}
+
+
#[derive(Debug, Deserialize)]
+
pub struct Record {
+
value: Value,
+
}
+
+
#[derive(Debug, Deserialize)]
+
pub struct Value {
+
key: String,
+
}
+
+
impl Into<PublicKey> for &Record {
+
fn into(self) -> PublicKey {
+
PublicKey::from_openssh(&self.value.key).unwrap()
+
}
+
}
+
}
+
+
#[async_trait]
+
impl super::Fetch for ATProto {
+
async fn fetch(&self) -> Vec<PublicKey> {
+
let mut url = reqwest::Url::parse_with_params(
+
&self.host,
+
&[
+
("repo", self.handle.to_string()),
+
("collection", "sh.tangled.publicKey".into()),
+
],
+
)
+
.unwrap();
+
url.set_path("xrpc/com.atproto.repo.listRecords");
+
+
let data = reqwest::get(url).await.unwrap().text().await.unwrap();
+
+
let decoded: resp::Resp = serde_json::from_str(&data).unwrap();
+
+
decoded.records.iter().map(Into::into).collect()
+
}
+
}
+84
cli/src/sources/helpers.rs
···
···
+
// SPDX-FileCopyrightText: 2025 Łukasz Niemier <#@hauleth.dev>
+
//
+
// SPDX-License-Identifier: EUPL-1.2
+
+
use std::str::FromStr;
+
use std::fmt;
+
+
use serde::{de, Deserialize, Deserializer};
+
+
pub fn string_or_struct<'de, T, D>(deserializer: D) -> Result<T, D::Error>
+
where
+
T: Deserialize<'de> + FromStr,
+
D: Deserializer<'de>,
+
<T as FromStr>::Err: fmt::Display,
+
{
+
// This is a Visitor that forwards string types to T's `FromStr` impl and
+
// forwards map types to T's `Deserialize` impl. The `PhantomData` is to
+
// keep the compiler from complaining about T being an unused generic type
+
// parameter. We need T in order to know the Value type for the Visitor
+
// impl.
+
struct StringOrStruct<T>(std::marker::PhantomData<fn() -> T>);
+
+
impl<'de, T> de::Visitor<'de> for StringOrStruct<T>
+
where
+
T: Deserialize<'de> + FromStr,
+
<T as FromStr>::Err: fmt::Display,
+
{
+
type Value = T;
+
+
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+
formatter.write_str("string or map")
+
}
+
+
fn visit_str<E>(self, value: &str) -> Result<T, E>
+
where
+
E: de::Error,
+
{
+
FromStr::from_str(value).map_err(de::Error::custom)
+
}
+
+
fn visit_map<M>(self, map: M) -> Result<T, M::Error>
+
where
+
M: de::MapAccess<'de>,
+
{
+
// `MapAccessDeserializer` is a wrapper that turns a `MapAccess`
+
// into a `Deserializer`, allowing it to be used as the input to T's
+
// `Deserialize` implementation. T then deserializes itself using
+
// the entries from the map visitor.
+
Deserialize::deserialize(de::value::MapAccessDeserializer::new(map))
+
}
+
}
+
+
deserializer.deserialize_any(StringOrStruct(Default::default()))
+
}
+
+
pub fn from_str<'de, T, D>(deserializer: D) -> Result<T, D::Error>
+
where
+
T: FromStr,
+
D: Deserializer<'de>,
+
<T as FromStr>::Err: fmt::Display,
+
{
+
struct DeFromStr<T>(std::marker::PhantomData<T>);
+
+
impl<'de, T> de::Visitor<'de> for DeFromStr<T>
+
where
+
T: FromStr,
+
<T as FromStr>::Err: fmt::Display,
+
{
+
type Value = T;
+
+
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+
formatter.write_str("string or map")
+
}
+
+
fn visit_str<E>(self, value: &str) -> Result<T, E>
+
where
+
E: de::Error,
+
{
+
FromStr::from_str(value).map_err(de::Error::custom)
+
}
+
}
+
+
deserializer.deserialize_any(DeFromStr(Default::default()))
+
}
+48 -12
cli/src/sources/mod.rs
···
// SPDX-FileCopyrightText: 2024 Łukasz Niemier <#@hauleth.dev>
//
// SPDX-License-Identifier: EUPL-1.2
use ssh_key::PublicKey;
use tokio::process::Command;
-
use serde::Deserialize;
-
use async_trait::async_trait;
#[async_trait]
pub trait Fetch: std::fmt::Debug {
···
#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Source {
Raw(Raw),
Hosts(Hosts),
···
Sourcehut(String),
Gitlab(String),
Codeberg(String),
}
#[async_trait]
···
Source::Raw(ref raw) => raw.fetch().await,
Source::Hosts(ref raw) => raw.fetch().await,
Source::Http(ref raw) => raw.fetch().await,
-
Source::Github(ref user) => Http { url: format!("https://github.com/{user}.keys") }.fetch().await,
-
Source::Sourcehut(ref user) => Http { url: format!("https://meta.sr.ht/{user}.keys") }.fetch().await,
-
Source::Gitlab(ref user) => Http { url: format!("https://gitlab.com/{user}.keys") }.fetch().await,
-
Source::Codeberg(ref user) => Http { url: format!("https://codeberg.org/{user}.keys") }.fetch().await,
}
}
}
#[derive(Debug, Deserialize)]
-
pub struct Raw(Vec<PublicKey>);
#[async_trait::async_trait]
impl Fetch for Raw {
async fn fetch(&self) -> Vec<PublicKey> {
-
self.0.clone()
}
}
#[derive(Debug, Deserialize)]
-
pub struct Hosts(pub Vec<String>);
#[async_trait]
impl Fetch for Hosts {
···
.unwrap()
.trim()
.split('\n')
.map(|line| {
// Ignore first column as it contain hostname which is not
// needed there
line.split(' ')
.skip(1)
-
.collect::<Vec<_>>()
.join(" ")
.to_owned()
})
-
.map(|k| PublicKey::from_openssh(&k).unwrap())
.collect()
}
}
#[derive(Debug, Deserialize)]
pub struct Http {
-
pub url: String
}
#[async_trait]
···
// SPDX-FileCopyrightText: 2024 Łukasz Niemier <#@hauleth.dev>
+
// SPDX-FileCopyrightText: 2025 Łukasz Niemier <#@hauleth.dev>
//
// SPDX-License-Identifier: EUPL-1.2
+
use async_trait::async_trait;
+
use serde::Deserialize;
use ssh_key::PublicKey;
use tokio::process::Command;
+
+
mod atproto;
+
mod helpers;
+
+
pub use atproto::ATProto;
#[async_trait]
pub trait Fetch: std::fmt::Debug {
···
#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
+
#[non_exhaustive]
pub enum Source {
Raw(Raw),
Hosts(Hosts),
···
Sourcehut(String),
Gitlab(String),
Codeberg(String),
+
#[serde(deserialize_with = "helpers::string_or_struct")]
+
Tangled(ATProto),
}
#[async_trait]
···
Source::Raw(ref raw) => raw.fetch().await,
Source::Hosts(ref raw) => raw.fetch().await,
Source::Http(ref raw) => raw.fetch().await,
+
Source::Github(ref user) => {
+
Http {
+
url: format!("https://github.com/{user}.keys"),
+
}
+
.fetch()
+
.await
+
}
+
Source::Sourcehut(ref user) => {
+
Http {
+
url: format!("https://meta.sr.ht/{user}.keys"),
+
}
+
.fetch()
+
.await
+
}
+
Source::Gitlab(ref user) => {
+
Http {
+
url: format!("https://gitlab.com/{user}.keys"),
+
}
+
.fetch()
+
.await
+
}
+
Source::Codeberg(ref user) => {
+
Http {
+
url: format!("https://codeberg.org/{user}.keys"),
+
}
+
.fetch()
+
.await
+
}
+
Source::Tangled(ref atproto) => atproto.fetch().await,
}
}
}
#[derive(Debug, Deserialize)]
+
pub struct Raw(Box<[PublicKey]>);
#[async_trait::async_trait]
impl Fetch for Raw {
async fn fetch(&self) -> Vec<PublicKey> {
+
self.0.clone().into()
}
}
#[derive(Debug, Deserialize)]
+
pub struct Hosts(pub Box<[String]>);
#[async_trait]
impl Fetch for Hosts {
···
.unwrap()
.trim()
.split('\n')
+
// Remove comments
+
.filter(|line| !line.starts_with("#"))
.map(|line| {
// Ignore first column as it contain hostname which is not
// needed there
line.split(' ')
.skip(1)
+
.collect::<Box<[_]>>()
.join(" ")
.to_owned()
})
+
.map(|k| PublicKey::from_openssh(&k).unwrap())
.collect()
}
}
#[derive(Debug, Deserialize)]
pub struct Http {
+
pub url: String,
}
#[async_trait]
+6
docs/fuk.1.scd
···
_url_ for equivalent entries. In order these would be _github.com_,
_gitlab.com_, _meta.sr.ht_, and _codeberg.org_.
Example configuration:
```
···
_url_ for equivalent entries. In order these would be _github.com_,
_gitlab.com_, _meta.sr.ht_, and _codeberg.org_.
+
*tangled*
+
Support for _tangled.sh_ keys stored in the ATProto profile. Accepts
+
either string, which should be either DID or handle (with or without
+
preceding `@` sign), or a structure with `handle` key and optional
+
`host` key. Default host is _https://bsky.social_.
+
Example configuration:
```
+139 -119
flake.lock
···
{
"nodes": {
"devenv": {
"inputs": {
"flake-compat": "flake-compat",
"nix": "nix",
-
"nixpkgs": "nixpkgs",
-
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
-
"lastModified": 1707004164,
-
"narHash": "sha256-9Hr8onWtvLk5A8vCEkaE9kxA0D7PR62povFokM1oL5Q=",
"owner": "cachix",
"repo": "devenv",
-
"rev": "0e68853bb27981a4ffd7a7225b59ed84f7180fc7",
"type": "github"
},
"original": {
···
"flake-compat": {
"flake": false,
"locked": {
-
"lastModified": 1673956053,
-
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
-
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
···
},
"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": {
···
"type": "github"
}
},
-
"flake-utils": {
"inputs": {
-
"systems": "systems"
},
"locked": {
-
"lastModified": 1685518550,
-
"narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=",
-
"owner": "numtide",
-
"repo": "flake-utils",
-
"rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef",
"type": "github"
},
"original": {
-
"owner": "numtide",
-
"repo": "flake-utils",
"type": "github"
}
},
···
"inputs": {
"nixpkgs": [
"devenv",
-
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
-
"lastModified": 1660459072,
-
"narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
-
"rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
···
"type": "github"
}
},
-
"lowdown-src": {
"flake": false,
"locked": {
-
"lastModified": 1633514407,
-
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
-
"owner": "kristapsdz",
-
"repo": "lowdown",
-
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"type": "github"
},
"original": {
-
"owner": "kristapsdz",
-
"repo": "lowdown",
"type": "github"
}
},
"nix": {
"inputs": {
-
"lowdown-src": "lowdown-src",
-
"nixpkgs": [
-
"devenv",
-
"nixpkgs"
],
-
"nixpkgs-regression": "nixpkgs-regression"
},
"locked": {
-
"lastModified": 1676545802,
-
"narHash": "sha256-EK4rZ+Hd5hsvXnzSzk2ikhStJnD63odF7SzsQ8CuSPU=",
"owner": "domenkozar",
"repo": "nix",
-
"rev": "7c91803598ffbcfe4a55c44ac6d49b2cf07a527f",
"type": "github"
},
"original": {
"owner": "domenkozar",
-
"ref": "relaxed-flakes",
"repo": "nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
-
"lastModified": 1678875422,
-
"narHash": "sha256-T3o6NcQPwXjxJMn2shz86Chch4ljXgZn746c2caGxd8=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "126f49a01de5b7e35a43fd43f891ecf6d3a51459",
"type": "github"
},
"original": {
"owner": "NixOS",
-
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"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"
}
},
-
"nixpkgs-regression": {
"locked": {
-
"lastModified": 1643052045,
-
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
-
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
-
"nixpkgs-stable": {
"locked": {
-
"lastModified": 1685801374,
-
"narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=",
-
"owner": "NixOS",
-
"repo": "nixpkgs",
-
"rev": "c37ca420157f4abc31e26f436c1145f8951ff373",
"type": "github"
},
"original": {
-
"owner": "NixOS",
-
"ref": "nixos-23.05",
-
"repo": "nixpkgs",
"type": "github"
}
},
-
"nixpkgs_2": {
"locked": {
-
"lastModified": 1706173671,
-
"narHash": "sha256-lciR7kQUK2FCAYuszyd7zyRRmTaXVeoZsCyK6QFpGdk=",
-
"path": "/nix/store/ildml01gk7v91fba35whklllfi343lvq-source",
-
"rev": "4fddc9be4eaf195d631333908f2a454b03628ee5",
"type": "path"
},
"original": {
···
"type": "indirect"
}
},
-
"pre-commit-hooks": {
-
"inputs": {
-
"flake-compat": [
-
"devenv",
-
"flake-compat"
-
],
-
"flake-utils": "flake-utils",
-
"gitignore": "gitignore",
-
"nixpkgs": [
-
"devenv",
-
"nixpkgs"
-
],
-
"nixpkgs-stable": "nixpkgs-stable"
-
},
-
"locked": {
-
"lastModified": 1704725188,
-
"narHash": "sha256-qq8NbkhRZF1vVYQFt1s8Mbgo8knj+83+QlL5LBnYGpI=",
-
"owner": "cachix",
-
"repo": "pre-commit-hooks.nix",
-
"rev": "ea96f0c05924341c551a797aaba8126334c505d2",
-
"type": "github"
-
},
-
"original": {
-
"owner": "cachix",
-
"repo": "pre-commit-hooks.nix",
-
"type": "github"
-
}
-
},
"root": {
"inputs": {
"devenv": "devenv",
-
"flake-parts": "flake-parts",
-
"nixpkgs": "nixpkgs_2"
-
}
-
},
-
"systems": {
-
"locked": {
-
"lastModified": 1681028828,
-
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
-
"owner": "nix-systems",
-
"repo": "default",
-
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
-
"type": "github"
-
},
-
"original": {
-
"owner": "nix-systems",
-
"repo": "default",
-
"type": "github"
}
}
},
···
{
"nodes": {
+
"cachix": {
+
"inputs": {
+
"devenv": [
+
"devenv"
+
],
+
"flake-compat": [
+
"devenv"
+
],
+
"git-hooks": [
+
"devenv"
+
],
+
"nixpkgs": "nixpkgs"
+
},
+
"locked": {
+
"lastModified": 1742042642,
+
"narHash": "sha256-D0gP8srrX0qj+wNYNPdtVJsQuFzIng3q43thnHXQ/es=",
+
"owner": "cachix",
+
"repo": "cachix",
+
"rev": "a624d3eaf4b1d225f918de8543ed739f2f574203",
+
"type": "github"
+
},
+
"original": {
+
"owner": "cachix",
+
"ref": "latest",
+
"repo": "cachix",
+
"type": "github"
+
}
+
},
"devenv": {
"inputs": {
+
"cachix": "cachix",
"flake-compat": "flake-compat",
+
"git-hooks": "git-hooks",
"nix": "nix",
+
"nixpkgs": "nixpkgs_3"
},
"locked": {
+
"lastModified": 1744588088,
+
"narHash": "sha256-jymEVhRPzvzVP8XrXJcnVFUmle/FKLZIfSq+9EiobQE=",
"owner": "cachix",
"repo": "devenv",
+
"rev": "1e6c06a058dae3791c0303eb99636cee9605c8d9",
"type": "github"
},
"original": {
···
"flake-compat": {
"flake": false,
"locked": {
+
"lastModified": 1733328505,
+
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
+
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
···
},
"flake-parts": {
"inputs": {
+
"nixpkgs-lib": [
+
"devenv",
+
"nix",
+
"nixpkgs"
+
]
+
},
+
"locked": {
+
"lastModified": 1712014858,
+
"narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=",
+
"owner": "hercules-ci",
+
"repo": "flake-parts",
+
"rev": "9126214d0a59633752a136528f5f3b9aa8565b7d",
+
"type": "github"
+
},
+
"original": {
+
"owner": "hercules-ci",
+
"repo": "flake-parts",
+
"type": "github"
+
}
+
},
+
"flake-parts_2": {
+
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
+
"lastModified": 1743550720,
+
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
+
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"type": "github"
},
"original": {
···
"type": "github"
}
},
+
"git-hooks": {
"inputs": {
+
"flake-compat": [
+
"devenv"
+
],
+
"gitignore": "gitignore",
+
"nixpkgs": [
+
"devenv",
+
"nixpkgs"
+
]
},
"locked": {
+
"lastModified": 1742649964,
+
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
+
"owner": "cachix",
+
"repo": "git-hooks.nix",
+
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
"type": "github"
},
"original": {
+
"owner": "cachix",
+
"repo": "git-hooks.nix",
"type": "github"
}
},
···
"inputs": {
"nixpkgs": [
"devenv",
+
"git-hooks",
"nixpkgs"
]
},
"locked": {
+
"lastModified": 1709087332,
+
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
+
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
···
"type": "github"
}
},
+
"libgit2": {
"flake": false,
"locked": {
+
"lastModified": 1697646580,
+
"narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=",
+
"owner": "libgit2",
+
"repo": "libgit2",
+
"rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5",
"type": "github"
},
"original": {
+
"owner": "libgit2",
+
"repo": "libgit2",
"type": "github"
}
},
"nix": {
"inputs": {
+
"flake-compat": [
+
"devenv"
],
+
"flake-parts": "flake-parts",
+
"libgit2": "libgit2",
+
"nixpkgs": "nixpkgs_2",
+
"nixpkgs-23-11": [
+
"devenv"
+
],
+
"nixpkgs-regression": [
+
"devenv"
+
],
+
"pre-commit-hooks": [
+
"devenv"
+
]
},
"locked": {
+
"lastModified": 1741798497,
+
"narHash": "sha256-E3j+3MoY8Y96mG1dUIiLFm2tZmNbRvSiyN7CrSKuAVg=",
"owner": "domenkozar",
"repo": "nix",
+
"rev": "f3f44b2baaf6c4c6e179de8cbb1cc6db031083cd",
"type": "github"
},
"original": {
"owner": "domenkozar",
+
"ref": "devenv-2.24",
"repo": "nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
+
"lastModified": 1733212471,
+
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
"owner": "NixOS",
"repo": "nixpkgs",
+
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
"type": "github"
},
"original": {
"owner": "NixOS",
+
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
+
"lastModified": 1743296961,
+
"narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=",
+
"owner": "nix-community",
+
"repo": "nixpkgs.lib",
+
"rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa",
"type": "github"
},
"original": {
+
"owner": "nix-community",
+
"repo": "nixpkgs.lib",
"type": "github"
}
},
+
"nixpkgs_2": {
"locked": {
+
"lastModified": 1717432640,
+
"narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=",
"owner": "NixOS",
"repo": "nixpkgs",
+
"rev": "88269ab3044128b7c2f4c7d68448b2fb50456870",
"type": "github"
},
"original": {
"owner": "NixOS",
+
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
+
"nixpkgs_3": {
"locked": {
+
"lastModified": 1733477122,
+
"narHash": "sha256-qamMCz5mNpQmgBwc8SB5tVMlD5sbwVIToVZtSxMph9s=",
+
"owner": "cachix",
+
"repo": "devenv-nixpkgs",
+
"rev": "7bd9e84d0452f6d2e63b6e6da29fe73fac951857",
"type": "github"
},
"original": {
+
"owner": "cachix",
+
"ref": "rolling",
+
"repo": "devenv-nixpkgs",
"type": "github"
}
},
+
"nixpkgs_4": {
"locked": {
+
"lastModified": 0,
+
"narHash": "sha256-bWSjxDwq7iVePrhmA7tY2dyMWHuNJo8knkO4y+q4ZkY=",
+
"path": "/nix/store/5r0zii3rap2dyfyip31pdf9f0hpvv3d7-source",
"type": "path"
},
"original": {
···
"type": "indirect"
}
},
"root": {
"inputs": {
"devenv": "devenv",
+
"flake-parts": "flake-parts_2",
+
"nixpkgs": "nixpkgs_4"
}
}
},
+2 -1
keys.toml
···
name = "hauleth"
keys = [
{ github = "hauleth" },
-
{ sourcehut = "~hauleth" }
]
[[entry]]
···
name = "hauleth"
keys = [
{ github = "hauleth" },
+
{ sourcehut = "~hauleth" },
+
{ tangled = "@hauleth.dev" }
]
[[entry]]