diff --git a/Cargo.lock b/Cargo.lock index f151f4a..b35dea9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,15 +47,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" -[[package]] -name = "aligned-vec" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" -dependencies = [ - "equator", -] - [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -118,22 +109,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.10" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -142,12 +133,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" - [[package]] name = "arc-swap" version = "1.7.1" @@ -155,15 +140,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] -name = "arg_enum_proc_macro" -version = "0.3.4" +name = "arraydeque" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "arrayvec" @@ -172,132 +152,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "assert-json-diff" -version = "2.0.2" +name = "asn1-rs" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" dependencies = [ - "serde", - "serde_json", + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror 1.0.69", + "time", ] [[package]] -name = "async-attributes" -version = "1.1.2" +name = "asn1-rs-derive" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ + "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "async-channel" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" -dependencies = [ - "concurrent-queue", - "event-listener 2.5.3", - "futures-core", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-global-executor" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" -dependencies = [ - "async-channel 2.5.0", - "async-executor", - "async-io", - "async-lock", - "blocking", - "futures-lite", - "once_cell", - "tokio", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" -dependencies = [ - "event-listener 5.4.1", - "event-listener-strategy", - "pin-project-lite", + "syn 2.0.111", + "synstructure", ] [[package]] -name = "async-std" -version = "1.13.2" +name = "asn1-rs-impl" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8e079a4ab67ae52b7403632e4618815d6db36d2a010cfe41b02c1b1578f93b" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ - "async-attributes", - "async-channel 1.9.0", - "async-global-executor", - "async-io", - "async-lock", - "crossbeam-utils", - "futures-channel", - "futures-core", - "futures-io", - "futures-lite", - "gloo-timers", - "kv-log-macro", - "log", - "memchr", - "once_cell", - "pin-project-lite", - "pin-utils", - "slab", - "wasm-bindgen-futures", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -319,15 +209,9 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - [[package]] name = "async-trait" version = "0.1.89" @@ -336,7 +220,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -360,63 +244,34 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] -[[package]] -name = "auto-future" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1e7e457ea78e524f48639f551fd79703ac3f2237f5ecccdf4708f8a75ad373" - [[package]] name = "autocfg" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "av1-grain" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" -dependencies = [ - "anyhow", - "arrayvec", - "log", - "nom 8.0.0", - "num-rational", - "v_frame", -] - -[[package]] -name = "avif-serialize" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" -dependencies = [ - "arrayvec", -] - [[package]] name = "aws-lc-rs" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5932a7d9d28b0d2ea34c6b3779d35e3dd6f6345317c34e73438c4f1f29144151" +checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f" dependencies = [ "aws-lc-sys", + "untrusted 0.7.1", "zeroize", ] [[package]] name = "aws-lc-sys" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1826f2e4cfc2cd19ee53c42fbf68e2f81ec21108e0b7ecf6a71cf062137360fc" +checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6" dependencies = [ - "bindgen", "cc", "cmake", "dunce", @@ -425,38 +280,11 @@ dependencies = [ [[package]] name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core 0.4.5", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "itoa", - "matchit 0.7.3", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" dependencies = [ - "axum-core 0.5.5", + "axum-core", "axum-macros", "bytes", "form_urlencoded", @@ -467,7 +295,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit 0.8.4", + "matchit", "memchr", "mime", "percent-encoding", @@ -484,26 +312,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", -] - [[package]] name = "axum-core" version = "0.5.5" @@ -525,13 +333,14 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.10.3" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9963ff19f40c6102c76756ef0a46004c0d58957d87259fc9208ff8441c12ab96" +checksum = "dbfe9f610fe4e99cf0cfcd03ccf8c63c28c616fe714d80475ef731f3b13dd21b" dependencies = [ - "axum 0.8.6", - "axum-core 0.5.5", + "axum", + "axum-core", "bytes", + "futures-core", "futures-util", "headers", "http", @@ -539,22 +348,11 @@ dependencies = [ "http-body-util", "mime", "pin-project-lite", - "rustversion", - "serde_core", "tower-layer", "tower-service", "tracing", ] -[[package]] -name = "axum-forwarded-header" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31b7681986699239411d7eb786ca1aca1aaa52e1890a3ff14f6955d6c5e6c1e3" -dependencies = [ - "axum 0.7.9", -] - [[package]] name = "axum-macros" version = "0.5.0" @@ -563,14 +361,14 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "axum-server" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "495c05f60d6df0093e8fb6e74aa5846a0ad06abaf96d76166283720bf740f8ab" +checksum = "c1ab4a3ec9ea8a657c72d99a03a824af695bd0fb5ec639ccbd9cd3543b41a5f9" dependencies = [ "arc-swap", "bytes", @@ -590,17 +388,16 @@ dependencies = [ [[package]] name = "axum-test" -version = "17.3.0" +version = "18.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb1dfb84bd48bad8e4aa1acb82ed24c2bb5e855b659959b4e03b4dca118fcac" +checksum = "c0388808c0617a886601385c0024b9d0162480a763ba371f803d87b775115400" dependencies = [ "anyhow", - "assert-json-diff", - "auto-future", - "axum 0.8.6", + "axum", "bytes", "bytesize", "cookie", + "expect-json", "http", "http-body-util", "hyper", @@ -612,7 +409,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "smallvec", + "smallvec 1.15.1", "tokio", "tower", "url", @@ -680,32 +477,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.110", -] - -[[package]] -name = "bit_field" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" - [[package]] name = "bitcoin" version = "0.32.7" @@ -720,7 +491,7 @@ dependencies = [ "bitcoin_hashes", "hex-conservative", "hex_lit", - "secp256k1", + "secp256k1 0.29.1", ] [[package]] @@ -769,12 +540,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "bitstream-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" - [[package]] name = "bitvec" version = "1.0.1" @@ -796,45 +561,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel 2.5.0", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "boring" -version = "4.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4acbe9eda68fc7fbfb395aace52dfc37075928536ec2f149abce54dbd40e38d5" -dependencies = [ - "bitflags 2.10.0", - "boring-sys", - "foreign-types", - "libc", - "openssl-macros", -] - -[[package]] -name = "boring-sys" -version = "4.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c9f08dc17fab4192e5e6b0920e6c06eb9e3e4ab98b9cff00368dfe6d1e30c9" -dependencies = [ - "autocfg", - "bindgen", - "cmake", - "fs_extra", - "fslock", -] - [[package]] name = "borsh" version = "1.5.7" @@ -855,7 +581,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -879,12 +605,6 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "built" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" - [[package]] name = "bumpalo" version = "3.19.0" @@ -933,21 +653,21 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" [[package]] name = "bytesize" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99fa31e08a43eaa5913ef68d7e01c37a2bdce6ed648168239ad33b7d30a9cd8" +checksum = "00f4369ba008f82b968b1acbe31715ec37bd45236fa0726605a36cc3060ea256" [[package]] name = "cc" -version = "1.2.45" +version = "1.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" dependencies = [ "find-msvc-tools", "jobserver", @@ -955,25 +675,6 @@ dependencies = [ "shlex", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom 7.1.3", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-if" version = "1.0.4" @@ -997,18 +698,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-link", -] - -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", + "windows-link 0.2.1", ] [[package]] @@ -1030,9 +720,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive 4.5.49", @@ -1040,9 +730,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -1072,7 +762,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1109,12 +799,6 @@ dependencies = [ "cc", ] -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "colorchoice" version = "1.0.4" @@ -1146,6 +830,16 @@ dependencies = [ "version_check", ] +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1185,25 +879,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-deque" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" -dependencies = [ - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" -dependencies = [ - "crossbeam-utils", -] - [[package]] name = "crossbeam-queue" version = "0.3.12" @@ -1219,12 +894,6 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -1276,7 +945,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1287,9 +956,15 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.110", + "syn 2.0.111", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "der" version = "0.7.10" @@ -1301,6 +976,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", +] + [[package]] name = "deranged" version = "0.5.5" @@ -1339,7 +1028,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "unicode-xid", ] @@ -1390,7 +1079,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1457,6 +1146,24 @@ dependencies = [ "serde", ] +[[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 = "encoding_rs_io" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cc3c5651fb62ab8aa3103998dade57efdd028544bd300516baa31840c252a83" +dependencies = [ + "encoding_rs", +] + [[package]] name = "env_filter" version = "0.1.4" @@ -1481,31 +1188,22 @@ dependencies = [ ] [[package]] -name = "equator" -version = "0.4.2" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" -dependencies = [ - "equator-macro", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "equator-macro" -version = "0.4.2" +name = "erased-serde" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", + "serde", + "serde_core", + "typeid", ] -[[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.14" @@ -1527,12 +1225,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "5.4.1" @@ -1545,28 +1237,31 @@ dependencies = [ ] [[package]] -name = "event-listener-strategy" -version = "0.5.4" +name = "expect-json" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +checksum = "7519e78573c950576b89eb4f4fe82aedf3a80639245afa07e3ee3d199dcdb29e" dependencies = [ - "event-listener 5.4.1", - "pin-project-lite", + "chrono", + "email_address", + "expect-json-macros", + "num", + "serde", + "serde_json", + "thiserror 2.0.17", + "typetag", + "uuid", ] [[package]] -name = "exr" -version = "1.74.0" +name = "expect-json-macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" +checksum = "7bf7f5979e98460a0eb412665514594f68f366a32b85fa8d7ffb65bb1edee6a0" dependencies = [ - "bit_field", - "half", - "lebe", - "miniz_oxide", - "rayon-core", - "smallvec", - "zune-inflate", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -1575,26 +1270,6 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "fax" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" -dependencies = [ - "fax_derive", -] - -[[package]] -name = "fax_derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] - [[package]] name = "fdeflate" version = "0.3.7" @@ -1628,9 +1303,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fixedbitset" @@ -1672,33 +1347,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1720,9 +1368,9 @@ dependencies = [ [[package]] name = "fs-err" -version = "3.1.3" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ad492b2cf1d89d568a43508ab24f98501fe03f2f31c01e1d0fe7366a71745d2" +checksum = "62d91fd049c123429b018c47887d3f75a265540dd3c30ba9cb7bae9197edb03a" dependencies = [ "autocfg", "tokio", @@ -1735,7 +1383,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" dependencies = [ "rustix", - "tokio", "windows-sys 0.59.0", ] @@ -1745,16 +1392,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" -[[package]] -name = "fslock" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "funty" version = "2.0.0" @@ -1820,19 +1457,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -1841,7 +1465,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1883,7 +1507,7 @@ dependencies = [ "g2poly", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1940,34 +1564,12 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gif" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" -dependencies = [ - "color_quant", - "weezl", -] - [[package]] name = "glob" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" -[[package]] -name = "gloo-timers" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "group" version = "0.13.0" @@ -1991,24 +1593,13 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.12.0", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "half" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" -dependencies = [ - "cfg-if", - "crunchy", - "zerocopy", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -2031,9 +1622,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" [[package]] name = "hashlink" @@ -2089,12 +1680,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" @@ -2191,9 +1776,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ "atomic-waker", "bytes", @@ -2207,7 +1792,7 @@ dependencies = [ "itoa", "pin-project-lite", "pin-utils", - "smallvec", + "smallvec 1.15.1", "tokio", "want", ] @@ -2244,9 +1829,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ "base64", "bytes", @@ -2326,7 +1911,7 @@ dependencies = [ "icu_normalizer_data", "icu_properties", "icu_provider", - "smallvec", + "smallvec 1.15.1", "zerovec", ] @@ -2384,7 +1969,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", - "smallvec", + "smallvec 1.15.1", "utf8_iter", ] @@ -2400,44 +1985,17 @@ dependencies = [ [[package]] name = "image" -version = "0.25.8" +version = "0.25.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" dependencies = [ "bytemuck", "byteorder-lite", - "color_quant", - "exr", - "gif", - "image-webp", "moxcms", "num-traits", "png", - "qoi", - "ravif", - "rayon", - "rgb", - "tiff", - "zune-core", - "zune-jpeg", ] -[[package]] -name = "image-webp" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" -dependencies = [ - "byteorder-lite", - "quick-error", -] - -[[package]] -name = "imgref" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c5cedc30da3a610cac6b4ba17597bdf7152cf974e8aab3afb3d54455e371c8" - [[package]] name = "indexmap" version = "1.9.3" @@ -2450,12 +2008,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", ] [[package]] @@ -2466,7 +2024,7 @@ checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2479,14 +2037,12 @@ dependencies = [ ] [[package]] -name = "interpolate_name" -version = "0.2.4" +name = "inventory" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", + "rustversion", ] [[package]] @@ -2499,35 +2055,17 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" name = "iri-string" version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ - "either", + "memchr", + "serde", ] [[package]] -name = "itertools" -version = "0.13.0" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -2585,7 +2123,7 @@ checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2610,28 +2148,21 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "9.3.1" +version = "10.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" +checksum = "c76e1c7d7df3e34443b3621b459b066a7b79644f059fc8b2db7070c825fd417e" dependencies = [ + "aws-lc-rs", "base64", + "getrandom 0.2.16", "js-sys", "pem", - "ring", "serde", "serde_json", + "signature", "simple_asn1", ] -[[package]] -name = "kv-log-macro" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" -dependencies = [ - "log", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -2641,38 +2172,12 @@ dependencies = [ "spin", ] -[[package]] -name = "lebe" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" - [[package]] name = "libc" version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" -[[package]] -name = "libfuzzer-sys" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5037190e1f70cbeef565bd267599242926f724d3b8a9f510fd7e0b540cfa4404" -dependencies = [ - "arbitrary", - "cc", -] - -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link", -] - [[package]] name = "libm" version = "0.2.15" @@ -2764,18 +2269,6 @@ name = "log" version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" -dependencies = [ - "value-bag", -] - -[[package]] -name = "loop9" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" -dependencies = [ - "imgref", -] [[package]] name = "lru" @@ -2810,28 +2303,12 @@ dependencies = [ "regex-automata", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "matchit" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" -[[package]] -name = "maybe-rayon" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" -dependencies = [ - "cfg-if", - "rayon", -] - [[package]] name = "md-5" version = "0.10.6" @@ -2906,12 +2383,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nix" version = "0.24.3" @@ -2925,22 +2396,25 @@ dependencies = [ ] [[package]] -name = "nom" -version = "7.1.3" +name = "no_debug" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] +checksum = "3f23a60c850e1144fc1dd9435152e0cfdc7dd18725350b4243584118013a52a4" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "8.0.0" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", + "minimal-lexical", ] [[package]] @@ -2949,12 +2423,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9e591e719385e6ebaeb5ce5d3887f7d5676fceca6411d1925ccc95745f3d6f7" -[[package]] -name = "noop_proc_macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" - [[package]] name = "ntapi" version = "0.4.1" @@ -2964,6 +2432,20 @@ dependencies = [ "winapi", ] +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -2986,26 +2468,24 @@ dependencies = [ "num-iter", "num-traits", "rand 0.8.5", - "smallvec", + "smallvec 1.15.1", "zeroize", ] [[package]] -name = "num-conv" -version = "0.1.0" +name = "num-complex" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] [[package]] -name = "num-derive" -version = "0.4.2" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-integer" @@ -3057,6 +2537,34 @@ dependencies = [ "libc", ] +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "oid-registry" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" +dependencies = [ + "asn1-rs", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -3069,17 +2577,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] - [[package]] name = "openssl-probe" version = "0.1.6" @@ -3128,7 +2625,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3174,16 +2671,10 @@ dependencies = [ "cfg-if", "libc", "redox_syscall", - "smallvec", - "windows-link", + "smallvec 1.15.1", + "windows-link 0.2.1", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "pem" version = "3.0.6" @@ -3216,7 +2707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.12.0", + "indexmap 2.12.1", ] [[package]] @@ -3245,7 +2736,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3260,25 +2751,11 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "pingora-boringssl" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5a3aedfb91e23d4c73cc73d2e7d8d763a5c5d397f9758c12cba6718356bb8b" -dependencies = [ - "boring", - "boring-sys", - "foreign-types-shared", - "futures-util", - "libc", - "tokio", -] - [[package]] name = "pingora-core" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2298292e2dbd156294bcc8dd2ec34507277c78bab31bfe3aecc1cab9b1f91dff" +checksum = "76f63d3f67d99c95a1f85623fc43242fd644dd12ccbaa18c38a54e1580c6846a" dependencies = [ "ahash 0.8.12", "async-trait", @@ -3299,19 +2776,20 @@ dependencies = [ "nix", "once_cell", "openssl-probe", + "ouroboros", "parking_lot", "percent-encoding", - "pingora-boringssl", "pingora-error", "pingora-http", "pingora-pool", "pingora-runtime", + "pingora-rustls", "pingora-timeout", "prometheus", "rand 0.8.5", "regex", "serde", - "serde_yaml 0.8.26", + "serde_yaml", "sfv", "socket2", "strum", @@ -3320,20 +2798,21 @@ dependencies = [ "tokio-test", "unicase", "windows-sys 0.59.0", + "x509-parser", "zstd", ] [[package]] name = "pingora-error" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca838db1ee9beef844d6db7e2e85e0006b50bb6bf8f19c96fb64bf2567e59039" +checksum = "52119570d3f4644e09654ad24df2b7d851bf12eaa8c4148b4674c7f90916598e" [[package]] name = "pingora-http" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f15f9fa5ae034435adfe2b94620e25dee7b0859c2460acec499163de3d299f1" +checksum = "5a3542fd0fd0a83212882c5066ae739ba51804f20d624ff7e12ec85113c5c89a" dependencies = [ "bytes", "http", @@ -3342,18 +2821,18 @@ dependencies = [ [[package]] name = "pingora-ketama" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672fab42518ae10cbcbed2e4532c46744b222425c12886d2e6ae2ffd64b1e74" +checksum = "3f5dd8546b1874d5cfca594375c1cfb852c3dffd4f060428fa031a6e790dea18" dependencies = [ "crc32fast", ] [[package]] name = "pingora-load-balancing" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c6fe587777e321fbead02352aa089e9965f6e3b87a944d12d7dfd3717fac4b1" +checksum = "4b5bb0314830a64b73b50b3782f3089f87947b61b4324c804d6f8d4ff9ce1c70" dependencies = [ "arc-swap", "async-trait", @@ -3373,9 +2852,9 @@ dependencies = [ [[package]] name = "pingora-pool" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a74589c2e4f089d00fde78030e2d51b44406341e1e43b0bdb5456b93b4459937" +checksum = "996c574f30a6e1ad10b47ac1626a86e0e47d5075953dd049d60df16ba5f7076e" dependencies = [ "crossbeam-queue", "log", @@ -3388,9 +2867,9 @@ dependencies = [ [[package]] name = "pingora-runtime" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e720a120466e8f61a64384deff6d7a52de6df6a4c54b0046c70c9cf0eaad1092" +checksum = "8ccc165021cf55a39b9e760121b22c4260b17a0b2c530d5b93092fc5bc765b94" dependencies = [ "once_cell", "rand 0.8.5", @@ -3398,11 +2877,28 @@ dependencies = [ "tokio", ] +[[package]] +name = "pingora-rustls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5d581533d775229a95cfd1833059d149bb613d620d16a06e468e5f197563714" +dependencies = [ + "log", + "no_debug", + "pingora-error", + "ring", + "rustls", + "rustls-native-certs", + "rustls-pemfile", + "rustls-pki-types", + "tokio-rustls", +] + [[package]] name = "pingora-timeout" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd4538cb5a3ae793c63126fc21e77e20778742931e31a5ac64e75b3ca10d176" +checksum = "548cd21d41611c725827677937e68f2cd008bbfa09f3416d3fbad07e1e42f6d7" dependencies = [ "once_cell", "parking_lot", @@ -3411,17 +2907,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - [[package]] name = "pkcs1" version = "0.7.5" @@ -3462,20 +2947,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi 0.5.2", - "pin-project-lite", - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "portable-atomic" version = "1.11.1" @@ -3532,7 +3003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3550,7 +3021,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit", ] [[package]] @@ -3596,7 +3067,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3616,30 +3087,11 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "version_check", "yansi", ] -[[package]] -name = "profiling" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" -dependencies = [ - "profiling-procmacros", -] - -[[package]] -name = "profiling-procmacros" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" -dependencies = [ - "quote", - "syn 2.0.110", -] - [[package]] name = "prometheus" version = "0.13.4" @@ -3672,7 +3124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac6c3320f9abac597dcbc668774ef006702672474aad53c6d596b62e487b40b1" dependencies = [ "heck 0.5.0", - "itertools 0.14.0", + "itertools", "log", "multimap", "once_cell", @@ -3683,7 +3135,7 @@ dependencies = [ "pulldown-cmark", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.110", + "syn 2.0.111", "tempfile", ] @@ -3694,10 +3146,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3764,15 +3216,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "qoi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" -dependencies = [ - "bytemuck", -] - [[package]] name = "qrcode" version = "0.14.1" @@ -3782,12 +3225,6 @@ dependencies = [ "image", ] -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quinn" version = "0.11.9" @@ -3923,76 +3360,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rav1e" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" -dependencies = [ - "arbitrary", - "arg_enum_proc_macro", - "arrayvec", - "av1-grain", - "bitstream-io", - "built", - "cfg-if", - "interpolate_name", - "itertools 0.12.1", - "libc", - "libfuzzer-sys", - "log", - "maybe-rayon", - "new_debug_unreachable", - "noop_proc_macro", - "num-derive", - "num-traits", - "once_cell", - "paste", - "profiling", - "rand 0.8.5", - "rand_chacha 0.3.1", - "simd_helpers", - "system-deps", - "thiserror 1.0.69", - "v_frame", - "wasm-bindgen", -] - -[[package]] -name = "ravif" -version = "0.11.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" -dependencies = [ - "avif-serialize", - "imgref", - "loop9", - "quick-error", - "rav1e", - "rayon", - "rgb", -] - -[[package]] -name = "rayon" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "rcgen" version = "0.14.5" @@ -4121,12 +3488,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "rgb" -version = "0.8.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6a884d2998352bb4daf0183589aec883f16a6da1f4dde84d8e2e9a5409a1ce" - [[package]] name = "ring" version = "0.17.14" @@ -4137,7 +3498,7 @@ dependencies = [ "cfg-if", "getrandom 0.2.16", "libc", - "untrusted", + "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -4172,9 +3533,9 @@ dependencies = [ [[package]] name = "rqrr" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0cd0432e6beb2f86aa4c8af1bb5edcf3c9bcb9d4836facc048664205458575" +checksum = "fbee31f6b3a594eca8afb8bf3359bcd52aa8aa4d90b561d201534558cfadae1b" dependencies = [ "g2p", "image", @@ -4183,9 +3544,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" dependencies = [ "const-oid", "digest", @@ -4238,6 +3599,15 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + [[package]] name = "rustix" version = "1.1.2" @@ -4267,6 +3637,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-native-certs" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "rustls-pki-types", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "2.2.0" @@ -4295,7 +3678,7 @@ dependencies = [ "aws-lc-rs", "ring", "rustls-pki-types", - "untrusted", + "untrusted 0.9.0", ] [[package]] @@ -4310,6 +3693,25 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "saphyr-parser" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb771b59f6b1985d1406325ec28f97cfb14256abcec4fdfb37b36a1766d6af7" +dependencies = [ + "arraydeque", + "hashlink", +] + +[[package]] +name = "schannel" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -4326,7 +3728,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4366,7 +3768,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c94492e2ab6c045b4cc38013809ce255d14c3d352c9f0d11e6b920e2adc948ad" dependencies = [ "chrono", - "clap 4.5.51", + "clap 4.5.53", "dotenvy", "glob", "regex", @@ -4388,7 +3790,7 @@ dependencies = [ "proc-macro2", "quote", "sea-bae", - "syn 2.0.110", + "syn 2.0.111", "unicode-ident", ] @@ -4399,7 +3801,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7315c0cadb7e60fb17ee2bb282aa27d01911fc2a7e5836ec1d4ac37d19250bb4" dependencies = [ "async-trait", - "clap 4.5.51", + "clap 4.5.53", "dotenvy", "sea-orm", "sea-orm-cli", @@ -4451,7 +3853,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "thiserror 2.0.17", ] @@ -4477,7 +3879,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4507,8 +3909,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9465315bc9d4566e1724f0fffcbcc446268cb522e60f9a27bcded6b19c108113" dependencies = [ "bitcoin_hashes", - "rand 0.8.5", - "secp256k1-sys", + "secp256k1-sys 0.10.1", + "serde", +] + +[[package]] +name = "secp256k1" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" +dependencies = [ + "bitcoin_hashes", + "rand 0.9.2", + "secp256k1-sys 0.11.0", "serde", ] @@ -4521,6 +3934,38 @@ dependencies = [ "cc", ] +[[package]] +name = "secp256k1-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb913707158fadaf0d8702c2db0e857de66eb003ccfdda5924b5f5ac98efb38" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "serde" version = "1.0.228" @@ -4531,6 +3976,24 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-saphyr" +version = "0.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0916ccf524f1ccec1b3c02193c9e3d2e167aee9b6b294829dce6f4411332155" +dependencies = [ + "ahash 0.8.12", + "base64", + "encoding_rs_io", + "nohash-hasher", + "num-traits", + "ryu", + "saphyr-parser", + "serde", + "serde_json", + "smallvec 2.0.0-alpha.12", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -4548,7 +4011,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4577,11 +4040,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -4608,19 +4071,6 @@ dependencies = [ "yaml-rust", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.12.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "sfv" version = "0.10.4" @@ -4628,7 +4078,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fa1f336066b758b7c9df34ed049c0e693a426afe2b27ff7d5b14f410ab1a132" dependencies = [ "base64", - "indexmap 2.12.0", + "indexmap 2.12.1", "rust_decimal", ] @@ -4690,9 +4140,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ "libc", ] @@ -4725,15 +4175,6 @@ version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" -[[package]] -name = "simd_helpers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" -dependencies = [ - "quote", -] - [[package]] name = "simdutf8" version = "0.1.5" @@ -4779,6 +4220,12 @@ dependencies = [ "serde", ] +[[package]] +name = "smallvec" +version = "2.0.0-alpha.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef784004ca8777809dcdad6ac37629f0a97caee4c685fcea805278d81dd8b857" + [[package]] name = "socket2" version = "0.6.1" @@ -4834,14 +4281,14 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 5.4.1", + "event-listener", "futures-core", "futures-intrusive", "futures-io", "futures-util", "hashbrown 0.15.5", "hashlink", - "indexmap 2.12.0", + "indexmap 2.12.1", "log", "memchr", "once_cell", @@ -4851,7 +4298,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "smallvec", + "smallvec 1.15.1", "thiserror 2.0.17", "time", "tokio", @@ -4872,7 +4319,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4895,7 +4342,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.110", + "syn 2.0.111", "tokio", "url", ] @@ -4937,7 +4384,7 @@ dependencies = [ "serde", "sha1", "sha2", - "smallvec", + "smallvec 1.15.1", "sqlx-core", "stringprep", "thiserror 2.0.17", @@ -4980,7 +4427,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "smallvec", + "smallvec 1.15.1", "sqlx-core", "stringprep", "thiserror 2.0.17", @@ -5068,7 +4515,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5085,8 +4532,8 @@ version = "0.1.13" name = "switchgear-migration" version = "0.1.13" dependencies = [ - "async-std", "sea-orm-migration", + "tokio", ] [[package]] @@ -5095,14 +4542,13 @@ version = "0.1.13" dependencies = [ "arc-swap", "async-trait", - "axum 0.8.6", + "axum", "backoff", "chrono", "log", "pingora-core", "pingora-error", "pingora-load-balancing", - "secp256k1", "switchgear-service", "thiserror 2.0.17", "tokio", @@ -5119,11 +4565,9 @@ dependencies = [ "axum-server", "backoff", "chrono", - "clap 4.5.51", + "clap 4.5.53", "env_logger", "futures-util", - "hyper", - "hyper-util", "jemallocator", "jsonwebtoken", "lightning-invoice", @@ -5137,8 +4581,8 @@ dependencies = [ "rustls", "rustls-pemfile", "serde", + "serde-saphyr", "serde_json", - "serde_yaml 0.9.34+deprecated", "shellexpand", "signal-hook", "signal-hook-tokio", @@ -5159,17 +4603,16 @@ version = "0.1.13" dependencies = [ "anyhow", "async-trait", - "axum 0.8.6", + "axum", "axum-extra", - "axum-forwarded-header", "axum-test", "backoff", "base64", "bech32", + "bitcoin_hashes", "chrono", "client-ip", "email_address", - "fs4", "hex", "http", "hyper-rustls", @@ -5181,6 +4624,7 @@ dependencies = [ "log", "p256", "pkcs8", + "png", "prost", "qrcode", "rand 0.8.5", @@ -5189,7 +4633,8 @@ dependencies = [ "rustls", "rustls-pemfile", "sea-orm", - "secp256k1", + "secp256k1 0.29.1", + "secp256k1 0.31.1", "serde", "serde_json", "sha2", @@ -5216,8 +4661,8 @@ dependencies = [ "flate2", "fs4", "hex", - "indexmap 2.12.0", - "secp256k1", + "indexmap 2.12.1", + "secp256k1 0.31.1", "tar", "tempfile", "ureq", @@ -5236,9 +4681,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.110" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -5262,36 +4707,23 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "sysinfo" -version = "0.32.1" +version = "0.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" +checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" dependencies = [ - "core-foundation-sys", "libc", "memchr", "ntapi", - "rayon", + "objc2-core-foundation", + "objc2-io-kit", "windows", ] -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml", - "version-compare", -] - [[package]] name = "tap" version = "1.0.1" @@ -5309,12 +4741,6 @@ dependencies = [ "xattr", ] -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - [[package]] name = "tempfile" version = "3.23.0" @@ -5369,7 +4795,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5380,7 +4806,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5392,20 +4818,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "tiff" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" -dependencies = [ - "fax", - "flate2", - "half", - "quick-error", - "weezl", - "zune-jpeg", -] - [[package]] name = "time" version = "0.3.44" @@ -5489,7 +4901,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5541,23 +4953,17 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.23" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ - "serde", + "indexmap 2.12.1", + "serde_core", "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] @@ -5569,28 +4975,14 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.12.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow", -] - [[package]] name = "toml_edit" version = "0.23.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ - "indexmap 2.12.0", - "toml_datetime 0.7.3", + "indexmap 2.12.1", + "toml_datetime", "toml_parser", "winnow", ] @@ -5605,10 +4997,10 @@ dependencies = [ ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_writer" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" [[package]] name = "tonic" @@ -5617,7 +5009,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", - "axum 0.8.6", + "axum", "base64", "bytes", "h2", @@ -5649,7 +5041,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5674,7 +5066,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.110", + "syn 2.0.111", "tempfile", "tonic-build", ] @@ -5687,7 +5079,7 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "indexmap 2.12.0", + "indexmap 2.12.1", "pin-project-lite", "slab", "sync_wrapper", @@ -5748,7 +5140,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -5781,12 +5173,42 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "typetag" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" +dependencies = [ + "erased-serde", + "inventory", + "once_cell", + "serde", + "typetag-impl", +] + +[[package]] +name = "typetag-impl" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "unicase" version = "2.8.1" @@ -5827,10 +5249,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] -name = "unsafe-libyaml" -version = "0.2.11" +name = "untrusted" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "untrusted" @@ -5857,9 +5279,9 @@ dependencies = [ [[package]] name = "ureq-proto" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b4531c118335662134346048ddb0e54cc86bd7e81866757873055f0e38f5d2" +checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f" dependencies = [ "base64", "http", @@ -5909,35 +5331,12 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "v_frame" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" -dependencies = [ - "aligned-vec", - "num-traits", - "wasm-bindgen", -] - -[[package]] -name = "value-bag" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" - [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-compare" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" - [[package]] name = "version_check" version = "0.9.5" @@ -6019,7 +5418,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "wasm-bindgen-shared", ] @@ -6070,12 +5469,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "weezl" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" - [[package]] name = "whoami" version = "1.6.1" @@ -6119,24 +5512,37 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.57.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-core 0.57.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", ] [[package]] name = "windows-core" -version = "0.57.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", - "windows-result 0.1.2", - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] @@ -6145,22 +5551,22 @@ version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.2", - "windows-interface 0.59.3", - "windows-link", + "windows-implement", + "windows-interface", + "windows-link 0.2.1", "windows-result 0.4.1", - "windows-strings", + "windows-strings 0.5.1", ] [[package]] -name = "windows-implement" -version = "0.57.0" +name = "windows-future" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", ] [[package]] @@ -6171,30 +5577,25 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "windows-interface" -version = "0.57.0" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] -name = "windows-interface" -version = "0.59.3" +name = "windows-link" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.110", -] +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-link" @@ -6202,13 +5603,23 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + [[package]] name = "windows-result" -version = "0.1.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link 0.1.3", ] [[package]] @@ -6217,7 +5628,16 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link", + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", ] [[package]] @@ -6226,7 +5646,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -6271,7 +5691,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link", + "windows-link 0.2.1", ] [[package]] @@ -6311,7 +5731,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link", + "windows-link 0.2.1", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -6322,6 +5742,15 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -6490,6 +5919,23 @@ dependencies = [ "tap", ] +[[package]] +name = "x509-parser" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" +dependencies = [ + "asn1-rs", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror 1.0.69", + "time", +] + [[package]] name = "xattr" version = "1.6.1" @@ -6543,28 +5989,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6584,7 +6030,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "synstructure", ] @@ -6624,7 +6070,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6654,27 +6100,3 @@ dependencies = [ "cc", "pkg-config", ] - -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - -[[package]] -name = "zune-inflate" -version = "0.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "zune-jpeg" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" -dependencies = [ - "zune-core", -] diff --git a/README.md b/README.md index 4b67870..404a83b 100644 --- a/README.md +++ b/README.md @@ -418,6 +418,13 @@ lnurl-service: cert-path: "/etc/ssl/certs/lnurl-cert.pem" # Path to TLS private key file key-path: "/etc/ssl/certs/lnurl-key.pem" + + # QR module width x height + bech32-qr-scale: 8 + # QR light gray level + bech32-qr-light: 255 + # QR dark gray level + bech32-qr-dark: 0 ``` ### Consistent Backend-Selection diff --git a/migration/Cargo.toml b/migration/Cargo.toml index dd3b955..885a3b6 100644 --- a/migration/Cargo.toml +++ b/migration/Cargo.toml @@ -11,10 +11,10 @@ license = "Apache-2.0" publish = true [dependencies] -async-std = { version = "1", features = ["attributes", "tokio1"] } +tokio = { version = "1", features = ["macros", "rt-multi-thread"] } [dependencies.sea-orm-migration] -version = "1.1.0" +version = "1.1" features = [ "runtime-tokio-rustls", "sqlx-postgres", "sqlx-mysql", "sqlx-sqlite" diff --git a/migration/src/main.rs b/migration/src/main.rs index ac813eb..8762411 100644 --- a/migration/src/main.rs +++ b/migration/src/main.rs @@ -1,6 +1,6 @@ use sea_orm_migration::prelude::*; -#[async_std::main] +#[tokio::main] async fn main() { cli::run_cli(switchgear_migration::DiscoveryBackendMigrator).await; cli::run_cli(switchgear_migration::OfferMigrator).await; diff --git a/pingora/Cargo.toml b/pingora/Cargo.toml index 6e74b08..1861d12 100644 --- a/pingora/Cargo.toml +++ b/pingora/Cargo.toml @@ -13,23 +13,22 @@ categories = ["network-programming", "web-programming"] publish = true [dependencies] -arc-swap = "1.7.1" -async-trait = "0.1.88" -axum = { version = "0.8.4", features = ["macros"] } +arc-swap = "1.7" +async-trait = "0.1" +axum = { version = "0.8", features = ["macros"] } backoff = { version = "0.4", features = ["tokio"] } -chrono = { version = "0.4.41", features = ["serde"] } +chrono = { version = "0.4", features = ["serde"] } switchgear-service = { version = "0.1.7", path = "../service" } log = "0.4" -pingora-core = { version = "0.5.0", features = ["boringssl"] } -pingora-error = { version = "0.5.0" } -pingora-load-balancing = { version = "0.5.0" } -thiserror = "2.0.12" +pingora-core = { version = "0.6", features = ["rustls"] } +pingora-error = { version = "0.6" } +pingora-load-balancing = { version = "0.6" } +thiserror = "2.0" tokio = { version = "1", features = ["full"] } -uuid = { version = "1.17.0", features = ["v4", "serde"] } -url = "2.5.4" +uuid = { version = "1.17", features = ["v4", "serde"] } +url = "2.5" [dev-dependencies] -chrono = "0.4.41" -secp256k1 = { version = "0.29.1", features = ["recovery", "serde", "rand"] } +chrono = "0.4" tokio = { version = "1", features = ["full"] } -uuid = "1.17.0" +uuid = "1.17" diff --git a/server/Cargo.toml b/server/Cargo.toml index 17a0cab..ca43610 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -15,48 +15,46 @@ publish = true [dependencies] anyhow = "1.0" async-trait = "0.1" -axum-server = { version = "0.7.2", features = ["tokio-rustls", "tls-rustls"] } -backoff = "0.4.0" -chrono = { version = "0.4.41", features = ["serde"] } -clap = { version = "4", features = ["derive"] } +axum-server = { version = "0.7", features = ["tokio-rustls", "tls-rustls"] } +backoff = "0.4" +chrono = { version = "0.4", features = ["serde"] } +clap = { version = "4.5", features = ["derive"] } env_logger = "0.11" futures-util = "0.3" -hyper = ">=1.4, <1.8" -hyper-util = ">=0.1.2, <0.1.17" -jemallocator = "0.5.4" -jsonwebtoken = "9.3.1" +jemallocator = "0.5" +jsonwebtoken = "10.2" log = "0.4" p256 = { version = "0.13", features = ["ecdsa"] } -pingora-load-balancing = { version = "0.5.0" } +pingora-load-balancing = { version = "0.6" } pkcs8 = { version = "0.10", features = ["pem"] } rand = "0.8" reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } -rustls = { version = "0.23.28", features = ["ring"] } -rustls-pemfile = "2.1" +rustls = { version = "0.23", features = ["ring"] } +rustls-pemfile = "2" serde = { version = "1", features = ["derive"] } serde_json = "1.0" -serde_yaml = "0.9" -shellexpand = "3.1.1" +serde-saphyr = "0.0.8" +shellexpand = "3.1" signal-hook = "0.3" signal-hook-tokio = { version = "0.3", features = ["futures-v0_3"] } -simplelog = {version = "0.12.2", features = ["paris"] } +simplelog = {version = "0.12", features = ["paris"] } switchgear-pingora = { version = "0.1.7",path = "../pingora" } switchgear-service = { version = "0.1.7",path = "../service" } tokio = { version = "1", features = ["full"] } -uuid = { version = "1.17.0", features = ["v4", "serde"] } +uuid = { version = "1.17", features = ["v4", "serde"] } [dev-dependencies] -chrono = { version = "0.4.41", features = ["serde"] } -lightning-invoice = { version = "0.33.2", features = ["serde", "std"] } +chrono = { version = "0.4", features = ["serde"] } +lightning-invoice = { version = "0.33", features = ["serde", "std"] } switchgear-testing = { version = "0.1.7", path = "../testing" } -rcgen = { version = "0.14.1", features = ["crypto"] } -reqwest = { version = "0.12.20", default-features = false, features = ["json", "rustls-tls"] } -serde_yaml = "0.9" -sysinfo = "0.32" +rcgen = { version = "0.14", features = ["crypto"] } +reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } +serde-saphyr = "0.0.8" +sysinfo = "0.37" tempfile = "3.0" -toml = "0.8" -uuid = { version = "1.17.0", features = ["v4", "serde"] } -jemallocator = "0.5.4" +toml = "0.9" +uuid = { version = "1.17", features = ["v4", "serde"] } +jemallocator = "0.5" [lib] name = "switchgear_server" diff --git a/server/config/lnurl-standalone.yaml b/server/config/lnurl-standalone.yaml index 9a9e98a..3d1ed61 100644 --- a/server/config/lnurl-standalone.yaml +++ b/server/config/lnurl-standalone.yaml @@ -21,7 +21,9 @@ lnurl-service: tls: cert-path: "${LNURL_SERVICE_TLS_CERT_PATH:-/etc/ssl/certs/lnurl-cert.pem}" key-path: "${LNURL_SERVICE_TLS_KEY_PATH:-/etc/ssl/certs/lnurl-key.pem}" - + bech32-qr-scale: 8 + bech32-qr-light: 255 + bech32-qr-dark: 0 # Remote storage configuration # Connect to external discovery and offers services diff --git a/server/config/memory-basic-no-tls.yaml b/server/config/memory-basic-no-tls.yaml index 706aea6..6841275 100644 --- a/server/config/memory-basic-no-tls.yaml +++ b/server/config/memory-basic-no-tls.yaml @@ -19,6 +19,9 @@ lnurl-service: max-elapsed-time-secs: 2.5 backend-selection: "round-robin" selection-capacity-bias: -0.2 + bech32-qr-scale: 8 + bech32-qr-light: 255 + bech32-qr-dark: 0 discovery-service: address: "${DISCOVERY_SERVICE_ADDRESS:-127.0.0.1:8081}" diff --git a/server/config/memory-basic.yaml b/server/config/memory-basic.yaml index 003939b..a1c47ab 100644 --- a/server/config/memory-basic.yaml +++ b/server/config/memory-basic.yaml @@ -21,7 +21,10 @@ lnurl-service: tls: cert-path: "${LNURL_SERVICE_TLS_CERT_PATH:-/etc/ssl/certs/lnurl-cert.pem}" key-path: "${LNURL_SERVICE_TLS_KEY_PATH:-/etc/ssl/certs/lnurl-key.pem}" - + bech32-qr-scale: 8 + bech32-qr-light: 255 + bech32-qr-dark: 0 + discovery-service: address: "${DISCOVERY_SERVICE_ADDRESS:-127.0.0.1:8081}" auth-authority: "${DISCOVERY_SERVICE_AUTH_AUTHORITY_PATH:-/etc/ssl/certs/discovery-auth-authority.pem}" diff --git a/server/config/mixed-persistence.yaml b/server/config/mixed-persistence.yaml index d1f0d6e..42e270c 100644 --- a/server/config/mixed-persistence.yaml +++ b/server/config/mixed-persistence.yaml @@ -18,11 +18,13 @@ lnurl-service: max-elapsed-time-secs: 2.5 backend-selection: "round-robin" selection-capacity-bias: -0.2 - tls: cert-path: "${LNURL_SERVICE_TLS_CERT_PATH:-/etc/ssl/certs/lnurl-cert.pem}" key-path: "${LNURL_SERVICE_TLS_KEY_PATH:-/etc/ssl/certs/lnurl-key.pem}" - + bech32-qr-scale: 8 + bech32-qr-light: 255 + bech32-qr-dark: 0 + discovery-service: address: "${DISCOVERY_SERVICE_ADDRESS:-127.0.0.1:8081}" auth-authority: "${DISCOVERY_SERVICE_AUTH_AUTHORITY_PATH:-/etc/ssl/certs/discovery-auth-authority.pem}" diff --git a/server/config/sqlite-persistent.yaml b/server/config/sqlite-persistent.yaml index ec09541..3e4fbb0 100644 --- a/server/config/sqlite-persistent.yaml +++ b/server/config/sqlite-persistent.yaml @@ -18,11 +18,13 @@ lnurl-service: max-elapsed-time-secs: 2.5 backend-selection: "round-robin" selection-capacity-bias: -0.2 - tls: cert-path: "${LNURL_SERVICE_TLS_CERT_PATH:-/etc/ssl/certs/lnurl-cert.pem}" key-path: "${LNURL_SERVICE_TLS_KEY_PATH:-/etc/ssl/certs/lnurl-key.pem}" - + bech32-qr-scale: 8 + bech32-qr-light: 255 + bech32-qr-dark: 0 + discovery-service: address: "${DISCOVERY_SERVICE_ADDRESS:-127.0.0.1:8081}" auth-authority: "${DISCOVERY_SERVICE_AUTH_AUTHORITY_PATH:-/etc/ssl/certs/discovery-auth-authority.pem}" diff --git a/server/src/commands/offer/record.rs b/server/src/commands/offer/record.rs index ba31f6d..ee5c49b 100644 --- a/server/src/commands/offer/record.rs +++ b/server/src/commands/offer/record.rs @@ -90,6 +90,7 @@ pub fn new_offer(partition: &str, metadata_id: &Uuid, output: Option<&Path>) -> metadata_id: *metadata_id, #[allow(clippy::expect_used)] timestamp: DateTime::::from_timestamp_secs(0).expect("unix epoch"), + #[allow(clippy::expect_used)] expires: Some( DateTime::::from_timestamp_secs(86_400).expect("unix epoch + 24 hours"), ), diff --git a/server/src/config.rs b/server/src/config.rs index b36d7e0..057bb4c 100644 --- a/server/src/config.rs +++ b/server/src/config.rs @@ -30,6 +30,9 @@ pub struct LnUrlBalancerServiceConfig { pub ln_client_timeout_secs: f64, pub selection_capacity_bias: Option, pub comment_allowed: Option, + pub bech32_qr_scale: usize, + pub bech32_qr_light: u8, + pub bech32_qr_dark: u8, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/server/src/di/inject/injectors/config.rs b/server/src/di/inject/injectors/config.rs index 403e09c..f3551fc 100644 --- a/server/src/di/inject/injectors/config.rs +++ b/server/src/di/inject/injectors/config.rs @@ -62,7 +62,7 @@ impl ServerConfigInjector { ) })?; - let config: ServerConfig = serde_yaml::from_str(&expanded_config).with_context(|| { + let config: ServerConfig = serde_saphyr::from_str(&expanded_config).with_context(|| { format!( "parsing YAML configuration from file '{}'", config_path.to_string_lossy() diff --git a/server/src/di/inject/injectors/service/balance.rs b/server/src/di/inject/injectors/service/balance.rs index a55c387..ed20858 100644 --- a/server/src/di/inject/injectors/service/balance.rs +++ b/server/src/di/inject/injectors/service/balance.rs @@ -94,6 +94,9 @@ impl BalancerServiceInjector { scheme, service_config.allowed_hosts.clone(), service_config.comment_allowed, + service_config.bech32_qr_scale, + service_config.bech32_qr_light, + service_config.bech32_qr_dark, )) .layer(ClfLogger::new("lnurl")) .into_make_service_with_connect_info::(); diff --git a/server/tests/features/common/step_functions.rs b/server/tests/features/common/step_functions.rs index 1b2bea6..9c9bf60 100644 --- a/server/tests/features/common/step_functions.rs +++ b/server/tests/features/common/step_functions.rs @@ -54,9 +54,9 @@ pub async fn step_given_an_invalid_configuration_file_exists( let config_content = std::fs::read_to_string(config_path) .with_context(|| format!("reading config file: {}", config_path.display()))?; - // Try to parse with serde_yaml and assert that it fails + // Try to parse with serde_saphyr and assert that it fails let parse_result = - serde_yaml::from_str::(&config_content); + serde_saphyr::from_str::(&config_content); if parse_result.is_ok() { bail_log!( @@ -99,8 +99,9 @@ pub async fn step_given_the_lnurl_server_is_ready_to_start(ctx: &mut GlobalConte ) })?; - let _config = serde_yaml::from_str::(&config_content) - .with_context(|| format!("parsing config file: {}", config_path.display()))?; + let _config = + serde_saphyr::from_str::(&config_content) + .with_context(|| format!("parsing config file: {}", config_path.display()))?; Ok(()) } diff --git a/service/Cargo.toml b/service/Cargo.toml index e658438..29deebd 100644 --- a/service/Cargo.toml +++ b/service/Cargo.toml @@ -13,57 +13,57 @@ categories = ["network-programming", "web-programming", "cryptography::cryptocur publish = true [dependencies] -#bitcoin = { version = "0.32.2", default-features = false, features = ["secp-recovery", "serde"] } -async-trait = "0.1.88" -axum = { version = "0.8.4", features = ["macros"] } -axum-extra = { version = "0.10", features = ["typed-header"] } -axum-forwarded-header = "0.1.0" +async-trait = "0.1" +axum = { version = "0.8", features = ["macros"] } +axum-extra = { version = "0.12", features = ["typed-header"] } backoff = { version = "0.4", features = ["tokio"] } -base64 = "0.22.1" -bech32 = "0.11.0" -chrono = { version = "0.4.41", features = ["serde"] } -client-ip = { version = "0.1.1", features = ["forwarded-header"] } -email_address = "0.2.9" -fs4 = { version = "0.13.1", features = ["tokio"] } +base64 = "0.22" +bech32 = "0.11" +chrono = { version = "0.4", features = ["serde"] } +client-ip = { version = "0.1", features = ["forwarded-header"] } +email_address = "0.2" hex = "0.4" -http = "1.3.1" -hyper-rustls = { version = "0.27.7", features = ["http2", "tls12"], default-features = false } +http = "1.3" +hyper-rustls = { version = "0.27", features = ["http2", "tls12"], default-features = false } hyper-timeout = "0.5" hyper-util = "0.1" -image = "0.25.6" -jsonwebtoken = "9.3.1" -lightning-invoice = { version = "0.33.2", features = ["serde", "std"] } +image = { version = "0.25", default-features = false, features = ["png"] } +jsonwebtoken = { version = "10.2", features = ["aws_lc_rs"] } log = "0.4" -prost = { version = "0.14.1" } -qrcode = "0.14.1" +prost = { version = "0.14" } +qrcode = { version = "0.14", default-features = false, features = ["image"] } reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } rustls = { version = "0.23", features = ["ring"] } rustls-pemfile = "2.0" -sea-orm = { version = "1.1.14", features = ["sqlx-mysql", "sqlx-sqlite", "sqlx-postgres", "runtime-tokio-rustls", "macros"] } -secp256k1 = { version = "0.29.1", features = ["recovery", "serde"] } -serde = "1.0.219" -serde_json = "1.0.140" -sha2 = "0.10.9" -sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "tls-rustls", "sqlite", "macros", "migrate"] } +sea-orm = { version = "1.1", features = ["sqlx-mysql", "sqlx-sqlite", "sqlx-postgres", "runtime-tokio-rustls", "macros"] } +secp256k1 = { version = "0.31", features = ["recovery", "serde"] } +serde = "1.0" +serde_json = "1.0" +sha2 = "0.10" +sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "tls-rustls", "sqlite", "macros", "migrate"] } switchgear-migration = { version = "0.1.7", path = "../migration" } tempfile = "3.0" -thiserror = "2.0.12" +thiserror = "2.0" tokio = { version = "1", features = ["full"] } -tonic = { version = "0.14.2", features = ["transport", "tls-ring"] } -tonic-prost = "0.14.2" -tower = { version = "0.5.2", features = ["balance"] } -url = { version = "2.5.4", features = ["serde"] } -uuid = { version = "1.17.0", features = ["v4", "serde"] } +tonic = { version = "0.14", features = ["transport", "tls-ring"] } +tonic-prost = "0.14" +tower = { version = "0.5", features = ["balance"] } +url = { version = "2.5", features = ["serde"] } +uuid = { version = "1.17", features = ["v4", "serde"] } [build-dependencies] -tonic-prost-build = { version = "0.14.2" } +tonic-prost-build = { version = "0.14" } [dev-dependencies] anyhow = "1.0" -axum-test = "17.3.0" -switchgear-testing = { version = "0.1.7", path = "../testing" } +axum-test = "18.3" +bitcoin_hashes = "0.14" +hyper-util = "0.1" +lightning-invoice = { version = "0.33", features = ["serde", "std"] } p256 = { version = "0.13", features = ["ecdsa"] } pkcs8 = { version = "0.10", features = ["pem"] } -rand = "0.8.5" -rqrr = "0.7.1" -hyper-util = "0.1" +png = "0.18" +rand = "0.8" +rqrr = "0.10" +secp256k1_0_29 = { package = "secp256k1", version = "0.29", features = ["recovery", "serde"] } +switchgear-testing = { version = "0.1.7", path = "../testing" } diff --git a/service/src/api/discovery.rs b/service/src/api/discovery.rs index 270d28c..1f26467 100644 --- a/service/src/api/discovery.rs +++ b/service/src/api/discovery.rs @@ -183,13 +183,11 @@ mod test { #[test] fn serialize_when_discovery_backend_then_returns_json_with_flattened_fields() { - let key = SecretKey::from_slice( - &[ - 0xe1, 0x26, 0xf6, 0x8f, 0x7e, 0xaf, 0xcc, 0x8b, 0x74, 0xf5, 0x4d, 0x26, 0x9f, 0xe2, - 0x06, 0xbe, 0x71, 0x50, 0x00, 0xf9, 0x4d, 0xac, 0x06, 0x7d, 0x1c, 0x04, 0xa8, 0xca, - 0x3b, 0x2d, 0xb7, 0x34, - ][..], - ) + let key = SecretKey::from_byte_array([ + 0xe1, 0x26, 0xf6, 0x8f, 0x7e, 0xaf, 0xcc, 0x8b, 0x74, 0xf5, 0x4d, 0x26, 0x9f, 0xe2, + 0x06, 0xbe, 0x71, 0x50, 0x00, 0xf9, 0x4d, 0xac, 0x06, 0x7d, 0x1c, 0x04, 0xa8, 0xca, + 0x3b, 0x2d, 0xb7, 0x34, + ]) .unwrap(); let key = key.public_key(&Secp256k1::new()); @@ -223,13 +221,11 @@ mod test { #[test] fn deserialize_when_valid_json_then_creates_discovery_backend_with_flattened_fields() { - let key = SecretKey::from_slice( - &[ - 0xe1, 0x26, 0xf6, 0x8f, 0x7e, 0xaf, 0xcc, 0x8b, 0x74, 0xf5, 0x4d, 0x26, 0x9f, 0xe2, - 0x06, 0xbe, 0x71, 0x50, 0x00, 0xf9, 0x4d, 0xac, 0x06, 0x7d, 0x1c, 0x04, 0xa8, 0xca, - 0x3b, 0x2d, 0xb7, 0x34, - ][..], - ) + let key = SecretKey::from_byte_array([ + 0xe1, 0x26, 0xf6, 0x8f, 0x7e, 0xaf, 0xcc, 0x8b, 0x74, 0xf5, 0x4d, 0x26, 0x9f, 0xe2, + 0x06, 0xbe, 0x71, 0x50, 0x00, 0xf9, 0x4d, 0xac, 0x06, 0x7d, 0x1c, 0x04, 0xa8, 0xca, + 0x3b, 0x2d, 0xb7, 0x34, + ]) .unwrap(); let key = key.public_key(&Secp256k1::new()); diff --git a/service/src/api/lnurl.rs b/service/src/api/lnurl.rs index 5a72f4c..22ff6d6 100644 --- a/service/src/api/lnurl.rs +++ b/service/src/api/lnurl.rs @@ -203,9 +203,9 @@ mod test { LnUrlError, LnUrlErrorStatus, LnUrlInvoice, LnUrlOffer, LnUrlOfferMetadata, LnUrlOfferTag, }; use crate::api::offer::{OfferMetadataIdentifier, OfferMetadataImage, OfferMetadataSparse}; + use bitcoin_hashes::{sha256, Hash}; use lightning_invoice::{Currency, InvoiceBuilder, PaymentSecret}; - use secp256k1::hashes::{sha256, Hash}; - use secp256k1::{Secp256k1, SecretKey}; + use secp256k1_0_29::{Secp256k1, SecretKey}; use std::time::SystemTime; use url::Url; diff --git a/service/src/axum/extract/scheme.rs b/service/src/axum/extract/scheme.rs index 05638e9..51c01f0 100644 --- a/service/src/axum/extract/scheme.rs +++ b/service/src/axum/extract/scheme.rs @@ -1,7 +1,6 @@ use axum::extract::FromRef; use axum::http::header; use axum::{extract::FromRequestParts, http::request::Parts}; -use axum_forwarded_header::ForwardedHeader; use std::convert::Infallible; #[derive(Debug, Clone)] @@ -18,8 +17,7 @@ where if let Some(proto) = parts .headers .get(header::FORWARDED) - .and_then(|h| ForwardedHeader::try_from(h).ok()) - .and_then(|h| h.proto) + .and_then(parse_forwarded_proto) { return Ok(Scheme(proto)); } @@ -35,6 +33,17 @@ where } } +fn parse_forwarded_proto(forwarded: &header::HeaderValue) -> Option { + forwarded.to_str().ok()?.split(';').find_map(|s| { + let s = s.trim().to_lowercase(); + if s.starts_with("proto=") { + s.split('=').next_back().map(|c| c.to_string()) + } else { + None + } + }) +} + #[cfg(test)] mod tests { use super::*; diff --git a/service/src/components/pool/cln/grpc/client.rs b/service/src/components/pool/cln/grpc/client.rs index 5215f3a..f4ea1c2 100644 --- a/service/src/components/pool/cln/grpc/client.rs +++ b/service/src/components/pool/cln/grpc/client.rs @@ -5,14 +5,13 @@ use crate::components::pool::cln::grpc::config::{ use crate::components::pool::error::LnPoolError; use crate::components::pool::{Bolt11InvoiceDescription, LnFeatures, LnMetrics, LnRpcClient}; use async_trait::async_trait; -use secp256k1::hashes::hex::DisplayHex; +use hex::ToHex; use sha2::Digest; use std::fs; use std::sync::Arc; use std::time::{Duration, SystemTime, UNIX_EPOCH}; use tokio::sync::Mutex; use tonic::transport::{Certificate, Channel, ClientTlsConfig, Endpoint, Identity}; - use url::Url; #[allow(clippy::all)] @@ -243,7 +242,7 @@ impl InnerTonicClnGrpcClient { Bolt11InvoiceDescription::Direct(d) => (d.to_string(), Some(false), d.to_string()), Bolt11InvoiceDescription::DirectIntoHash(d) => { let hash = sha2::Sha256::digest(d.as_bytes()).to_vec(); - (d.to_string(), Some(true), hash.to_lower_hex_string()) + (d.to_string(), Some(true), hash.encode_hex()) } Bolt11InvoiceDescription::Hash(_) => { return Err(LnPoolError::from_invalid_configuration( diff --git a/service/src/lnurl/pay/handler.rs b/service/src/lnurl/pay/handler.rs index 9312891..fbd0921 100644 --- a/service/src/lnurl/pay/handler.rs +++ b/service/src/lnurl/pay/handler.rs @@ -12,11 +12,11 @@ use axum::http::{header, HeaderMap, HeaderValue, StatusCode}; use axum::response::Response; use axum::{extract::State, response::IntoResponse}; use bech32::{Bech32, Hrp}; -use image::{ImageFormat, Luma}; +use image::Luma; use qrcode::QrCode; use serde::Deserialize; use sqlx::types::JsonValue; -use std::io; +use std::io::{self, Cursor}; use url::Url; use uuid::Uuid; @@ -163,16 +163,27 @@ impl LnUrlPayHandlers { format!("{e} : when parsing {callback}"), ) })?; - let callback = QrCode::new(callback.as_bytes()).map_err(|e| { + let qr = QrCode::new(callback.as_bytes()).map_err(|e| { LnUrlPayServiceError::internal_error( module_path!(), &format!("{}:{}", file!(), line!()), format!("{e} : while generating qr code for {callback}"), ) })?; - let img = callback.render::>().build(); + + let scale = state.bech32_qr_scale(); + let dark = state.bech32_qr_dark(); + let light = state.bech32_qr_light(); + + let img = qr + .render::>() + .dark_color(Luma([dark])) + .light_color(Luma([light])) + .module_dimensions(scale as u32, scale as u32) + .build(); + let mut png_bytes = Vec::new(); - img.write_to(&mut std::io::Cursor::new(&mut png_bytes), ImageFormat::Png) + img.write_to(&mut Cursor::new(&mut png_bytes), image::ImageFormat::Png) .map_err(|e| { LnUrlPayServiceError::internal_error( module_path!(), @@ -180,12 +191,11 @@ impl LnUrlPayHandlers { format!("{e} : while encoding QR code to PNG"), ) })?; - let callback = png_bytes; let mut headers = Self::expires_headers(offer.expires)?; headers.insert(header::CONTENT_TYPE, HeaderValue::from_static("image/png")); - Ok((headers, callback)) + Ok((headers, png_bytes)) } pub async fn health_full( diff --git a/service/src/lnurl/pay/state.rs b/service/src/lnurl/pay/state.rs index 65006cd..0a8afed 100644 --- a/service/src/lnurl/pay/state.rs +++ b/service/src/lnurl/pay/state.rs @@ -14,6 +14,9 @@ pub struct LnUrlPayState { invoice_expiry: u64, allowed_hosts: AllowedHosts, comment_allowed: Option, + bech32_qr_scale: usize, + bech32_qr_light: u8, + bech32_qr_dark: u8, } impl FromRef> for Scheme { @@ -42,6 +45,9 @@ where scheme: Scheme, allowed_hosts: HashSet, comment_allowed: Option, + bech32_qr_scale: usize, + bech32_qr_light: u8, + bech32_qr_dark: u8, ) -> Self { Self { partitions, @@ -51,6 +57,9 @@ where scheme, allowed_hosts: AllowedHosts(allowed_hosts), comment_allowed, + bech32_qr_scale, + bech32_qr_light, + bech32_qr_dark, } } @@ -73,4 +82,16 @@ where pub fn comment_allowed(&self) -> Option { self.comment_allowed } + + pub fn bech32_qr_scale(&self) -> usize { + self.bech32_qr_scale + } + + pub fn bech32_qr_light(&self) -> u8 { + self.bech32_qr_light + } + + pub fn bech32_qr_dark(&self) -> u8 { + self.bech32_qr_dark + } } diff --git a/service/src/lnurl/service.rs b/service/src/lnurl/service.rs index 00dc078..e47a163 100644 --- a/service/src/lnurl/service.rs +++ b/service/src/lnurl/service.rs @@ -241,6 +241,9 @@ mod tests { Scheme("http".to_string()), Default::default(), Default::default(), + 8, + 255u8, + 0u8, ); let app = LnUrlBalancerService::router(state); @@ -259,6 +262,9 @@ mod tests { Scheme("http".to_string()), Default::default(), Default::default(), + 8, + 255u8, + 0u8, ); let app = LnUrlBalancerService::router(state); @@ -292,6 +298,9 @@ mod tests { Scheme("http".to_string()), Default::default(), Default::default(), + 8, + 255u8, + 0u8, ); let app = LnUrlBalancerService::router(state); @@ -371,6 +380,9 @@ mod tests { Scheme(scheme.to_string()), Default::default(), Default::default(), + 8, + 255u8, + 0u8, ); let app = LnUrlBalancerService::router(state); @@ -745,6 +757,9 @@ mod tests { Scheme("http".to_string()), Default::default(), Default::default(), + 8, + 255u8, + 0u8, ); let app = LnUrlBalancerService::router(state); let server = TestServer::new(app).unwrap(); @@ -828,19 +843,26 @@ mod tests { let png_bytes = response.as_bytes(); // Decode the QR code from the PNG to verify content - use image::ImageReader; + use png::Decoder; use std::io::Cursor; - let img = ImageReader::new(Cursor::new(&png_bytes)) - .with_guessed_format() - .unwrap() - .decode() - .unwrap(); - - let gray_img = img.to_luma8(); + let decoder = Decoder::new(Cursor::new(&png_bytes)); + let mut reader = decoder.read_info().unwrap(); + let mut buf = vec![ + 0; + reader + .output_buffer_size() + .expect("PNG has no output buffer size") + ]; + let info = reader.next_frame(&mut buf).unwrap(); + let bytes = &buf[..info.buffer_size()]; + + // Convert to rqrr-compatible image use rqrr::PreparedImage; + let img = image::GrayImage::from_raw(info.width, info.height, bytes.to_vec()) + .expect("Failed to create image from PNG data"); - let mut prepared = PreparedImage::prepare(gray_img); + let mut prepared = PreparedImage::prepare(img); let grids = prepared.detect_grids(); assert!(!grids.is_empty(), "Should detect at least one QR code"); diff --git a/service/tests/ln/cln.rs b/service/tests/ln/cln.rs index 671470a..1c85b47 100644 --- a/service/tests/ln/cln.rs +++ b/service/tests/ln/cln.rs @@ -1,8 +1,8 @@ use crate::try_create_cln_backend; use anyhow::bail; +use bitcoin_hashes::Hash; use lightning_invoice::Bolt11Invoice; use rand::{distributions::Alphanumeric, Rng}; -use secp256k1::hashes::Hash; use sha2::{Digest, Sha256}; use std::str::FromStr; use std::time::Duration; diff --git a/service/tests/ln/lnd.rs b/service/tests/ln/lnd.rs index f7e73c3..0096f99 100644 --- a/service/tests/ln/lnd.rs +++ b/service/tests/ln/lnd.rs @@ -1,8 +1,8 @@ use crate::try_create_lnd_backend; use anyhow::bail; +use bitcoin_hashes::Hash; use lightning_invoice::Bolt11Invoice; use rand::{distributions::Alphanumeric, Rng}; -use secp256k1::hashes::Hash; use sha2::Digest; use std::str::FromStr; use std::time::Duration; diff --git a/switchgear/README.md b/switchgear/README.md index 68f4fde..4f5ef88 100644 --- a/switchgear/README.md +++ b/switchgear/README.md @@ -418,6 +418,13 @@ lnurl-service: cert-path: "/etc/ssl/certs/lnurl-cert.pem" # Path to TLS private key file key-path: "/etc/ssl/certs/lnurl-key.pem" + + # QR module width x height + bech32-qr-scale: 8 + # QR light gray level + bech32-qr-light: 255 + # QR dark gray level + bech32-qr-dark: 0 ``` ### Consistent Backend-Selection diff --git a/testing/Cargo.toml b/testing/Cargo.toml index 15b9e87..678607a 100644 --- a/testing/Cargo.toml +++ b/testing/Cargo.toml @@ -12,12 +12,12 @@ publish = true [dependencies] anyhow = "1.0" -dotenvy = "0.15.7" -fs4 = { version ="0.13.1" } +dotenvy = "0.15" +flate2 = "1.1" +fs4 = { version ="0.13" } hex = "0.4" -indexmap = "2.10.0" -secp256k1 = { version = "0.29.1", features = ["recovery", "serde"] } -tempfile = "3.23.0" -ureq = "3.1.2" -tar = "0.4.44" -flate2 = "1.1.4" +indexmap = "2.10" +secp256k1 = { version = "0.31", features = ["recovery", "serde"] } +tar = "0.4" +tempfile = "3.23" +ureq = "3.1"