diff --git a/Cargo.lock b/Cargo.lock index cb84e5cb1d..d6d88eb263 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,19 +2,6 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "abao" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2daa0989489b05a455a9707adbbbc17443edf7bbc902ce499cd3b84148d68a40" -dependencies = [ - "arrayref", - "arrayvec", - "blake3", - "futures", - "tokio", -] - [[package]] name = "addr2line" version = "0.22.0" @@ -498,12 +485,6 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - [[package]] name = "base16ct" version = "0.2.0" @@ -546,15 +527,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bitfield" version = "0.14.0" @@ -591,29 +563,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "blake3" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", + "digest", ] [[package]] @@ -922,7 +872,7 @@ checksum = "8543454e3c3f5126effff9cd44d562af4e31fb8ce1cc0d3dcd8f084515dbc1aa" dependencies = [ "cipher", "dbl", - "digest 0.10.7", + "digest", ] [[package]] @@ -984,12 +934,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "convert_case" version = "0.5.0" @@ -1120,18 +1064,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.5.5" @@ -1164,7 +1096,7 @@ dependencies = [ "aead", "chacha20", "crypto_secretbox", - "curve25519-dalek 4.1.3", + "curve25519-dalek", "salsa20", "serdect", "subtle", @@ -1196,19 +1128,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "curve25519-dalek" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" -dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", -] - [[package]] name = "curve25519-dalek" version = "4.1.3" @@ -1218,7 +1137,7 @@ dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", - "digest 0.10.7", + "digest", "fiat-crypto", "rustc_version", "subtle", @@ -1334,23 +1253,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "default-net" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4898b43aed56499fad6b294d15b3e76a51df68079bf492e5daae38ca084e003" -dependencies = [ - "dlopen2 0.4.1", - "libc", - "memalloc", - "netlink-packet-core 0.5.0", - "netlink-packet-route 0.15.0", - "netlink-sys", - "once_cell", - "system-configuration 0.5.1", - "windows 0.32.0", -] - [[package]] name = "deltachat" version = "1.142.10" @@ -1382,7 +1284,6 @@ dependencies = [ "hickory-resolver", "humansize", "image", - "iroh", "iroh-gossip", "iroh-net", "kamadak-exif", @@ -1529,18 +1430,6 @@ dependencies = [ "yerpc", ] -[[package]] -name = "der" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" -dependencies = [ - "const-oid", - "der_derive 0.6.1", - "pem-rfc7468 0.6.0", - "zeroize", -] - [[package]] name = "der" version = "0.7.8" @@ -1548,8 +1437,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" dependencies = [ "const-oid", - "der_derive 0.7.2", - "pem-rfc7468 0.7.0", + "der_derive", + "pem-rfc7468", "zeroize", ] @@ -1567,18 +1456,6 @@ dependencies = [ "rusticata-macros", ] -[[package]] -name = "der_derive" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef71ddb5b3a1f53dee24817c8f70dfa1cb29e804c18d88c228d4bc9c86ee3b9" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "der_derive" version = "0.7.2" @@ -1631,19 +1508,6 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case 0.4.0", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - [[package]] name = "derive_more" version = "1.0.0-beta.7" @@ -1680,22 +1544,13 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "const-oid", "crypto-common", "subtle", @@ -1710,16 +1565,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -1732,17 +1577,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.4" @@ -1754,18 +1588,6 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "dlopen2" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b121caccfc363e4d9a4589528f3bef7c71b83c6ed01c8dc68cbeeb7fd29ec698" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - [[package]] name = "dlopen2" version = "0.5.0" @@ -1777,17 +1599,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dlopen2_derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a09ac8bb8c16a282264c379dffba707b9c998afc7506009137f3c6136888078" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "document-features" version = "0.2.8" @@ -1803,13 +1614,13 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48bc224a9084ad760195584ce5abb3c2c34a225fa312a128ad245a6b412b7689" dependencies = [ - "digest 0.10.7", + "digest", "num-bigint-dig", "num-traits", - "pkcs8 0.10.2", - "rfc6979 0.4.0", - "sha2 0.10.8", - "signature 2.2.0", + "pkcs8", + "rfc6979", + "sha2", + "signature", "zeroize", ] @@ -1850,40 +1661,18 @@ dependencies = [ "subtle", ] -[[package]] -name = "ecdsa" -version = "0.14.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" -dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", -] - [[package]] name = "ecdsa" version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ - "der 0.7.8", - "digest 0.10.7", - "elliptic-curve 0.13.8", - "rfc6979 0.4.0", - "signature 2.2.0", - "spki 0.7.3", -] - -[[package]] -name = "ed25519" -version = "1.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" -dependencies = [ - "serde", - "signature 1.6.4", + "der", + "digest", + "elliptic-curve", + "rfc6979", + "signature", + "spki", ] [[package]] @@ -1892,24 +1681,9 @@ version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ - "pkcs8 0.10.2", - "serde", - "signature 2.2.0", -] - -[[package]] -name = "ed25519-dalek" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" -dependencies = [ - "curve25519-dalek 3.2.0", - "ed25519 1.5.3", - "rand 0.7.3", + "pkcs8", "serde", - "serde_bytes", - "sha2 0.9.9", - "zeroize", + "signature", ] [[package]] @@ -1918,69 +1692,38 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ - "curve25519-dalek 4.1.3", - "ed25519 2.2.3", + "curve25519-dalek", + "ed25519", "rand_core 0.6.4", "serde", - "sha2 0.10.8", + "sha2", "subtle", "zeroize", ] -[[package]] -name = "educe" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" -dependencies = [ - "enum-ordinalize", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "either" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" -[[package]] -name = "elliptic-curve" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.7", - "ff 0.12.1", - "generic-array", - "group 0.12.1", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.5", - "digest 0.10.7", - "ff 0.13.0", + "base16ct", + "crypto-bigint", + "digest", + "ff", "generic-array", - "group 0.13.0", + "group", "hkdf", - "pem-rfc7468 0.7.0", - "pkcs8 0.10.2", + "pem-rfc7468", + "pkcs8", "rand_core 0.6.4", - "sec1 0.7.3", + "sec1", "subtle", "zeroize", ] @@ -2116,19 +1859,6 @@ dependencies = [ "syn 2.0.72", ] -[[package]] -name = "enum-ordinalize" -version = "3.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" -dependencies = [ - "num-bigint", - "num-traits", - "proc-macro2", - "quote", - "syn 2.0.72", -] - [[package]] name = "enumflags2" version = "0.7.9" @@ -2326,16 +2056,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "ff" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "ff" version = "0.13.0" @@ -2662,24 +2382,13 @@ dependencies = [ "spinning_top", ] -[[package]] -name = "group" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" -dependencies = [ - "ff 0.12.1", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "group" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "ff 0.13.0", + "ff", "rand_core 0.6.4", "subtle", ] @@ -2828,7 +2537,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.7", + "digest", ] [[package]] @@ -3228,50 +2937,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "iroh" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85075391dcb8491a4939266334b28601052d418b37d20b33c58ffb5776adc912" -dependencies = [ - "abao", - "anyhow", - "base64 0.21.7", - "blake3", - "bytes", - "default-net", - "der 0.6.1", - "derive_more 0.99.17", - "dirs-next", - "ed25519-dalek 1.0.1", - "futures", - "hex", - "num_cpus", - "portable-atomic", - "postcard", - "quic-rpc", - "quinn 0.10.2", - "rand 0.7.3", - "rcgen 0.10.0", - "ring 0.16.20", - "rustls 0.21.11", - "rustls-webpki 0.101.7", - "serde", - "serde-error", - "ssh-key 0.5.1", - "tempfile", - "thiserror", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", - "tracing-futures", - "tracing-subscriber", - "walkdir", - "x509-parser 0.14.0", - "zeroize", -] - [[package]] name = "iroh-base" version = "0.23.0" @@ -3282,8 +2947,8 @@ dependencies = [ "anyhow", "crypto_box", "data-encoding", - "derive_more 1.0.0-beta.7", - "ed25519-dalek 2.1.1", + "derive_more", + "ed25519-dalek", "getrandom 0.2.12", "hex", "iroh-blake3", @@ -3293,7 +2958,7 @@ dependencies = [ "rand_core 0.6.4", "serde", "serde-error", - "ssh-key 0.6.6", + "ssh-key", "thiserror", "ttl_cache", "url", @@ -3322,8 +2987,8 @@ dependencies = [ "anyhow", "async-channel 2.3.1", "bytes", - "derive_more 1.0.0-beta.7", - "ed25519-dalek 2.1.1", + "derive_more", + "ed25519-dalek", "futures-concurrency", "futures-lite 2.3.0", "futures-util", @@ -3372,8 +3037,8 @@ dependencies = [ "backoff", "base64 0.22.1", "bytes", - "der 0.7.8", - "derive_more 1.0.0-beta.7", + "der", + "derive_more", "duct", "futures-buffered", "futures-concurrency", @@ -3397,8 +3062,8 @@ dependencies = [ "iroh-quinn-udp", "libc", "netdev", - "netlink-packet-core 0.7.0", - "netlink-packet-route 0.17.1", + "netlink-packet-core", + "netlink-packet-route", "netlink-sys", "num_enum", "once_cell", @@ -3408,9 +3073,9 @@ dependencies = [ "postcard", "rand 0.8.5", "rand_core 0.6.4", - "rcgen 0.12.1", + "rcgen", "reqwest", - "ring 0.17.8", + "ring", "rtnetlink", "rustls 0.21.11", "rustls-webpki 0.101.7", @@ -3434,7 +3099,7 @@ dependencies = [ "webpki-roots 0.25.4", "windows 0.51.1", "wmi", - "x509-parser 0.15.1", + "x509-parser", "z32", ] @@ -3463,7 +3128,7 @@ checksum = "c6bf92478805e67f2320459285496e1137edf5171411001a0d4d85f9bbafb792" dependencies = [ "bytes", "rand 0.8.5", - "ring 0.17.8", + "ring", "rustc-hash", "rustls 0.21.11", "rustls-native-certs", @@ -3534,11 +3199,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", + "ecdsa", + "elliptic-curve", "once_cell", - "sha2 0.10.8", - "signature 2.2.0", + "sha2", + "signature", ] [[package]] @@ -3715,7 +3380,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest 0.10.7", + "digest", ] [[package]] @@ -3808,11 +3473,11 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7516ad2c46cc25da098ed7d6b9a0cbe9e1fbffbd04b1596148b95f2841179c83" dependencies = [ - "dlopen2 0.5.0", + "dlopen2", "libc", "memalloc", - "netlink-packet-core 0.7.0", - "netlink-packet-route 0.17.1", + "netlink-packet-core", + "netlink-packet-route", "netlink-sys", "once_cell", "system-configuration 0.6.0", @@ -3821,44 +3486,18 @@ dependencies = [ [[package]] name = "netlink-packet-core" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5cf0b54effda4b91615c40ff0fd12d0d4c9a6e0f5116874f03941792ff535a" +checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" dependencies = [ "anyhow", "byteorder", - "libc", "netlink-packet-utils", ] [[package]] -name = "netlink-packet-core" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4" -dependencies = [ - "anyhow", - "byteorder", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-route" -version = "0.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea993e32c77d87f01236c38f572ecb6c311d592e56a06262a007fd2a6e31253c" -dependencies = [ - "anyhow", - "bitflags 1.3.2", - "byteorder", - "libc", - "netlink-packet-core 0.5.0", - "netlink-packet-utils", -] - -[[package]] -name = "netlink-packet-route" -version = "0.17.1" +name = "netlink-packet-route" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66" dependencies = [ @@ -3866,7 +3505,7 @@ dependencies = [ "bitflags 1.3.2", "byteorder", "libc", - "netlink-packet-core 0.7.0", + "netlink-packet-core", "netlink-packet-utils", ] @@ -3891,7 +3530,7 @@ dependencies = [ "bytes", "futures", "log", - "netlink-packet-core 0.7.0", + "netlink-packet-core", "netlink-sys", "thiserror", "tokio", @@ -4231,38 +3870,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" -[[package]] -name = "p256" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" -dependencies = [ - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.8", -] - [[package]] name = "p256" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", + "ecdsa", + "elliptic-curve", "primeorder", - "sha2 0.10.8", -] - -[[package]] -name = "p384" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" -dependencies = [ - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -4271,10 +3888,10 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", + "ecdsa", + "elliptic-curve", "primeorder", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -4283,12 +3900,12 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" dependencies = [ - "base16ct 0.2.0", - "ecdsa 0.16.9", - "elliptic-curve 0.13.8", + "base16ct", + "ecdsa", + "elliptic-curve", "primeorder", "rand_core 0.6.4", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -4337,15 +3954,6 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" -[[package]] -name = "pem" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] - [[package]] name = "pem" version = "3.0.4" @@ -4356,15 +3964,6 @@ dependencies = [ "serde", ] -[[package]] -name = "pem-rfc7468" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" -dependencies = [ - "base64ct", -] - [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -4422,7 +4021,7 @@ checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", - "sha2 0.10.8", + "sha2", ] [[package]] @@ -4448,15 +4047,15 @@ dependencies = [ "cipher", "const-oid", "crc24", - "curve25519-dalek 4.1.3", + "curve25519-dalek", "derive_builder", "des", - "digest 0.10.7", + "digest", "dsa", "eax", - "ecdsa 0.16.9", - "ed25519-dalek 2.1.1", - "elliptic-curve 0.13.8", + "ecdsa", + "ed25519-dalek", + "elliptic-curve", "flate2", "generic-array", "hex", @@ -4471,17 +4070,17 @@ dependencies = [ "num-traits", "num_enum", "ocb3", - "p256 0.13.2", - "p384 0.13.0", + "p256", + "p384", "p521", "rand 0.8.5", "ripemd", - "rsa 0.9.6", + "rsa", "sha1", "sha1-checked", - "sha2 0.10.8", + "sha2", "sha3", - "signature 2.2.0", + "signature", "smallvec", "thiserror", "twofish", @@ -4529,7 +4128,7 @@ checksum = "89f9e12544b00f5561253bbd3cb72a85ff3bc398483dc1bf82bdf095c774136b" dependencies = [ "bytes", "document-features", - "ed25519-dalek 2.1.1", + "ed25519-dalek", "flume", "futures", "js-sys", @@ -4545,37 +4144,15 @@ dependencies = [ "z32", ] -[[package]] -name = "pkcs1" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" -dependencies = [ - "der 0.6.1", - "pkcs8 0.9.0", - "spki 0.6.0", - "zeroize", -] - [[package]] name = "pkcs1" version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" dependencies = [ - "der 0.7.8", - "pkcs8 0.10.2", - "spki 0.7.3", -] - -[[package]] -name = "pkcs8" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" -dependencies = [ - "der 0.6.1", - "spki 0.6.0", + "der", + "pkcs8", + "spki", ] [[package]] @@ -4584,8 +4161,8 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ - "der 0.7.8", - "spki 0.7.3", + "der", + "spki", ] [[package]] @@ -4792,7 +4369,7 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "elliptic-curve 0.13.8", + "elliptic-curve", ] [[package]] @@ -4897,25 +4474,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "quic-rpc" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1428fcf30c17a159ff10c1f3c69fca92fd7cfa11e9fef7d573f3c6f0da3b5920" -dependencies = [ - "bincode", - "educe", - "flume", - "futures", - "pin-project", - "quinn 0.10.2", - "serde", - "tokio", - "tokio-serde", - "tokio-util", - "tracing", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -4931,23 +4489,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "quinn" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" -dependencies = [ - "bytes", - "pin-project-lite", - "quinn-proto 0.10.6", - "quinn-udp 0.4.1", - "rustc-hash", - "rustls 0.21.11", - "thiserror", - "tokio", - "tracing", -] - [[package]] name = "quinn" version = "0.11.2" @@ -4956,8 +4497,8 @@ checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" dependencies = [ "bytes", "pin-project-lite", - "quinn-proto 0.11.3", - "quinn-udp 0.5.2", + "quinn-proto", + "quinn-udp", "rustc-hash", "rustls 0.23.10", "thiserror", @@ -4965,24 +4506,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "quinn-proto" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a" -dependencies = [ - "bytes", - "rand 0.8.5", - "ring 0.16.20", - "rustc-hash", - "rustls 0.21.11", - "rustls-native-certs", - "slab", - "thiserror", - "tinyvec", - "tracing", -] - [[package]] name = "quinn-proto" version = "0.11.3" @@ -4991,7 +4514,7 @@ checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" dependencies = [ "bytes", "rand 0.8.5", - "ring 0.17.8", + "ring", "rustc-hash", "rustls 0.23.10", "slab", @@ -5000,19 +4523,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "quinn-udp" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" -dependencies = [ - "bytes", - "libc", - "socket2", - "tracing", - "windows-sys 0.48.0", -] - [[package]] name = "quinn-udp" version = "0.5.2" @@ -5180,26 +4690,14 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rcgen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" -dependencies = [ - "pem 1.1.1", - "ring 0.16.20", - "time 0.3.36", - "yasna", -] - [[package]] name = "rcgen" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48406db8ac1f3cbc7dcdb56ec355343817958a356ff430259bb07baf7607e1e1" dependencies = [ - "pem 3.0.4", - "ring 0.17.8", + "pem", + "ring", "time 0.3.36", "yasna", ] @@ -5310,7 +4808,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "quinn 0.11.2", + "quinn", "rustls 0.23.10", "rustls-pemfile 2.1.2", "rustls-pki-types", @@ -5341,17 +4839,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "rfc6979" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" -dependencies = [ - "crypto-bigint 0.4.9", - "hmac", - "zeroize", -] - [[package]] name = "rfc6979" version = "0.4.0" @@ -5362,21 +4849,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.8" @@ -5388,7 +4860,7 @@ dependencies = [ "getrandom 0.2.12", "libc", "spin 0.9.8", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -5398,28 +4870,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" dependencies = [ - "digest 0.10.7", -] - -[[package]] -name = "rsa" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c" -dependencies = [ - "byteorder", - "digest 0.10.7", - "num-bigint-dig", - "num-integer", - "num-iter", - "num-traits", - "pkcs1 0.4.1", - "pkcs8 0.9.0", - "rand_core 0.6.4", - "signature 1.6.4", - "smallvec", - "subtle", - "zeroize", + "digest", ] [[package]] @@ -5429,16 +4880,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" dependencies = [ "const-oid", - "digest 0.10.7", + "digest", "num-bigint-dig", "num-integer", "num-traits", - "pkcs1 0.7.5", - "pkcs8 0.10.2", + "pkcs1", + "pkcs8", "rand_core 0.6.4", - "sha2 0.10.8", - "signature 2.2.0", - "spki 0.7.3", + "sha2", + "signature", + "spki", "subtle", "zeroize", ] @@ -5451,8 +4902,8 @@ checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0" dependencies = [ "futures", "log", - "netlink-packet-core 0.7.0", - "netlink-packet-route 0.17.1", + "netlink-packet-core", + "netlink-packet-route", "netlink-packet-utils", "netlink-proto", "netlink-sys", @@ -5531,7 +4982,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" dependencies = [ "log", - "ring 0.17.8", + "ring", "rustls-webpki 0.101.7", "sct", ] @@ -5544,7 +4995,7 @@ checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" dependencies = [ "log", "once_cell", - "ring 0.17.8", + "ring", "rustls-pki-types", "rustls-webpki 0.102.4", "subtle", @@ -5594,8 +5045,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -5604,9 +5055,9 @@ version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ - "ring 0.17.8", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -5716,22 +5167,8 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", -] - -[[package]] -name = "sec1" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" -dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array", - "pkcs8 0.9.0", - "subtle", - "zeroize", + "ring", + "untrusted", ] [[package]] @@ -5740,10 +5177,10 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ - "base16ct 0.2.0", - "der 0.7.8", + "base16ct", + "der", "generic-array", - "pkcs8 0.10.2", + "pkcs8", "subtle", "zeroize", ] @@ -5804,15 +5241,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_bytes" -version = "0.11.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" -dependencies = [ - "serde", -] - [[package]] name = "serde_derive" version = "1.0.205" @@ -5884,7 +5312,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a84f14a19e9a014bb9f4512488d9829a68e04ecabffb0f9904cd1ace94598177" dependencies = [ - "base16ct 0.2.0", + "base16ct", "serde", ] @@ -5896,7 +5324,7 @@ checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -5907,7 +5335,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -5916,23 +5344,10 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" dependencies = [ - "digest 0.10.7", + "digest", "sha1", ] -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha2" version = "0.10.8" @@ -5941,7 +5356,7 @@ checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.7", + "digest", ] [[package]] @@ -5950,7 +5365,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" dependencies = [ - "digest 0.10.7", + "digest", "keccak", ] @@ -5982,23 +5397,13 @@ dependencies = [ "libc", ] -[[package]] -name = "signature" -version = "1.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" -dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", -] - [[package]] name = "signature" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest 0.10.7", + "digest", "rand_core 0.6.4", ] @@ -6072,16 +5477,6 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spki" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" -dependencies = [ - "base64ct", - "der 0.6.1", -] - [[package]] name = "spki" version = "0.7.3" @@ -6089,7 +5484,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", - "der 0.7.8", + "der", ] [[package]] @@ -6099,18 +5494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" dependencies = [ "cipher", - "ssh-encoding 0.2.0", -] - -[[package]] -name = "ssh-encoding" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19cfdc32e0199062113edf41f344fbf784b8205a94600233c84eb838f45191e1" -dependencies = [ - "base64ct", - "pem-rfc7468 0.6.0", - "sha2 0.10.8", + "ssh-encoding", ] [[package]] @@ -6120,26 +5504,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" dependencies = [ "base64ct", - "pem-rfc7468 0.7.0", - "sha2 0.10.8", -] - -[[package]] -name = "ssh-key" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "288d8f5562af5a3be4bda308dd374b2c807b940ac370b5efa1c99311da91d9a1" -dependencies = [ - "ed25519-dalek 1.0.1", - "p256 0.11.1", - "p384 0.11.2", - "rand_core 0.6.4", - "rsa 0.7.2", - "sec1 0.3.0", - "sha2 0.10.8", - "signature 1.6.4", - "ssh-encoding 0.1.0", - "zeroize", + "pem-rfc7468", + "sha2", ] [[package]] @@ -6148,17 +5514,17 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca9b366a80cf18bb6406f4cf4d10aebfb46140a8c0c33f666a144c5c76ecbafc" dependencies = [ - "ed25519-dalek 2.1.1", - "p256 0.13.2", - "p384 0.13.0", + "ed25519-dalek", + "p256", + "p384", "p521", "rand_core 0.6.4", - "rsa 0.9.6", - "sec1 0.7.3", - "sha2 0.10.8", - "signature 2.2.0", + "rsa", + "sec1", + "sha2", + "signature", "ssh-cipher", - "ssh-encoding 0.2.0", + "ssh-encoding", "subtle", "zeroize", ] @@ -6603,21 +5969,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-serde" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" -dependencies = [ - "bincode", - "bytes", - "educe", - "futures-core", - "futures-sink", - "pin-project", - "serde", -] - [[package]] name = "tokio-stream" version = "0.1.15" @@ -6793,16 +6144,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -6981,12 +6322,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -7266,19 +6601,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec" -dependencies = [ - "windows_aarch64_msvc 0.32.0", - "windows_i686_gnu 0.32.0", - "windows_i686_msvc 0.32.0", - "windows_x86_64_gnu 0.32.0", - "windows_x86_64_msvc 0.32.0", -] - [[package]] name = "windows" version = "0.51.1" @@ -7402,12 +6724,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" -[[package]] -name = "windows_aarch64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" - [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -7420,12 +6736,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" -[[package]] -name = "windows_i686_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" - [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -7444,12 +6754,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" -[[package]] -name = "windows_i686_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" - [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -7462,12 +6766,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" -[[package]] -name = "windows_x86_64_gnu" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" - [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -7492,12 +6790,6 @@ version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" -[[package]] -name = "windows_x86_64_msvc" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" - [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -7577,30 +6869,12 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ - "curve25519-dalek 4.1.3", + "curve25519-dalek", "rand_core 0.6.4", "serde", "zeroize", ] -[[package]] -name = "x509-parser" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" -dependencies = [ - "asn1-rs", - "base64 0.13.1", - "data-encoding", - "der-parser", - "lazy_static", - "nom", - "oid-registry", - "rusticata-macros", - "thiserror", - "time 0.3.36", -] - [[package]] name = "x509-parser" version = "0.15.1" @@ -7688,7 +6962,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35ba6b4417cfeb26cd806f3aabc22e7c4097632e07b5b61a4c818bccb2df4f21" dependencies = [ - "convert_case 0.5.0", + "convert_case", "darling 0.20.9", "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2cf6253dfd..d04851b1e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,7 +59,6 @@ hex = "0.4.0" hickory-resolver = "0.24" humansize = "2" image = { version = "0.25.1", default-features=false, features = ["gif", "jpeg", "ico", "png", "pnm", "webp", "bmp"] } -iroh_old = { version = "0.4.2", default-features = false, package = "iroh"} iroh-net = { version = "0.23.0", default-features = false } iroh-gossip = { version = "0.23.0", default-features = false, features = ["net"] } kamadak-exif = "0.5.3" diff --git a/deltachat-ffi/src/lot.rs b/deltachat-ffi/src/lot.rs index 3e3c37c41e..9f891c7c0b 100644 --- a/deltachat-ffi/src/lot.rs +++ b/deltachat-ffi/src/lot.rs @@ -49,7 +49,6 @@ impl Lot { Qr::FprMismatch { .. } => None, Qr::FprWithoutAddr { fingerprint, .. } => Some(fingerprint), Qr::Account { domain } => Some(domain), - Qr::Backup { .. } => None, Qr::Backup2 { .. } => None, Qr::WebrtcInstance { domain, .. } => Some(domain), Qr::Socks5Proxy { host, .. } => Some(host), @@ -106,7 +105,6 @@ impl Lot { Qr::FprMismatch { .. } => LotState::QrFprMismatch, Qr::FprWithoutAddr { .. } => LotState::QrFprWithoutAddr, Qr::Account { .. } => LotState::QrAccount, - Qr::Backup { .. } => LotState::QrBackup, Qr::Backup2 { .. } => LotState::QrBackup2, Qr::WebrtcInstance { .. } => LotState::QrWebrtcInstance, Qr::Socks5Proxy { .. } => LotState::QrSocks5Proxy, @@ -133,7 +131,6 @@ impl Lot { Qr::FprMismatch { contact_id } => contact_id.unwrap_or_default().to_u32(), Qr::FprWithoutAddr { .. } => Default::default(), Qr::Account { .. } => Default::default(), - Qr::Backup { .. } => Default::default(), Qr::Backup2 { .. } => Default::default(), Qr::WebrtcInstance { .. } => Default::default(), Qr::Socks5Proxy { .. } => Default::default(), diff --git a/deltachat-jsonrpc/src/api/types/qr.rs b/deltachat-jsonrpc/src/api/types/qr.rs index cfcdbfedfc..863debcf38 100644 --- a/deltachat-jsonrpc/src/api/types/qr.rs +++ b/deltachat-jsonrpc/src/api/types/qr.rs @@ -32,9 +32,6 @@ pub enum QrObject { Account { domain: String, }, - Backup { - ticket: String, - }, Backup2 { auth_token: String, @@ -140,9 +137,6 @@ impl From for QrObject { } Qr::FprWithoutAddr { fingerprint } => QrObject::FprWithoutAddr { fingerprint }, Qr::Account { domain } => QrObject::Account { domain }, - Qr::Backup { ticket } => QrObject::Backup { - ticket: ticket.to_string(), - }, Qr::Backup2 { ref node_addr, auth_token, diff --git a/deny.toml b/deny.toml index 5d8849fe10..b649ac2fc3 100644 --- a/deny.toml +++ b/deny.toml @@ -1,7 +1,6 @@ [advisories] ignore = [ "RUSTSEC-2020-0071", - "RUSTSEC-2022-0093", # Timing attack on RSA. # Delta Chat does not use RSA for new keys @@ -15,10 +14,6 @@ ignore = [ # Unmaintained encoding "RUSTSEC-2021-0153", - - # Problem in curve25519-dalek 3.2.0 used by iroh 0.4. - # curve25519-dalek 4.1.3 has the problem fixed. - "RUSTSEC-2024-0344", ] [bans] @@ -31,24 +26,13 @@ skip = [ { name = "asn1-rs-impl", version = "0.1.0" }, { name = "asn1-rs", version = "0.5.2" }, { name = "async-channel", version = "1.9.0" }, - { name = "base16ct", version = "0.1.1" }, { name = "base64", version = "<0.21" }, { name = "base64", version = "0.21.7" }, { name = "bitflags", version = "1.3.2" }, - { name = "block-buffer", version = "<0.10" }, - { name = "convert_case", version = "0.4.0" }, - { name = "curve25519-dalek", version = "3.2.0" }, { name = "darling_core", version = "<0.14" }, { name = "darling_macro", version = "<0.14" }, { name = "darling", version = "<0.14" }, - { name = "der_derive", version = "0.6.1" }, - { name = "derive_more", version = "0.99.17" }, { name = "der-parser", version = "8.2.0" }, - { name = "der", version = "0.6.1" }, - { name = "digest", version = "<0.10" }, - { name = "dlopen2", version = "0.4.1" }, - { name = "ed25519-dalek", version = "1.0.1" }, - { name = "ed25519", version = "1.5.3" }, { name = "event-listener", version = "2.5.3" }, { name = "event-listener", version = "4.0.3" }, { name = "fastrand", version = "1.9.0" }, @@ -59,32 +43,19 @@ skip = [ { name = "http", version = "0.2.12" }, { name = "hyper", version = "0.14.28" }, { name = "idna", version = "0.4.0" }, - { name = "netlink-packet-core", version = "0.5.0" }, - { name = "netlink-packet-route", version = "0.15.0" }, { name = "nix", version = "0.26.4" }, { name = "oid-registry", version = "0.6.1" }, - { name = "pem-rfc7468", version = "0.6.0" }, - { name = "pem", version = "1.1.1" }, - { name = "pkcs8", version = "0.9.0" }, { name = "quick-error", version = "<2.0" }, { name = "rand_chacha", version = "<0.3" }, { name = "rand_core", version = "<0.6" }, { name = "rand", version = "<0.8" }, - { name = "rcgen", version = "<0.12.1" }, { name = "redox_syscall", version = "0.3.5" }, { name = "regex-automata", version = "0.1.10" }, { name = "regex-syntax", version = "0.6.29" }, - { name = "ring", version = "0.16.20" }, { name = "rustls-pemfile", version = "1.0.4" }, { name = "rustls", version = "0.21.11" }, { name = "rustls-webpki", version = "0.101.7" }, - { name = "sec1", version = "0.3.0" }, - { name = "sha2", version = "<0.10" }, - { name = "signature", version = "1.6.4" }, { name = "spin", version = "<0.9.6" }, - { name = "spki", version = "0.6.0" }, - { name = "ssh-encoding", version = "0.1.0" }, - { name = "ssh-key", version = "0.5.1" }, { name = "strsim", version = "0.10.0" }, { name = "sync_wrapper", version = "0.1.2" }, { name = "synstructure", version = "0.12.6" }, @@ -94,7 +65,6 @@ skip = [ { name = "time", version = "<0.3" }, { name = "tokio-rustls", version = "0.24.1" }, { name = "toml_edit", version = "0.21.1" }, - { name = "untrusted", version = "0.7.1" }, { name = "wasi", version = "<0.11" }, { name = "webpki-roots", version ="0.25.4" }, { name = "windows_aarch64_gnullvm", version = "<0.52" }, @@ -104,7 +74,6 @@ skip = [ { name = "windows_i686_msvc", version = "<0.52" }, { name = "windows-sys", version = "<0.52" }, { name = "windows-targets", version = "<0.52" }, - { name = "windows", version = "0.32.0" }, { name = "windows", version = "<0.54.0" }, { name = "windows_x86_64_gnullvm", version = "<0.52" }, { name = "windows_x86_64_gnu", version = "<0.52" }, diff --git a/src/imex/transfer.rs b/src/imex/transfer.rs index aa37507ba2..c8820c8a77 100644 --- a/src/imex/transfer.rs +++ b/src/imex/transfer.rs @@ -31,36 +31,24 @@ use std::pin::Pin; use std::sync::Arc; use std::task::Poll; -use anyhow::{anyhow, bail, ensure, format_err, Context as _, Result}; -use futures_lite::StreamExt; +use anyhow::{bail, Context as _, Result}; use iroh_net::relay::RelayMode; use iroh_net::Endpoint; -use iroh_old; -use iroh_old::blobs::Collection; -use iroh_old::get::DataStream; -use iroh_old::progress::ProgressEmitter; -use iroh_old::provider::Ticket; -use tokio::fs::{self, File}; -use tokio::io::{self, AsyncWriteExt, BufWriter}; -use tokio::sync::broadcast::error::RecvError; -use tokio::sync::{broadcast, Mutex}; -use tokio::task::{JoinHandle, JoinSet}; -use tokio_stream::wrappers::ReadDirStream; +use tokio::fs; +use tokio::task::JoinHandle; use tokio_util::sync::CancellationToken; -use crate::chat::{add_device_msg, delete_and_reset_all_device_msgs}; +use crate::chat::add_device_msg; use crate::context::Context; use crate::imex::BlobDirContents; use crate::message::{Message, Viewtype}; -use crate::qr::{self, Qr}; +use crate::qr::Qr; use crate::stock_str::backup_transfer_msg_body; use crate::tools::{create_id, time, TempPathGuard}; use crate::EventType; use super::{export_backup_stream, export_database, import_backup_stream, DBFILE_BACKUP_NAME}; -const MAX_CONCURRENT_DIALS: u8 = 16; - /// ALPN protocol identifier for the backup transfer protocol. const BACKUP_ALPN: &[u8] = b"/deltachat/backup"; @@ -279,33 +267,6 @@ impl Future for BackupProvider { } } -/// Retrieves backup from a legacy backup provider using iroh 0.4. -pub async fn get_legacy_backup(context: &Context, qr: Qr) -> Result<()> { - ensure!( - matches!(qr, Qr::Backup { .. }), - "QR code for backup must be of type DCBACKUP" - ); - ensure!( - !context.is_configured().await?, - "Cannot import backups to accounts in use." - ); - // Acquire global "ongoing" mutex. - let cancel_token = context.alloc_ongoing().await?; - let _guard = context.scheduler.pause(context.clone()).await; - info!( - context, - "Running get_backup for {}", - qr::format_backup(&qr)? - ); - let res = tokio::select! { - biased; - res = get_backup_inner(context, qr) => res, - _ = cancel_token.recv() => Err(format_err!("cancelled")), - }; - context.free_ongoing().await; - res -} - pub async fn get_backup2( context: &Context, node_addr: iroh_net::NodeAddr, @@ -349,202 +310,20 @@ pub async fn get_backup2( /// /// This is a long running operation which will return only when completed. /// -/// Using [`Qr`] as argument is a bit odd as it only accepts specific variants of it. It -/// does avoid having [`iroh_old::provider::Ticket`] in the primary API however, without +/// Using [`Qr`] as argument is a bit odd as it only accepts specific variant of it. It +/// does avoid having [`iroh_net::NodeAddr`] in the primary API however, without /// having to revert to untyped bytes. pub async fn get_backup(context: &Context, qr: Qr) -> Result<()> { match qr { - Qr::Backup { .. } => get_legacy_backup(context, qr).await?, Qr::Backup2 { node_addr, auth_token, } => get_backup2(context, node_addr, auth_token).await?, - _ => bail!("QR code for backup must be of type DCBACKUP or DCBACKUP2"), + _ => bail!("QR code for backup must be of type DCBACKUP2"), } Ok(()) } -async fn get_backup_inner(context: &Context, qr: Qr) -> Result<()> { - let ticket = match qr { - Qr::Backup { ticket } => ticket, - _ => bail!("QR code for backup must be of type DCBACKUP"), - }; - - match transfer_from_provider(context, &ticket).await { - Ok(()) => { - context.sql.run_migrations(context).await?; - delete_and_reset_all_device_msgs(context).await?; - context.emit_event(ReceiveProgress::Completed.into()); - Ok(()) - } - Err(err) => { - // Clean up any blobs we already wrote. - let readdir = fs::read_dir(context.get_blobdir()).await?; - let mut readdir = ReadDirStream::new(readdir); - while let Some(dirent) = readdir.next().await { - if let Ok(dirent) = dirent { - fs::remove_file(dirent.path()).await.ok(); - } - } - context.emit_event(ReceiveProgress::Failed.into()); - Err(err) - } - } -} - -async fn transfer_from_provider(context: &Context, ticket: &Ticket) -> Result<()> { - let progress = ProgressEmitter::new(0, ReceiveProgress::max_blob_progress()); - spawn_progress_proxy(context.clone(), progress.subscribe()); - let on_connected = || { - context.emit_event(ReceiveProgress::Connected.into()); - async { Ok(()) } - }; - let on_collection = |collection: &Collection| { - context.emit_event(ReceiveProgress::CollectionReceived.into()); - progress.set_total(collection.total_blobs_size()); - async { Ok(()) } - }; - let jobs = Mutex::new(JoinSet::default()); - let on_blob = - |hash, reader, name| on_blob(context, &progress, &jobs, ticket, hash, reader, name); - - // Perform the transfer. - let keylog = false; // Do not enable rustls SSLKEYLOGFILE env var functionality - let stats = iroh_old::get::run_ticket( - ticket, - keylog, - MAX_CONCURRENT_DIALS, - on_connected, - on_collection, - on_blob, - ) - .await?; - - let mut jobs = jobs.lock().await; - while let Some(job) = jobs.join_next().await { - job.context("job failed")?; - } - drop(progress); - info!( - context, - "Backup transfer finished, transfer rate was {} Mbps.", - stats.mbits() - ); - Ok(()) -} - -/// Get callback when a blob is received from the provider. -/// -/// This writes the blobs to the blobdir. If the blob is the database it will import it to -/// the database of the current [`Context`]. -async fn on_blob( - context: &Context, - progress: &ProgressEmitter, - jobs: &Mutex>, - ticket: &Ticket, - _hash: iroh_old::Hash, - mut reader: DataStream, - name: String, -) -> Result { - ensure!(!name.is_empty(), "Received a nameless blob"); - let path = if name.starts_with("db/") { - let context_dir = context - .get_blobdir() - .parent() - .ok_or_else(|| anyhow!("Context dir not found"))?; - let dbfile = context_dir.join(DBFILE_BACKUP_NAME); - if fs::metadata(&dbfile).await.is_ok() { - fs::remove_file(&dbfile).await?; - warn!(context, "Previous database export deleted"); - } - dbfile - } else { - ensure!(name.starts_with("blob/"), "malformatted blob name"); - let blobname = name.rsplit('/').next().context("malformatted blob name")?; - context.get_blobdir().join(blobname) - }; - - let mut wrapped_reader = progress.wrap_async_read(&mut reader); - let file = File::create(&path).await?; - let mut file = BufWriter::with_capacity(128 * 1024, file); - io::copy(&mut wrapped_reader, &mut file).await?; - file.flush().await?; - - if name.starts_with("db/") { - let context = context.clone(); - let token = ticket.token().to_string(); - jobs.lock().await.spawn(async move { - if let Err(err) = context.sql.import(&path, token).await { - error!(context, "cannot import database: {:#?}", err); - } - if let Err(err) = fs::remove_file(&path).await { - error!( - context, - "failed to delete database import file '{}': {:#?}", - path.display(), - err, - ); - } - }); - } - Ok(reader) -} - -/// Spawns a task proxying progress events. -/// -/// This spawns a tokio task which receives events from the [`ProgressEmitter`] and sends -/// them to the context. The task finishes when the emitter is dropped. -/// -/// This could be done directly in the emitter by making it less generic. -fn spawn_progress_proxy(context: Context, mut rx: broadcast::Receiver) { - tokio::spawn(async move { - loop { - match rx.recv().await { - Ok(step) => context.emit_event(ReceiveProgress::BlobProgress(step).into()), - Err(RecvError::Closed) => break, - Err(RecvError::Lagged(_)) => continue, - } - } - }); -} - -/// Create [`EventType::ImexProgress`] events using readable names. -/// -/// Plus you get warnings if you don't use all variants. -#[derive(Debug)] -enum ReceiveProgress { - Connected, - CollectionReceived, - /// A value between 0 and 85 interpreted as a percentage. - /// - /// Other values are already used by the other variants of this enum. - BlobProgress(u16), - Completed, - Failed, -} - -impl ReceiveProgress { - /// The maximum value for [`ReceiveProgress::BlobProgress`]. - /// - /// This only exists to keep this magic value local in this type. - fn max_blob_progress() -> u16 { - 85 - } -} - -impl From for EventType { - fn from(source: ReceiveProgress) -> Self { - let val = match source { - ReceiveProgress::Connected => 50, - ReceiveProgress::CollectionReceived => 100, - ReceiveProgress::BlobProgress(val) => 100 + 10 * val, - ReceiveProgress::Completed => 1000, - ReceiveProgress::Failed => 0, - }; - EventType::ImexProgress(val.into()) - } -} - #[cfg(test)] mod tests { use std::time::Duration; diff --git a/src/qr.rs b/src/qr.rs index f193715663..69f7b3834b 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -22,7 +22,6 @@ use crate::message::Message; use crate::peerstate::Peerstate; use crate::token; use crate::tools::validate_id; -use iroh_old as iroh; const OPENPGP4FPR_SCHEME: &str = "OPENPGP4FPR:"; // yes: uppercase const IDELTACHAT_SCHEME: &str = "https://i.delta.chat/#"; @@ -38,9 +37,6 @@ const SMTP_SCHEME: &str = "SMTP:"; const HTTP_SCHEME: &str = "http://"; const HTTPS_SCHEME: &str = "https://"; -/// Legacy backup transfer based on iroh 0.4. -pub(crate) const DCBACKUP_SCHEME: &str = "DCBACKUP:"; - /// Backup transfer based on iroh-net. pub(crate) const DCBACKUP2_SCHEME: &str = "DCBACKUP2:"; @@ -111,20 +107,6 @@ pub enum Qr { domain: String, }, - /// Provides a backup that can be retrieved using legacy iroh 0.4. - /// - /// This contains all the data needed to connect to a device and download a backup from - /// it to configure the receiving device with the same account. - Backup { - /// Printable version of the provider information. - /// - /// This is the printable version of a `sendme` ticket, which contains all the - /// information to connect to and authenticate a backup provider. - /// - /// The format is somewhat opaque, but `sendme` can deserialise this. - ticket: iroh::provider::Ticket, - }, - /// Provides a backup that can be retrieved using iroh-net based backup transfer protocol. Backup2 { /// Iroh node address. @@ -295,8 +277,6 @@ pub async fn check_qr(context: &Context, qr: &str) -> Result { decode_webrtc_instance(context, qr)? } else if starts_with_ignore_case(qr, TG_SOCKS_SCHEME) { decode_tg_socks_proxy(context, qr)? - } else if starts_with_ignore_case(qr, DCBACKUP_SCHEME) { - decode_backup(qr)? } else if starts_with_ignore_case(qr, DCBACKUP2_SCHEME) { decode_backup2(qr)? } else if qr.starts_with(MAILTO_SCHEME) { @@ -319,7 +299,7 @@ pub async fn check_qr(context: &Context, qr: &str) -> Result { Ok(qrcode) } -/// Formats the text of the [`Qr::Backup`] variant. +/// Formats the text of the [`Qr::Backup2`] variant. /// /// This is the inverse of [`check_qr`] for that variant only. /// @@ -327,7 +307,6 @@ pub async fn check_qr(context: &Context, qr: &str) -> Result { /// into `FromStr`. pub fn format_backup(qr: &Qr) -> Result { match qr { - Qr::Backup { ref ticket } => Ok(format!("{DCBACKUP_SCHEME}{ticket}")), Qr::Backup2 { ref node_addr, ref auth_token, @@ -590,18 +569,6 @@ fn decode_tg_socks_proxy(_context: &Context, qr: &str) -> Result { } } -/// Decodes a [`DCBACKUP_SCHEME`] QR code. -/// -/// The format of this scheme is `DCBACKUP:`. The encoding is the -/// [`iroh::provider::Ticket`]'s `Display` impl. -fn decode_backup(qr: &str) -> Result { - let payload = qr - .strip_prefix(DCBACKUP_SCHEME) - .ok_or_else(|| anyhow!("invalid DCBACKUP scheme"))?; - let ticket: iroh::provider::Ticket = payload.parse().context("invalid DCBACKUP payload")?; - Ok(Qr::Backup { ticket }) -} - /// Decodes a [`DCBACKUP2_SCHEME`] QR code. fn decode_backup2(qr: &str) -> Result { let payload = qr diff --git a/src/stock_str.rs b/src/stock_str.rs index 4f3ce03dd0..a9785f7dae 100644 --- a/src/stock_str.rs +++ b/src/stock_str.rs @@ -1345,12 +1345,12 @@ pub(crate) async fn new_group_send_first_message(context: &Context) -> String { translated(context, StockMessage::NewGroupSendFirstMessage).await } -/// Text to put in the [`Qr::Backup`] rendered SVG image. +/// Text to put in the [`Qr::Backup2`] rendered SVG image. /// /// The default is "Scan to set up second device for ". The /// account name and address are looked up from the context. /// -/// [`Qr::Backup`]: crate::qr::Qr::Backup +/// [`Qr::Backup2`]: crate::qr::Qr::Backup2 pub(crate) async fn backup_transfer_qr(context: &Context) -> Result { let contact = Contact::get_by_id(context, ContactId::SELF).await?; let addr = contact.get_addr();