a9ca5b81
Upgrade russh to 0.62 for post-quantum key exchange
a73x 2026-08-08 18:35
Commit message
Cargo.lock
| Old | New | ||
|---|---|---|---|
| @@ -10,30 +10,31 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" | |||
| 10 | 10 | ||
| 11 | [[package]] | 11 | [[package]] |
| 12 | name = "aead" | 12 | name = "aead" |
| 13 | version = "0.5.2" | 13 | version = "0.6.1" |
| 14 | source = "registry+https://github.com/rust-lang/crates.io-index" | 14 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 15 | checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" | 15 | checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99" |
| 16 | dependencies = [ | 16 | dependencies = [ |
| 17 | "crypto-common", | 17 | "crypto-common 0.2.2", |
| 18 | "generic-array", | 18 | "inout", |
| 19 | ] | 19 | ] |
| 20 | 20 | ||
| 21 | [[package]] | 21 | [[package]] |
| 22 | name = "aes" | 22 | name = "aes" |
| 23 | version = "0.8.4" | 23 | version = "0.9.2" |
| 24 | source = "registry+https://github.com/rust-lang/crates.io-index" | 24 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 25 | checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" | 25 | checksum = "f8eb277bec05f56a0e0591f155a484cbd0f4f07ff2905051a48c72f004f7ed58" |
| 26 | dependencies = [ | 26 | dependencies = [ |
| 27 | "cfg-if", | ||
| 28 | "cipher", | 27 | "cipher", |
| 29 | "cpufeatures", | 28 | "cpubits", |
| 29 | "cpufeatures 0.3.0", | ||
| 30 | "zeroize", | ||
| 30 | ] | 31 | ] |
| 31 | 32 | ||
| 32 | [[package]] | 33 | [[package]] |
| 33 | name = "aes-gcm" | 34 | name = "aes-gcm" |
| 34 | version = "0.10.3" | 35 | version = "0.11.0" |
| 35 | source = "registry+https://github.com/rust-lang/crates.io-index" | 36 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 36 | checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" | 37 | checksum = "fdf011db2e21ce0d575593d749db5554b47fed37aff429e4dc50bc91ac93a028" |
| 37 | dependencies = [ | 38 | dependencies = [ |
| 38 | "aead", | 39 | "aead", |
| 39 | "aes", | 40 | "aes", |
| @@ -41,19 +42,7 @@ dependencies = [ | |||
| 41 | "ctr", | 42 | "ctr", |
| 42 | "ghash", | 43 | "ghash", |
| 43 | "subtle", | 44 | "subtle", |
| 44 | ] | 45 | "zeroize", |
| 45 | |||
| 46 | [[package]] | ||
| 47 | name = "ahash" | ||
| 48 | version = "0.8.12" | ||
| 49 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 50 | checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" | ||
| 51 | dependencies = [ | ||
| 52 | "cfg-if", | ||
| 53 | "const-random", | ||
| 54 | "once_cell", | ||
| 55 | "version_check", | ||
| 56 | "zerocopy", | ||
| 57 | ] | 46 | ] |
| 58 | 47 | ||
| 59 | [[package]] | 48 | [[package]] |
| @@ -156,6 +145,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 156 | checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" | 145 | checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" |
| 157 | 146 | ||
| 158 | [[package]] | 147 | [[package]] |
| 148 | name = "argon2" | ||
| 149 | version = "0.6.0-rc.8" | ||
| 150 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 151 | checksum = "7af50940b73bf4e16c15c448a2b121c63f2d68e3e54b6a8731673cb4aa0cdff5" | ||
| 152 | dependencies = [ | ||
| 153 | "base64ct", | ||
| 154 | "blake2", | ||
| 155 | "cpufeatures 0.3.0", | ||
| 156 | "password-hash", | ||
| 157 | ] | ||
| 158 | |||
| 159 | [[package]] | ||
| 159 | name = "askama" | 160 | name = "askama" |
| 160 | version = "0.15.6" | 161 | version = "0.15.6" |
| 161 | source = "registry+https://github.com/rust-lang/crates.io-index" | 162 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -232,17 +233,6 @@ dependencies = [ | |||
| 232 | ] | 233 | ] |
| 233 | 234 | ||
| 234 | [[package]] | 235 | [[package]] |
| 235 | name = "async-trait" | ||
| 236 | version = "0.1.89" | ||
| 237 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 238 | checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" | ||
| 239 | dependencies = [ | ||
| 240 | "proc-macro2", | ||
| 241 | "quote", | ||
| 242 | "syn 2.0.117", | ||
| 243 | ] | ||
| 244 | |||
| 245 | [[package]] | ||
| 246 | name = "atomic" | 236 | name = "atomic" |
| 247 | version = "0.6.1" | 237 | version = "0.6.1" |
| 248 | source = "registry+https://github.com/rust-lang/crates.io-index" | 238 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -264,6 +254,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 264 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" | 254 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" |
| 265 | 255 | ||
| 266 | [[package]] | 256 | [[package]] |
| 257 | name = "aws-lc-rs" | ||
| 258 | version = "1.18.0" | ||
| 259 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 260 | checksum = "ce2b2dcc879c3bae0d371e77c99f2238400ef24ec001394befa67b6e543add9e" | ||
| 261 | dependencies = [ | ||
| 262 | "aws-lc-sys", | ||
| 263 | "untrusted", | ||
| 264 | "zeroize", | ||
| 265 | ] | ||
| 266 | |||
| 267 | [[package]] | ||
| 268 | name = "aws-lc-sys" | ||
| 269 | version = "0.44.0" | ||
| 270 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 271 | checksum = "f09fae7be8bb3174e05c6afdb34199e6dc0c7c04ba9fa237b1967adfbde27483" | ||
| 272 | dependencies = [ | ||
| 273 | "cc", | ||
| 274 | "cmake", | ||
| 275 | "dunce", | ||
| 276 | "fs_extra", | ||
| 277 | "pkg-config", | ||
| 278 | ] | ||
| 279 | |||
| 280 | [[package]] | ||
| 267 | name = "axum" | 281 | name = "axum" |
| 268 | version = "0.8.8" | 282 | version = "0.8.8" |
| 269 | source = "registry+https://github.com/rust-lang/crates.io-index" | 283 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -317,9 +331,9 @@ dependencies = [ | |||
| 317 | 331 | ||
| 318 | [[package]] | 332 | [[package]] |
| 319 | name = "base16ct" | 333 | name = "base16ct" |
| 320 | version = "0.2.0" | 334 | version = "1.0.0" |
| 321 | source = "registry+https://github.com/rust-lang/crates.io-index" | 335 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 322 | checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" | 336 | checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6" |
| 323 | 337 | ||
| 324 | [[package]] | 338 | [[package]] |
| 325 | name = "base64" | 339 | name = "base64" |
| @@ -344,13 +358,13 @@ dependencies = [ | |||
| 344 | 358 | ||
| 345 | [[package]] | 359 | [[package]] |
| 346 | name = "bcrypt-pbkdf" | 360 | name = "bcrypt-pbkdf" |
| 347 | version = "0.10.0" | 361 | version = "0.11.0" |
| 348 | source = "registry+https://github.com/rust-lang/crates.io-index" | 362 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 349 | checksum = "6aeac2e1fe888769f34f05ac343bbef98b14d1ffb292ab69d4608b3abc86f2a2" | 363 | checksum = "144e573728da132683b9488acd528274c790e07fc06ff81ee29f9d8f8b1041e0" |
| 350 | dependencies = [ | 364 | dependencies = [ |
| 351 | "blowfish", | 365 | "blowfish", |
| 352 | "pbkdf2", | 366 | "pbkdf2", |
| 353 | "sha2", | 367 | "sha2 0.11.0", |
| 354 | ] | 368 | ] |
| 355 | 369 | ||
| 356 | [[package]] | 370 | [[package]] |
| @@ -394,8 +408,14 @@ name = "bitflags" | |||
| 394 | version = "2.11.0" | 408 | version = "2.11.0" |
| 395 | source = "registry+https://github.com/rust-lang/crates.io-index" | 409 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 396 | checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" | 410 | checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" |
| 411 | |||
| 412 | [[package]] | ||
| 413 | name = "blake2" | ||
| 414 | version = "0.11.0-rc.6" | ||
| 415 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 416 | checksum = "061f1a09225e328e1ffbb378d2d49923c0ca5fee19fb5ac1cc9c1e9d52b93690" | ||
| 397 | dependencies = [ | 417 | dependencies = [ |
| 398 | "serde_core", | 418 | "digest 0.11.3", |
| 399 | ] | 419 | ] |
| 400 | 420 | ||
| 401 | [[package]] | 421 | [[package]] |
| @@ -404,23 +424,33 @@ version = "0.10.4" | |||
| 404 | source = "registry+https://github.com/rust-lang/crates.io-index" | 424 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 405 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" | 425 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" |
| 406 | dependencies = [ | 426 | dependencies = [ |
| 407 | "generic-array", | 427 | "generic-array 0.14.7", |
| 428 | ] | ||
| 429 | |||
| 430 | [[package]] | ||
| 431 | name = "block-buffer" | ||
| 432 | version = "0.12.1" | ||
| 433 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 434 | checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" | ||
| 435 | dependencies = [ | ||
| 436 | "hybrid-array", | ||
| 437 | "zeroize", | ||
| 408 | ] | 438 | ] |
| 409 | 439 | ||
| 410 | [[package]] | 440 | [[package]] |
| 411 | name = "block-padding" | 441 | name = "block-padding" |
| 412 | version = "0.3.3" | 442 | version = "0.4.2" |
| 413 | source = "registry+https://github.com/rust-lang/crates.io-index" | 443 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 414 | checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" | 444 | checksum = "710f1dd022ef4e93f8a438b4ba958de7f64308434fa6a87104481645cc30068b" |
| 415 | dependencies = [ | 445 | dependencies = [ |
| 416 | "generic-array", | 446 | "hybrid-array", |
| 417 | ] | 447 | ] |
| 418 | 448 | ||
| 419 | [[package]] | 449 | [[package]] |
| 420 | name = "blowfish" | 450 | name = "blowfish" |
| 421 | version = "0.9.1" | 451 | version = "0.10.0" |
| 422 | source = "registry+https://github.com/rust-lang/crates.io-index" | 452 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 423 | checksum = "e412e2cd0f2b2d93e02543ceae7917b3c70331573df19ee046bcbc35e45e87d7" | 453 | checksum = "62ce3946557b35e71d1bbe07ec385073ce9eda05043f95de134eb578fcf1a298" |
| 424 | dependencies = [ | 454 | dependencies = [ |
| 425 | "byteorder", | 455 | "byteorder", |
| 426 | "cipher", | 456 | "cipher", |
| @@ -467,9 +497,9 @@ dependencies = [ | |||
| 467 | 497 | ||
| 468 | [[package]] | 498 | [[package]] |
| 469 | name = "cbc" | 499 | name = "cbc" |
| 470 | version = "0.1.2" | 500 | version = "0.2.1" |
| 471 | source = "registry+https://github.com/rust-lang/crates.io-index" | 501 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 472 | checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" | 502 | checksum = "ce2dc9ee5f88d11e0beb842c88b33c8a5cf0d1329c4b19494af42b07dbfe8896" |
| 473 | dependencies = [ | 503 | dependencies = [ |
| 474 | "cipher", | 504 | "cipher", |
| 475 | ] | 505 | ] |
| @@ -500,13 +530,15 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" | |||
| 500 | 530 | ||
| 501 | [[package]] | 531 | [[package]] |
| 502 | name = "chacha20" | 532 | name = "chacha20" |
| 503 | version = "0.9.1" | 533 | version = "0.10.1" |
| 504 | source = "registry+https://github.com/rust-lang/crates.io-index" | 534 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 505 | checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" | 535 | checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" |
| 506 | dependencies = [ | 536 | dependencies = [ |
| 507 | "cfg-if", | 537 | "cfg-if", |
| 508 | "cipher", | 538 | "cipher", |
| 509 | "cpufeatures", | 539 | "cpufeatures 0.3.0", |
| 540 | "rand_core 0.10.1", | ||
| 541 | "zeroize", | ||
| 510 | ] | 542 | ] |
| 511 | 543 | ||
| 512 | [[package]] | 544 | [[package]] |
| @@ -552,12 +584,14 @@ dependencies = [ | |||
| 552 | 584 | ||
| 553 | [[package]] | 585 | [[package]] |
| 554 | name = "cipher" | 586 | name = "cipher" |
| 555 | version = "0.4.4" | 587 | version = "0.5.2" |
| 556 | source = "registry+https://github.com/rust-lang/crates.io-index" | 588 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 557 | checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" | 589 | checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" |
| 558 | dependencies = [ | 590 | dependencies = [ |
| 559 | "crypto-common", | 591 | "block-buffer 0.12.1", |
| 592 | "crypto-common 0.2.2", | ||
| 560 | "inout", | 593 | "inout", |
| 594 | "zeroize", | ||
| 561 | ] | 595 | ] |
| 562 | 596 | ||
| 563 | [[package]] | 597 | [[package]] |
| @@ -620,6 +654,21 @@ dependencies = [ | |||
| 620 | ] | 654 | ] |
| 621 | 655 | ||
| 622 | [[package]] | 656 | [[package]] |
| 657 | name = "cmake" | ||
| 658 | version = "0.1.58" | ||
| 659 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 660 | checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" | ||
| 661 | dependencies = [ | ||
| 662 | "cc", | ||
| 663 | ] | ||
| 664 | |||
| 665 | [[package]] | ||
| 666 | name = "cmov" | ||
| 667 | version = "0.5.4" | ||
| 668 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 669 | checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" | ||
| 670 | |||
| 671 | [[package]] | ||
| 623 | name = "colorchoice" | 672 | name = "colorchoice" |
| 624 | version = "1.0.5" | 673 | version = "1.0.5" |
| 625 | source = "registry+https://github.com/rust-lang/crates.io-index" | 674 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -646,24 +695,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 646 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" | 695 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" |
| 647 | 696 | ||
| 648 | [[package]] | 697 | [[package]] |
| 649 | name = "const-random" | 698 | name = "const-oid" |
| 650 | version = "0.1.18" | 699 | version = "0.10.2" |
| 651 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 652 | checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" | ||
| 653 | dependencies = [ | ||
| 654 | "const-random-macro", | ||
| 655 | ] | ||
| 656 | |||
| 657 | [[package]] | ||
| 658 | name = "const-random-macro" | ||
| 659 | version = "0.1.16" | ||
| 660 | source = "registry+https://github.com/rust-lang/crates.io-index" | 700 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 661 | checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" | 701 | checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" |
| 662 | dependencies = [ | ||
| 663 | "getrandom 0.2.17", | ||
| 664 | "once_cell", | ||
| 665 | "tiny-keccak", | ||
| 666 | ] | ||
| 667 | 702 | ||
| 668 | [[package]] | 703 | [[package]] |
| 669 | name = "convert_case" | 704 | name = "convert_case" |
| @@ -681,6 +716,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 681 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" | 716 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" |
| 682 | 717 | ||
| 683 | [[package]] | 718 | [[package]] |
| 719 | name = "cpubits" | ||
| 720 | version = "0.1.1" | ||
| 721 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 722 | checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae" | ||
| 723 | |||
| 724 | [[package]] | ||
| 684 | name = "cpufeatures" | 725 | name = "cpufeatures" |
| 685 | version = "0.2.17" | 726 | version = "0.2.17" |
| 686 | source = "registry+https://github.com/rust-lang/crates.io-index" | 727 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -690,6 +731,15 @@ dependencies = [ | |||
| 690 | ] | 731 | ] |
| 691 | 732 | ||
| 692 | [[package]] | 733 | [[package]] |
| 734 | name = "cpufeatures" | ||
| 735 | version = "0.3.0" | ||
| 736 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 737 | checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" | ||
| 738 | dependencies = [ | ||
| 739 | "libc", | ||
| 740 | ] | ||
| 741 | |||
| 742 | [[package]] | ||
| 693 | name = "crc32fast" | 743 | name = "crc32fast" |
| 694 | version = "1.5.0" | 744 | version = "1.5.0" |
| 695 | source = "registry+https://github.com/rust-lang/crates.io-index" | 745 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -794,12 +844,17 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" | |||
| 794 | 844 | ||
| 795 | [[package]] | 845 | [[package]] |
| 796 | name = "crypto-bigint" | 846 | name = "crypto-bigint" |
| 797 | version = "0.5.5" | 847 | version = "0.7.5" |
| 798 | source = "registry+https://github.com/rust-lang/crates.io-index" | 848 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 799 | checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" | 849 | checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271" |
| 800 | dependencies = [ | 850 | dependencies = [ |
| 801 | "generic-array", | 851 | "cpubits", |
| 802 | "rand_core 0.6.4", | 852 | "ctutils", |
| 853 | "getrandom 0.4.2", | ||
| 854 | "hybrid-array", | ||
| 855 | "num-traits", | ||
| 856 | "rand_core 0.10.1", | ||
| 857 | "serdect", | ||
| 803 | "subtle", | 858 | "subtle", |
| 804 | "zeroize", | 859 | "zeroize", |
| 805 | ] | 860 | ] |
| @@ -810,12 +865,32 @@ version = "0.1.7" | |||
| 810 | source = "registry+https://github.com/rust-lang/crates.io-index" | 865 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 811 | checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" | 866 | checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" |
| 812 | dependencies = [ | 867 | dependencies = [ |
| 813 | "generic-array", | 868 | "generic-array 0.14.7", |
| 814 | "rand_core 0.6.4", | ||
| 815 | "typenum", | 869 | "typenum", |
| 816 | ] | 870 | ] |
| 817 | 871 | ||
| 818 | [[package]] | 872 | [[package]] |
| 873 | name = "crypto-common" | ||
| 874 | version = "0.2.2" | ||
| 875 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 876 | checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" | ||
| 877 | dependencies = [ | ||
| 878 | "getrandom 0.4.2", | ||
| 879 | "hybrid-array", | ||
| 880 | "rand_core 0.10.1", | ||
| 881 | ] | ||
| 882 | |||
| 883 | [[package]] | ||
| 884 | name = "crypto-primes" | ||
| 885 | version = "0.7.2" | ||
| 886 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 887 | checksum = "3633a51a39c69ebbaa4feaa694bd83d241e4093901c84a0963b19d9bb3f0cf8f" | ||
| 888 | dependencies = [ | ||
| 889 | "crypto-bigint", | ||
| 890 | "rand_core 0.10.1", | ||
| 891 | ] | ||
| 892 | |||
| 893 | [[package]] | ||
| 819 | name = "csscolorparser" | 894 | name = "csscolorparser" |
| 820 | version = "0.6.2" | 895 | version = "0.6.2" |
| 821 | source = "registry+https://github.com/rust-lang/crates.io-index" | 896 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -850,24 +925,51 @@ dependencies = [ | |||
| 850 | 925 | ||
| 851 | [[package]] | 926 | [[package]] |
| 852 | name = "ctr" | 927 | name = "ctr" |
| 853 | version = "0.9.2" | 928 | version = "0.10.1" |
| 854 | source = "registry+https://github.com/rust-lang/crates.io-index" | 929 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 855 | checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" | 930 | checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21" |
| 856 | dependencies = [ | 931 | dependencies = [ |
| 857 | "cipher", | 932 | "cipher", |
| 858 | ] | 933 | ] |
| 859 | 934 | ||
| 860 | [[package]] | 935 | [[package]] |
| 936 | name = "ctutils" | ||
| 937 | version = "0.4.2" | ||
| 938 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 939 | checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" | ||
| 940 | dependencies = [ | ||
| 941 | "cmov", | ||
| 942 | "subtle", | ||
| 943 | ] | ||
| 944 | |||
| 945 | [[package]] | ||
| 861 | name = "curve25519-dalek" | 946 | name = "curve25519-dalek" |
| 862 | version = "4.1.3" | 947 | version = "4.1.3" |
| 863 | source = "registry+https://github.com/rust-lang/crates.io-index" | 948 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 864 | checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" | 949 | checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" |
| 865 | dependencies = [ | 950 | dependencies = [ |
| 866 | "cfg-if", | 951 | "cfg-if", |
| 867 | "cpufeatures", | 952 | "cpufeatures 0.2.17", |
| 953 | "curve25519-dalek-derive", | ||
| 954 | "digest 0.10.7", | ||
| 955 | "fiat-crypto 0.2.9", | ||
| 956 | "rustc_version", | ||
| 957 | "subtle", | ||
| 958 | "zeroize", | ||
| 959 | ] | ||
| 960 | |||
| 961 | [[package]] | ||
| 962 | name = "curve25519-dalek" | ||
| 963 | version = "5.0.0" | ||
| 964 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 965 | checksum = "b5eed333089e2e1c1ac8c6c0398e5e2497b4c9926ca6d0365ed1e099afa5bc23" | ||
| 966 | dependencies = [ | ||
| 967 | "cfg-if", | ||
| 968 | "cpufeatures 0.3.0", | ||
| 868 | "curve25519-dalek-derive", | 969 | "curve25519-dalek-derive", |
| 869 | "digest", | 970 | "digest 0.11.3", |
| 870 | "fiat-crypto", | 971 | "fiat-crypto 0.3.0", |
| 972 | "rand_core 0.10.1", | ||
| 871 | "rustc_version", | 973 | "rustc_version", |
| 872 | "subtle", | 974 | "subtle", |
| 873 | "zeroize", | 975 | "zeroize", |
| @@ -947,7 +1049,17 @@ version = "0.7.10" | |||
| 947 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 948 | checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" | 1050 | checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" |
| 949 | dependencies = [ | 1051 | dependencies = [ |
| 950 | "const-oid", | 1052 | "const-oid 0.9.6", |
| 1053 | "zeroize", | ||
| 1054 | ] | ||
| 1055 | |||
| 1056 | [[package]] | ||
| 1057 | name = "der" | ||
| 1058 | version = "0.8.1" | ||
| 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1060 | checksum = "a69dedd701da44b0536442edf09c81a64b0ab97a7a4a5e3d1971f00027cbc63d" | ||
| 1061 | dependencies = [ | ||
| 1062 | "const-oid 0.10.2", | ||
| 951 | "pem-rfc7468", | 1063 | "pem-rfc7468", |
| 952 | "zeroize", | 1064 | "zeroize", |
| 953 | ] | 1065 | ] |
| @@ -985,9 +1097,9 @@ dependencies = [ | |||
| 985 | 1097 | ||
| 986 | [[package]] | 1098 | [[package]] |
| 987 | name = "des" | 1099 | name = "des" |
| 988 | version = "0.8.1" | 1100 | version = "0.9.0" |
| 989 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1101 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 990 | checksum = "ffdd80ce8ce993de27e9f063a444a4d53ce8e8db4c1f00cc03af5ad5a9867a1e" | 1102 | checksum = "916a94e407b54f9034d71dd748234cd1e516ced6284009906ae246f177eafe5a" |
| 991 | dependencies = [ | 1103 | dependencies = [ |
| 992 | "cipher", | 1104 | "cipher", |
| 993 | ] | 1105 | ] |
| @@ -998,10 +1110,20 @@ version = "0.10.7" | |||
| 998 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1110 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 999 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" | 1111 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" |
| 1000 | dependencies = [ | 1112 | dependencies = [ |
| 1001 | "block-buffer", | 1113 | "block-buffer 0.10.4", |
| 1002 | "const-oid", | 1114 | "crypto-common 0.1.7", |
| 1003 | "crypto-common", | 1115 | ] |
| 1004 | "subtle", | 1116 | |
| 1117 | [[package]] | ||
| 1118 | name = "digest" | ||
| 1119 | version = "0.11.3" | ||
| 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1121 | checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" | ||
| 1122 | dependencies = [ | ||
| 1123 | "block-buffer 0.12.1", | ||
| 1124 | "const-oid 0.10.2", | ||
| 1125 | "crypto-common 0.2.2", | ||
| 1126 | "ctutils", | ||
| 1005 | ] | 1127 | ] |
| 1006 | 1128 | ||
| 1007 | [[package]] | 1129 | [[package]] |
| @@ -1061,17 +1183,24 @@ dependencies = [ | |||
| 1061 | ] | 1183 | ] |
| 1062 | 1184 | ||
| 1063 | [[package]] | 1185 | [[package]] |
| 1186 | name = "dunce" | ||
| 1187 | version = "1.0.5" | ||
| 1188 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1189 | checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" | ||
| 1190 | |||
| 1191 | [[package]] | ||
| 1064 | name = "ecdsa" | 1192 | name = "ecdsa" |
| 1065 | version = "0.16.9" | 1193 | version = "0.17.0" |
| 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1194 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1067 | checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" | 1195 | checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" |
| 1068 | dependencies = [ | 1196 | dependencies = [ |
| 1069 | "der", | 1197 | "der 0.8.1", |
| 1070 | "digest", | 1198 | "digest 0.11.3", |
| 1071 | "elliptic-curve", | 1199 | "elliptic-curve", |
| 1072 | "rfc6979", | 1200 | "rfc6979", |
| 1073 | "signature", | 1201 | "signature 3.0.0", |
| 1074 | "spki", | 1202 | "spki 0.8.0", |
| 1203 | "zeroize", | ||
| 1075 | ] | 1204 | ] |
| 1076 | 1205 | ||
| 1077 | [[package]] | 1206 | [[package]] |
| @@ -1080,8 +1209,18 @@ version = "2.2.3" | |||
| 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1209 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1081 | checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" | 1210 | checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" |
| 1082 | dependencies = [ | 1211 | dependencies = [ |
| 1083 | "pkcs8", | 1212 | "pkcs8 0.10.2", |
| 1084 | "signature", | 1213 | "signature 2.2.0", |
| 1214 | ] | ||
| 1215 | |||
| 1216 | [[package]] | ||
| 1217 | name = "ed25519" | ||
| 1218 | version = "3.0.0" | ||
| 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1220 | checksum = "29fcf32e6c73d1079f83ab4d782de2d81620346a5f38c6237a86a22f8368980a" | ||
| 1221 | dependencies = [ | ||
| 1222 | "pkcs8 0.11.0", | ||
| 1223 | "signature 3.0.0", | ||
| 1085 | ] | 1224 | ] |
| 1086 | 1225 | ||
| 1087 | [[package]] | 1226 | [[package]] |
| @@ -1090,11 +1229,27 @@ version = "2.2.0" | |||
| 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1091 | checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" | 1230 | checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" |
| 1092 | dependencies = [ | 1231 | dependencies = [ |
| 1093 | "curve25519-dalek", | 1232 | "curve25519-dalek 4.1.3", |
| 1094 | "ed25519", | 1233 | "ed25519 2.2.3", |
| 1095 | "rand_core 0.6.4", | 1234 | "rand_core 0.6.4", |
| 1096 | "serde", | 1235 | "serde", |
| 1097 | "sha2", | 1236 | "sha2 0.10.9", |
| 1237 | "subtle", | ||
| 1238 | "zeroize", | ||
| 1239 | ] | ||
| 1240 | |||
| 1241 | [[package]] | ||
| 1242 | name = "ed25519-dalek" | ||
| 1243 | version = "3.0.0" | ||
| 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1245 | checksum = "6ebaa1a2bf1290ab3bfe5a7b771d050ebffab2711c19a81691c683a5144a25de" | ||
| 1246 | dependencies = [ | ||
| 1247 | "curve25519-dalek 5.0.0", | ||
| 1248 | "ed25519 3.0.0", | ||
| 1249 | "rand_core 0.10.1", | ||
| 1250 | "serde", | ||
| 1251 | "sha2 0.11.0", | ||
| 1252 | "signature 3.0.0", | ||
| 1098 | "subtle", | 1253 | "subtle", |
| 1099 | "zeroize", | 1254 | "zeroize", |
| 1100 | ] | 1255 | ] |
| @@ -1107,26 +1262,39 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" | |||
| 1107 | 1262 | ||
| 1108 | [[package]] | 1263 | [[package]] |
| 1109 | name = "elliptic-curve" | 1264 | name = "elliptic-curve" |
| 1110 | version = "0.13.8" | 1265 | version = "0.14.1" |
| 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1112 | checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" | 1267 | checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" |
| 1113 | dependencies = [ | 1268 | dependencies = [ |
| 1114 | "base16ct", | 1269 | "base16ct", |
| 1115 | "crypto-bigint", | 1270 | "crypto-bigint", |
| 1116 | "digest", | 1271 | "crypto-common 0.2.2", |
| 1272 | "digest 0.11.3", | ||
| 1117 | "ff", | 1273 | "ff", |
| 1118 | "generic-array", | ||
| 1119 | "group", | 1274 | "group", |
| 1120 | "hkdf", | 1275 | "hkdf", |
| 1276 | "hybrid-array", | ||
| 1121 | "pem-rfc7468", | 1277 | "pem-rfc7468", |
| 1122 | "pkcs8", | 1278 | "pkcs8 0.11.0", |
| 1123 | "rand_core 0.6.4", | 1279 | "rand_core 0.10.1", |
| 1124 | "sec1", | 1280 | "sec1", |
| 1125 | "subtle", | 1281 | "subtle", |
| 1126 | "zeroize", | 1282 | "zeroize", |
| 1127 | ] | 1283 | ] |
| 1128 | 1284 | ||
| 1129 | [[package]] | 1285 | [[package]] |
| 1286 | name = "enum_dispatch" | ||
| 1287 | version = "0.3.13" | ||
| 1288 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1289 | checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" | ||
| 1290 | dependencies = [ | ||
| 1291 | "once_cell", | ||
| 1292 | "proc-macro2", | ||
| 1293 | "quote", | ||
| 1294 | "syn 2.0.117", | ||
| 1295 | ] | ||
| 1296 | |||
| 1297 | [[package]] | ||
| 1130 | name = "equivalent" | 1298 | name = "equivalent" |
| 1131 | version = "1.0.2" | 1299 | version = "1.0.2" |
| 1132 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1300 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1169,11 +1337,11 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" | |||
| 1169 | 1337 | ||
| 1170 | [[package]] | 1338 | [[package]] |
| 1171 | name = "ff" | 1339 | name = "ff" |
| 1172 | version = "0.13.1" | 1340 | version = "0.14.0" |
| 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1341 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1174 | checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" | 1342 | checksum = "a1f686ab92a9fb0eaf188f6c6c87b89490baa6fdb0db4544ba4dc47f7942489f" |
| 1175 | dependencies = [ | 1343 | dependencies = [ |
| 1176 | "rand_core 0.6.4", | 1344 | "rand_core 0.10.1", |
| 1177 | "subtle", | 1345 | "subtle", |
| 1178 | ] | 1346 | ] |
| 1179 | 1347 | ||
| @@ -1184,6 +1352,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 1184 | checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" | 1352 | checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" |
| 1185 | 1353 | ||
| 1186 | [[package]] | 1354 | [[package]] |
| 1355 | name = "fiat-crypto" | ||
| 1356 | version = "0.3.0" | ||
| 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1358 | checksum = "64cd1e32ddd350061ae6edb1b082d7c54915b5c672c389143b9a63403a109f24" | ||
| 1359 | |||
| 1360 | [[package]] | ||
| 1187 | name = "filedescriptor" | 1361 | name = "filedescriptor" |
| 1188 | version = "0.8.3" | 1362 | version = "0.8.3" |
| 1189 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1223,18 +1397,6 @@ dependencies = [ | |||
| 1223 | ] | 1397 | ] |
| 1224 | 1398 | ||
| 1225 | [[package]] | 1399 | [[package]] |
| 1226 | name = "flurry" | ||
| 1227 | version = "0.5.2" | ||
| 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1229 | checksum = "cf5efcf77a4da27927d3ab0509dec5b0954bb3bc59da5a1de9e52642ebd4cdf9" | ||
| 1230 | dependencies = [ | ||
| 1231 | "ahash", | ||
| 1232 | "num_cpus", | ||
| 1233 | "parking_lot", | ||
| 1234 | "seize", | ||
| 1235 | ] | ||
| 1236 | |||
| 1237 | [[package]] | ||
| 1238 | name = "fnv" | 1400 | name = "fnv" |
| 1239 | version = "1.0.7" | 1401 | version = "1.0.7" |
| 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1262,6 +1424,12 @@ dependencies = [ | |||
| 1262 | ] | 1424 | ] |
| 1263 | 1425 | ||
| 1264 | [[package]] | 1426 | [[package]] |
| 1427 | name = "fs_extra" | ||
| 1428 | version = "1.3.0" | ||
| 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1430 | checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" | ||
| 1431 | |||
| 1432 | [[package]] | ||
| 1265 | name = "futf" | 1433 | name = "futf" |
| 1266 | version = "0.1.5" | 1434 | version = "0.1.5" |
| 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1435 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1367,7 +1535,17 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" | |||
| 1367 | dependencies = [ | 1535 | dependencies = [ |
| 1368 | "typenum", | 1536 | "typenum", |
| 1369 | "version_check", | 1537 | "version_check", |
| 1370 | "zeroize", | 1538 | ] |
| 1539 | |||
| 1540 | [[package]] | ||
| 1541 | name = "generic-array" | ||
| 1542 | version = "1.4.4" | ||
| 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1544 | checksum = "ab4e5aa225bc56696909483320f0ff9b600f1a971b52e07a17d70f3d9b43254b" | ||
| 1545 | dependencies = [ | ||
| 1546 | "generic-array 0.14.7", | ||
| 1547 | "rustversion", | ||
| 1548 | "typenum", | ||
| 1371 | ] | 1549 | ] |
| 1372 | 1550 | ||
| 1373 | [[package]] | 1551 | [[package]] |
| @@ -1377,10 +1555,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 1377 | checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" | 1555 | checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" |
| 1378 | dependencies = [ | 1556 | dependencies = [ |
| 1379 | "cfg-if", | 1557 | "cfg-if", |
| 1380 | "js-sys", | ||
| 1381 | "libc", | 1558 | "libc", |
| 1382 | "wasi", | 1559 | "wasi", |
| 1383 | "wasm-bindgen", | ||
| 1384 | ] | 1560 | ] |
| 1385 | 1561 | ||
| 1386 | [[package]] | 1562 | [[package]] |
| @@ -1402,19 +1578,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 1402 | checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" | 1578 | checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" |
| 1403 | dependencies = [ | 1579 | dependencies = [ |
| 1404 | "cfg-if", | 1580 | "cfg-if", |
| 1581 | "js-sys", | ||
| 1405 | "libc", | 1582 | "libc", |
| 1406 | "r-efi 6.0.0", | 1583 | "r-efi 6.0.0", |
| 1584 | "rand_core 0.10.1", | ||
| 1407 | "wasip2", | 1585 | "wasip2", |
| 1408 | "wasip3", | 1586 | "wasip3", |
| 1587 | "wasm-bindgen", | ||
| 1409 | ] | 1588 | ] |
| 1410 | 1589 | ||
| 1411 | [[package]] | 1590 | [[package]] |
| 1412 | name = "ghash" | 1591 | name = "ghash" |
| 1413 | version = "0.5.1" | 1592 | version = "0.6.0" |
| 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1415 | checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" | 1594 | checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5" |
| 1416 | dependencies = [ | 1595 | dependencies = [ |
| 1417 | "opaque-debug", | ||
| 1418 | "polyval", | 1596 | "polyval", |
| 1419 | ] | 1597 | ] |
| 1420 | 1598 | ||
| @@ -1425,7 +1603,6 @@ dependencies = [ | |||
| 1425 | "ammonia", | 1603 | "ammonia", |
| 1426 | "askama", | 1604 | "askama", |
| 1427 | "askama_web", | 1605 | "askama_web", |
| 1428 | "async-trait", | ||
| 1429 | "axum", | 1606 | "axum", |
| 1430 | "base64", | 1607 | "base64", |
| 1431 | "chrono", | 1608 | "chrono", |
| @@ -1435,17 +1612,16 @@ dependencies = [ | |||
| 1435 | "criterion", | 1612 | "criterion", |
| 1436 | "crossterm", | 1613 | "crossterm", |
| 1437 | "dirs", | 1614 | "dirs", |
| 1438 | "ed25519-dalek", | 1615 | "ed25519-dalek 2.2.0", |
| 1439 | "git2", | 1616 | "git2", |
| 1440 | "proptest", | 1617 | "proptest", |
| 1441 | "pulldown-cmark", | 1618 | "pulldown-cmark", |
| 1442 | "rand_core 0.6.4", | 1619 | "rand_core 0.6.4", |
| 1443 | "ratatui", | 1620 | "ratatui", |
| 1444 | "russh", | 1621 | "russh", |
| 1445 | "russh-keys", | ||
| 1446 | "serde", | 1622 | "serde", |
| 1447 | "serde_json", | 1623 | "serde_json", |
| 1448 | "sha2", | 1624 | "sha2 0.10.9", |
| 1449 | "tempfile", | 1625 | "tempfile", |
| 1450 | "thiserror 2.0.18", | 1626 | "thiserror 2.0.18", |
| 1451 | "tokio", | 1627 | "tokio", |
| @@ -1453,6 +1629,7 @@ dependencies = [ | |||
| 1453 | "toml_edit", | 1629 | "toml_edit", |
| 1454 | "tracing", | 1630 | "tracing", |
| 1455 | "tracing-subscriber", | 1631 | "tracing-subscriber", |
| 1632 | "zeroize", | ||
| 1456 | ] | 1633 | ] |
| 1457 | 1634 | ||
| 1458 | [[package]] | 1635 | [[package]] |
| @@ -1472,12 +1649,12 @@ dependencies = [ | |||
| 1472 | 1649 | ||
| 1473 | [[package]] | 1650 | [[package]] |
| 1474 | name = "group" | 1651 | name = "group" |
| 1475 | version = "0.13.0" | 1652 | version = "0.14.0" |
| 1476 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1477 | checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" | 1654 | checksum = "7fd1a1c7a5206c5b7a3f5a0d7ccd3ff85d0c8f5133d62a02680255b0004af5f4" |
| 1478 | dependencies = [ | 1655 | dependencies = [ |
| 1479 | "ff", | 1656 | "ff", |
| 1480 | "rand_core 0.6.4", | 1657 | "rand_core 0.10.1", |
| 1481 | "subtle", | 1658 | "subtle", |
| 1482 | ] | 1659 | ] |
| 1483 | 1660 | ||
| @@ -1532,35 +1709,26 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" | |||
| 1532 | 1709 | ||
| 1533 | [[package]] | 1710 | [[package]] |
| 1534 | name = "hex-literal" | 1711 | name = "hex-literal" |
| 1535 | version = "0.4.1" | 1712 | version = "1.1.0" |
| 1536 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1713 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1537 | checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" | 1714 | checksum = "e712f64ec3850b98572bffac52e2c6f282b29fe6c5fa6d42334b30be438d95c1" |
| 1538 | 1715 | ||
| 1539 | [[package]] | 1716 | [[package]] |
| 1540 | name = "hkdf" | 1717 | name = "hkdf" |
| 1541 | version = "0.12.4" | 1718 | version = "0.13.0" |
| 1542 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1543 | checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" | 1720 | checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" |
| 1544 | dependencies = [ | 1721 | dependencies = [ |
| 1545 | "hmac", | 1722 | "hmac", |
| 1546 | ] | 1723 | ] |
| 1547 | 1724 | ||
| 1548 | [[package]] | 1725 | [[package]] |
| 1549 | name = "hmac" | 1726 | name = "hmac" |
| 1550 | version = "0.12.1" | 1727 | version = "0.13.0" |
| 1551 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1552 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" | ||
| 1553 | dependencies = [ | ||
| 1554 | "digest", | ||
| 1555 | ] | ||
| 1556 | |||
| 1557 | [[package]] | ||
| 1558 | name = "home" | ||
| 1559 | version = "0.5.12" | ||
| 1560 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1728 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1561 | checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" | 1729 | checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" |
| 1562 | dependencies = [ | 1730 | dependencies = [ |
| 1563 | "windows-sys 0.61.2", | 1731 | "digest 0.11.3", |
| 1564 | ] | 1732 | ] |
| 1565 | 1733 | ||
| 1566 | [[package]] | 1734 | [[package]] |
| @@ -1620,6 +1788,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 1620 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" | 1788 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" |
| 1621 | 1789 | ||
| 1622 | [[package]] | 1790 | [[package]] |
| 1791 | name = "hybrid-array" | ||
| 1792 | version = "0.4.14" | ||
| 1793 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1794 | checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" | ||
| 1795 | dependencies = [ | ||
| 1796 | "ctutils", | ||
| 1797 | "subtle", | ||
| 1798 | "typenum", | ||
| 1799 | "zeroize", | ||
| 1800 | ] | ||
| 1801 | |||
| 1802 | [[package]] | ||
| 1623 | name = "hyper" | 1803 | name = "hyper" |
| 1624 | version = "1.8.1" | 1804 | version = "1.8.1" |
| 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" | 1805 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1667,7 +1847,7 @@ dependencies = [ | |||
| 1667 | "js-sys", | 1847 | "js-sys", |
| 1668 | "log", | 1848 | "log", |
| 1669 | "wasm-bindgen", | 1849 | "wasm-bindgen", |
| 1670 | "windows-core 0.62.2", | 1850 | "windows-core", |
| 1671 | ] | 1851 | ] |
| 1672 | 1852 | ||
| 1673 | [[package]] | 1853 | [[package]] |
| @@ -1816,12 +1996,12 @@ dependencies = [ | |||
| 1816 | 1996 | ||
| 1817 | [[package]] | 1997 | [[package]] |
| 1818 | name = "inout" | 1998 | name = "inout" |
| 1819 | version = "0.1.4" | 1999 | version = "0.2.2" |
| 1820 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1821 | checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" | 2001 | checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7" |
| 1822 | dependencies = [ | 2002 | dependencies = [ |
| 1823 | "block-padding", | 2003 | "block-padding", |
| 1824 | "generic-array", | 2004 | "hybrid-array", |
| 1825 | ] | 2005 | ] |
| 1826 | 2006 | ||
| 1827 | [[package]] | 2007 | [[package]] |
| @@ -1838,6 +2018,18 @@ dependencies = [ | |||
| 1838 | ] | 2018 | ] |
| 1839 | 2019 | ||
| 1840 | [[package]] | 2020 | [[package]] |
| 2021 | name = "internal-russh-num-bigint" | ||
| 2022 | version = "0.5.0" | ||
| 2023 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2024 | checksum = "ae8e22120c32fb4d19ec55fba35015f57095cd95a2e3b732e44457f5915b2ee8" | ||
| 2025 | dependencies = [ | ||
| 2026 | "num-integer", | ||
| 2027 | "num-traits", | ||
| 2028 | "rand 0.10.2", | ||
| 2029 | "rand_core 0.10.1", | ||
| 2030 | ] | ||
| 2031 | |||
| 2032 | [[package]] | ||
| 1841 | name = "is-terminal" | 2033 | name = "is-terminal" |
| 1842 | version = "0.4.17" | 2034 | version = "0.4.17" |
| 1843 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2035 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1912,6 +2104,26 @@ dependencies = [ | |||
| 1912 | ] | 2104 | ] |
| 1913 | 2105 | ||
| 1914 | [[package]] | 2106 | [[package]] |
| 2107 | name = "keccak" | ||
| 2108 | version = "0.2.1" | ||
| 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2110 | checksum = "ffd9697dc4a9a62e2da93389f34400b77a28f0287711263cabb203b3ccb9c0e4" | ||
| 2111 | dependencies = [ | ||
| 2112 | "cfg-if", | ||
| 2113 | "cpufeatures 0.3.0", | ||
| 2114 | ] | ||
| 2115 | |||
| 2116 | [[package]] | ||
| 2117 | name = "kem" | ||
| 2118 | version = "0.3.0" | ||
| 2119 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2120 | checksum = "01737161ba802849cfd486b5bd209d38ba4943494c249a8126005170c7621edd" | ||
| 2121 | dependencies = [ | ||
| 2122 | "crypto-common 0.2.2", | ||
| 2123 | "rand_core 0.10.1", | ||
| 2124 | ] | ||
| 2125 | |||
| 2126 | [[package]] | ||
| 1915 | name = "lab" | 2127 | name = "lab" |
| 1916 | version = "0.11.0" | 2128 | version = "0.11.0" |
| 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2129 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -1922,9 +2134,6 @@ name = "lazy_static" | |||
| 1922 | version = "1.5.0" | 2134 | version = "1.5.0" |
| 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1924 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" | 2136 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" |
| 1925 | dependencies = [ | ||
| 1926 | "spin", | ||
| 1927 | ] | ||
| 1928 | 2137 | ||
| 1929 | [[package]] | 2138 | [[package]] |
| 1930 | name = "leb128fmt" | 2139 | name = "leb128fmt" |
| @@ -1934,9 +2143,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" | |||
| 1934 | 2143 | ||
| 1935 | [[package]] | 2144 | [[package]] |
| 1936 | name = "libc" | 2145 | name = "libc" |
| 1937 | version = "0.2.183" | 2146 | version = "0.2.189" |
| 1938 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2147 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 1939 | checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" | 2148 | checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" |
| 1940 | 2149 | ||
| 1941 | [[package]] | 2150 | [[package]] |
| 1942 | name = "libgit2-sys" | 2151 | name = "libgit2-sys" |
| @@ -1953,12 +2162,6 @@ dependencies = [ | |||
| 1953 | ] | 2162 | ] |
| 1954 | 2163 | ||
| 1955 | [[package]] | 2164 | [[package]] |
| 1956 | name = "libm" | ||
| 1957 | version = "0.2.16" | ||
| 1958 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 1959 | checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" | ||
| 1960 | |||
| 1961 | [[package]] | ||
| 1962 | name = "libredox" | 2165 | name = "libredox" |
| 1963 | version = "0.1.14" | 2166 | version = "0.1.14" |
| 1964 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2167 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2056,7 +2259,7 @@ version = "1.1.8" | |||
| 2056 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2259 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2057 | checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" | 2260 | checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" |
| 2058 | dependencies = [ | 2261 | dependencies = [ |
| 2059 | "nix", | 2262 | "nix 0.29.0", |
| 2060 | "winapi", | 2263 | "winapi", |
| 2061 | ] | 2264 | ] |
| 2062 | 2265 | ||
| @@ -2096,9 +2299,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" | |||
| 2096 | 2299 | ||
| 2097 | [[package]] | 2300 | [[package]] |
| 2098 | name = "md5" | 2301 | name = "md5" |
| 2099 | version = "0.7.0" | 2302 | version = "0.8.1" |
| 2100 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2101 | checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" | 2304 | checksum = "7ebb8d8732c6a6df3d8f032a82911cfc747e00efb95cc46e8d0acd5b5b88570c" |
| 2102 | 2305 | ||
| 2103 | [[package]] | 2306 | [[package]] |
| 2104 | name = "memchr" | 2307 | name = "memchr" |
| @@ -2156,6 +2359,31 @@ dependencies = [ | |||
| 2156 | ] | 2359 | ] |
| 2157 | 2360 | ||
| 2158 | [[package]] | 2361 | [[package]] |
| 2362 | name = "ml-kem" | ||
| 2363 | version = "0.3.2" | ||
| 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2365 | checksum = "5e15f3e5b957493873e396a66914e83e616b6afe335cdef7efe5c6e1216aba66" | ||
| 2366 | dependencies = [ | ||
| 2367 | "hybrid-array", | ||
| 2368 | "kem", | ||
| 2369 | "module-lattice", | ||
| 2370 | "pkcs8 0.11.0", | ||
| 2371 | "rand_core 0.10.1", | ||
| 2372 | "sha3 0.11.0", | ||
| 2373 | ] | ||
| 2374 | |||
| 2375 | [[package]] | ||
| 2376 | name = "module-lattice" | ||
| 2377 | version = "0.2.3" | ||
| 2378 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2379 | checksum = "0c61b87c9683ab7cb1c6871d261ad5479b6b10ceb52c4352aaca3b5d35a8febe" | ||
| 2380 | dependencies = [ | ||
| 2381 | "ctutils", | ||
| 2382 | "hybrid-array", | ||
| 2383 | "num-traits", | ||
| 2384 | ] | ||
| 2385 | |||
| 2386 | [[package]] | ||
| 2159 | name = "new_debug_unreachable" | 2387 | name = "new_debug_unreachable" |
| 2160 | version = "1.0.6" | 2388 | version = "1.0.6" |
| 2161 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2389 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2175,6 +2403,18 @@ dependencies = [ | |||
| 2175 | ] | 2403 | ] |
| 2176 | 2404 | ||
| 2177 | [[package]] | 2405 | [[package]] |
| 2406 | name = "nix" | ||
| 2407 | version = "0.31.3" | ||
| 2408 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2409 | checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" | ||
| 2410 | dependencies = [ | ||
| 2411 | "bitflags 2.11.0", | ||
| 2412 | "cfg-if", | ||
| 2413 | "cfg_aliases", | ||
| 2414 | "libc", | ||
| 2415 | ] | ||
| 2416 | |||
| 2417 | [[package]] | ||
| 2178 | name = "nom" | 2418 | name = "nom" |
| 2179 | version = "7.1.3" | 2419 | version = "7.1.3" |
| 2180 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2420 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2201,23 +2441,6 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" | |||
| 2201 | dependencies = [ | 2441 | dependencies = [ |
| 2202 | "num-integer", | 2442 | "num-integer", |
| 2203 | "num-traits", | 2443 | "num-traits", |
| 2204 | "rand 0.8.5", | ||
| 2205 | ] | ||
| 2206 | |||
| 2207 | [[package]] | ||
| 2208 | name = "num-bigint-dig" | ||
| 2209 | version = "0.8.6" | ||
| 2210 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2211 | checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" | ||
| 2212 | dependencies = [ | ||
| 2213 | "lazy_static", | ||
| 2214 | "libm", | ||
| 2215 | "num-integer", | ||
| 2216 | "num-iter", | ||
| 2217 | "num-traits", | ||
| 2218 | "rand 0.8.5", | ||
| 2219 | "smallvec", | ||
| 2220 | "zeroize", | ||
| 2221 | ] | 2444 | ] |
| 2222 | 2445 | ||
| 2223 | [[package]] | 2446 | [[package]] |
| @@ -2247,34 +2470,12 @@ dependencies = [ | |||
| 2247 | ] | 2470 | ] |
| 2248 | 2471 | ||
| 2249 | [[package]] | 2472 | [[package]] |
| 2250 | name = "num-iter" | ||
| 2251 | version = "0.1.45" | ||
| 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2253 | checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" | ||
| 2254 | dependencies = [ | ||
| 2255 | "autocfg", | ||
| 2256 | "num-integer", | ||
| 2257 | "num-traits", | ||
| 2258 | ] | ||
| 2259 | |||
| 2260 | [[package]] | ||
| 2261 | name = "num-traits" | 2473 | name = "num-traits" |
| 2262 | version = "0.2.19" | 2474 | version = "0.2.19" |
| 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2264 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" | 2476 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" |
| 2265 | dependencies = [ | 2477 | dependencies = [ |
| 2266 | "autocfg", | 2478 | "autocfg", |
| 2267 | "libm", | ||
| 2268 | ] | ||
| 2269 | |||
| 2270 | [[package]] | ||
| 2271 | name = "num_cpus" | ||
| 2272 | version = "1.17.0" | ||
| 2273 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2274 | checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" | ||
| 2275 | dependencies = [ | ||
| 2276 | "hermit-abi", | ||
| 2277 | "libc", | ||
| 2278 | ] | 2479 | ] |
| 2279 | 2480 | ||
| 2280 | [[package]] | 2481 | [[package]] |
| @@ -2305,12 +2506,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 2305 | checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" | 2506 | checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" |
| 2306 | 2507 | ||
| 2307 | [[package]] | 2508 | [[package]] |
| 2308 | name = "opaque-debug" | ||
| 2309 | version = "0.3.1" | ||
| 2310 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2311 | checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" | ||
| 2312 | |||
| 2313 | [[package]] | ||
| 2314 | name = "openssl-probe" | 2509 | name = "openssl-probe" |
| 2315 | version = "0.1.6" | 2510 | version = "0.1.6" |
| 2316 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2511 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2345,55 +2540,63 @@ dependencies = [ | |||
| 2345 | 2540 | ||
| 2346 | [[package]] | 2541 | [[package]] |
| 2347 | name = "p256" | 2542 | name = "p256" |
| 2348 | version = "0.13.2" | 2543 | version = "0.14.0" |
| 2349 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2544 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2350 | checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" | 2545 | checksum = "d2c9239b2dbc807adbbe147e8cf72ea7450c3a0aabe62cb8e75ff4ec22e1f72a" |
| 2351 | dependencies = [ | 2546 | dependencies = [ |
| 2352 | "ecdsa", | 2547 | "ecdsa", |
| 2353 | "elliptic-curve", | 2548 | "elliptic-curve", |
| 2549 | "primefield", | ||
| 2354 | "primeorder", | 2550 | "primeorder", |
| 2355 | "sha2", | 2551 | "sha2 0.11.0", |
| 2356 | ] | 2552 | ] |
| 2357 | 2553 | ||
| 2358 | [[package]] | 2554 | [[package]] |
| 2359 | name = "p384" | 2555 | name = "p384" |
| 2360 | version = "0.13.1" | 2556 | version = "0.14.0" |
| 2361 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2362 | checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" | 2558 | checksum = "d17b851e6b3e378ab4ecb07fa2ed23f4d15f075735f8fec9fa1e7bdce5f8301f" |
| 2363 | dependencies = [ | 2559 | dependencies = [ |
| 2364 | "ecdsa", | 2560 | "ecdsa", |
| 2365 | "elliptic-curve", | 2561 | "elliptic-curve", |
| 2562 | "fiat-crypto 0.3.0", | ||
| 2563 | "primefield", | ||
| 2366 | "primeorder", | 2564 | "primeorder", |
| 2367 | "sha2", | 2565 | "sha2 0.11.0", |
| 2368 | ] | 2566 | ] |
| 2369 | 2567 | ||
| 2370 | [[package]] | 2568 | [[package]] |
| 2371 | name = "p521" | 2569 | name = "p521" |
| 2372 | version = "0.13.3" | 2570 | version = "0.14.0" |
| 2373 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2571 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2374 | checksum = "0fc9e2161f1f215afdfce23677034ae137bbd45016a880c2eb3ba8eb95f085b2" | 2572 | checksum = "4ad64cc32c2dc466317c12ee5853e61f159f9eab1fe7efade0395dc2e7b43449" |
| 2375 | dependencies = [ | 2573 | dependencies = [ |
| 2376 | "base16ct", | 2574 | "base16ct", |
| 2377 | "ecdsa", | 2575 | "ecdsa", |
| 2378 | "elliptic-curve", | 2576 | "elliptic-curve", |
| 2577 | "primefield", | ||
| 2379 | "primeorder", | 2578 | "primeorder", |
| 2380 | "rand_core 0.6.4", | 2579 | "sha2 0.11.0", |
| 2381 | "sha2", | ||
| 2382 | ] | 2580 | ] |
| 2383 | 2581 | ||
| 2384 | [[package]] | 2582 | [[package]] |
| 2385 | name = "pageant" | 2583 | name = "pageant" |
| 2386 | version = "0.0.1" | 2584 | version = "0.2.1" |
| 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2585 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2388 | checksum = "032d6201d2fb765158455ae0d5a510c016bb6da7232e5040e39e9c8db12b0afc" | 2586 | checksum = "4f3a5ae18f65a85c67a77d18d42d3606c07948e3c17c1e5f74852b26589e88a5" |
| 2389 | dependencies = [ | 2587 | dependencies = [ |
| 2588 | "base16ct", | ||
| 2589 | "byteorder", | ||
| 2390 | "bytes", | 2590 | "bytes", |
| 2391 | "delegate", | 2591 | "delegate", |
| 2392 | "futures", | 2592 | "futures", |
| 2393 | "rand 0.8.5", | 2593 | "log", |
| 2394 | "thiserror 1.0.69", | 2594 | "rand 0.10.2", |
| 2595 | "sha2 0.11.0", | ||
| 2596 | "thiserror 2.0.18", | ||
| 2395 | "tokio", | 2597 | "tokio", |
| 2396 | "windows", | 2598 | "windows", |
| 2599 | "windows-strings", | ||
| 2397 | ] | 2600 | ] |
| 2398 | 2601 | ||
| 2399 | [[package]] | 2602 | [[package]] |
| @@ -2420,20 +2623,29 @@ dependencies = [ | |||
| 2420 | ] | 2623 | ] |
| 2421 | 2624 | ||
| 2422 | [[package]] | 2625 | [[package]] |
| 2626 | name = "password-hash" | ||
| 2627 | version = "0.6.1" | ||
| 2628 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2629 | checksum = "aab41826031698d6ffcd9cff78ef56ef998e39dc7e5067cdfebe373842d4723b" | ||
| 2630 | dependencies = [ | ||
| 2631 | "phc", | ||
| 2632 | ] | ||
| 2633 | |||
| 2634 | [[package]] | ||
| 2423 | name = "pbkdf2" | 2635 | name = "pbkdf2" |
| 2424 | version = "0.12.2" | 2636 | version = "0.13.0" |
| 2425 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2426 | checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" | 2638 | checksum = "112d82ceb8c5bf524d9af484d4e4970c9fd5a0cc15ba14ad93dccd28873b0629" |
| 2427 | dependencies = [ | 2639 | dependencies = [ |
| 2428 | "digest", | 2640 | "digest 0.11.3", |
| 2429 | "hmac", | 2641 | "hmac", |
| 2430 | ] | 2642 | ] |
| 2431 | 2643 | ||
| 2432 | [[package]] | 2644 | [[package]] |
| 2433 | name = "pem-rfc7468" | 2645 | name = "pem-rfc7468" |
| 2434 | version = "0.7.0" | 2646 | version = "1.0.0" |
| 2435 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2647 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2436 | checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" | 2648 | checksum = "a6305423e0e7738146434843d1694d621cce767262b2a86910beab705e4493d9" |
| 2437 | dependencies = [ | 2649 | dependencies = [ |
| 2438 | "base64ct", | 2650 | "base64ct", |
| 2439 | ] | 2651 | ] |
| @@ -2484,7 +2696,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 2484 | checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" | 2696 | checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" |
| 2485 | dependencies = [ | 2697 | dependencies = [ |
| 2486 | "pest", | 2698 | "pest", |
| 2487 | "sha2", | 2699 | "sha2 0.10.9", |
| 2700 | ] | ||
| 2701 | |||
| 2702 | [[package]] | ||
| 2703 | name = "phc" | ||
| 2704 | version = "0.6.1" | ||
| 2705 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2706 | checksum = "44dc769b75f93afdddd8c7fa12d685292ddeff1e66f7f0f3a234cf1818afe892" | ||
| 2707 | dependencies = [ | ||
| 2708 | "base64ct", | ||
| 2709 | "ctutils", | ||
| 2488 | ] | 2710 | ] |
| 2489 | 2711 | ||
| 2490 | [[package]] | 2712 | [[package]] |
| @@ -2553,28 +2775,29 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" | |||
| 2553 | 2775 | ||
| 2554 | [[package]] | 2776 | [[package]] |
| 2555 | name = "pkcs1" | 2777 | name = "pkcs1" |
| 2556 | version = "0.7.5" | 2778 | version = "0.8.0-rc.4" |
| 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2779 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2558 | checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" | 2780 | checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" |
| 2559 | dependencies = [ | 2781 | dependencies = [ |
| 2560 | "der", | 2782 | "der 0.8.1", |
| 2561 | "pkcs8", | 2783 | "spki 0.8.0", |
| 2562 | "spki", | ||
| 2563 | ] | 2784 | ] |
| 2564 | 2785 | ||
| 2565 | [[package]] | 2786 | [[package]] |
| 2566 | name = "pkcs5" | 2787 | name = "pkcs5" |
| 2567 | version = "0.7.1" | 2788 | version = "0.8.1" |
| 2568 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2789 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2569 | checksum = "e847e2c91a18bfa887dd028ec33f2fe6f25db77db3619024764914affe8b69a6" | 2790 | checksum = "63d440a804ec8d6fafbb6b84471e013286658d373248927692ab3366686220ca" |
| 2570 | dependencies = [ | 2791 | dependencies = [ |
| 2571 | "aes", | 2792 | "aes", |
| 2793 | "aes-gcm", | ||
| 2572 | "cbc", | 2794 | "cbc", |
| 2573 | "der", | 2795 | "der 0.8.1", |
| 2574 | "pbkdf2", | 2796 | "pbkdf2", |
| 2797 | "rand_core 0.10.1", | ||
| 2575 | "scrypt", | 2798 | "scrypt", |
| 2576 | "sha2", | 2799 | "sha2 0.11.0", |
| 2577 | "spki", | 2800 | "spki 0.8.0", |
| 2578 | ] | 2801 | ] |
| 2579 | 2802 | ||
| 2580 | [[package]] | 2803 | [[package]] |
| @@ -2583,10 +2806,20 @@ version = "0.10.2" | |||
| 2583 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2806 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2584 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" | 2807 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" |
| 2585 | dependencies = [ | 2808 | dependencies = [ |
| 2586 | "der", | 2809 | "der 0.7.10", |
| 2810 | "spki 0.7.3", | ||
| 2811 | ] | ||
| 2812 | |||
| 2813 | [[package]] | ||
| 2814 | name = "pkcs8" | ||
| 2815 | version = "0.11.0" | ||
| 2816 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2817 | checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" | ||
| 2818 | dependencies = [ | ||
| 2819 | "der 0.8.1", | ||
| 2587 | "pkcs5", | 2820 | "pkcs5", |
| 2588 | "rand_core 0.6.4", | 2821 | "rand_core 0.10.1", |
| 2589 | "spki", | 2822 | "spki 0.8.0", |
| 2590 | ] | 2823 | ] |
| 2591 | 2824 | ||
| 2592 | [[package]] | 2825 | [[package]] |
| @@ -2625,24 +2858,23 @@ dependencies = [ | |||
| 2625 | 2858 | ||
| 2626 | [[package]] | 2859 | [[package]] |
| 2627 | name = "poly1305" | 2860 | name = "poly1305" |
| 2628 | version = "0.8.0" | 2861 | version = "0.9.1" |
| 2629 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2862 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2630 | checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" | 2863 | checksum = "6e2d0073b297041425c7c3df6eb4792d598a15323fe63346852b092eca02904c" |
| 2631 | dependencies = [ | 2864 | dependencies = [ |
| 2632 | "cpufeatures", | 2865 | "cpufeatures 0.3.0", |
| 2633 | "opaque-debug", | ||
| 2634 | "universal-hash", | 2866 | "universal-hash", |
| 2867 | "zeroize", | ||
| 2635 | ] | 2868 | ] |
| 2636 | 2869 | ||
| 2637 | [[package]] | 2870 | [[package]] |
| 2638 | name = "polyval" | 2871 | name = "polyval" |
| 2639 | version = "0.6.2" | 2872 | version = "0.7.3" |
| 2640 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2873 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2641 | checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" | 2874 | checksum = "f0fa31d631f2b2cb2a544d0aa321ce847a94764d701ca2becc411138b93d49cd" |
| 2642 | dependencies = [ | 2875 | dependencies = [ |
| 2643 | "cfg-if", | 2876 | "cpubits", |
| 2644 | "cpufeatures", | 2877 | "cpufeatures 0.3.0", |
| 2645 | "opaque-debug", | ||
| 2646 | "universal-hash", | 2878 | "universal-hash", |
| 2647 | ] | 2879 | ] |
| 2648 | 2880 | ||
| @@ -2693,12 +2925,30 @@ dependencies = [ | |||
| 2693 | ] | 2925 | ] |
| 2694 | 2926 | ||
| 2695 | [[package]] | 2927 | [[package]] |
| 2928 | name = "primefield" | ||
| 2929 | version = "0.14.0" | ||
| 2930 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 2931 | checksum = "c555a6e4eb7d4e158fcb028c835c3b8642206ddc279b5c6b202ef9a8bdb592f4" | ||
| 2932 | dependencies = [ | ||
| 2933 | "crypto-bigint", | ||
| 2934 | "crypto-common 0.2.2", | ||
| 2935 | "ff", | ||
| 2936 | "rand_core 0.10.1", | ||
| 2937 | "subtle", | ||
| 2938 | "zeroize", | ||
| 2939 | ] | ||
| 2940 | |||
| 2941 | [[package]] | ||
| 2696 | name = "primeorder" | 2942 | name = "primeorder" |
| 2697 | version = "0.13.6" | 2943 | version = "0.14.0" |
| 2698 | source = "registry+https://github.com/rust-lang/crates.io-index" | 2944 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2699 | checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" | 2945 | checksum = "5c9f42978c78a00e3d68f69fc03e57a234debae69da4020a4fb588fcdcd07b06" |
| 2700 | dependencies = [ | 2946 | dependencies = [ |
| 2701 | "elliptic-curve", | 2947 | "elliptic-curve", |
| 2948 | "once_cell", | ||
| 2949 | "primefield", | ||
| 2950 | "serdect", | ||
| 2951 | "wnaf", | ||
| 2702 | ] | 2952 | ] |
| 2703 | 2953 | ||
| 2704 | [[package]] | 2954 | [[package]] |
| @@ -2721,7 +2971,7 @@ dependencies = [ | |||
| 2721 | "bitflags 2.11.0", | 2971 | "bitflags 2.11.0", |
| 2722 | "num-traits", | 2972 | "num-traits", |
| 2723 | "rand 0.9.2", | 2973 | "rand 0.9.2", |
| 2724 | "rand_chacha 0.9.0", | 2974 | "rand_chacha", |
| 2725 | "rand_xorshift", | 2975 | "rand_xorshift", |
| 2726 | "regex-syntax", | 2976 | "regex-syntax", |
| 2727 | "rusty-fork", | 2977 | "rusty-fork", |
| @@ -2780,8 +3030,6 @@ version = "0.8.5" | |||
| 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3030 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2781 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" | 3031 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" |
| 2782 | dependencies = [ | 3032 | dependencies = [ |
| 2783 | "libc", | ||
| 2784 | "rand_chacha 0.3.1", | ||
| 2785 | "rand_core 0.6.4", | 3033 | "rand_core 0.6.4", |
| 2786 | ] | 3034 | ] |
| 2787 | 3035 | ||
| @@ -2791,18 +3039,19 @@ version = "0.9.2" | |||
| 2791 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3039 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2792 | checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" | 3040 | checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" |
| 2793 | dependencies = [ | 3041 | dependencies = [ |
| 2794 | "rand_chacha 0.9.0", | 3042 | "rand_chacha", |
| 2795 | "rand_core 0.9.5", | 3043 | "rand_core 0.9.5", |
| 2796 | ] | 3044 | ] |
| 2797 | 3045 | ||
| 2798 | [[package]] | 3046 | [[package]] |
| 2799 | name = "rand_chacha" | 3047 | name = "rand" |
| 2800 | version = "0.3.1" | 3048 | version = "0.10.2" |
| 2801 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3049 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 2802 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" | 3050 | checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" |
| 2803 | dependencies = [ | 3051 | dependencies = [ |
| 2804 | "ppv-lite86", | 3052 | "chacha20", |
| 2805 | "rand_core 0.6.4", | 3053 | "getrandom 0.4.2", |
| 3054 | "rand_core 0.10.1", | ||
| 2806 | ] | 3055 | ] |
| 2807 | 3056 | ||
| 2808 | [[package]] | 3057 | [[package]] |
| @@ -2834,6 +3083,12 @@ dependencies = [ | |||
| 2834 | ] | 3083 | ] |
| 2835 | 3084 | ||
| 2836 | [[package]] | 3085 | [[package]] |
| 3086 | name = "rand_core" | ||
| 3087 | version = "0.10.1" | ||
| 3088 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3089 | checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" | ||
| 3090 | |||
| 3091 | [[package]] | ||
| 2837 | name = "rand_xorshift" | 3092 | name = "rand_xorshift" |
| 2838 | version = "0.4.0" | 3093 | version = "0.4.0" |
| 2839 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3094 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -2998,12 +3253,12 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" | |||
| 2998 | 3253 | ||
| 2999 | [[package]] | 3254 | [[package]] |
| 3000 | name = "rfc6979" | 3255 | name = "rfc6979" |
| 3001 | version = "0.4.0" | 3256 | version = "0.6.0" |
| 3002 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3257 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3003 | checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" | 3258 | checksum = "b4a459cddafb3fe76b31fd8f1108007566c40301feb64dc7b54656eb7388172b" |
| 3004 | dependencies = [ | 3259 | dependencies = [ |
| 3260 | "crypto-bigint", | ||
| 3005 | "hmac", | 3261 | "hmac", |
| 3006 | "subtle", | ||
| 3007 | ] | 3262 | ] |
| 3008 | 3263 | ||
| 3009 | [[package]] | 3264 | [[package]] |
| @@ -3014,107 +3269,63 @@ checksum = "dbf2048e0e979efb2ca7b91c4f1a8d77c91853e9b987c94c555668a8994915ad" | |||
| 3014 | 3269 | ||
| 3015 | [[package]] | 3270 | [[package]] |
| 3016 | name = "rsa" | 3271 | name = "rsa" |
| 3017 | version = "0.9.10" | 3272 | version = "0.10.0-rc.18" |
| 3018 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3273 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3019 | checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" | 3274 | checksum = "30b2aa4ba0d89f73d1e332df05be0eeab8840351c36ca5654341dfdb57bb3caf" |
| 3020 | dependencies = [ | 3275 | dependencies = [ |
| 3021 | "const-oid", | 3276 | "const-oid 0.10.2", |
| 3022 | "digest", | 3277 | "crypto-bigint", |
| 3023 | "num-bigint-dig", | 3278 | "crypto-primes", |
| 3024 | "num-integer", | 3279 | "digest 0.11.3", |
| 3025 | "num-traits", | ||
| 3026 | "pkcs1", | 3280 | "pkcs1", |
| 3027 | "pkcs8", | 3281 | "pkcs8 0.11.0", |
| 3028 | "rand_core 0.6.4", | 3282 | "rand_core 0.10.1", |
| 3029 | "sha2", | 3283 | "sha2 0.11.0", |
| 3030 | "signature", | 3284 | "signature 3.0.0", |
| 3031 | "spki", | 3285 | "spki 0.8.0", |
| 3032 | "subtle", | ||
| 3033 | "zeroize", | 3286 | "zeroize", |
| 3034 | ] | 3287 | ] |
| 3035 | 3288 | ||
| 3036 | [[package]] | 3289 | [[package]] |
| 3037 | name = "russh" | 3290 | name = "russh" |
| 3038 | version = "0.46.0" | 3291 | version = "0.62.5" |
| 3039 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3040 | checksum = "c536b90d8e2468d8dedc8de2369383c101325e23fffa3a30de713032862a11d4" | 3293 | checksum = "da7c230e0ed9cbeb92fbad6c8848985d6df2a1464c0dc247a021abd666e9005e" |
| 3041 | dependencies = [ | 3294 | dependencies = [ |
| 3042 | "aes", | 3295 | "aes", |
| 3043 | "aes-gcm", | 3296 | "aws-lc-rs", |
| 3044 | "async-trait", | ||
| 3045 | "bitflags 2.11.0", | 3297 | "bitflags 2.11.0", |
| 3046 | "byteorder", | ||
| 3047 | "cbc", | ||
| 3048 | "chacha20", | ||
| 3049 | "ctr", | ||
| 3050 | "curve25519-dalek", | ||
| 3051 | "des", | ||
| 3052 | "digest", | ||
| 3053 | "elliptic-curve", | ||
| 3054 | "flate2", | ||
| 3055 | "futures", | ||
| 3056 | "generic-array", | ||
| 3057 | "hex-literal", | ||
| 3058 | "hmac", | ||
| 3059 | "log", | ||
| 3060 | "num-bigint", | ||
| 3061 | "once_cell", | ||
| 3062 | "p256", | ||
| 3063 | "p384", | ||
| 3064 | "p521", | ||
| 3065 | "poly1305", | ||
| 3066 | "rand 0.8.5", | ||
| 3067 | "rand_core 0.6.4", | ||
| 3068 | "russh-cryptovec", | ||
| 3069 | "russh-keys", | ||
| 3070 | "russh-sftp", | ||
| 3071 | "russh-util", | ||
| 3072 | "sha1", | ||
| 3073 | "sha2", | ||
| 3074 | "ssh-encoding", | ||
| 3075 | "ssh-key", | ||
| 3076 | "subtle", | ||
| 3077 | "thiserror 1.0.69", | ||
| 3078 | "tokio", | ||
| 3079 | ] | ||
| 3080 | |||
| 3081 | [[package]] | ||
| 3082 | name = "russh-cryptovec" | ||
| 3083 | version = "0.7.3" | ||
| 3084 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3085 | checksum = "fadd2c0ab350e21c66556f94ee06f766d8bdae3213857ba7610bfd8e10e51880" | ||
| 3086 | dependencies = [ | ||
| 3087 | "libc", | ||
| 3088 | "winapi", | ||
| 3089 | ] | ||
| 3090 | |||
| 3091 | [[package]] | ||
| 3092 | name = "russh-keys" | ||
| 3093 | version = "0.46.0" | ||
| 3094 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3095 | checksum = "6e3db166c8678c824627c2c46f619ed5ce4ae33f38a35403c62f6ab8f3985867" | ||
| 3096 | dependencies = [ | ||
| 3097 | "aes", | ||
| 3098 | "async-trait", | ||
| 3099 | "bcrypt-pbkdf", | ||
| 3100 | "block-padding", | 3298 | "block-padding", |
| 3101 | "byteorder", | 3299 | "byteorder", |
| 3300 | "bytes", | ||
| 3102 | "cbc", | 3301 | "cbc", |
| 3302 | "cipher", | ||
| 3303 | "crypto-bigint", | ||
| 3103 | "ctr", | 3304 | "ctr", |
| 3305 | "curve25519-dalek 5.0.0", | ||
| 3104 | "data-encoding", | 3306 | "data-encoding", |
| 3105 | "der", | 3307 | "delegate", |
| 3106 | "digest", | 3308 | "der 0.8.1", |
| 3309 | "digest 0.11.3", | ||
| 3107 | "ecdsa", | 3310 | "ecdsa", |
| 3108 | "ed25519-dalek", | 3311 | "ed25519-dalek 3.0.0", |
| 3109 | "elliptic-curve", | 3312 | "elliptic-curve", |
| 3313 | "enum_dispatch", | ||
| 3314 | "flate2", | ||
| 3110 | "futures", | 3315 | "futures", |
| 3111 | "getrandom 0.2.17", | 3316 | "generic-array 1.4.4", |
| 3317 | "getrandom 0.4.2", | ||
| 3318 | "ghash", | ||
| 3319 | "hex-literal", | ||
| 3112 | "hmac", | 3320 | "hmac", |
| 3113 | "home", | ||
| 3114 | "inout", | 3321 | "inout", |
| 3322 | "internal-russh-num-bigint", | ||
| 3323 | "keccak", | ||
| 3115 | "log", | 3324 | "log", |
| 3116 | "md5", | 3325 | "md5", |
| 3117 | "num-integer", | 3326 | "ml-kem", |
| 3327 | "module-lattice", | ||
| 3328 | "num-bigint", | ||
| 3118 | "p256", | 3329 | "p256", |
| 3119 | "p384", | 3330 | "p384", |
| 3120 | "p521", | 3331 | "p521", |
| @@ -3122,48 +3333,48 @@ dependencies = [ | |||
| 3122 | "pbkdf2", | 3333 | "pbkdf2", |
| 3123 | "pkcs1", | 3334 | "pkcs1", |
| 3124 | "pkcs5", | 3335 | "pkcs5", |
| 3125 | "pkcs8", | 3336 | "pkcs8 0.11.0", |
| 3126 | "rand 0.8.5", | 3337 | "polyval", |
| 3127 | "rand_core 0.6.4", | 3338 | "rand 0.10.2", |
| 3339 | "rand_core 0.10.1", | ||
| 3128 | "rsa", | 3340 | "rsa", |
| 3129 | "russh-cryptovec", | 3341 | "russh-cryptovec", |
| 3130 | "russh-util", | 3342 | "russh-util", |
| 3343 | "salsa20", | ||
| 3344 | "scrypt", | ||
| 3131 | "sec1", | 3345 | "sec1", |
| 3132 | "serde", | ||
| 3133 | "sha1", | 3346 | "sha1", |
| 3134 | "sha2", | 3347 | "sha2 0.11.0", |
| 3135 | "spki", | 3348 | "sha3 0.12.0", |
| 3349 | "signature 3.0.0", | ||
| 3350 | "spki 0.8.0", | ||
| 3136 | "ssh-encoding", | 3351 | "ssh-encoding", |
| 3137 | "ssh-key", | 3352 | "ssh-key", |
| 3138 | "thiserror 1.0.69", | 3353 | "subtle", |
| 3354 | "thiserror 2.0.18", | ||
| 3139 | "tokio", | 3355 | "tokio", |
| 3140 | "tokio-stream", | ||
| 3141 | "typenum", | 3356 | "typenum", |
| 3357 | "universal-hash", | ||
| 3142 | "zeroize", | 3358 | "zeroize", |
| 3143 | ] | 3359 | ] |
| 3144 | 3360 | ||
| 3145 | [[package]] | 3361 | [[package]] |
| 3146 | name = "russh-sftp" | 3362 | name = "russh-cryptovec" |
| 3147 | version = "2.1.1" | 3363 | version = "0.62.0" |
| 3148 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3364 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3149 | checksum = "3bb94393cafad0530145b8f626d8687f1ee1dedb93d7ba7740d6ae81868b13b5" | 3365 | checksum = "3aec6cb630dbe85d72ffd7bcd95f07e1bd69f9f270ee8adfa1afe443a6331438" |
| 3150 | dependencies = [ | 3366 | dependencies = [ |
| 3151 | "bitflags 2.11.0", | ||
| 3152 | "bytes", | ||
| 3153 | "chrono", | ||
| 3154 | "flurry", | ||
| 3155 | "log", | 3367 | "log", |
| 3156 | "serde", | 3368 | "nix 0.31.3", |
| 3157 | "thiserror 2.0.18", | 3369 | "ssh-encoding", |
| 3158 | "tokio", | 3370 | "windows-sys 0.61.2", |
| 3159 | "tokio-util", | ||
| 3160 | ] | 3371 | ] |
| 3161 | 3372 | ||
| 3162 | [[package]] | 3373 | [[package]] |
| 3163 | name = "russh-util" | 3374 | name = "russh-util" |
| 3164 | version = "0.46.0" | 3375 | version = "0.52.0" |
| 3165 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3376 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3166 | checksum = "63aeb9d2b74f8f38befdc0c5172d5ffcf58f3d2ffcb423f3b6cdfe2c2d747b80" | 3377 | checksum = "668424a5dde0bcb45b55ba7de8476b93831b4aa2fa6947e145f3b053e22c60b6" |
| 3167 | dependencies = [ | 3378 | dependencies = [ |
| 3168 | "chrono", | 3379 | "chrono", |
| 3169 | "tokio", | 3380 | "tokio", |
| @@ -3225,10 +3436,11 @@ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" | |||
| 3225 | 3436 | ||
| 3226 | [[package]] | 3437 | [[package]] |
| 3227 | name = "salsa20" | 3438 | name = "salsa20" |
| 3228 | version = "0.10.2" | 3439 | version = "0.11.0" |
| 3229 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3440 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3230 | checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" | 3441 | checksum = "2f874456e72520ff1375a06c588eaf074b0f01f9e9e1aada45bd9b7954a6e42c" |
| 3231 | dependencies = [ | 3442 | dependencies = [ |
| 3443 | "cfg-if", | ||
| 3232 | "cipher", | 3444 | "cipher", |
| 3233 | ] | 3445 | ] |
| 3234 | 3446 | ||
| @@ -3249,36 +3461,31 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" | |||
| 3249 | 3461 | ||
| 3250 | [[package]] | 3462 | [[package]] |
| 3251 | name = "scrypt" | 3463 | name = "scrypt" |
| 3252 | version = "0.11.0" | 3464 | version = "0.12.0" |
| 3253 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3465 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3254 | checksum = "0516a385866c09368f0b5bcd1caff3366aace790fcd46e2bb032697bb172fd1f" | 3466 | checksum = "d87af57419b594aa23fa95f09f0e06d80d84ba01c26148c43844cad6ff4485f0" |
| 3255 | dependencies = [ | 3467 | dependencies = [ |
| 3468 | "cfg-if", | ||
| 3256 | "pbkdf2", | 3469 | "pbkdf2", |
| 3257 | "salsa20", | 3470 | "salsa20", |
| 3258 | "sha2", | 3471 | "sha2 0.11.0", |
| 3259 | ] | 3472 | ] |
| 3260 | 3473 | ||
| 3261 | [[package]] | 3474 | [[package]] |
| 3262 | name = "sec1" | 3475 | name = "sec1" |
| 3263 | version = "0.7.3" | 3476 | version = "0.8.1" |
| 3264 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3477 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3265 | checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" | 3478 | checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" |
| 3266 | dependencies = [ | 3479 | dependencies = [ |
| 3267 | "base16ct", | 3480 | "base16ct", |
| 3268 | "der", | 3481 | "ctutils", |
| 3269 | "generic-array", | 3482 | "der 0.8.1", |
| 3270 | "pkcs8", | 3483 | "hybrid-array", |
| 3271 | "subtle", | 3484 | "subtle", |
| 3272 | "zeroize", | 3485 | "zeroize", |
| 3273 | ] | 3486 | ] |
| 3274 | 3487 | ||
| 3275 | [[package]] | 3488 | [[package]] |
| 3276 | name = "seize" | ||
| 3277 | version = "0.3.3" | ||
| 3278 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3279 | checksum = "689224d06523904ebcc9b482c6a3f4f7fb396096645c4cd10c0d2ff7371a34d3" | ||
| 3280 | |||
| 3281 | [[package]] | ||
| 3282 | name = "semver" | 3489 | name = "semver" |
| 3283 | version = "1.0.27" | 3490 | version = "1.0.27" |
| 3284 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3491 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -3360,14 +3567,24 @@ dependencies = [ | |||
| 3360 | ] | 3567 | ] |
| 3361 | 3568 | ||
| 3362 | [[package]] | 3569 | [[package]] |
| 3570 | name = "serdect" | ||
| 3571 | version = "0.4.3" | ||
| 3572 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3573 | checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e" | ||
| 3574 | dependencies = [ | ||
| 3575 | "base16ct", | ||
| 3576 | "serde", | ||
| 3577 | ] | ||
| 3578 | |||
| 3579 | [[package]] | ||
| 3363 | name = "sha1" | 3580 | name = "sha1" |
| 3364 | version = "0.10.6" | 3581 | version = "0.11.0" |
| 3365 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3582 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3366 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" | 3583 | checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" |
| 3367 | dependencies = [ | 3584 | dependencies = [ |
| 3368 | "cfg-if", | 3585 | "cfg-if", |
| 3369 | "cpufeatures", | 3586 | "cpufeatures 0.3.0", |
| 3370 | "digest", | 3587 | "digest 0.11.3", |
| 3371 | ] | 3588 | ] |
| 3372 | 3589 | ||
| 3373 | [[package]] | 3590 | [[package]] |
| @@ -3377,8 +3594,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 3377 | checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" | 3594 | checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" |
| 3378 | dependencies = [ | 3595 | dependencies = [ |
| 3379 | "cfg-if", | 3596 | "cfg-if", |
| 3380 | "cpufeatures", | 3597 | "cpufeatures 0.2.17", |
| 3381 | "digest", | 3598 | "digest 0.10.7", |
| 3599 | ] | ||
| 3600 | |||
| 3601 | [[package]] | ||
| 3602 | name = "sha2" | ||
| 3603 | version = "0.11.0" | ||
| 3604 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3605 | checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" | ||
| 3606 | dependencies = [ | ||
| 3607 | "cfg-if", | ||
| 3608 | "cpufeatures 0.3.0", | ||
| 3609 | "digest 0.11.3", | ||
| 3610 | ] | ||
| 3611 | |||
| 3612 | [[package]] | ||
| 3613 | name = "sha3" | ||
| 3614 | version = "0.11.0" | ||
| 3615 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3616 | checksum = "be176f1a57ce4e3d31c1a166222d9768de5954f811601fb7ca06fc8203905ce1" | ||
| 3617 | dependencies = [ | ||
| 3618 | "digest 0.11.3", | ||
| 3619 | "keccak", | ||
| 3620 | ] | ||
| 3621 | |||
| 3622 | [[package]] | ||
| 3623 | name = "sha3" | ||
| 3624 | version = "0.12.0" | ||
| 3625 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3626 | checksum = "bc9bad02c26382724b2d2692c6f179285e4b54eeecd7968f52a50059c3c11759" | ||
| 3627 | dependencies = [ | ||
| 3628 | "digest 0.11.3", | ||
| 3629 | "keccak", | ||
| 3630 | "sponge-cursor", | ||
| 3382 | ] | 3631 | ] |
| 3383 | 3632 | ||
| 3384 | [[package]] | 3633 | [[package]] |
| @@ -3433,11 +3682,20 @@ version = "2.2.0" | |||
| 3433 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3682 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3434 | checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" | 3683 | checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" |
| 3435 | dependencies = [ | 3684 | dependencies = [ |
| 3436 | "digest", | ||
| 3437 | "rand_core 0.6.4", | 3685 | "rand_core 0.6.4", |
| 3438 | ] | 3686 | ] |
| 3439 | 3687 | ||
| 3440 | [[package]] | 3688 | [[package]] |
| 3689 | name = "signature" | ||
| 3690 | version = "3.0.0" | ||
| 3691 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3692 | checksum = "28d567dcbaf0049cb8ac2608a76cd95ff9e4412e1899d389ee400918ca7537f5" | ||
| 3693 | dependencies = [ | ||
| 3694 | "digest 0.11.3", | ||
| 3695 | "rand_core 0.10.1", | ||
| 3696 | ] | ||
| 3697 | |||
| 3698 | [[package]] | ||
| 3441 | name = "simd-adler32" | 3699 | name = "simd-adler32" |
| 3442 | version = "0.3.9" | 3700 | version = "0.3.9" |
| 3443 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3701 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -3472,69 +3730,87 @@ dependencies = [ | |||
| 3472 | ] | 3730 | ] |
| 3473 | 3731 | ||
| 3474 | [[package]] | 3732 | [[package]] |
| 3475 | name = "spin" | 3733 | name = "spki" |
| 3476 | version = "0.9.8" | 3734 | version = "0.7.3" |
| 3477 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3735 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3478 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" | 3736 | checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" |
| 3737 | dependencies = [ | ||
| 3738 | "base64ct", | ||
| 3739 | "der 0.7.10", | ||
| 3740 | ] | ||
| 3479 | 3741 | ||
| 3480 | [[package]] | 3742 | [[package]] |
| 3481 | name = "spki" | 3743 | name = "spki" |
| 3482 | version = "0.7.3" | 3744 | version = "0.8.0" |
| 3483 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3745 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3484 | checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" | 3746 | checksum = "1d9efca8738c78ee9484207732f728b1ef517bbb1833d6fc0879ca898a522f6f" |
| 3485 | dependencies = [ | 3747 | dependencies = [ |
| 3486 | "base64ct", | 3748 | "base64ct", |
| 3487 | "der", | 3749 | "der 0.8.1", |
| 3488 | ] | 3750 | ] |
| 3489 | 3751 | ||
| 3490 | [[package]] | 3752 | [[package]] |
| 3753 | name = "sponge-cursor" | ||
| 3754 | version = "0.1.0" | ||
| 3755 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3756 | checksum = "3a0219bd7d979d58245a4f41f695e1ac9f8befdffadd7f61f1bae9e39abc6620" | ||
| 3757 | |||
| 3758 | [[package]] | ||
| 3491 | name = "ssh-cipher" | 3759 | name = "ssh-cipher" |
| 3492 | version = "0.2.0" | 3760 | version = "0.3.0" |
| 3493 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3761 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3494 | checksum = "caac132742f0d33c3af65bfcde7f6aa8f62f0e991d80db99149eb9d44708784f" | 3762 | checksum = "d801accda99469cde6d73da741422610fdf6508a72d9a69d1b55cb241c720597" |
| 3495 | dependencies = [ | 3763 | dependencies = [ |
| 3764 | "aead", | ||
| 3496 | "aes", | 3765 | "aes", |
| 3497 | "aes-gcm", | 3766 | "aes-gcm", |
| 3498 | "cbc", | ||
| 3499 | "chacha20", | 3767 | "chacha20", |
| 3500 | "cipher", | 3768 | "cipher", |
| 3501 | "ctr", | 3769 | "ctutils", |
| 3770 | "des", | ||
| 3502 | "poly1305", | 3771 | "poly1305", |
| 3503 | "ssh-encoding", | 3772 | "ssh-encoding", |
| 3504 | "subtle", | 3773 | "zeroize", |
| 3505 | ] | 3774 | ] |
| 3506 | 3775 | ||
| 3507 | [[package]] | 3776 | [[package]] |
| 3508 | name = "ssh-encoding" | 3777 | name = "ssh-encoding" |
| 3509 | version = "0.2.0" | 3778 | version = "0.3.0" |
| 3510 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3779 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3511 | checksum = "eb9242b9ef4108a78e8cd1a2c98e193ef372437f8c22be363075233321dd4a15" | 3780 | checksum = "7b54d0ed0498daf3f78d82e00e28c8eec9d75a067c4cfbcc7a0f7d0f4077749e" |
| 3512 | dependencies = [ | 3781 | dependencies = [ |
| 3513 | "base64ct", | 3782 | "base64ct", |
| 3783 | "bytes", | ||
| 3784 | "crypto-bigint", | ||
| 3785 | "ctutils", | ||
| 3786 | "digest 0.11.3", | ||
| 3514 | "pem-rfc7468", | 3787 | "pem-rfc7468", |
| 3515 | "sha2", | 3788 | "zeroize", |
| 3516 | ] | 3789 | ] |
| 3517 | 3790 | ||
| 3518 | [[package]] | 3791 | [[package]] |
| 3519 | name = "ssh-key" | 3792 | name = "ssh-key" |
| 3520 | version = "0.6.7" | 3793 | version = "0.7.0-rc.11" |
| 3521 | source = "registry+https://github.com/rust-lang/crates.io-index" | 3794 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 3522 | checksum = "3b86f5297f0f04d08cabaa0f6bff7cb6aec4d9c3b49d87990d63da9d9156a8c3" | 3795 | checksum = "f9a32fae177b74a22aa9c5b01bf7e68b33545be32d9e381e248058d2adc15ce3" |
| 3523 | dependencies = [ | 3796 | dependencies = [ |
| 3797 | "argon2", | ||
| 3524 | "bcrypt-pbkdf", | 3798 | "bcrypt-pbkdf", |
| 3525 | "ed25519-dalek", | 3799 | "ctutils", |
| 3526 | "num-bigint-dig", | 3800 | "ed25519-dalek 3.0.0", |
| 3801 | "hex", | ||
| 3802 | "hmac", | ||
| 3527 | "p256", | 3803 | "p256", |
| 3528 | "p384", | 3804 | "p384", |
| 3529 | "p521", | 3805 | "p521", |
| 3530 | "rand_core 0.6.4", | 3806 | "rand_core 0.10.1", |
| 3531 | "rsa", | 3807 | "rsa", |
| 3532 | "sec1", | 3808 | "sec1", |
| 3533 | "sha2", | 3809 | "sha1", |
| 3534 | "signature", | 3810 | "sha2 0.11.0", |
| 3811 | "signature 3.0.0", | ||
| 3535 | "ssh-cipher", | 3812 | "ssh-cipher", |
| 3536 | "ssh-encoding", | 3813 | "ssh-encoding", |
| 3537 | "subtle", | ||
| 3538 | "zeroize", | 3814 | "zeroize", |
| 3539 | ] | 3815 | ] |
| 3540 | 3816 | ||
| @@ -3710,14 +3986,14 @@ dependencies = [ | |||
| 3710 | "libc", | 3986 | "libc", |
| 3711 | "log", | 3987 | "log", |
| 3712 | "memmem", | 3988 | "memmem", |
| 3713 | "nix", | 3989 | "nix 0.29.0", |
| 3714 | "num-derive", | 3990 | "num-derive", |
| 3715 | "num-traits", | 3991 | "num-traits", |
| 3716 | "ordered-float", | 3992 | "ordered-float", |
| 3717 | "pest", | 3993 | "pest", |
| 3718 | "pest_derive", | 3994 | "pest_derive", |
| 3719 | "phf", | 3995 | "phf", |
| 3720 | "sha2", | 3996 | "sha2 0.10.9", |
| 3721 | "signal-hook", | 3997 | "signal-hook", |
| 3722 | "siphasher", | 3998 | "siphasher", |
| 3723 | "terminfo", | 3999 | "terminfo", |
| @@ -3805,15 +4081,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 3805 | checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" | 4081 | checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" |
| 3806 | 4082 | ||
| 3807 | [[package]] | 4083 | [[package]] |
| 3808 | name = "tiny-keccak" | ||
| 3809 | version = "2.0.2" | ||
| 3810 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3811 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" | ||
| 3812 | dependencies = [ | ||
| 3813 | "crunchy", | ||
| 3814 | ] | ||
| 3815 | |||
| 3816 | [[package]] | ||
| 3817 | name = "tinystr" | 4084 | name = "tinystr" |
| 3818 | version = "0.8.2" | 4085 | version = "0.8.2" |
| 3819 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4086 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -3862,18 +4129,6 @@ dependencies = [ | |||
| 3862 | ] | 4129 | ] |
| 3863 | 4130 | ||
| 3864 | [[package]] | 4131 | [[package]] |
| 3865 | name = "tokio-stream" | ||
| 3866 | version = "0.1.18" | ||
| 3867 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 3868 | checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" | ||
| 3869 | dependencies = [ | ||
| 3870 | "futures-core", | ||
| 3871 | "pin-project-lite", | ||
| 3872 | "tokio", | ||
| 3873 | "tokio-util", | ||
| 3874 | ] | ||
| 3875 | |||
| 3876 | [[package]] | ||
| 3877 | name = "tokio-util" | 4132 | name = "tokio-util" |
| 3878 | version = "0.7.18" | 4133 | version = "0.7.18" |
| 3879 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4134 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -4003,9 +4258,9 @@ dependencies = [ | |||
| 4003 | 4258 | ||
| 4004 | [[package]] | 4259 | [[package]] |
| 4005 | name = "typenum" | 4260 | name = "typenum" |
| 4006 | version = "1.19.0" | 4261 | version = "1.20.1" |
| 4007 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4262 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4008 | checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" | 4263 | checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" |
| 4009 | 4264 | ||
| 4010 | [[package]] | 4265 | [[package]] |
| 4011 | name = "ucd-trie" | 4266 | name = "ucd-trie" |
| @@ -4062,15 +4317,21 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" | |||
| 4062 | 4317 | ||
| 4063 | [[package]] | 4318 | [[package]] |
| 4064 | name = "universal-hash" | 4319 | name = "universal-hash" |
| 4065 | version = "0.5.1" | 4320 | version = "0.6.1" |
| 4066 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4321 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4067 | checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" | 4322 | checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96" |
| 4068 | dependencies = [ | 4323 | dependencies = [ |
| 4069 | "crypto-common", | 4324 | "crypto-common 0.2.2", |
| 4070 | "subtle", | 4325 | "ctutils", |
| 4071 | ] | 4326 | ] |
| 4072 | 4327 | ||
| 4073 | [[package]] | 4328 | [[package]] |
| 4329 | name = "untrusted" | ||
| 4330 | version = "0.7.1" | ||
| 4331 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4332 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" | ||
| 4333 | |||
| 4334 | [[package]] | ||
| 4074 | name = "url" | 4335 | name = "url" |
| 4075 | version = "2.5.8" | 4336 | version = "2.5.8" |
| 4076 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4337 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -4311,7 +4572,7 @@ checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7" | |||
| 4311 | dependencies = [ | 4572 | dependencies = [ |
| 4312 | "getrandom 0.3.4", | 4573 | "getrandom 0.3.4", |
| 4313 | "mac_address", | 4574 | "mac_address", |
| 4314 | "sha2", | 4575 | "sha2 0.10.9", |
| 4315 | "thiserror 1.0.69", | 4576 | "thiserror 1.0.69", |
| 4316 | "uuid", | 4577 | "uuid", |
| 4317 | ] | 4578 | ] |
| @@ -4398,25 +4659,23 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | |||
| 4398 | 4659 | ||
| 4399 | [[package]] | 4660 | [[package]] |
| 4400 | name = "windows" | 4661 | name = "windows" |
| 4401 | version = "0.58.0" | 4662 | version = "0.62.2" |
| 4402 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4663 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4403 | checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" | 4664 | checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" |
| 4404 | dependencies = [ | 4665 | dependencies = [ |
| 4405 | "windows-core 0.58.0", | 4666 | "windows-collections", |
| 4406 | "windows-targets 0.52.6", | 4667 | "windows-core", |
| 4668 | "windows-future", | ||
| 4669 | "windows-numerics", | ||
| 4407 | ] | 4670 | ] |
| 4408 | 4671 | ||
| 4409 | [[package]] | 4672 | [[package]] |
| 4410 | name = "windows-core" | 4673 | name = "windows-collections" |
| 4411 | version = "0.58.0" | 4674 | version = "0.3.2" |
| 4412 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4675 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4413 | checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" | 4676 | checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" |
| 4414 | dependencies = [ | 4677 | dependencies = [ |
| 4415 | "windows-implement 0.58.0", | 4678 | "windows-core", |
| 4416 | "windows-interface 0.58.0", | ||
| 4417 | "windows-result 0.2.0", | ||
| 4418 | "windows-strings 0.1.0", | ||
| 4419 | "windows-targets 0.52.6", | ||
| 4420 | ] | 4679 | ] |
| 4421 | 4680 | ||
| 4422 | [[package]] | 4681 | [[package]] |
| @@ -4425,22 +4684,22 @@ version = "0.62.2" | |||
| 4425 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4684 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4426 | checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" | 4685 | checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" |
| 4427 | dependencies = [ | 4686 | dependencies = [ |
| 4428 | "windows-implement 0.60.2", | 4687 | "windows-implement", |
| 4429 | "windows-interface 0.59.3", | 4688 | "windows-interface", |
| 4430 | "windows-link", | 4689 | "windows-link", |
| 4431 | "windows-result 0.4.1", | 4690 | "windows-result", |
| 4432 | "windows-strings 0.5.1", | 4691 | "windows-strings", |
| 4433 | ] | 4692 | ] |
| 4434 | 4693 | ||
| 4435 | [[package]] | 4694 | [[package]] |
| 4436 | name = "windows-implement" | 4695 | name = "windows-future" |
| 4437 | version = "0.58.0" | 4696 | version = "0.3.2" |
| 4438 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4697 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4439 | checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" | 4698 | checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" |
| 4440 | dependencies = [ | 4699 | dependencies = [ |
| 4441 | "proc-macro2", | 4700 | "windows-core", |
| 4442 | "quote", | 4701 | "windows-link", |
| 4443 | "syn 2.0.117", | 4702 | "windows-threading", |
| 4444 | ] | 4703 | ] |
| 4445 | 4704 | ||
| 4446 | [[package]] | 4705 | [[package]] |
| @@ -4456,17 +4715,6 @@ dependencies = [ | |||
| 4456 | 4715 | ||
| 4457 | [[package]] | 4716 | [[package]] |
| 4458 | name = "windows-interface" | 4717 | name = "windows-interface" |
| 4459 | version = "0.58.0" | ||
| 4460 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4461 | checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" | ||
| 4462 | dependencies = [ | ||
| 4463 | "proc-macro2", | ||
| 4464 | "quote", | ||
| 4465 | "syn 2.0.117", | ||
| 4466 | ] | ||
| 4467 | |||
| 4468 | [[package]] | ||
| 4469 | name = "windows-interface" | ||
| 4470 | version = "0.59.3" | 4718 | version = "0.59.3" |
| 4471 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4719 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4472 | checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" | 4720 | checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" |
| @@ -4483,12 +4731,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 4483 | checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" | 4731 | checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" |
| 4484 | 4732 | ||
| 4485 | [[package]] | 4733 | [[package]] |
| 4486 | name = "windows-result" | 4734 | name = "windows-numerics" |
| 4487 | version = "0.2.0" | 4735 | version = "0.3.1" |
| 4488 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4736 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4489 | checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" | 4737 | checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" |
| 4490 | dependencies = [ | 4738 | dependencies = [ |
| 4491 | "windows-targets 0.52.6", | 4739 | "windows-core", |
| 4740 | "windows-link", | ||
| 4492 | ] | 4741 | ] |
| 4493 | 4742 | ||
| 4494 | [[package]] | 4743 | [[package]] |
| @@ -4502,16 +4751,6 @@ dependencies = [ | |||
| 4502 | 4751 | ||
| 4503 | [[package]] | 4752 | [[package]] |
| 4504 | name = "windows-strings" | 4753 | name = "windows-strings" |
| 4505 | version = "0.1.0" | ||
| 4506 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4507 | checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" | ||
| 4508 | dependencies = [ | ||
| 4509 | "windows-result 0.2.0", | ||
| 4510 | "windows-targets 0.52.6", | ||
| 4511 | ] | ||
| 4512 | |||
| 4513 | [[package]] | ||
| 4514 | name = "windows-strings" | ||
| 4515 | version = "0.5.1" | 4754 | version = "0.5.1" |
| 4516 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4755 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4517 | checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" | 4756 | checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" |
| @@ -4525,7 +4764,7 @@ version = "0.48.0" | |||
| 4525 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4764 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4526 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" | 4765 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" |
| 4527 | dependencies = [ | 4766 | dependencies = [ |
| 4528 | "windows-targets 0.48.5", | 4767 | "windows-targets", |
| 4529 | ] | 4768 | ] |
| 4530 | 4769 | ||
| 4531 | [[package]] | 4770 | [[package]] |
| @@ -4543,29 +4782,22 @@ version = "0.48.5" | |||
| 4543 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4782 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4544 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" | 4783 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" |
| 4545 | dependencies = [ | 4784 | dependencies = [ |
| 4546 | "windows_aarch64_gnullvm 0.48.5", | 4785 | "windows_aarch64_gnullvm", |
| 4547 | "windows_aarch64_msvc 0.48.5", | 4786 | "windows_aarch64_msvc", |
| 4548 | "windows_i686_gnu 0.48.5", | 4787 | "windows_i686_gnu", |
| 4549 | "windows_i686_msvc 0.48.5", | 4788 | "windows_i686_msvc", |
| 4550 | "windows_x86_64_gnu 0.48.5", | 4789 | "windows_x86_64_gnu", |
| 4551 | "windows_x86_64_gnullvm 0.48.5", | 4790 | "windows_x86_64_gnullvm", |
| 4552 | "windows_x86_64_msvc 0.48.5", | 4791 | "windows_x86_64_msvc", |
| 4553 | ] | 4792 | ] |
| 4554 | 4793 | ||
| 4555 | [[package]] | 4794 | [[package]] |
| 4556 | name = "windows-targets" | 4795 | name = "windows-threading" |
| 4557 | version = "0.52.6" | 4796 | version = "0.2.1" |
| 4558 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4797 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4559 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" | 4798 | checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" |
| 4560 | dependencies = [ | 4799 | dependencies = [ |
| 4561 | "windows_aarch64_gnullvm 0.52.6", | 4800 | "windows-link", |
| 4562 | "windows_aarch64_msvc 0.52.6", | ||
| 4563 | "windows_i686_gnu 0.52.6", | ||
| 4564 | "windows_i686_gnullvm", | ||
| 4565 | "windows_i686_msvc 0.52.6", | ||
| 4566 | "windows_x86_64_gnu 0.52.6", | ||
| 4567 | "windows_x86_64_gnullvm 0.52.6", | ||
| 4568 | "windows_x86_64_msvc 0.52.6", | ||
| 4569 | ] | 4801 | ] |
| 4570 | 4802 | ||
| 4571 | [[package]] | 4803 | [[package]] |
| @@ -4575,90 +4807,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| 4575 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" | 4807 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" |
| 4576 | 4808 | ||
| 4577 | [[package]] | 4809 | [[package]] |
| 4578 | name = "windows_aarch64_gnullvm" | ||
| 4579 | version = "0.52.6" | ||
| 4580 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4581 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" | ||
| 4582 | |||
| 4583 | [[package]] | ||
| 4584 | name = "windows_aarch64_msvc" | 4810 | name = "windows_aarch64_msvc" |
| 4585 | version = "0.48.5" | 4811 | version = "0.48.5" |
| 4586 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4812 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4587 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" | 4813 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" |
| 4588 | 4814 | ||
| 4589 | [[package]] | 4815 | [[package]] |
| 4590 | name = "windows_aarch64_msvc" | ||
| 4591 | version = "0.52.6" | ||
| 4592 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4593 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" | ||
| 4594 | |||
| 4595 | [[package]] | ||
| 4596 | name = "windows_i686_gnu" | 4816 | name = "windows_i686_gnu" |
| 4597 | version = "0.48.5" | 4817 | version = "0.48.5" |
| 4598 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4818 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4599 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" | 4819 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" |
| 4600 | 4820 | ||
| 4601 | [[package]] | 4821 | [[package]] |
| 4602 | name = "windows_i686_gnu" | ||
| 4603 | version = "0.52.6" | ||
| 4604 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4605 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" | ||
| 4606 | |||
| 4607 | [[package]] | ||
| 4608 | name = "windows_i686_gnullvm" | ||
| 4609 | version = "0.52.6" | ||
| 4610 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4611 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" | ||
| 4612 | |||
| 4613 | [[package]] | ||
| 4614 | name = "windows_i686_msvc" | 4822 | name = "windows_i686_msvc" |
| 4615 | version = "0.48.5" | 4823 | version = "0.48.5" |
| 4616 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4824 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4617 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" | 4825 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" |
| 4618 | 4826 | ||
| 4619 | [[package]] | 4827 | [[package]] |
| 4620 | name = "windows_i686_msvc" | ||
| 4621 | version = "0.52.6" | ||
| 4622 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4623 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" | ||
| 4624 | |||
| 4625 | [[package]] | ||
| 4626 | name = "windows_x86_64_gnu" | 4828 | name = "windows_x86_64_gnu" |
| 4627 | version = "0.48.5" | 4829 | version = "0.48.5" |
| 4628 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4830 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4629 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" | 4831 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" |
| 4630 | 4832 | ||
| 4631 | [[package]] | 4833 | [[package]] |
| 4632 | name = "windows_x86_64_gnu" | ||
| 4633 | version = "0.52.6" | ||
| 4634 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4635 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" | ||
| 4636 | |||
| 4637 | [[package]] | ||
| 4638 | name = "windows_x86_64_gnullvm" | 4834 | name = "windows_x86_64_gnullvm" |
| 4639 | version = "0.48.5" | 4835 | version = "0.48.5" |
| 4640 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4836 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4641 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" | 4837 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" |
| 4642 | 4838 | ||
| 4643 | [[package]] | 4839 | [[package]] |
| 4644 | name = "windows_x86_64_gnullvm" | ||
| 4645 | version = "0.52.6" | ||
| 4646 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4647 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" | ||
| 4648 | |||
| 4649 | [[package]] | ||
| 4650 | name = "windows_x86_64_msvc" | 4840 | name = "windows_x86_64_msvc" |
| 4651 | version = "0.48.5" | 4841 | version = "0.48.5" |
| 4652 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4842 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4653 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" | 4843 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" |
| 4654 | 4844 | ||
| 4655 | [[package]] | 4845 | [[package]] |
| 4656 | name = "windows_x86_64_msvc" | ||
| 4657 | version = "0.52.6" | ||
| 4658 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4659 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" | ||
| 4660 | |||
| 4661 | [[package]] | ||
| 4662 | name = "winnow" | 4846 | name = "winnow" |
| 4663 | version = "0.7.15" | 4847 | version = "0.7.15" |
| 4664 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4848 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -4765,6 +4949,17 @@ dependencies = [ | |||
| 4765 | ] | 4949 | ] |
| 4766 | 4950 | ||
| 4767 | [[package]] | 4951 | [[package]] |
| 4952 | name = "wnaf" | ||
| 4953 | version = "0.14.0" | ||
| 4954 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
| 4955 | checksum = "ab12e7090f27e2ffd9322651492942d50c2926094af30601e1964337db39daf1" | ||
| 4956 | dependencies = [ | ||
| 4957 | "ff", | ||
| 4958 | "group", | ||
| 4959 | "hybrid-array", | ||
| 4960 | ] | ||
| 4961 | |||
| 4962 | [[package]] | ||
| 4768 | name = "writeable" | 4963 | name = "writeable" |
| 4769 | version = "0.6.2" | 4964 | version = "0.6.2" |
| 4770 | source = "registry+https://github.com/rust-lang/crates.io-index" | 4965 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| @@ -4836,9 +5031,9 @@ dependencies = [ | |||
| 4836 | 5031 | ||
| 4837 | [[package]] | 5032 | [[package]] |
| 4838 | name = "zeroize" | 5033 | name = "zeroize" |
| 4839 | version = "1.8.2" | 5034 | version = "1.9.0" |
| 4840 | source = "registry+https://github.com/rust-lang/crates.io-index" | 5035 | source = "registry+https://github.com/rust-lang/crates.io-index" |
| 4841 | checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" | 5036 | checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" |
| 4842 | 5037 | ||
| 4843 | [[package]] | 5038 | [[package]] |
| 4844 | name = "zerotrie" | 5039 | name = "zerotrie" |
Cargo.toml
| Old | New | ||
|---|---|---|---|
| @@ -2,6 +2,12 @@ | |||
| 2 | name = "git-collab" | 2 | name = "git-collab" |
| 3 | version = "0.1.0" | 3 | version = "0.1.0" |
| 4 | edition = "2021" | 4 | edition = "2021" |
| 5 | # Matches the Dockerfile's `rust:1.88-bookworm` pin. The tree's true ceiling is | ||
| 6 | # exactly 1.88.0 (from time, darling, askama and instability — all already at | ||
| 7 | # these versions before the russh upgrade, whose own crates need only 1.85), so | ||
| 8 | # there is no headroom: without this, a dependency bump that requires 1.89 would | ||
| 9 | # pass `cargo test` on a newer local toolchain and only fail in the deploy build. | ||
| 10 | rust-version = "1.88" | ||
| 5 | 11 | ||
| 6 | [[bin]] | 12 | [[bin]] |
| 7 | name = "git-collab" | 13 | name = "git-collab" |
| @@ -23,6 +29,7 @@ ratatui = "0.30.0" | |||
| 23 | crossterm = "0.29.0" | 29 | crossterm = "0.29.0" |
| 24 | ed25519-dalek = { version = "2", features = ["rand_core"] } | 30 | ed25519-dalek = { version = "2", features = ["rand_core"] } |
| 25 | rand_core = { version = "0.6", features = ["getrandom"] } | 31 | rand_core = { version = "0.6", features = ["getrandom"] } |
| 32 | zeroize = "1" | ||
| 26 | base64 = "0.22" | 33 | base64 = "0.22" |
| 27 | dirs = "5" | 34 | dirs = "5" |
| 28 | axum = "0.8" | 35 | axum = "0.8" |
| @@ -31,12 +38,10 @@ askama = "0.15" | |||
| 31 | askama_web = { version = "0.15", features = ["axum-0.8"] } | 38 | askama_web = { version = "0.15", features = ["axum-0.8"] } |
| 32 | pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] } | 39 | pulldown-cmark = { version = "0.12", default-features = false, features = ["html"] } |
| 33 | ammonia = "4" | 40 | ammonia = "4" |
| 34 | russh = "0.46" | 41 | russh = "0.62" |
| 35 | russh-keys = "0.46" | ||
| 36 | toml_edit = { version = "0.22", features = ["serde"] } | 42 | toml_edit = { version = "0.22", features = ["serde"] } |
| 37 | tracing = "0.1" | 43 | tracing = "0.1" |
| 38 | tracing-subscriber = "0.3" | 44 | tracing-subscriber = "0.3" |
| 39 | async-trait = "0.1" | ||
| 40 | sha2 = "0.10" | 45 | sha2 = "0.10" |
| 41 | tempfile = "3" | 46 | tempfile = "3" |
| 42 | tokio-util = { version = "0.7", features = ["io"] } | 47 | tokio-util = { version = "0.7", features = ["io"] } |
src/server/main.rs
| Old | New | ||
|---|---|---|---|
| @@ -44,19 +44,16 @@ async fn main() { | |||
| 44 | } | 44 | } |
| 45 | }; | 45 | }; |
| 46 | 46 | ||
| 47 | let fingerprint = match host_key.clone_public_key() { | 47 | // Displays as `SHA256:<base64>` on its own. |
| 48 | Ok(pub_key) => pub_key.fingerprint(), | 48 | let fingerprint = host_key |
| 49 | Err(e) => { | 49 | .public_key() |
| 50 | eprintln!("Failed to get host key fingerprint: {}", e); | 50 | .fingerprint(russh::keys::HashAlg::Sha256); |
| 51 | std::process::exit(1); | ||
| 52 | } | ||
| 53 | }; | ||
| 54 | 51 | ||
| 55 | info!("HTTP listening on {}", config.http_bind); | 52 | info!("HTTP listening on {}", config.http_bind); |
| 56 | info!("SSH listening on {}", config.ssh_bind); | 53 | info!("SSH listening on {}", config.ssh_bind); |
| 57 | info!("Repos dir: {:?}", config.repos_dir); | 54 | info!("Repos dir: {:?}", config.repos_dir); |
| 58 | info!("Site title: {}", config.site_title); | 55 | info!("Site title: {}", config.site_title); |
| 59 | info!("SSH host key fingerprint: SHA256:{}", fingerprint); | 56 | info!("SSH host key fingerprint: {}", fingerprint); |
| 60 | 57 | ||
| 61 | let app_state = http::AppState { | 58 | let app_state = http::AppState { |
| 62 | repos_dir: config.repos_dir.clone(), | 59 | repos_dir: config.repos_dir.clone(), |
src/server/ssh/auth.rs
| Old | New | ||
|---|---|---|---|
| @@ -89,12 +89,30 @@ mod tests { | |||
| 89 | assert!(!is_authorized(&keys, "ssh-rsa", "AAAA1111")); | 89 | assert!(!is_authorized(&keys, "ssh-rsa", "AAAA1111")); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | /// The RSA leniency exists because an authorized_keys entry and the | ||
| 93 | /// `key_type` the server derives from an offered key need not spell the | ||
| 94 | /// same algorithm. Which side needs the leniency depends on the ssh | ||
| 95 | /// library: russh 0.62 reports the *key's* algorithm, so an offered RSA | ||
| 96 | /// key always arrives as `ssh-rsa` and it is the `rsa-sha2-*` entries that | ||
| 97 | /// now match through the leniency (russh 0.46 reported the signature | ||
| 98 | /// algorithm, so it was the other way round). Both directions are covered | ||
| 99 | /// here so this keeps holding whichever way that reporting goes. | ||
| 92 | #[test] | 100 | #[test] |
| 93 | fn rsa_key_type_variants_match() { | 101 | fn rsa_key_type_variants_match() { |
| 94 | let keys = parse_authorized_keys("ssh-rsa AAAARSA user\n"); | 102 | // What the server actually produces today (`ssh-rsa`), against |
| 95 | assert!(is_authorized(&keys, "ssh-rsa", "AAAARSA")); | 103 | // entries written either way. |
| 96 | assert!(is_authorized(&keys, "rsa-sha2-256", "AAAARSA")); | 104 | let modern_entry = parse_authorized_keys("rsa-sha2-256 AAAARSA user\n"); |
| 97 | assert!(is_authorized(&keys, "rsa-sha2-512", "AAAARSA")); | 105 | assert!(is_authorized(&modern_entry, "ssh-rsa", "AAAARSA")); |
| 98 | assert!(!is_authorized(&keys, "rsa-sha2-256", "WRONG")); | 106 | let legacy_entry = parse_authorized_keys("ssh-rsa AAAARSA user\n"); |
| 107 | assert!(is_authorized(&legacy_entry, "ssh-rsa", "AAAARSA")); | ||
| 108 | |||
| 109 | // The reverse direction, which russh 0.46 exercised. | ||
| 110 | assert!(is_authorized(&legacy_entry, "rsa-sha2-256", "AAAARSA")); | ||
| 111 | assert!(is_authorized(&legacy_entry, "rsa-sha2-512", "AAAARSA")); | ||
| 112 | |||
| 113 | // Leniency is over the algorithm name only — never the key material. | ||
| 114 | assert!(!is_authorized(&legacy_entry, "rsa-sha2-256", "WRONG")); | ||
| 115 | assert!(!is_authorized(&modern_entry, "ssh-rsa", "WRONG")); | ||
| 116 | assert!(!is_authorized(&legacy_entry, "ssh-ed25519", "AAAARSA")); | ||
| 99 | } | 117 | } |
| 100 | } | 118 | } |
src/server/ssh/mod.rs
| Old | New | ||
|---|---|---|---|
| @@ -5,22 +5,47 @@ use std::net::SocketAddr; | |||
| 5 | use std::path::Path; | 5 | use std::path::Path; |
| 6 | use std::sync::Arc; | 6 | use std::sync::Arc; |
| 7 | 7 | ||
| 8 | use async_trait::async_trait; | 8 | use russh::keys::ssh_key::private::{Ed25519Keypair, KeypairData}; |
| 9 | use russh::keys::PrivateKey; | ||
| 9 | use russh::server::Server as _; | 10 | use russh::server::Server as _; |
| 10 | use russh_keys::key::KeyPair; | ||
| 11 | use tracing::{error, info}; | 11 | use tracing::{error, info}; |
| 12 | use zeroize::Zeroizing; | ||
| 12 | 13 | ||
| 13 | use session::{SshHandler, SshServerConfig}; | 14 | use session::{SshHandler, SshServerConfig}; |
| 14 | 15 | ||
| 16 | /// Generate an ed25519 host key. | ||
| 17 | /// | ||
| 18 | /// Seeded from the OS RNG via this crate's `rand_core`, rather than | ||
| 19 | /// `PrivateKey::random`, which wants a `rand_core` 0.10 generator that nothing | ||
| 20 | /// else here depends on. An ed25519 private key *is* its 32-byte seed, so this | ||
| 21 | /// builds the same key the library would from the same entropy. | ||
| 22 | /// | ||
| 23 | /// `try_fill_bytes` rather than `fill_bytes`: a failing OS RNG should surface | ||
| 24 | /// as a startup error, not a panic. The seed is held in `Zeroizing` because | ||
| 25 | /// `ssh-key` wipes its own copy on drop, and leaving ours on the stack would | ||
| 26 | /// defeat that. | ||
| 27 | fn generate_ed25519_key() -> Result<PrivateKey, Box<dyn std::error::Error>> { | ||
| 28 | use rand_core::RngCore; | ||
| 29 | |||
| 30 | let mut seed = Zeroizing::new([0u8; 32]); | ||
| 31 | rand_core::OsRng | ||
| 32 | .try_fill_bytes(seed.as_mut()) | ||
| 33 | .map_err(|e| format!("failed to read {} bytes from the OS RNG: {e}", seed.len()))?; | ||
| 34 | let keypair = Ed25519Keypair::from_seed(&seed); | ||
| 35 | Ok(PrivateKey::new(KeypairData::from(keypair), "git-collab")?) | ||
| 36 | } | ||
| 37 | |||
| 15 | /// Load an ed25519 host key from disk, or generate a new one if not found. | 38 | /// Load an ed25519 host key from disk, or generate a new one if not found. |
| 16 | pub fn load_or_generate_host_key(key_path: &Path) -> Result<KeyPair, Box<dyn std::error::Error>> { | 39 | pub fn load_or_generate_host_key( |
| 40 | key_path: &Path, | ||
| 41 | ) -> Result<PrivateKey, Box<dyn std::error::Error>> { | ||
| 17 | if key_path.exists() { | 42 | if key_path.exists() { |
| 18 | info!("Loading SSH host key from {:?}", key_path); | 43 | info!("Loading SSH host key from {:?}", key_path); |
| 19 | let key = russh_keys::load_secret_key(key_path, None)?; | 44 | let key = russh::keys::load_secret_key(key_path, None)?; |
| 20 | Ok(key) | 45 | Ok(key) |
| 21 | } else { | 46 | } else { |
| 22 | info!("Generating new SSH host key at {:?}", key_path); | 47 | info!("Generating new SSH host key at {:?}", key_path); |
| 23 | let key = KeyPair::generate_ed25519(); | 48 | let key = generate_ed25519_key()?; |
| 24 | // Ensure parent directory exists | 49 | // Ensure parent directory exists |
| 25 | if let Some(parent) = key_path.parent() { | 50 | if let Some(parent) = key_path.parent() { |
| 26 | std::fs::create_dir_all(parent)?; | 51 | std::fs::create_dir_all(parent)?; |
| @@ -32,7 +57,7 @@ pub fn load_or_generate_host_key(key_path: &Path) -> Result<KeyPair, Box<dyn std | |||
| 32 | use std::os::unix::fs::PermissionsExt; | 57 | use std::os::unix::fs::PermissionsExt; |
| 33 | std::fs::set_permissions(key_path, std::fs::Permissions::from_mode(0o600))?; | 58 | std::fs::set_permissions(key_path, std::fs::Permissions::from_mode(0o600))?; |
| 34 | } | 59 | } |
| 35 | russh_keys::encode_pkcs8_pem(&key, file)?; | 60 | russh::keys::encode_pkcs8_pem(&key, file)?; |
| 36 | Ok(key) | 61 | Ok(key) |
| 37 | } | 62 | } |
| 38 | } | 63 | } |
| @@ -42,7 +67,6 @@ struct CollabSshServer { | |||
| 42 | config: Arc<SshServerConfig>, | 67 | config: Arc<SshServerConfig>, |
| 43 | } | 68 | } |
| 44 | 69 | ||
| 45 | #[async_trait] | ||
| 46 | impl russh::server::Server for CollabSshServer { | 70 | impl russh::server::Server for CollabSshServer { |
| 47 | type Handler = SshHandler; | 71 | type Handler = SshHandler; |
| 48 | 72 | ||
| @@ -55,12 +79,16 @@ impl russh::server::Server for CollabSshServer { | |||
| 55 | /// Start the SSH server on the given bind address. | 79 | /// Start the SSH server on the given bind address. |
| 56 | pub async fn serve( | 80 | pub async fn serve( |
| 57 | bind_addr: SocketAddr, | 81 | bind_addr: SocketAddr, |
| 58 | host_key: KeyPair, | 82 | host_key: PrivateKey, |
| 59 | ssh_config: SshServerConfig, | 83 | ssh_config: SshServerConfig, |
| 60 | ) -> Result<(), std::io::Error> { | 84 | ) -> Result<(), std::io::Error> { |
| 85 | // Kex is left at russh's default `Preferred`, whose order already starts | ||
| 86 | // with the post-quantum `mlkem768x25519-sha256` and keeps curve25519 and | ||
| 87 | // the DH groups behind it for older clients. Naming the list explicitly | ||
| 88 | // here would only freeze it at today's algorithms. | ||
| 61 | let russh_config = russh::server::Config { | 89 | let russh_config = russh::server::Config { |
| 62 | keys: vec![host_key], | 90 | keys: vec![host_key], |
| 63 | methods: russh::MethodSet::PUBLICKEY, | 91 | methods: russh::MethodSet::from(&[russh::MethodKind::PublicKey][..]), |
| 64 | ..Default::default() | 92 | ..Default::default() |
| 65 | }; | 93 | }; |
| 66 | 94 | ||
src/server/ssh/session.rs
| Old | New | ||
|---|---|---|---|
| @@ -1,11 +1,9 @@ | |||
| 1 | use std::path::{Path, PathBuf}; | 1 | use std::path::{Path, PathBuf}; |
| 2 | use std::sync::Arc; | 2 | use std::sync::Arc; |
| 3 | 3 | ||
| 4 | use async_trait::async_trait; | 4 | use russh::keys::{HashAlg, PublicKey, PublicKeyBase64}; |
| 5 | use russh::server::{Auth, Handler, Msg, Session}; | 5 | use russh::server::{Auth, ChannelOpenHandle, Handler, Msg, Session}; |
| 6 | use russh::{Channel, ChannelId, CryptoVec}; | 6 | use russh::{Channel, ChannelId}; |
| 7 | use russh_keys::key::PublicKey; | ||
| 8 | use russh_keys::PublicKeyBase64; | ||
| 9 | use tokio::process::Command; | 7 | use tokio::process::Command; |
| 10 | use tokio::sync::mpsc; | 8 | use tokio::sync::mpsc; |
| 11 | use tracing::{debug, error, info, warn}; | 9 | use tracing::{debug, error, info, warn}; |
| @@ -77,7 +75,7 @@ impl SshHandler { | |||
| 77 | rel: ReleaseCmd, | 75 | rel: ReleaseCmd, |
| 78 | resolved_path: &Path, | 76 | resolved_path: &Path, |
| 79 | principal: &str, | 77 | principal: &str, |
| 80 | ) { | 78 | ) -> Result<(), russh::Error> { |
| 81 | // Unknown repo and unauthorized repo get the SAME reply, so the error | 79 | // Unknown repo and unauthorized repo get the SAME reply, so the error |
| 82 | // can't be used to probe which private repos exist. This mirrors the | 80 | // can't be used to probe which private repos exist. This mirrors the |
| 83 | // deliberate 404-collapsing in the HTTP layer (see git_http.rs). | 81 | // deliberate 404-collapsing in the HTTP layer (see git_http.rs). |
| @@ -88,8 +86,7 @@ impl SshHandler { | |||
| 88 | Some(entry) => entry, | 86 | Some(entry) => entry, |
| 89 | None => { | 87 | None => { |
| 90 | warn!("Rejected release command: unknown repo {:?}", resolved_path); | 88 | warn!("Rejected release command: unknown repo {:?}", resolved_path); |
| 91 | reply_and_close(session, channel, NOT_FOUND, 1); | 89 | return reply_and_close(session, channel, NOT_FOUND, 1); |
| 92 | return; | ||
| 93 | } | 90 | } |
| 94 | }; | 91 | }; |
| 95 | 92 | ||
| @@ -104,8 +101,7 @@ impl SshHandler { | |||
| 104 | "Rejected release command: principal {} not authorized on {:?}", | 101 | "Rejected release command: principal {} not authorized on {:?}", |
| 105 | principal, resolved_path | 102 | principal, resolved_path |
| 106 | ); | 103 | ); |
| 107 | reply_and_close(session, channel, NOT_FOUND, 1); | 104 | return reply_and_close(session, channel, NOT_FOUND, 1); |
| 108 | return; | ||
| 109 | } | 105 | } |
| 110 | 106 | ||
| 111 | let dir = crate::releases::releases_dir(&entry); | 107 | let dir = crate::releases::releases_dir(&entry); |
| @@ -121,13 +117,12 @@ impl SshHandler { | |||
| 121 | // channel waiting for a reply that never comes. | 117 | // channel waiting for a reply that never comes. |
| 122 | if self.active_upload.is_some() { | 118 | if self.active_upload.is_some() { |
| 123 | warn!("Rejected release upload: another upload is already in progress"); | 119 | warn!("Rejected release upload: another upload is already in progress"); |
| 124 | reply_and_close( | 120 | return reply_and_close( |
| 125 | session, | 121 | session, |
| 126 | channel, | 122 | channel, |
| 127 | "error: another upload is already in progress on this connection\n", | 123 | "error: another upload is already in progress on this connection\n", |
| 128 | 1, | 124 | 1, |
| 129 | ); | 125 | ); |
| 130 | return; | ||
| 131 | } | 126 | } |
| 132 | match crate::releases::ReleaseUpload::begin( | 127 | match crate::releases::ReleaseUpload::begin( |
| 133 | &dir, | 128 | &dir, |
| @@ -142,10 +137,9 @@ impl SshHandler { | |||
| 142 | state: UploadState::Active(Box::new(upload)), | 137 | state: UploadState::Active(Box::new(upload)), |
| 143 | }); | 138 | }); |
| 144 | // Reply comes on channel EOF, once all bytes arrive. | 139 | // Reply comes on channel EOF, once all bytes arrive. |
| 140 | Ok(()) | ||
| 145 | } | 141 | } |
| 146 | Err(e) => { | 142 | Err(e) => reply_and_close(session, channel, &format!("error: {}\n", e), 1), |
| 147 | reply_and_close(session, channel, &format!("error: {}\n", e), 1); | ||
| 148 | } | ||
| 149 | } | 143 | } |
| 150 | } | 144 | } |
| 151 | ReleaseCmd::List { .. } => match crate::releases::list_releases(&dir) { | 145 | ReleaseCmd::List { .. } => match crate::releases::list_releases(&dir) { |
| @@ -155,29 +149,27 @@ impl SshHandler { | |||
| 155 | // Never answer a list with a silent empty index: that | 149 | // Never answer a list with a silent empty index: that |
| 156 | // would look like "no releases" to the client. | 150 | // would look like "no releases" to the client. |
| 157 | error!("Failed to serialize release index for {:?}: {}", dir, e); | 151 | error!("Failed to serialize release index for {:?}: {}", dir, e); |
| 158 | reply_and_close(session, channel, "error: failed to encode index\n", 1); | 152 | reply_and_close(session, channel, "error: failed to encode index\n", 1) |
| 159 | } | 153 | } |
| 160 | }, | 154 | }, |
| 161 | Err(e) => { | 155 | Err(e) => reply_and_close(session, channel, &format!("error: {}\n", e), 1), |
| 162 | reply_and_close(session, channel, &format!("error: {}\n", e), 1); | ||
| 163 | } | ||
| 164 | }, | 156 | }, |
| 165 | ReleaseCmd::Delete { | 157 | ReleaseCmd::Delete { |
| 166 | version, filename, .. | 158 | version, filename, .. |
| 167 | } => match crate::releases::delete_release(&dir, &version, filename.as_deref()) { | 159 | } => match crate::releases::delete_release(&dir, &version, filename.as_deref()) { |
| 168 | Ok(()) => { | 160 | Ok(()) => reply_and_close(session, channel, "deleted\n", 0), |
| 169 | reply_and_close(session, channel, "deleted\n", 0); | 161 | Err(e) => reply_and_close(session, channel, &format!("error: {}\n", e), 1), |
| 170 | } | ||
| 171 | Err(e) => { | ||
| 172 | reply_and_close(session, channel, &format!("error: {}\n", e), 1); | ||
| 173 | } | ||
| 174 | }, | 162 | }, |
| 175 | } | 163 | } |
| 176 | } | 164 | } |
| 177 | } | 165 | } |
| 178 | 166 | ||
| 167 | /// The principal string recorded in repo policies, e.g. | ||
| 168 | /// `key:SHA256:<unpadded-base64>`. `Fingerprint`'s `Display` supplies the | ||
| 169 | /// `SHA256:` prefix itself, so this must not add one — the format is persisted | ||
| 170 | /// in existing repo configs and has to keep matching them byte for byte. | ||
| 179 | fn ssh_key_principal(public_key: &PublicKey) -> String { | 171 | fn ssh_key_principal(public_key: &PublicKey) -> String { |
| 180 | format!("key:SHA256:{}", public_key.fingerprint()) | 172 | format!("key:{}", public_key.fingerprint(HashAlg::Sha256)) |
| 181 | } | 173 | } |
| 182 | 174 | ||
| 183 | /// Parse a git command string like `git-upload-pack '/path/to/repo.git'`. | 175 | /// Parse a git command string like `git-upload-pack '/path/to/repo.git'`. |
| @@ -413,7 +405,6 @@ fn ensure_repo_exists_for_command(git_cmd: GitCmd, repo_path: &Path) -> Result<b | |||
| 413 | Ok(true) | 405 | Ok(true) |
| 414 | } | 406 | } |
| 415 | 407 | ||
| 416 | #[async_trait] | ||
| 417 | impl Handler for SshHandler { | 408 | impl Handler for SshHandler { |
| 418 | type Error = russh::Error; | 409 | type Error = russh::Error; |
| 419 | 410 | ||
| @@ -427,13 +418,12 @@ impl Handler for SshHandler { | |||
| 427 | Ok(keys) => keys, | 418 | Ok(keys) => keys, |
| 428 | Err(e) => { | 419 | Err(e) => { |
| 429 | warn!("Failed to load authorized keys: {}", e); | 420 | warn!("Failed to load authorized keys: {}", e); |
| 430 | return Ok(Auth::Reject { | 421 | return Ok(Auth::reject()); |
| 431 | proceed_with_methods: None, | ||
| 432 | }); | ||
| 433 | } | 422 | } |
| 434 | }; | 423 | }; |
| 435 | 424 | ||
| 436 | let key_type = public_key.name(); | 425 | let algorithm = public_key.algorithm(); |
| 426 | let key_type = algorithm.as_str(); | ||
| 437 | let key_data = public_key.public_key_base64(); | 427 | let key_data = public_key.public_key_base64(); |
| 438 | let principal = ssh_key_principal(public_key); | 428 | let principal = ssh_key_principal(public_key); |
| 439 | 429 | ||
| @@ -446,24 +436,26 @@ impl Handler for SshHandler { | |||
| 446 | Ok(Auth::Accept) | 436 | Ok(Auth::Accept) |
| 447 | } else { | 437 | } else { |
| 448 | debug!("Public key auth rejected for key type {}", key_type); | 438 | debug!("Public key auth rejected for key type {}", key_type); |
| 449 | Ok(Auth::Reject { | 439 | Ok(Auth::reject()) |
| 450 | proceed_with_methods: None, | ||
| 451 | }) | ||
| 452 | } | 440 | } |
| 453 | } | 441 | } |
| 454 | 442 | ||
| 455 | async fn channel_open_session( | 443 | async fn channel_open_session( |
| 456 | &mut self, | 444 | &mut self, |
| 457 | channel: Channel<Msg>, | 445 | channel: Channel<Msg>, |
| 446 | reply: ChannelOpenHandle, | ||
| 458 | _session: &mut Session, | 447 | _session: &mut Session, |
| 459 | ) -> Result<bool, Self::Error> { | 448 | ) -> Result<(), Self::Error> { |
| 460 | if self.authenticated_principal.is_some() { | 449 | if self.authenticated_principal.is_some() { |
| 461 | debug!("Session channel opened: {:?}", channel.id()); | 450 | debug!("Session channel opened: {:?}", channel.id()); |
| 462 | Ok(true) | 451 | reply.accept().await; |
| 463 | } else { | 452 | } else { |
| 464 | warn!("Rejected channel open: not authenticated"); | 453 | warn!("Rejected channel open: not authenticated"); |
| 465 | Ok(false) | 454 | reply |
| 455 | .reject(russh::ChannelOpenFailure::AdministrativelyProhibited) | ||
| 456 | .await; | ||
| 466 | } | 457 | } |
| 458 | Ok(()) | ||
| 467 | } | 459 | } |
| 468 | 460 | ||
| 469 | async fn exec_request( | 461 | async fn exec_request( |
| @@ -472,11 +464,23 @@ impl Handler for SshHandler { | |||
| 472 | data: &[u8], | 464 | data: &[u8], |
| 473 | session: &mut Session, | 465 | session: &mut Session, |
| 474 | ) -> Result<(), Self::Error> { | 466 | ) -> Result<(), Self::Error> { |
| 467 | // russh never answers an exec request for us — not in 0.62, and not in | ||
| 468 | // 0.46 either, where this call was simply missing. We reply SUCCESS | ||
| 469 | // unconditionally, as sshd does: what the reply reports is whether the | ||
| 470 | // *request* was accepted, not whether the command succeeded. The real | ||
| 471 | // outcome rides on exit-status, so replying `channel_failure` on a | ||
| 472 | // rejected command would make ssh exit 255 with "exec request failed" | ||
| 473 | // and hide those exit codes. | ||
| 474 | // | ||
| 475 | // russh drops the packet when the client set `want_reply = false` (it | ||
| 476 | // gates on `channel.wants_reply`), so this is safe to call blindly. | ||
| 477 | session.channel_success(channel)?; | ||
| 478 | |||
| 475 | let command_str = match std::str::from_utf8(data) { | 479 | let command_str = match std::str::from_utf8(data) { |
| 476 | Ok(s) => s, | 480 | Ok(s) => s, |
| 477 | Err(_) => { | 481 | Err(_) => { |
| 478 | warn!("Received non-UTF8 exec request"); | 482 | warn!("Received non-UTF8 exec request"); |
| 479 | session.close(channel); | 483 | session.close(channel)?; |
| 480 | return Ok(()); | 484 | return Ok(()); |
| 481 | } | 485 | } |
| 482 | }; | 486 | }; |
| @@ -487,8 +491,7 @@ impl Handler for SshHandler { | |||
| 487 | Some(c) => c, | 491 | Some(c) => c, |
| 488 | None => { | 492 | None => { |
| 489 | warn!("Rejected exec request: not an allowed command"); | 493 | warn!("Rejected exec request: not an allowed command"); |
| 490 | reply_and_close(session, channel, "", 1); | 494 | return reply_and_close(session, channel, "", 1); |
| 491 | return Ok(()); | ||
| 492 | } | 495 | } |
| 493 | }; | 496 | }; |
| 494 | 497 | ||
| @@ -496,8 +499,7 @@ impl Handler for SshHandler { | |||
| 496 | Some(principal) => principal, | 499 | Some(principal) => principal, |
| 497 | None => { | 500 | None => { |
| 498 | warn!("Rejected exec request: not authenticated"); | 501 | warn!("Rejected exec request: not authenticated"); |
| 499 | reply_and_close(session, channel, "", 1); | 502 | return reply_and_close(session, channel, "", 1); |
| 500 | return Ok(()); | ||
| 501 | } | 503 | } |
| 502 | }; | 504 | }; |
| 503 | 505 | ||
| @@ -505,16 +507,20 @@ impl Handler for SshHandler { | |||
| 505 | Some(p) => p, | 507 | Some(p) => p, |
| 506 | None => { | 508 | None => { |
| 507 | warn!("Rejected exec request: path traversal detected"); | 509 | warn!("Rejected exec request: path traversal detected"); |
| 508 | reply_and_close(session, channel, "error: invalid repo path\n", 1); | 510 | return reply_and_close(session, channel, "error: invalid repo path\n", 1); |
| 509 | return Ok(()); | ||
| 510 | } | 511 | } |
| 511 | }; | 512 | }; |
| 512 | 513 | ||
| 513 | let git_cmd = match exec_cmd { | 514 | let git_cmd = match exec_cmd { |
| 514 | ExecCommand::Git { cmd, .. } => cmd, | 515 | ExecCommand::Git { cmd, .. } => cmd, |
| 515 | ExecCommand::Release(rel) => { | 516 | ExecCommand::Release(rel) => { |
| 516 | self.handle_release_command(channel, session, rel, &resolved_path, &principal); | 517 | return self.handle_release_command( |
| 517 | return Ok(()); | 518 | channel, |
| 519 | session, | ||
| 520 | rel, | ||
| 521 | &resolved_path, | ||
| 522 | &principal, | ||
| 523 | ); | ||
| 518 | } | 524 | } |
| 519 | }; | 525 | }; |
| 520 | 526 | ||
| @@ -526,8 +532,7 @@ impl Handler for SshHandler { | |||
| 526 | "Rejected exec request: path is not a git repo: {:?}", | 532 | "Rejected exec request: path is not a git repo: {:?}", |
| 527 | resolved_path | 533 | resolved_path |
| 528 | ); | 534 | ); |
| 529 | reply_and_close(session, channel, "", 1); | 535 | return reply_and_close(session, channel, "", 1); |
| 530 | return Ok(()); | ||
| 531 | } | 536 | } |
| 532 | }; | 537 | }; |
| 533 | 538 | ||
| @@ -543,8 +548,7 @@ impl Handler for SshHandler { | |||
| 543 | git_cmd.as_str(), | 548 | git_cmd.as_str(), |
| 544 | resolved_path | 549 | resolved_path |
| 545 | ); | 550 | ); |
| 546 | reply_and_close(session, channel, "", 1); | 551 | return reply_and_close(session, channel, "", 1); |
| 547 | return Ok(()); | ||
| 548 | } | 552 | } |
| 549 | } else { | 553 | } else { |
| 550 | match ensure_repo_exists_for_command(git_cmd, &resolved_path) { | 554 | match ensure_repo_exists_for_command(git_cmd, &resolved_path) { |
| @@ -556,13 +560,11 @@ impl Handler for SshHandler { | |||
| 556 | "Rejected exec request: repo path does not exist: {:?}", | 560 | "Rejected exec request: repo path does not exist: {:?}", |
| 557 | resolved_path | 561 | resolved_path |
| 558 | ); | 562 | ); |
| 559 | reply_and_close(session, channel, "", 1); | 563 | return reply_and_close(session, channel, "", 1); |
| 560 | return Ok(()); | ||
| 561 | } | 564 | } |
| 562 | Err(e) => { | 565 | Err(e) => { |
| 563 | error!("Failed to create repo {:?}: {}", resolved_path, e); | 566 | error!("Failed to create repo {:?}: {}", resolved_path, e); |
| 564 | reply_and_close(session, channel, "", 1); | 567 | return reply_and_close(session, channel, "", 1); |
| 565 | return Ok(()); | ||
| 566 | } | 568 | } |
| 567 | } | 569 | } |
| 568 | } | 570 | } |
| @@ -610,7 +612,7 @@ impl Handler for SshHandler { | |||
| 610 | if let UploadState::Failed(msg) = &upload.state { | 612 | if let UploadState::Failed(msg) = &upload.state { |
| 611 | let msg = format!("error: {}\n", msg); | 613 | let msg = format!("error: {}\n", msg); |
| 612 | self.active_upload = None; | 614 | self.active_upload = None; |
| 613 | reply_and_close(session, channel, &msg, 1); | 615 | reply_and_close(session, channel, &msg, 1)?; |
| 614 | } | 616 | } |
| 615 | return Ok(()); | 617 | return Ok(()); |
| 616 | } | 618 | } |
| @@ -643,11 +645,11 @@ impl Handler for SshHandler { | |||
| 643 | } | 645 | } |
| 644 | match upload.state { | 646 | match upload.state { |
| 645 | UploadState::Active(active) => match active.finish() { | 647 | UploadState::Active(active) => match active.finish() { |
| 646 | Ok(sha) => reply_and_close(session, channel, &format!("ok {}\n", sha), 0), | 648 | Ok(sha) => reply_and_close(session, channel, &format!("ok {}\n", sha), 0)?, |
| 647 | Err(e) => reply_and_close(session, channel, &format!("error: {}\n", e), 1), | 649 | Err(e) => reply_and_close(session, channel, &format!("error: {}\n", e), 1)?, |
| 648 | }, | 650 | }, |
| 649 | UploadState::Failed(msg) => { | 651 | UploadState::Failed(msg) => { |
| 650 | reply_and_close(session, channel, &format!("error: {}\n", msg), 1) | 652 | reply_and_close(session, channel, &format!("error: {}\n", msg), 1)? |
| 651 | } | 653 | } |
| 652 | } | 654 | } |
| 653 | } | 655 | } |
| @@ -679,13 +681,19 @@ impl Handler for SshHandler { | |||
| 679 | } | 681 | } |
| 680 | 682 | ||
| 681 | /// Send a final message (if any), an exit status, and close the channel. | 683 | /// Send a final message (if any), an exit status, and close the channel. |
| 682 | fn reply_and_close(session: &mut Session, channel: ChannelId, message: &str, exit_code: u32) { | 684 | fn reply_and_close( |
| 685 | session: &mut Session, | ||
| 686 | channel: ChannelId, | ||
| 687 | message: &str, | ||
| 688 | exit_code: u32, | ||
| 689 | ) -> Result<(), russh::Error> { | ||
| 683 | if !message.is_empty() { | 690 | if !message.is_empty() { |
| 684 | session.data(channel, CryptoVec::from_slice(message.as_bytes())); | 691 | session.data(channel, message.as_bytes().to_vec())?; |
| 685 | } | 692 | } |
| 686 | session.exit_status_request(channel, exit_code); | 693 | session.exit_status_request(channel, exit_code)?; |
| 687 | session.eof(channel); | 694 | session.eof(channel)?; |
| 688 | session.close(channel); | 695 | session.close(channel)?; |
| 696 | Ok(()) | ||
| 689 | } | 697 | } |
| 690 | 698 | ||
| 691 | async fn run_git_command( | 699 | async fn run_git_command( |
| @@ -725,8 +733,7 @@ async fn run_git_command( | |||
| 725 | if n == 0 { | 733 | if n == 0 { |
| 726 | break; | 734 | break; |
| 727 | } | 735 | } |
| 728 | let data = CryptoVec::from_slice(&buf[..n]); | 736 | if handle.data(channel, buf[..n].to_vec()).await.is_err() { |
| 729 | if handle.data(channel, data).await.is_err() { | ||
| 730 | warn!("Failed to send data to SSH channel"); | 737 | warn!("Failed to send data to SSH channel"); |
| 731 | break; | 738 | break; |
| 732 | } | 739 | } |
| @@ -747,6 +754,38 @@ mod tests { | |||
| 747 | use super::*; | 754 | use super::*; |
| 748 | use tempfile::TempDir; | 755 | use tempfile::TempDir; |
| 749 | 756 | ||
| 757 | /// The principal string is a COMPATIBILITY CONTRACT, not an implementation | ||
| 758 | /// detail: it is persisted verbatim in repo access lists, so a change to | ||
| 759 | /// its format silently stops matching every entry ever written — with no | ||
| 760 | /// other test failing, because nothing else asserts on the literal text. | ||
| 761 | /// | ||
| 762 | /// The expected value is deliberately NOT computed the way the code | ||
| 763 | /// computes it. It is OpenSSH's own answer, obtained out-of-band with: | ||
| 764 | /// | ||
| 765 | /// ssh-keygen -lf <the .pub file below> | ||
| 766 | /// 256 SHA256:Gzb/mmBlyDmoWq3hMyPjb3SRWklPJ/yDAoD1K+ATvJA ... (ED25519) | ||
| 767 | /// | ||
| 768 | /// so this asserts agreement with an external oracle rather than | ||
| 769 | /// self-consistency — a literal blessed by the code it polices would only | ||
| 770 | /// prove the value stopped changing, not that it was ever right. It is | ||
| 771 | /// also the same command operators run to produce the strings they paste | ||
| 772 | /// into those access lists. | ||
| 773 | /// | ||
| 774 | /// The key below is a throwaway PUBLIC key generated solely for this test. | ||
| 775 | /// It guards nothing and has no matching private key in the repo. | ||
| 776 | #[test] | ||
| 777 | fn principal_format_matches_ssh_keygen() { | ||
| 778 | let pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEAGmBs3Zjby+ykw7iJg0ZoAWunNKoMYMOPcUOk+qAjM principal-format-test@git-collab"; | ||
| 779 | let key = PublicKey::from_openssh(pubkey).unwrap(); | ||
| 780 | |||
| 781 | assert_eq!( | ||
| 782 | ssh_key_principal(&key), | ||
| 783 | "key:SHA256:Gzb/mmBlyDmoWq3hMyPjb3SRWklPJ/yDAoD1K+ATvJA", | ||
| 784 | "principal format changed — this string is persisted in repo \ | ||
| 785 | access lists, so changing it invalidates every existing entry" | ||
| 786 | ); | ||
| 787 | } | ||
| 788 | |||
| 750 | #[test] | 789 | #[test] |
| 751 | fn parse_upload_pack() { | 790 | fn parse_upload_pack() { |
| 752 | let result = parse_git_command("git-upload-pack '/srv/git/repo.git'"); | 791 | let result = parse_git_command("git-upload-pack '/srv/git/repo.git'"); |