PDS software with bells & whistles you didn’t even know you needed. will move this to its own account when ready.

Fix genesis commit stuff, update deps

Changed files
+333 -506
src
api
identity
repo
record
server
oauth
+265 -425
Cargo.lock
··· 117 117 checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 118 118 119 119 [[package]] 120 + name = "arcstr" 121 + version = "1.2.0" 122 + source = "registry+https://github.com/rust-lang/crates.io-index" 123 + checksum = "03918c3dbd7701a85c6b9887732e2921175f26c350b4563841d0958c21d57e6d" 124 + 125 + [[package]] 120 126 name = "asn1-rs" 121 127 version = "0.6.2" 122 128 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 183 189 184 190 [[package]] 185 191 name = "async-compression" 186 - version = "0.4.34" 192 + version = "0.4.36" 187 193 source = "registry+https://github.com/rust-lang/crates.io-index" 188 - checksum = "0e86f6d3dc9dc4352edeea6b8e499e13e3f5dc3b964d7ca5fd411415a3498473" 194 + checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37" 189 195 dependencies = [ 190 196 "compression-codecs", 191 197 "compression-core", ··· 237 243 ] 238 244 239 245 [[package]] 246 + name = "atomic-polyfill" 247 + version = "1.0.3" 248 + source = "registry+https://github.com/rust-lang/crates.io-index" 249 + checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 250 + dependencies = [ 251 + "critical-section", 252 + ] 253 + 254 + [[package]] 240 255 name = "atomic-waker" 241 256 version = "1.1.2" 242 257 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 250 265 251 266 [[package]] 252 267 name = "aws-config" 253 - version = "1.8.11" 268 + version = "1.8.12" 254 269 source = "registry+https://github.com/rust-lang/crates.io-index" 255 - checksum = "a0149602eeaf915158e14029ba0c78dedb8c08d554b024d54c8f239aab46511d" 270 + checksum = "96571e6996817bf3d58f6b569e4b9fd2e9d2fcf9f7424eed07b2ce9bb87535e5" 256 271 dependencies = [ 257 272 "aws-credential-types", 258 273 "aws-runtime", ··· 280 295 281 296 [[package]] 282 297 name = "aws-credential-types" 283 - version = "1.2.10" 298 + version = "1.2.11" 284 299 source = "registry+https://github.com/rust-lang/crates.io-index" 285 - checksum = "b01c9521fa01558f750d183c8c68c81b0155b9d193a4ba7f84c36bd1b6d04a06" 300 + checksum = "3cd362783681b15d136480ad555a099e82ecd8e2d10a841e14dfd0078d67fee3" 286 301 dependencies = [ 287 302 "aws-smithy-async", 288 303 "aws-smithy-runtime-api", ··· 292 307 293 308 [[package]] 294 309 name = "aws-lc-rs" 295 - version = "1.15.1" 310 + version = "1.15.2" 296 311 source = "registry+https://github.com/rust-lang/crates.io-index" 297 - checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f" 312 + checksum = "6a88aab2464f1f25453baa7a07c84c5b7684e274054ba06817f382357f77a288" 298 313 dependencies = [ 299 314 "aws-lc-sys", 300 315 "zeroize", ··· 302 317 303 318 [[package]] 304 319 name = "aws-lc-sys" 305 - version = "0.34.0" 320 + version = "0.35.0" 306 321 source = "registry+https://github.com/rust-lang/crates.io-index" 307 - checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6" 322 + checksum = "b45afffdee1e7c9126814751f88dddc747f41d91da16c9551a0f1e8a11e788a1" 308 323 dependencies = [ 309 324 "cc", 310 325 "cmake", ··· 314 329 315 330 [[package]] 316 331 name = "aws-runtime" 317 - version = "1.5.16" 332 + version = "1.5.17" 318 333 source = "registry+https://github.com/rust-lang/crates.io-index" 319 - checksum = "7ce527fb7e53ba9626fc47824f25e256250556c40d8f81d27dd92aa38239d632" 334 + checksum = "d81b5b2898f6798ad58f484856768bca817e3cd9de0974c24ae0f1113fe88f1b" 320 335 dependencies = [ 321 336 "aws-credential-types", 322 337 "aws-sigv4", ··· 339 354 340 355 [[package]] 341 356 name = "aws-sdk-s3" 342 - version = "1.116.0" 357 + version = "1.118.0" 343 358 source = "registry+https://github.com/rust-lang/crates.io-index" 344 - checksum = "cd4c10050aa905b50dc2a1165a9848d598a80c3a724d6f93b5881aa62235e4a5" 359 + checksum = "d3e6b7079f85d9ea9a70643c9f89f50db70f5ada868fa9cfe08c1ffdf51abc13" 345 360 dependencies = [ 346 361 "aws-credential-types", 347 362 "aws-runtime", ··· 373 388 374 389 [[package]] 375 390 name = "aws-sdk-sso" 376 - version = "1.90.0" 391 + version = "1.91.0" 377 392 source = "registry+https://github.com/rust-lang/crates.io-index" 378 - checksum = "4f18e53542c522459e757f81e274783a78f8c81acdfc8d1522ee8a18b5fb1c66" 393 + checksum = "8ee6402a36f27b52fe67661c6732d684b2635152b676aa2babbfb5204f99115d" 379 394 dependencies = [ 380 395 "aws-credential-types", 381 396 "aws-runtime", ··· 395 410 396 411 [[package]] 397 412 name = "aws-sdk-ssooidc" 398 - version = "1.92.0" 413 + version = "1.93.0" 399 414 source = "registry+https://github.com/rust-lang/crates.io-index" 400 - checksum = "532f4d866012ffa724a4385c82e8dd0e59f0ca0e600f3f22d4c03b6824b34e4a" 415 + checksum = "a45a7f750bbd170ee3677671ad782d90b894548f4e4ae168302c57ec9de5cb3e" 401 416 dependencies = [ 402 417 "aws-credential-types", 403 418 "aws-runtime", ··· 417 432 418 433 [[package]] 419 434 name = "aws-sdk-sts" 420 - version = "1.94.0" 435 + version = "1.95.0" 421 436 source = "registry+https://github.com/rust-lang/crates.io-index" 422 - checksum = "1be6fbbfa1a57724788853a623378223fe828fc4c09b146c992f0c95b6256174" 437 + checksum = "55542378e419558e6b1f398ca70adb0b2088077e79ad9f14eb09441f2f7b2164" 423 438 dependencies = [ 424 439 "aws-credential-types", 425 440 "aws-runtime", ··· 440 455 441 456 [[package]] 442 457 name = "aws-sigv4" 443 - version = "1.3.6" 458 + version = "1.3.7" 444 459 source = "registry+https://github.com/rust-lang/crates.io-index" 445 - checksum = "c35452ec3f001e1f2f6db107b6373f1f48f05ec63ba2c5c9fa91f07dad32af11" 460 + checksum = "69e523e1c4e8e7e8ff219d732988e22bfeae8a1cafdbe6d9eca1546fa080be7c" 446 461 dependencies = [ 447 462 "aws-credential-types", 448 463 "aws-smithy-eventstream", ··· 468 483 469 484 [[package]] 470 485 name = "aws-smithy-async" 471 - version = "1.2.6" 486 + version = "1.2.7" 472 487 source = "registry+https://github.com/rust-lang/crates.io-index" 473 - checksum = "127fcfad33b7dfc531141fda7e1c402ac65f88aca5511a4d31e2e3d2cd01ce9c" 488 + checksum = "9ee19095c7c4dda59f1697d028ce704c24b2d33c6718790c7f1d5a3015b4107c" 474 489 dependencies = [ 475 490 "futures-util", 476 491 "pin-project-lite", ··· 479 494 480 495 [[package]] 481 496 name = "aws-smithy-checksums" 482 - version = "0.63.11" 497 + version = "0.63.12" 483 498 source = "registry+https://github.com/rust-lang/crates.io-index" 484 - checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" 499 + checksum = "87294a084b43d649d967efe58aa1f9e0adc260e13a6938eb904c0ae9b45824ae" 485 500 dependencies = [ 486 501 "aws-smithy-http", 487 502 "aws-smithy-types", ··· 499 514 500 515 [[package]] 501 516 name = "aws-smithy-eventstream" 502 - version = "0.60.13" 517 + version = "0.60.14" 503 518 source = "registry+https://github.com/rust-lang/crates.io-index" 504 - checksum = "e29a304f8319781a39808847efb39561351b1bb76e933da7aa90232673638658" 519 + checksum = "dc12f8b310e38cad85cf3bef45ad236f470717393c613266ce0a89512286b650" 505 520 dependencies = [ 506 521 "aws-smithy-types", 507 522 "bytes", ··· 510 525 511 526 [[package]] 512 527 name = "aws-smithy-http" 513 - version = "0.62.5" 528 + version = "0.62.6" 514 529 source = "registry+https://github.com/rust-lang/crates.io-index" 515 - checksum = "445d5d720c99eed0b4aa674ed00d835d9b1427dd73e04adaf2f94c6b2d6f9fca" 530 + checksum = "826141069295752372f8203c17f28e30c464d22899a43a0c9fd9c458d469c88b" 516 531 dependencies = [ 517 532 "aws-smithy-eventstream", 518 533 "aws-smithy-runtime-api", ··· 532 547 533 548 [[package]] 534 549 name = "aws-smithy-http-client" 535 - version = "1.1.4" 550 + version = "1.1.5" 536 551 source = "registry+https://github.com/rust-lang/crates.io-index" 537 - checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" 552 + checksum = "59e62db736db19c488966c8d787f52e6270be565727236fd5579eaa301e7bc4a" 538 553 dependencies = [ 539 554 "aws-smithy-async", 540 555 "aws-smithy-runtime-api", ··· 552 567 "pin-project-lite", 553 568 "rustls 0.21.12", 554 569 "rustls 0.23.35", 555 - "rustls-native-certs 0.8.2", 570 + "rustls-native-certs", 556 571 "rustls-pki-types", 557 572 "tokio", 558 573 "tokio-rustls 0.26.4", ··· 562 577 563 578 [[package]] 564 579 name = "aws-smithy-json" 565 - version = "0.61.7" 580 + version = "0.61.9" 566 581 source = "registry+https://github.com/rust-lang/crates.io-index" 567 - checksum = "2db31f727935fc63c6eeae8b37b438847639ec330a9161ece694efba257e0c54" 582 + checksum = "49fa1213db31ac95288d981476f78d05d9cbb0353d22cdf3472cc05bb02f6551" 568 583 dependencies = [ 569 584 "aws-smithy-types", 570 585 ] 571 586 572 587 [[package]] 573 588 name = "aws-smithy-observability" 574 - version = "0.1.4" 589 + version = "0.1.5" 575 590 source = "registry+https://github.com/rust-lang/crates.io-index" 576 - checksum = "2d1881b1ea6d313f9890710d65c158bdab6fb08c91ea825f74c1c8c357baf4cc" 591 + checksum = "17f616c3f2260612fe44cede278bafa18e73e6479c4e393e2c4518cf2a9a228a" 577 592 dependencies = [ 578 593 "aws-smithy-runtime-api", 579 594 ] 580 595 581 596 [[package]] 582 597 name = "aws-smithy-query" 583 - version = "0.60.8" 598 + version = "0.60.9" 584 599 source = "registry+https://github.com/rust-lang/crates.io-index" 585 - checksum = "d28a63441360c477465f80c7abac3b9c4d075ca638f982e605b7dc2a2c7156c9" 600 + checksum = "ae5d689cf437eae90460e944a58b5668530d433b4ff85789e69d2f2a556e057d" 586 601 dependencies = [ 587 602 "aws-smithy-types", 588 603 "urlencoding", ··· 590 605 591 606 [[package]] 592 607 name = "aws-smithy-runtime" 593 - version = "1.9.4" 608 + version = "1.9.6" 594 609 source = "registry+https://github.com/rust-lang/crates.io-index" 595 - checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" 610 + checksum = "65fda37911905ea4d3141a01364bc5509a0f32ae3f3b22d6e330c0abfb62d247" 596 611 dependencies = [ 597 612 "aws-smithy-async", 598 613 "aws-smithy-http", ··· 614 629 615 630 [[package]] 616 631 name = "aws-smithy-runtime-api" 617 - version = "1.9.2" 632 + version = "1.9.3" 618 633 source = "registry+https://github.com/rust-lang/crates.io-index" 619 - checksum = "ec7204f9fd94749a7c53b26da1b961b4ac36bf070ef1e0b94bb09f79d4f6c193" 634 + checksum = "ab0d43d899f9e508300e587bf582ba54c27a452dd0a9ea294690669138ae14a2" 620 635 dependencies = [ 621 636 "aws-smithy-async", 622 637 "aws-smithy-types", ··· 631 646 632 647 [[package]] 633 648 name = "aws-smithy-types" 634 - version = "1.3.4" 649 + version = "1.3.5" 635 650 source = "registry+https://github.com/rust-lang/crates.io-index" 636 - checksum = "25f535879a207fce0db74b679cfc3e91a3159c8144d717d55f5832aea9eef46e" 651 + checksum = "905cb13a9895626d49cf2ced759b062d913834c7482c38e49557eac4e6193f01" 637 652 dependencies = [ 638 653 "base64-simd", 639 654 "bytes", ··· 657 672 658 673 [[package]] 659 674 name = "aws-smithy-xml" 660 - version = "0.60.12" 675 + version = "0.60.13" 661 676 source = "registry+https://github.com/rust-lang/crates.io-index" 662 - checksum = "eab77cdd036b11056d2a30a7af7b775789fb024bf216acc13884c6c97752ae56" 677 + checksum = "11b2f670422ff42bf7065031e72b45bc52a3508bd089f743ea90731ca2b6ea57" 663 678 dependencies = [ 664 679 "xmlparser", 665 680 ] 666 681 667 682 [[package]] 668 683 name = "aws-types" 669 - version = "1.3.10" 684 + version = "1.3.11" 670 685 source = "registry+https://github.com/rust-lang/crates.io-index" 671 - checksum = "d79fb68e3d7fe5d4833ea34dc87d2e97d26d3086cb3da660bb6b1f76d98680b6" 686 + checksum = "1d980627d2dd7bfc32a3c025685a033eeab8d365cc840c631ef59d1b8f428164" 672 687 dependencies = [ 673 688 "aws-credential-types", 674 689 "aws-smithy-async", ··· 680 695 681 696 [[package]] 682 697 name = "axum" 683 - version = "0.8.7" 698 + version = "0.8.8" 684 699 source = "registry+https://github.com/rust-lang/crates.io-index" 685 - checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" 700 + checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" 686 701 dependencies = [ 687 702 "axum-core", 688 703 "axum-macros", ··· 812 827 813 828 [[package]] 814 829 name = "base64ct" 815 - version = "1.8.0" 830 + version = "1.8.1" 816 831 source = "registry+https://github.com/rust-lang/crates.io-index" 817 - checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" 832 + checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" 818 833 819 834 [[package]] 820 835 name = "base64urlsafedata" ··· 897 912 "pin-project-lite", 898 913 "rand 0.9.2", 899 914 "rustls 0.23.35", 900 - "rustls-native-certs 0.8.2", 901 - "rustls-pemfile 2.2.0", 915 + "rustls-native-certs", 916 + "rustls-pemfile", 902 917 "rustls-pki-types", 903 918 "serde", 904 919 "serde_derive", ··· 1014 1029 1015 1030 [[package]] 1016 1031 name = "bumpalo" 1017 - version = "3.19.0" 1018 - source = "registry+https://github.com/rust-lang/crates.io-index" 1019 - checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 1020 - 1021 - [[package]] 1022 - name = "bytecount" 1023 - version = "0.6.9" 1032 + version = "3.19.1" 1024 1033 source = "registry+https://github.com/rust-lang/crates.io-index" 1025 - checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" 1034 + checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" 1026 1035 1027 1036 [[package]] 1028 1037 name = "bytemuck" ··· 1062 1071 ] 1063 1072 1064 1073 [[package]] 1065 - name = "camino" 1066 - version = "1.2.1" 1067 - source = "registry+https://github.com/rust-lang/crates.io-index" 1068 - checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" 1069 - dependencies = [ 1070 - "serde_core", 1071 - ] 1072 - 1073 - [[package]] 1074 - name = "cargo-platform" 1075 - version = "0.1.9" 1076 - source = "registry+https://github.com/rust-lang/crates.io-index" 1077 - checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" 1078 - dependencies = [ 1079 - "serde", 1080 - ] 1081 - 1082 - [[package]] 1083 - name = "cargo_metadata" 1084 - version = "0.14.2" 1085 - source = "registry+https://github.com/rust-lang/crates.io-index" 1086 - checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" 1087 - dependencies = [ 1088 - "camino", 1089 - "cargo-platform", 1090 - "semver", 1091 - "serde", 1092 - "serde_json", 1093 - ] 1094 - 1095 - [[package]] 1096 1074 name = "cbor4ii" 1097 1075 version = "0.2.14" 1098 1076 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1103 1081 1104 1082 [[package]] 1105 1083 name = "cc" 1106 - version = "1.2.48" 1084 + version = "1.2.50" 1107 1085 source = "registry+https://github.com/rust-lang/crates.io-index" 1108 - checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" 1086 + checksum = "9f50d563227a1c37cc0a263f64eca3334388c01c5e4c4861a9def205c614383c" 1109 1087 dependencies = [ 1110 1088 "find-msvc-tools", 1111 1089 "jobserver", ··· 1145 1123 "num-traits", 1146 1124 "serde", 1147 1125 "wasm-bindgen", 1148 - "windows-link 0.2.1", 1126 + "windows-link", 1149 1127 ] 1150 1128 1151 1129 [[package]] ··· 1201 1179 1202 1180 [[package]] 1203 1181 name = "cmake" 1204 - version = "0.1.54" 1182 + version = "0.1.57" 1205 1183 source = "registry+https://github.com/rust-lang/crates.io-index" 1206 - checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" 1184 + checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d" 1207 1185 dependencies = [ 1208 1186 "cc", 1187 + ] 1188 + 1189 + [[package]] 1190 + name = "cobs" 1191 + version = "0.3.0" 1192 + source = "registry+https://github.com/rust-lang/crates.io-index" 1193 + checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 1194 + dependencies = [ 1195 + "thiserror 2.0.17", 1209 1196 ] 1210 1197 1211 1198 [[package]] ··· 1230 1217 1231 1218 [[package]] 1232 1219 name = "compression-codecs" 1233 - version = "0.4.33" 1220 + version = "0.4.35" 1234 1221 source = "registry+https://github.com/rust-lang/crates.io-index" 1235 - checksum = "302266479cb963552d11bd042013a58ef1adc56768016c8b82b4199488f2d4ad" 1222 + checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2" 1236 1223 dependencies = [ 1237 1224 "compression-core", 1238 1225 "flate2", ··· 1362 1349 dependencies = [ 1363 1350 "cfg-if", 1364 1351 ] 1352 + 1353 + [[package]] 1354 + name = "critical-section" 1355 + version = "1.2.0" 1356 + source = "registry+https://github.com/rust-lang/crates.io-index" 1357 + checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 1365 1358 1366 1359 [[package]] 1367 1360 name = "crossbeam-channel" ··· 1428 1421 1429 1422 [[package]] 1430 1423 name = "crypto-common" 1431 - version = "0.1.6" 1424 + version = "0.1.7" 1432 1425 source = "registry+https://github.com/rust-lang/crates.io-index" 1433 - checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 1426 + checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" 1434 1427 dependencies = [ 1435 1428 "generic-array", 1436 1429 "rand_core 0.6.4", ··· 1522 1515 "darling_core", 1523 1516 "quote", 1524 1517 "syn 2.0.111", 1525 - ] 1526 - 1527 - [[package]] 1528 - name = "dashmap" 1529 - version = "5.5.3" 1530 - source = "registry+https://github.com/rust-lang/crates.io-index" 1531 - checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" 1532 - dependencies = [ 1533 - "cfg-if", 1534 - "hashbrown 0.14.5", 1535 - "lock_api", 1536 - "once_cell", 1537 - "parking_lot_core", 1538 1518 ] 1539 1519 1540 1520 [[package]] ··· 1836 1816 ] 1837 1817 1838 1818 [[package]] 1819 + name = "embedded-io" 1820 + version = "0.4.0" 1821 + source = "registry+https://github.com/rust-lang/crates.io-index" 1822 + checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 1823 + 1824 + [[package]] 1825 + name = "embedded-io" 1826 + version = "0.6.1" 1827 + source = "registry+https://github.com/rust-lang/crates.io-index" 1828 + checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 1829 + 1830 + [[package]] 1839 1831 name = "encoding_rs" 1840 1832 version = "0.8.35" 1841 1833 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1870 1862 dependencies = [ 1871 1863 "libc", 1872 1864 "windows-sys 0.61.2", 1873 - ] 1874 - 1875 - [[package]] 1876 - name = "error-chain" 1877 - version = "0.12.4" 1878 - source = "registry+https://github.com/rust-lang/crates.io-index" 1879 - checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc" 1880 - dependencies = [ 1881 - "version_check", 1882 1865 ] 1883 1866 1884 1867 [[package]] ··· 1930 1913 1931 1914 [[package]] 1932 1915 name = "ferroid" 1933 - version = "0.8.7" 1916 + version = "0.8.8" 1934 1917 source = "registry+https://github.com/rust-lang/crates.io-index" 1935 - checksum = "e0e9414a6ae93ef993ce40a1e02944f13d4508e2bf6f1ced1580ce6910f08253" 1918 + checksum = "ce161062fb044bd629c2393590efd47cab8d0241faf15704ffb0d47b7b4e4a35" 1936 1919 dependencies = [ 1937 1920 "portable-atomic", 1938 1921 "rand 0.9.2", ··· 2196 2179 2197 2180 [[package]] 2198 2181 name = "generator" 2199 - version = "0.8.7" 2182 + version = "0.8.8" 2200 2183 source = "registry+https://github.com/rust-lang/crates.io-index" 2201 - checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" 2184 + checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" 2202 2185 dependencies = [ 2203 2186 "cc", 2204 2187 "cfg-if", 2205 2188 "libc", 2206 2189 "log", 2207 2190 "rustversion", 2208 - "windows", 2191 + "windows-link", 2192 + "windows-result", 2209 2193 ] 2210 2194 2211 2195 [[package]] 2212 2196 name = "generic-array" 2213 - version = "0.14.9" 2197 + version = "0.14.7" 2214 2198 source = "registry+https://github.com/rust-lang/crates.io-index" 2215 - checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 2199 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 2216 2200 dependencies = [ 2217 2201 "typenum", 2218 2202 "version_check", ··· 2267 2251 ] 2268 2252 2269 2253 [[package]] 2270 - name = "glob" 2271 - version = "0.3.3" 2272 - source = "registry+https://github.com/rust-lang/crates.io-index" 2273 - checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 2274 - 2275 - [[package]] 2276 2254 name = "gloo-storage" 2277 2255 version = "0.3.0" 2278 2256 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2302 2280 2303 2281 [[package]] 2304 2282 name = "governor" 2305 - version = "0.10.2" 2283 + version = "0.10.4" 2306 2284 source = "registry+https://github.com/rust-lang/crates.io-index" 2307 - checksum = "6e23d5986fd4364c2fb7498523540618b4b8d92eec6c36a02e565f66748e2f79" 2285 + checksum = "9efcab3c1958580ff1f25a2a41be1668f7603d849bb63af523b208a3cc1223b8" 2308 2286 dependencies = [ 2309 2287 "cfg-if", 2310 - "dashmap 6.1.0", 2288 + "dashmap", 2311 2289 "futures-sink", 2312 2290 "futures-timer", 2313 2291 "futures-util", ··· 2395 2373 ] 2396 2374 2397 2375 [[package]] 2376 + name = "hash32" 2377 + version = "0.2.1" 2378 + source = "registry+https://github.com/rust-lang/crates.io-index" 2379 + checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 2380 + dependencies = [ 2381 + "byteorder", 2382 + ] 2383 + 2384 + [[package]] 2398 2385 name = "hashbrown" 2399 2386 version = "0.12.3" 2400 2387 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2438 2425 ] 2439 2426 2440 2427 [[package]] 2428 + name = "heapless" 2429 + version = "0.7.17" 2430 + source = "registry+https://github.com/rust-lang/crates.io-index" 2431 + checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 2432 + dependencies = [ 2433 + "atomic-polyfill", 2434 + "hash32", 2435 + "rustc_version", 2436 + "serde", 2437 + "spin 0.9.8", 2438 + "stable_deref_trait", 2439 + ] 2440 + 2441 + [[package]] 2441 2442 name = "heck" 2442 2443 version = "0.4.1" 2443 2444 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2699 2700 "hyper 0.14.32", 2700 2701 "log", 2701 2702 "rustls 0.21.12", 2702 - "rustls-native-certs 0.6.3", 2703 2703 "tokio", 2704 2704 "tokio-rustls 0.24.1", 2705 2705 ] ··· 2714 2714 "hyper 1.8.1", 2715 2715 "hyper-util", 2716 2716 "rustls 0.23.35", 2717 - "rustls-native-certs 0.8.2", 2717 + "rustls-native-certs", 2718 2718 "rustls-pki-types", 2719 2719 "tokio", 2720 2720 "tokio-rustls 0.26.4", ··· 2753 2753 2754 2754 [[package]] 2755 2755 name = "hyper-util" 2756 - version = "0.1.18" 2756 + version = "0.1.19" 2757 2757 source = "registry+https://github.com/rust-lang/crates.io-index" 2758 - checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" 2758 + checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" 2759 2759 dependencies = [ 2760 2760 "base64 0.22.1", 2761 2761 "bytes", ··· 2804 2804 "js-sys", 2805 2805 "log", 2806 2806 "wasm-bindgen", 2807 - "windows-core 0.62.2", 2807 + "windows-core", 2808 2808 ] 2809 2809 2810 2810 [[package]] ··· 2864 2864 2865 2865 [[package]] 2866 2866 name = "icu_properties" 2867 - version = "2.1.1" 2867 + version = "2.1.2" 2868 2868 source = "registry+https://github.com/rust-lang/crates.io-index" 2869 - checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" 2869 + checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" 2870 2870 dependencies = [ 2871 2871 "icu_collections", 2872 2872 "icu_locale_core", ··· 2878 2878 2879 2879 [[package]] 2880 2880 name = "icu_properties_data" 2881 - version = "2.1.1" 2881 + version = "2.1.2" 2882 2882 source = "registry+https://github.com/rust-lang/crates.io-index" 2883 - checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" 2883 + checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" 2884 2884 2885 2885 [[package]] 2886 2886 name = "icu_provider" ··· 3059 3059 3060 3060 [[package]] 3061 3061 name = "itertools" 3062 - version = "0.13.0" 3063 - source = "registry+https://github.com/rust-lang/crates.io-index" 3064 - checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 3065 - dependencies = [ 3066 - "either", 3067 - ] 3068 - 3069 - [[package]] 3070 - name = "itertools" 3071 3062 version = "0.14.0" 3072 3063 source = "registry+https://github.com/rust-lang/crates.io-index" 3073 3064 checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" ··· 3077 3068 3078 3069 [[package]] 3079 3070 name = "itoa" 3080 - version = "1.0.15" 3071 + version = "1.0.16" 3081 3072 source = "registry+https://github.com/rust-lang/crates.io-index" 3082 - checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 3073 + checksum = "7ee5b5339afb4c41626dde77b7a611bd4f2c202b897852b4bcf5d03eddc61010" 3083 3074 3084 3075 [[package]] 3085 3076 name = "jacquard" 3086 - version = "0.9.3" 3077 + version = "0.9.5" 3087 3078 source = "registry+https://github.com/rust-lang/crates.io-index" 3088 - checksum = "c19864761c8d69d23201fd19dd021cddf1fb7acbebb6e6b50e2b1776ec982768" 3079 + checksum = "f7c1fdbcf1153e6e6b87fde20036c1ffe7473c4852f1c6369bc4ef1fe47ccb9f" 3089 3080 dependencies = [ 3090 3081 "bytes", 3091 3082 "getrandom 0.2.16", ··· 3114 3105 3115 3106 [[package]] 3116 3107 name = "jacquard-api" 3117 - version = "0.9.2" 3108 + version = "0.9.5" 3118 3109 source = "registry+https://github.com/rust-lang/crates.io-index" 3119 - checksum = "bbbfd6e2b10fa1731f4d4e40c8f791956b0d4f804fb3efef891afec903f20597" 3110 + checksum = "4979fb1848c1dd7ac8fd12745bc71f56f6da61374407d5f9b06005467a954e5a" 3120 3111 dependencies = [ 3121 3112 "bon", 3122 3113 "bytes", ··· 3126 3117 "miette", 3127 3118 "rustversion", 3128 3119 "serde", 3120 + "serde_bytes", 3129 3121 "serde_ipld_dagcbor", 3130 3122 "thiserror 2.0.17", 3131 3123 "unicode-segmentation", ··· 3133 3125 3134 3126 [[package]] 3135 3127 name = "jacquard-axum" 3136 - version = "0.9.2" 3128 + version = "0.9.6" 3137 3129 source = "registry+https://github.com/rust-lang/crates.io-index" 3138 - checksum = "ee1b58111f0a2a08ee18525ac661a0448fdc84d4ecb423d64aaaf88074460380" 3130 + checksum = "ed99b0dc0cd54189bebb83d5d5cc5ac2889f62ede9729a6ead9035073d111bc9" 3139 3131 dependencies = [ 3140 3132 "axum", 3141 3133 "bytes", ··· 3156 3148 3157 3149 [[package]] 3158 3150 name = "jacquard-common" 3159 - version = "0.9.2" 3151 + version = "0.9.5" 3160 3152 source = "registry+https://github.com/rust-lang/crates.io-index" 3161 - checksum = "df86cb117d9f1c2b0251ba67c3f0e3f963fd22abc6cf8de0e02a7fc846c288ca" 3153 + checksum = "1751921e0bdae5e0077afade6161545e9ef7698306c868f800916e99ecbcaae9" 3162 3154 dependencies = [ 3163 3155 "base64 0.22.1", 3164 3156 "bon", ··· 3177 3169 "multihash", 3178 3170 "ouroboros", 3179 3171 "p256 0.13.2", 3172 + "postcard", 3180 3173 "rand 0.9.2", 3181 3174 "regex", 3182 3175 "regex-lite", 3183 3176 "reqwest", 3184 3177 "serde", 3178 + "serde_bytes", 3185 3179 "serde_html_form", 3186 3180 "serde_ipld_dagcbor", 3187 3181 "serde_json", ··· 3196 3190 3197 3191 [[package]] 3198 3192 name = "jacquard-derive" 3199 - version = "0.9.2" 3193 + version = "0.9.5" 3200 3194 source = "registry+https://github.com/rust-lang/crates.io-index" 3201 - checksum = "42ca61a69dc7aa8fb2d7163416514ff7df5d79f2e8b22e269f4610afa85572fe" 3195 + checksum = "9c8d73dfee07943fdab93569ed1c28b06c6921ed891c08b415c4a323ff67e593" 3202 3196 dependencies = [ 3203 3197 "heck 0.5.0", 3204 3198 "jacquard-lexicon", ··· 3209 3203 3210 3204 [[package]] 3211 3205 name = "jacquard-identity" 3212 - version = "0.9.2" 3206 + version = "0.9.5" 3213 3207 source = "registry+https://github.com/rust-lang/crates.io-index" 3214 - checksum = "1ef714cacebfca486558a9f8e205daf466bfba0466c4d0c450fd6d0252400a53" 3208 + checksum = "e7aaefa819fa4213cf59f180dba932f018a7cd0599582fd38474ee2a38c16cf2" 3215 3209 dependencies = [ 3216 3210 "bon", 3217 3211 "bytes", ··· 3221 3215 "jacquard-common", 3222 3216 "jacquard-lexicon", 3223 3217 "miette", 3224 - "mini-moka", 3218 + "mini-moka-wasm", 3219 + "n0-future", 3225 3220 "percent-encoding", 3226 3221 "reqwest", 3227 3222 "serde", ··· 3236 3231 3237 3232 [[package]] 3238 3233 name = "jacquard-lexicon" 3239 - version = "0.9.2" 3234 + version = "0.9.5" 3240 3235 source = "registry+https://github.com/rust-lang/crates.io-index" 3241 - checksum = "de87f2c938faea1b1f1b32d5b9e0c870e7b5bb5efbf96e3692ae2d8f6b2beb7a" 3236 + checksum = "8411aff546569b0a1e0ef669bed2380cec1c00d48f02f3fcd57a71545321b3d8" 3242 3237 dependencies = [ 3243 3238 "cid", 3244 - "dashmap 6.1.0", 3239 + "dashmap", 3245 3240 "heck 0.5.0", 3246 3241 "inventory", 3247 3242 "jacquard-common", ··· 3263 3258 3264 3259 [[package]] 3265 3260 name = "jacquard-oauth" 3266 - version = "0.9.2" 3261 + version = "0.9.6" 3267 3262 source = "registry+https://github.com/rust-lang/crates.io-index" 3268 - checksum = "aafe9b4b2160cb57cd48d02d84d2c09706853d098e053baacb06a59fcd59a898" 3263 + checksum = "68bf0b0e061d85b09cfa78588dc098918d5b62f539a719165c6a806a1d2c0ef2" 3269 3264 dependencies = [ 3270 3265 "base64 0.22.1", 3271 3266 "bytes", 3272 3267 "chrono", 3273 - "dashmap 6.1.0", 3268 + "dashmap", 3274 3269 "elliptic-curve 0.13.8", 3275 3270 "http 1.4.0", 3276 3271 "jacquard-common", ··· 3293 3288 3294 3289 [[package]] 3295 3290 name = "jacquard-repo" 3296 - version = "0.9.2" 3291 + version = "0.9.6" 3297 3292 source = "registry+https://github.com/rust-lang/crates.io-index" 3298 - checksum = "2ccdadfea11df142fbfb11cf7e5c1f7b8c0548758dedb0ce0eac182777f91f18" 3293 + checksum = "c59705c56678f4d57229ab7790313b9f7d8f244a658d01ad1f4344e7d2efe2a3" 3299 3294 dependencies = [ 3300 3295 "bytes", 3301 3296 "cid", ··· 3445 3440 3446 3441 [[package]] 3447 3442 name = "libredox" 3448 - version = "0.1.10" 3443 + version = "0.1.11" 3449 3444 source = "registry+https://github.com/rust-lang/crates.io-index" 3450 - checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" 3445 + checksum = "df15f6eac291ed1cf25865b1ee60399f57e7c227e7f51bdbd4c5270396a9ed50" 3451 3446 dependencies = [ 3452 3447 "bitflags", 3453 3448 "libc", 3454 - "redox_syscall", 3449 + "redox_syscall 0.6.0", 3455 3450 ] 3456 3451 3457 3452 [[package]] ··· 3493 3488 3494 3489 [[package]] 3495 3490 name = "log" 3496 - version = "0.4.28" 3491 + version = "0.4.29" 3497 3492 source = "registry+https://github.com/rust-lang/crates.io-index" 3498 - checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 3493 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 3499 3494 3500 3495 [[package]] 3501 3496 name = "loom" ··· 3693 3688 ] 3694 3689 3695 3690 [[package]] 3696 - name = "mini-moka" 3697 - version = "0.10.3" 3691 + name = "mini-moka-wasm" 3692 + version = "0.10.99" 3698 3693 source = "registry+https://github.com/rust-lang/crates.io-index" 3699 - checksum = "c325dfab65f261f386debee8b0969da215b3fa0037e74c8a1234db7ba986d803" 3694 + checksum = "0102b9a2ad50fa47ca89eead2316c8222285ecfbd3f69ce99564fbe4253866e8" 3700 3695 dependencies = [ 3701 3696 "crossbeam-channel", 3702 3697 "crossbeam-utils", 3703 - "dashmap 5.5.3", 3704 - "skeptic", 3698 + "dashmap", 3705 3699 "smallvec", 3706 3700 "tagptr", 3707 3701 "triomphe", 3702 + "web-time", 3708 3703 ] 3709 3704 3710 3705 [[package]] ··· 3725 3720 3726 3721 [[package]] 3727 3722 name = "mio" 3728 - version = "1.1.0" 3723 + version = "1.1.1" 3729 3724 source = "registry+https://github.com/rust-lang/crates.io-index" 3730 - checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 3725 + checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 3731 3726 dependencies = [ 3732 3727 "libc", 3733 3728 "wasi", ··· 3736 3731 3737 3732 [[package]] 3738 3733 name = "moxcms" 3739 - version = "0.7.10" 3734 + version = "0.7.11" 3740 3735 source = "registry+https://github.com/rust-lang/crates.io-index" 3741 - checksum = "80986bbbcf925ebd3be54c26613d861255284584501595cf418320c078945608" 3736 + checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97" 3742 3737 dependencies = [ 3743 3738 "num-traits", 3744 3739 "pxfm", ··· 4096 4091 dependencies = [ 4097 4092 "cfg-if", 4098 4093 "libc", 4099 - "redox_syscall", 4094 + "redox_syscall 0.5.18", 4100 4095 "smallvec", 4101 - "windows-link 0.2.1", 4096 + "windows-link", 4102 4097 ] 4103 4098 4104 4099 [[package]] ··· 4291 4286 4292 4287 [[package]] 4293 4288 name = "portable-atomic" 4294 - version = "1.11.1" 4289 + version = "1.12.0" 4290 + source = "registry+https://github.com/rust-lang/crates.io-index" 4291 + checksum = "f59e70c4aef1e55797c2e8fd94a4f2a973fc972cfde0e0b05f683667b0cd39dd" 4292 + 4293 + [[package]] 4294 + name = "postcard" 4295 + version = "1.1.3" 4295 4296 source = "registry+https://github.com/rust-lang/crates.io-index" 4296 - checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 4297 + checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 4298 + dependencies = [ 4299 + "cobs", 4300 + "embedded-io 0.4.0", 4301 + "embedded-io 0.6.1", 4302 + "heapless", 4303 + "serde", 4304 + ] 4297 4305 4298 4306 [[package]] 4299 4307 name = "potential_utf" ··· 4407 4415 checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" 4408 4416 dependencies = [ 4409 4417 "anyhow", 4410 - "itertools 0.14.0", 4418 + "itertools", 4411 4419 "proc-macro2", 4412 4420 "quote", 4413 4421 "syn 2.0.111", ··· 4423 4431 ] 4424 4432 4425 4433 [[package]] 4426 - name = "pulldown-cmark" 4427 - version = "0.9.6" 4428 - source = "registry+https://github.com/rust-lang/crates.io-index" 4429 - checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" 4430 - dependencies = [ 4431 - "bitflags", 4432 - "memchr", 4433 - "unicase", 4434 - ] 4435 - 4436 - [[package]] 4437 4434 name = "pxfm" 4438 4435 version = "0.1.27" 4439 4436 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4635 4632 4636 4633 [[package]] 4637 4634 name = "redis" 4638 - version = "0.27.6" 4635 + version = "1.0.1" 4639 4636 source = "registry+https://github.com/rust-lang/crates.io-index" 4640 - checksum = "09d8f99a4090c89cc489a94833c901ead69bfbf3877b4867d5482e321ee875bc" 4637 + checksum = "e2dc509b442812959ab125c74be2a930dd9b603038b6da9df9ec013aa23a4e9c" 4641 4638 dependencies = [ 4642 4639 "arc-swap", 4643 - "async-trait", 4640 + "arcstr", 4644 4641 "backon", 4645 4642 "bytes", 4643 + "cfg-if", 4646 4644 "combine", 4647 - "futures", 4645 + "futures-channel", 4648 4646 "futures-util", 4649 - "itertools 0.13.0", 4650 4647 "itoa", 4651 4648 "num-bigint", 4652 4649 "percent-encoding", 4653 4650 "pin-project-lite", 4654 4651 "ryu", 4655 4652 "sha1_smol", 4656 - "socket2 0.5.10", 4653 + "socket2 0.6.1", 4657 4654 "tokio", 4658 4655 "tokio-util", 4659 4656 "url", 4657 + "xxhash-rust", 4660 4658 ] 4661 4659 4662 4660 [[package]] ··· 4664 4662 version = "0.5.18" 4665 4663 source = "registry+https://github.com/rust-lang/crates.io-index" 4666 4664 checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 4665 + dependencies = [ 4666 + "bitflags", 4667 + ] 4668 + 4669 + [[package]] 4670 + name = "redox_syscall" 4671 + version = "0.6.0" 4672 + source = "registry+https://github.com/rust-lang/crates.io-index" 4673 + checksum = "ec96166dafa0886eb81fe1c0a388bece180fbef2135f97c1e2cf8302e74b43b5" 4667 4674 dependencies = [ 4668 4675 "bitflags", 4669 4676 ] ··· 4725 4732 4726 4733 [[package]] 4727 4734 name = "reqwest" 4728 - version = "0.12.24" 4735 + version = "0.12.28" 4729 4736 source = "registry+https://github.com/rust-lang/crates.io-index" 4730 - checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" 4737 + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" 4731 4738 dependencies = [ 4732 - "async-compression", 4733 4739 "base64 0.22.1", 4734 4740 "bytes", 4735 4741 "encoding_rs", 4736 4742 "futures-core", 4737 - "futures-util", 4738 4743 "h2 0.4.12", 4739 4744 "http 1.4.0", 4740 4745 "http-body 1.0.1", ··· 4759 4764 "tokio", 4760 4765 "tokio-native-tls", 4761 4766 "tokio-rustls 0.26.4", 4762 - "tokio-util", 4763 4767 "tower", 4764 4768 "tower-http", 4765 4769 "tower-service", 4766 4770 "url", 4767 4771 "wasm-bindgen", 4768 4772 "wasm-bindgen-futures", 4769 - "wasm-streams", 4770 4773 "web-sys", 4771 4774 "webpki-roots 1.0.4", 4772 4775 ] ··· 4858 4861 4859 4862 [[package]] 4860 4863 name = "rustix" 4861 - version = "1.1.2" 4864 + version = "1.1.3" 4862 4865 source = "registry+https://github.com/rust-lang/crates.io-index" 4863 - checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 4866 + checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" 4864 4867 dependencies = [ 4865 4868 "bitflags", 4866 4869 "errno", ··· 4899 4902 4900 4903 [[package]] 4901 4904 name = "rustls-native-certs" 4902 - version = "0.6.3" 4903 - source = "registry+https://github.com/rust-lang/crates.io-index" 4904 - checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 4905 - dependencies = [ 4906 - "openssl-probe", 4907 - "rustls-pemfile 1.0.4", 4908 - "schannel", 4909 - "security-framework 2.11.1", 4910 - ] 4911 - 4912 - [[package]] 4913 - name = "rustls-native-certs" 4914 4905 version = "0.8.2" 4915 4906 source = "registry+https://github.com/rust-lang/crates.io-index" 4916 4907 checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" ··· 4923 4914 4924 4915 [[package]] 4925 4916 name = "rustls-pemfile" 4926 - version = "1.0.4" 4927 - source = "registry+https://github.com/rust-lang/crates.io-index" 4928 - checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 4929 - dependencies = [ 4930 - "base64 0.21.7", 4931 - ] 4932 - 4933 - [[package]] 4934 - name = "rustls-pemfile" 4935 4917 version = "2.2.0" 4936 4918 source = "registry+https://github.com/rust-lang/crates.io-index" 4937 4919 checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" ··· 4941 4923 4942 4924 [[package]] 4943 4925 name = "rustls-pki-types" 4944 - version = "1.13.1" 4926 + version = "1.13.2" 4945 4927 source = "registry+https://github.com/rust-lang/crates.io-index" 4946 - checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" 4928 + checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" 4947 4929 dependencies = [ 4948 4930 "web-time", 4949 4931 "zeroize", ··· 4979 4961 4980 4962 [[package]] 4981 4963 name = "ryu" 4982 - version = "1.0.20" 4964 + version = "1.0.21" 4983 4965 source = "registry+https://github.com/rust-lang/crates.io-index" 4984 - checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 4985 - 4986 - [[package]] 4987 - name = "same-file" 4988 - version = "1.0.6" 4989 - source = "registry+https://github.com/rust-lang/crates.io-index" 4990 - checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 4991 - dependencies = [ 4992 - "winapi-util", 4993 - ] 4966 + checksum = "62049b2877bf12821e8f9ad256ee38fdc31db7387ec2d3b3f403024de2034aea" 4994 4967 4995 4968 [[package]] 4996 4969 name = "schannel" ··· 5116 5089 version = "1.0.27" 5117 5090 source = "registry+https://github.com/rust-lang/crates.io-index" 5118 5091 checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 5119 - dependencies = [ 5120 - "serde", 5121 - "serde_core", 5122 - ] 5123 5092 5124 5093 [[package]] 5125 5094 name = "send_wrapper" ··· 5204 5173 5205 5174 [[package]] 5206 5175 name = "serde_json" 5207 - version = "1.0.145" 5176 + version = "1.0.146" 5208 5177 source = "registry+https://github.com/rust-lang/crates.io-index" 5209 - checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 5178 + checksum = "217ca874ae0207aac254aa02c957ded05585a90892cc8d87f9e5fa49669dadd8" 5210 5179 dependencies = [ 5211 5180 "itoa", 5212 5181 "memchr", ··· 5354 5323 5355 5324 [[package]] 5356 5325 name = "simd-adler32" 5357 - version = "0.3.7" 5326 + version = "0.3.8" 5358 5327 source = "registry+https://github.com/rust-lang/crates.io-index" 5359 - checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 5328 + checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 5360 5329 5361 5330 [[package]] 5362 5331 name = "simple_asn1" ··· 5377 5346 checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 5378 5347 5379 5348 [[package]] 5380 - name = "skeptic" 5381 - version = "0.13.7" 5382 - source = "registry+https://github.com/rust-lang/crates.io-index" 5383 - checksum = "16d23b015676c90a0f01c197bfdc786c20342c73a0afdda9025adb0bc42940a8" 5384 - dependencies = [ 5385 - "bytecount", 5386 - "cargo_metadata", 5387 - "error-chain", 5388 - "glob", 5389 - "pulldown-cmark", 5390 - "tempfile", 5391 - "walkdir", 5392 - ] 5393 - 5394 - [[package]] 5395 5349 name = "sketches-ddsketch" 5396 5350 version = "0.3.0" 5397 5351 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 5882 5836 5883 5837 [[package]] 5884 5838 name = "testcontainers" 5885 - version = "0.26.0" 5839 + version = "0.26.2" 5886 5840 source = "registry+https://github.com/rust-lang/crates.io-index" 5887 - checksum = "a347cac4368ba4f1871743adb27dc14829024d26b1763572404726b0b9943eb8" 5841 + checksum = "1483605f58b2fff80d786eb56a0b6b4e8b1e5423fbc9ec2e3e562fa2040d6f27" 5888 5842 dependencies = [ 5889 5843 "astral-tokio-tar", 5890 5844 "async-trait", ··· 5895 5849 "etcetera 0.11.0", 5896 5850 "ferroid", 5897 5851 "futures", 5898 - "itertools 0.14.0", 5852 + "itertools", 5899 5853 "log", 5900 5854 "memchr", 5901 5855 "parse-display", ··· 6197 6151 6198 6152 [[package]] 6199 6153 name = "tower-http" 6200 - version = "0.6.7" 6154 + version = "0.6.8" 6201 6155 source = "registry+https://github.com/rust-lang/crates.io-index" 6202 - checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" 6156 + checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 6203 6157 dependencies = [ 6158 + "async-compression", 6204 6159 "bitflags", 6205 6160 "bytes", 6206 6161 "futures-core", ··· 6237 6192 6238 6193 [[package]] 6239 6194 name = "tracing" 6240 - version = "0.1.43" 6195 + version = "0.1.44" 6241 6196 source = "registry+https://github.com/rust-lang/crates.io-index" 6242 - checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" 6197 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 6243 6198 dependencies = [ 6244 6199 "log", 6245 6200 "pin-project-lite", ··· 6260 6215 6261 6216 [[package]] 6262 6217 name = "tracing-core" 6263 - version = "0.1.35" 6218 + version = "0.1.36" 6264 6219 source = "registry+https://github.com/rust-lang/crates.io-index" 6265 - checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" 6220 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 6266 6221 dependencies = [ 6267 6222 "once_cell", 6268 6223 "valuable", ··· 6586 6541 checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" 6587 6542 6588 6543 [[package]] 6589 - name = "walkdir" 6590 - version = "2.5.0" 6591 - source = "registry+https://github.com/rust-lang/crates.io-index" 6592 - checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 6593 - dependencies = [ 6594 - "same-file", 6595 - "winapi-util", 6596 - ] 6597 - 6598 - [[package]] 6599 6544 name = "want" 6600 6545 version = "0.3.1" 6601 6546 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6684 6629 ] 6685 6630 6686 6631 [[package]] 6687 - name = "wasm-streams" 6688 - version = "0.4.2" 6689 - source = "registry+https://github.com/rust-lang/crates.io-index" 6690 - checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 6691 - dependencies = [ 6692 - "futures-util", 6693 - "js-sys", 6694 - "wasm-bindgen", 6695 - "wasm-bindgen-futures", 6696 - "web-sys", 6697 - ] 6698 - 6699 - [[package]] 6700 6632 name = "web-sys" 6701 6633 version = "0.3.83" 6702 6634 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6853 6785 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 6854 6786 6855 6787 [[package]] 6856 - name = "winapi-util" 6857 - version = "0.1.11" 6858 - source = "registry+https://github.com/rust-lang/crates.io-index" 6859 - checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 6860 - dependencies = [ 6861 - "windows-sys 0.61.2", 6862 - ] 6863 - 6864 - [[package]] 6865 6788 name = "winapi-x86_64-pc-windows-gnu" 6866 6789 version = "0.4.0" 6867 6790 source = "registry+https://github.com/rust-lang/crates.io-index" 6868 6791 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 6869 6792 6870 6793 [[package]] 6871 - name = "windows" 6872 - version = "0.61.3" 6873 - source = "registry+https://github.com/rust-lang/crates.io-index" 6874 - checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 6875 - dependencies = [ 6876 - "windows-collections", 6877 - "windows-core 0.61.2", 6878 - "windows-future", 6879 - "windows-link 0.1.3", 6880 - "windows-numerics", 6881 - ] 6882 - 6883 - [[package]] 6884 - name = "windows-collections" 6885 - version = "0.2.0" 6886 - source = "registry+https://github.com/rust-lang/crates.io-index" 6887 - checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 6888 - dependencies = [ 6889 - "windows-core 0.61.2", 6890 - ] 6891 - 6892 - [[package]] 6893 - name = "windows-core" 6894 - version = "0.61.2" 6895 - source = "registry+https://github.com/rust-lang/crates.io-index" 6896 - checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 6897 - dependencies = [ 6898 - "windows-implement", 6899 - "windows-interface", 6900 - "windows-link 0.1.3", 6901 - "windows-result 0.3.4", 6902 - "windows-strings 0.4.2", 6903 - ] 6904 - 6905 - [[package]] 6906 6794 name = "windows-core" 6907 6795 version = "0.62.2" 6908 6796 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6910 6798 dependencies = [ 6911 6799 "windows-implement", 6912 6800 "windows-interface", 6913 - "windows-link 0.2.1", 6914 - "windows-result 0.4.1", 6915 - "windows-strings 0.5.1", 6916 - ] 6917 - 6918 - [[package]] 6919 - name = "windows-future" 6920 - version = "0.2.1" 6921 - source = "registry+https://github.com/rust-lang/crates.io-index" 6922 - checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 6923 - dependencies = [ 6924 - "windows-core 0.61.2", 6925 - "windows-link 0.1.3", 6926 - "windows-threading", 6801 + "windows-link", 6802 + "windows-result", 6803 + "windows-strings", 6927 6804 ] 6928 6805 6929 6806 [[package]] ··· 6950 6827 6951 6828 [[package]] 6952 6829 name = "windows-link" 6953 - version = "0.1.3" 6954 - source = "registry+https://github.com/rust-lang/crates.io-index" 6955 - checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 6956 - 6957 - [[package]] 6958 - name = "windows-link" 6959 6830 version = "0.2.1" 6960 6831 source = "registry+https://github.com/rust-lang/crates.io-index" 6961 6832 checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 6962 6833 6963 6834 [[package]] 6964 - name = "windows-numerics" 6965 - version = "0.2.0" 6966 - source = "registry+https://github.com/rust-lang/crates.io-index" 6967 - checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 6968 - dependencies = [ 6969 - "windows-core 0.61.2", 6970 - "windows-link 0.1.3", 6971 - ] 6972 - 6973 - [[package]] 6974 6835 name = "windows-registry" 6975 6836 version = "0.6.1" 6976 6837 source = "registry+https://github.com/rust-lang/crates.io-index" 6977 6838 checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 6978 6839 dependencies = [ 6979 - "windows-link 0.2.1", 6980 - "windows-result 0.4.1", 6981 - "windows-strings 0.5.1", 6982 - ] 6983 - 6984 - [[package]] 6985 - name = "windows-result" 6986 - version = "0.3.4" 6987 - source = "registry+https://github.com/rust-lang/crates.io-index" 6988 - checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 6989 - dependencies = [ 6990 - "windows-link 0.1.3", 6840 + "windows-link", 6841 + "windows-result", 6842 + "windows-strings", 6991 6843 ] 6992 6844 6993 6845 [[package]] ··· 6996 6848 source = "registry+https://github.com/rust-lang/crates.io-index" 6997 6849 checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 6998 6850 dependencies = [ 6999 - "windows-link 0.2.1", 7000 - ] 7001 - 7002 - [[package]] 7003 - name = "windows-strings" 7004 - version = "0.4.2" 7005 - source = "registry+https://github.com/rust-lang/crates.io-index" 7006 - checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 7007 - dependencies = [ 7008 - "windows-link 0.1.3", 6851 + "windows-link", 7009 6852 ] 7010 6853 7011 6854 [[package]] ··· 7014 6857 source = "registry+https://github.com/rust-lang/crates.io-index" 7015 6858 checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 7016 6859 dependencies = [ 7017 - "windows-link 0.2.1", 6860 + "windows-link", 7018 6861 ] 7019 6862 7020 6863 [[package]] ··· 7050 6893 source = "registry+https://github.com/rust-lang/crates.io-index" 7051 6894 checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 7052 6895 dependencies = [ 7053 - "windows-link 0.2.1", 6896 + "windows-link", 7054 6897 ] 7055 6898 7056 6899 [[package]] ··· 7090 6933 source = "registry+https://github.com/rust-lang/crates.io-index" 7091 6934 checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 7092 6935 dependencies = [ 7093 - "windows-link 0.2.1", 6936 + "windows-link", 7094 6937 "windows_aarch64_gnullvm 0.53.1", 7095 6938 "windows_aarch64_msvc 0.53.1", 7096 6939 "windows_i686_gnu 0.53.1", ··· 7099 6942 "windows_x86_64_gnu 0.53.1", 7100 6943 "windows_x86_64_gnullvm 0.53.1", 7101 6944 "windows_x86_64_msvc 0.53.1", 7102 - ] 7103 - 7104 - [[package]] 7105 - name = "windows-threading" 7106 - version = "0.1.0" 7107 - source = "registry+https://github.com/rust-lang/crates.io-index" 7108 - checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 7109 - dependencies = [ 7110 - "windows-link 0.1.3", 7111 6945 ] 7112 6946 7113 6947 [[package]] ··· 7338 7172 checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" 7339 7173 7340 7174 [[package]] 7175 + name = "xxhash-rust" 7176 + version = "0.8.15" 7177 + source = "registry+https://github.com/rust-lang/crates.io-index" 7178 + checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 7179 + 7180 + [[package]] 7341 7181 name = "yansi" 7342 7182 version = "1.0.1" 7343 7183 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 7457 7297 7458 7298 [[package]] 7459 7299 name = "zune-jpeg" 7460 - version = "0.5.6" 7300 + version = "0.5.8" 7461 7301 source = "registry+https://github.com/rust-lang/crates.io-index" 7462 - checksum = "f520eebad972262a1dde0ec455bce4f8b298b1e5154513de58c114c4c54303e8" 7302 + checksum = "e35aee689668bf9bd6f6f3a6c60bb29ba1244b3b43adfd50edd554a371da37d5" 7463 7303 dependencies = [ 7464 7304 "zune-core", 7465 7305 ]
+14 -14
Cargo.toml
··· 5 5 [dependencies] 6 6 anyhow = "1.0.100" 7 7 async-trait = "0.1.89" 8 - aws-config = "1.8.11" 9 - aws-sdk-s3 = "1.116.0" 10 - axum = { version = "0.8.7", features = ["ws", "macros"] } 8 + aws-config = "1.8.12" 9 + aws-sdk-s3 = "1.118.0" 10 + axum = { version = "0.8.8", features = ["ws", "macros"] } 11 11 base32 = "0.5" 12 12 base64 = "0.22.1" 13 13 bcrypt = "0.17.1" ··· 20 20 hkdf = "0.12" 21 21 hmac = "0.12" 22 22 aes-gcm = "0.10" 23 - jacquard = { version = "0.9.3", default-features = false, features = ["api", "api_bluesky", "api_full", "derive", "dns"] } 24 - jacquard-axum = "0.9.2" 25 - jacquard-repo = "0.9.2" 23 + jacquard = { version = "0.9.5", default-features = false, features = ["api", "api_bluesky", "api_full", "derive", "dns"] } 24 + jacquard-axum = "0.9.6" 25 + jacquard-repo = "0.9.6" 26 26 jsonwebtoken = { version = "10.2.0", features = ["rust_crypto"] } 27 27 k256 = { version = "0.13.3", features = ["ecdsa", "pem", "pkcs8"] } 28 28 multibase = "0.9.1" 29 29 multihash = "0.19.3" 30 30 rand = "0.8.5" 31 - reqwest = { version = "0.12.24", features = ["json"] } 31 + reqwest = { version = "0.12.28", features = ["json"] } 32 32 serde = { version = "1.0.228", features = ["derive"] } 33 33 serde_bytes = "0.11.14" 34 34 serde_ipld_dagcbor = "0.6.4" 35 35 ipld-core = "0.4.2" 36 - serde_json = "1.0.145" 36 + serde_json = "1.0.146" 37 37 serde_urlencoded = "0.7" 38 38 sha2 = "0.10.9" 39 39 subtle = "2.5" ··· 49 49 urlencoding = "2.1" 50 50 uuid = { version = "1.19.0", features = ["v4", "v5", "fast-rng"] } 51 51 iroh-car = "0.5.1" 52 - image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] } 53 - redis = { version = "0.27", features = ["tokio-comp", "connection-manager"] } 54 - tower-http = { version = "0.6", features = ["fs", "cors"] } 52 + image = { version = "0.25.9", default-features = false, features = ["jpeg", "png", "gif", "webp"] } 53 + redis = { version = "1.0.1", features = ["tokio-comp", "connection-manager"] } 54 + tower-http = { version = "0.6.8", features = ["fs", "cors"] } 55 55 hickory-resolver = { version = "0.24", features = ["tokio-runtime"] } 56 - metrics = "0.24" 56 + metrics = "0.24.3" 57 57 metrics-exporter-prometheus = { version = "0.16", default-features = false, features = ["http-listener"] } 58 58 bs58 = "0.5.1" 59 59 totp-rs = { version = "5", features = ["qr"] } 60 - webauthn-rs = { version = "0.5", features = ["danger-allow-state-serialisation", "danger-user-presence-only-security-keys"] } 60 + webauthn-rs = { version = "0.5.4", features = ["danger-allow-state-serialisation", "danger-user-presence-only-security-keys"] } 61 61 webauthn-rs-proto = "0.5.4" 62 62 [features] 63 63 external-infra = [] 64 64 [dev-dependencies] 65 65 ctor = "0.6.3" 66 - testcontainers = "0.26.0" 66 + testcontainers = "0.26.2" 67 67 testcontainers-modules = { version = "0.14.0", features = ["postgres"] } 68 68 wiremock = "0.6.5" 69 69 # urlencoding is also in dependencies, but tests use it directly
+6 -27
src/api/identity/account.rs
··· 1 1 use super::did::verify_did_web; 2 + use crate::api::repo::record::utils::create_signed_commit; 2 3 use crate::auth::{ServiceTokenVerifier, extract_bearer_token_from_header, is_service_token}; 3 4 use crate::plc::{PlcClient, create_genesis_operation, signing_key_to_did_key}; 4 5 use crate::state::{AppState, RateLimitKind}; ··· 10 11 response::{IntoResponse, Response}, 11 12 }; 12 13 use bcrypt::{DEFAULT_COST, hash}; 13 - use jacquard::types::{did::Did, integer::LimitedU32, string::Tid}; 14 - use jacquard_repo::{commit::Commit, mst::Mst, storage::BlockStore}; 14 + use jacquard::types::{integer::LimitedU32, string::Tid}; 15 + use jacquard_repo::{mst::Mst, storage::BlockStore}; 15 16 use k256::{SecretKey, ecdsa::SigningKey}; 16 17 use rand::rngs::OsRng; 17 18 use serde::{Deserialize, Serialize}; ··· 864 865 .into_response(); 865 866 } 866 867 }; 867 - let did_obj = match Did::new(&did) { 868 - Ok(d) => d, 869 - Err(_) => { 870 - return ( 871 - StatusCode::INTERNAL_SERVER_ERROR, 872 - Json(json!({"error": "InternalError", "message": "Invalid DID"})), 873 - ) 874 - .into_response(); 875 - } 876 - }; 877 868 let rev = Tid::now(LimitedU32::MIN); 878 - let unsigned_commit = Commit::new_unsigned(did_obj, mst_root, rev, None); 879 - let signed_commit = match unsigned_commit.sign(&signing_key) { 880 - Ok(c) => c, 881 - Err(e) => { 882 - error!("Error signing genesis commit: {:?}", e); 883 - return ( 884 - StatusCode::INTERNAL_SERVER_ERROR, 885 - Json(json!({"error": "InternalError"})), 886 - ) 887 - .into_response(); 888 - } 889 - }; 890 - let commit_bytes = match signed_commit.to_cbor() { 891 - Ok(b) => b, 869 + let (commit_bytes, _sig) = match create_signed_commit(&did, mst_root, &rev.to_string(), None, &signing_key) { 870 + Ok(result) => result, 892 871 Err(e) => { 893 - error!("Error serializing genesis commit: {:?}", e); 872 + error!("Error creating genesis commit: {:?}", e); 894 873 return ( 895 874 StatusCode::INTERNAL_SERVER_ERROR, 896 875 Json(json!({"error": "InternalError"})),
+11 -11
src/api/repo/record/utils.rs
··· 3 3 use cid::Cid; 4 4 use jacquard::types::{integer::LimitedU32, string::Tid}; 5 5 use jacquard_repo::storage::BlockStore; 6 - use k256::ecdsa::{Signature, SigningKey, signature::Signer}; 6 + use k256::ecdsa::{signature::Signer, Signature, SigningKey}; 7 7 use serde::Serialize; 8 8 use serde_json::json; 9 9 use uuid::Uuid; 10 + 10 11 /* 11 - * Why am I making custom commit objects instead of jacquard's Commit::sign(), you ask? 12 + * Why custom commit signing instead of jacquard's Commit::sign()? 12 13 * 13 - * At time of writing, jacquard has a bug in how it creates unsigned bytes for signing. 14 - * Jacquard sets sig to empty bytes and serializes (6-field CBOR map) 15 - * Indigo/ATProto creates a struct *without* the sig field (5-field CBOR map) 16 - * 17 - * These produce different CBOR bytes, so signatures created with jacquard 18 - * don't verify with the relay's algorithm. The relay silently rejects commits 19 - * with invalid signatures. 14 + * Jacquard previously had a bug in how it created unsigned bytes for signing: 15 + * it set sig to empty bytes and serialized (6-field CBOR map), while the 16 + * ATProto spec creates a struct *without* the sig field (5-field CBOR map). 17 + * These produce different CBOR bytes, so signatures didn't verify with relays. 20 18 * 21 - * If you have it downloaded, see: reference-relay-indigo/atproto/repo/commit.go UnsignedBytes() 19 + * The bug has been fixed in jacquard, but the fix is untested here. 20 + * TODO: Switch back to jacquard's Commit::sign() and verify it works. 22 21 */ 22 + 23 23 #[derive(Serialize)] 24 24 struct UnsignedCommit<'a> { 25 25 data: Cid, ··· 29 29 version: i64, 30 30 } 31 31 32 - fn create_signed_commit( 32 + pub fn create_signed_commit( 33 33 did: &str, 34 34 data: Cid, 35 35 rev: &str,
+36 -29
src/api/server/passkey_account.rs
··· 6 6 }; 7 7 use bcrypt::{DEFAULT_COST, hash}; 8 8 use chrono::{Duration, Utc}; 9 - use jacquard::types::{did::Did, integer::LimitedU32, string::Tid}; 10 - use jacquard_repo::{commit::Commit, mst::Mst, storage::BlockStore}; 9 + use jacquard::types::{integer::LimitedU32, string::Tid}; 10 + use jacquard_repo::{mst::Mst, storage::BlockStore}; 11 11 use rand::Rng; 12 12 use serde::{Deserialize, Serialize}; 13 13 use serde_json::json; ··· 15 15 use tracing::{error, info, warn}; 16 16 use uuid::Uuid; 17 17 18 + use crate::api::repo::record::utils::create_signed_commit; 18 19 use crate::state::{AppState, RateLimitKind}; 19 20 use crate::validation::validate_password; 20 21 ··· 391 392 } 392 393 }; 393 394 395 + let is_first_user = sqlx::query_scalar!("SELECT COUNT(*) as count FROM users") 396 + .fetch_one(&mut *tx) 397 + .await 398 + .map(|c| c.unwrap_or(0) == 0) 399 + .unwrap_or(false); 400 + 394 401 let user_insert: Result<(Uuid,), _> = sqlx::query_as( 395 402 r#"INSERT INTO users ( 396 403 handle, email, did, password_hash, password_required, 397 404 preferred_comms_channel, 398 405 discord_id, telegram_username, signal_number, 399 - recovery_token, recovery_token_expires_at 400 - ) VALUES ($1, $2, $3, NULL, FALSE, $4::comms_channel, $5, $6, $7, $8, $9) RETURNING id"#, 406 + recovery_token, recovery_token_expires_at, 407 + is_admin 408 + ) VALUES ($1, $2, $3, NULL, FALSE, $4::comms_channel, $5, $6, $7, $8, $9, $10) RETURNING id"#, 401 409 ) 402 410 .bind(&handle) 403 411 .bind(&email) ··· 426 434 ) 427 435 .bind(&setup_token_hash) 428 436 .bind(setup_expires_at) 437 + .bind(is_first_user) 429 438 .fetch_one(&mut *tx) 430 439 .await; 431 440 ··· 518 527 .into_response(); 519 528 } 520 529 }; 521 - let did_obj = match Did::new(&did) { 522 - Ok(d) => d, 523 - Err(_) => { 524 - return ( 525 - StatusCode::INTERNAL_SERVER_ERROR, 526 - Json(json!({"error": "InternalError", "message": "Invalid DID"})), 527 - ) 528 - .into_response(); 529 - } 530 - }; 531 530 let rev = Tid::now(LimitedU32::MIN); 532 - let unsigned_commit = Commit::new_unsigned(did_obj, mst_root, rev, None); 533 - let signed_commit = match unsigned_commit.sign(&secret_key) { 534 - Ok(c) => c, 535 - Err(e) => { 536 - error!("Error signing genesis commit: {:?}", e); 537 - return ( 538 - StatusCode::INTERNAL_SERVER_ERROR, 539 - Json(json!({"error": "InternalError"})), 540 - ) 541 - .into_response(); 542 - } 543 - }; 544 - let commit_bytes = match signed_commit.to_cbor() { 545 - Ok(b) => b, 531 + let (commit_bytes, _sig) = match create_signed_commit(&did, mst_root, &rev.to_string(), None, &secret_key) { 532 + Ok(result) => result, 546 533 Err(e) => { 547 - error!("Error serializing genesis commit: {:?}", e); 534 + error!("Error creating genesis commit: {:?}", e); 548 535 return ( 549 536 StatusCode::INTERNAL_SERVER_ERROR, 550 537 Json(json!({"error": "InternalError"})), ··· 629 616 crate::api::repo::record::sequence_identity_event(&state, &did, Some(&handle)).await 630 617 { 631 618 warn!("Failed to sequence identity event for {}: {}", did, e); 619 + } 620 + if let Err(e) = 621 + crate::api::repo::record::sequence_account_event(&state, &did, true, None).await 622 + { 623 + warn!("Failed to sequence account event for {}: {}", did, e); 624 + } 625 + let profile_record = serde_json::json!({ 626 + "$type": "app.bsky.actor.profile", 627 + "displayName": handle 628 + }); 629 + if let Err(e) = crate::api::repo::record::create_record_internal( 630 + &state, 631 + &did, 632 + "app.bsky.actor.profile", 633 + "self", 634 + &profile_record, 635 + ) 636 + .await 637 + { 638 + warn!("Failed to create default profile for {}: {}", did, e); 632 639 } 633 640 634 641 if let Err(e) = crate::comms::enqueue_signup_verification(
+1
src/oauth/client.rs
··· 90 90 if let Ok(url) = reqwest::Url::parse(client_id) { 91 91 url.scheme() == "http" 92 92 && matches!(url.host_str(), Some("localhost") | Some("127.0.0.1")) 93 + && url.query().is_some() 93 94 } else { 94 95 false 95 96 }