├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── flake.lock ├── flake.nix ├── src └── main.rs └── yara └── example.yara /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | result 3 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "aho-corasick" 22 | version = "1.0.5" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" 25 | dependencies = [ 26 | "memchr", 27 | ] 28 | 29 | [[package]] 30 | name = "anstream" 31 | version = "0.5.0" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" 34 | dependencies = [ 35 | "anstyle", 36 | "anstyle-parse", 37 | "anstyle-query", 38 | "anstyle-wincon", 39 | "colorchoice", 40 | "utf8parse", 41 | ] 42 | 43 | [[package]] 44 | name = "anstyle" 45 | version = "1.0.3" 46 | source = "registry+https://github.com/rust-lang/crates.io-index" 47 | checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" 48 | 49 | [[package]] 50 | name = "anstyle-parse" 51 | version = "0.2.1" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" 54 | dependencies = [ 55 | "utf8parse", 56 | ] 57 | 58 | [[package]] 59 | name = "anstyle-query" 60 | version = "1.0.0" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" 63 | dependencies = [ 64 | "windows-sys", 65 | ] 66 | 67 | [[package]] 68 | name = "anstyle-wincon" 69 | version = "2.1.0" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" 72 | dependencies = [ 73 | "anstyle", 74 | "windows-sys", 75 | ] 76 | 77 | [[package]] 78 | name = "anyhow" 79 | version = "1.0.75" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 82 | 83 | [[package]] 84 | name = "autocfg" 85 | version = "1.1.0" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 88 | 89 | [[package]] 90 | name = "aws-config" 91 | version = "1.1.4" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "8b30c39ebe61f75d1b3785362b1586b41991873c9ab3e317a9181c246fb71d82" 94 | dependencies = [ 95 | "aws-credential-types", 96 | "aws-runtime", 97 | "aws-sdk-sso", 98 | "aws-sdk-ssooidc", 99 | "aws-sdk-sts", 100 | "aws-smithy-async", 101 | "aws-smithy-http", 102 | "aws-smithy-json", 103 | "aws-smithy-runtime", 104 | "aws-smithy-runtime-api", 105 | "aws-smithy-types", 106 | "aws-types", 107 | "bytes", 108 | "fastrand", 109 | "hex", 110 | "http 0.2.9", 111 | "hyper", 112 | "ring 0.17.7", 113 | "time", 114 | "tokio", 115 | "tracing", 116 | "zeroize", 117 | ] 118 | 119 | [[package]] 120 | name = "aws-credential-types" 121 | version = "1.1.4" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "33cc49dcdd31c8b6e79850a179af4c367669150c7ac0135f176c61bec81a70f7" 124 | dependencies = [ 125 | "aws-smithy-async", 126 | "aws-smithy-runtime-api", 127 | "aws-smithy-types", 128 | "zeroize", 129 | ] 130 | 131 | [[package]] 132 | name = "aws-runtime" 133 | version = "1.1.4" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "eb031bff99877c26c28895766f7bb8484a05e24547e370768d6cc9db514662aa" 136 | dependencies = [ 137 | "aws-credential-types", 138 | "aws-sigv4", 139 | "aws-smithy-async", 140 | "aws-smithy-eventstream", 141 | "aws-smithy-http", 142 | "aws-smithy-runtime-api", 143 | "aws-smithy-types", 144 | "aws-types", 145 | "bytes", 146 | "fastrand", 147 | "http 0.2.9", 148 | "http-body", 149 | "percent-encoding", 150 | "pin-project-lite", 151 | "tracing", 152 | "uuid", 153 | ] 154 | 155 | [[package]] 156 | name = "aws-sdk-s3" 157 | version = "1.14.0" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "951f7730f51a2155c711c85c79f337fbc02a577fa99d2a0a8059acfce5392113" 160 | dependencies = [ 161 | "aws-credential-types", 162 | "aws-runtime", 163 | "aws-sigv4", 164 | "aws-smithy-async", 165 | "aws-smithy-checksums", 166 | "aws-smithy-eventstream", 167 | "aws-smithy-http", 168 | "aws-smithy-json", 169 | "aws-smithy-runtime", 170 | "aws-smithy-runtime-api", 171 | "aws-smithy-types", 172 | "aws-smithy-xml", 173 | "aws-types", 174 | "bytes", 175 | "http 0.2.9", 176 | "http-body", 177 | "once_cell", 178 | "percent-encoding", 179 | "regex-lite", 180 | "tracing", 181 | "url", 182 | ] 183 | 184 | [[package]] 185 | name = "aws-sdk-sso" 186 | version = "1.12.0" 187 | source = "registry+https://github.com/rust-lang/crates.io-index" 188 | checksum = "f486420a66caad72635bc2ce0ff6581646e0d32df02aa39dc983bfe794955a5b" 189 | dependencies = [ 190 | "aws-credential-types", 191 | "aws-runtime", 192 | "aws-smithy-async", 193 | "aws-smithy-http", 194 | "aws-smithy-json", 195 | "aws-smithy-runtime", 196 | "aws-smithy-runtime-api", 197 | "aws-smithy-types", 198 | "aws-types", 199 | "bytes", 200 | "http 0.2.9", 201 | "once_cell", 202 | "regex-lite", 203 | "tracing", 204 | ] 205 | 206 | [[package]] 207 | name = "aws-sdk-ssooidc" 208 | version = "1.12.0" 209 | source = "registry+https://github.com/rust-lang/crates.io-index" 210 | checksum = "39ddccf01d82fce9b4a15c8ae8608211ee7db8ed13a70b514bbfe41df3d24841" 211 | dependencies = [ 212 | "aws-credential-types", 213 | "aws-runtime", 214 | "aws-smithy-async", 215 | "aws-smithy-http", 216 | "aws-smithy-json", 217 | "aws-smithy-runtime", 218 | "aws-smithy-runtime-api", 219 | "aws-smithy-types", 220 | "aws-types", 221 | "bytes", 222 | "http 0.2.9", 223 | "once_cell", 224 | "regex-lite", 225 | "tracing", 226 | ] 227 | 228 | [[package]] 229 | name = "aws-sdk-sts" 230 | version = "1.12.0" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | checksum = "1a591f8c7e6a621a501b2b5d2e88e1697fcb6274264523a6ad4d5959889a41ce" 233 | dependencies = [ 234 | "aws-credential-types", 235 | "aws-runtime", 236 | "aws-smithy-async", 237 | "aws-smithy-http", 238 | "aws-smithy-json", 239 | "aws-smithy-query", 240 | "aws-smithy-runtime", 241 | "aws-smithy-runtime-api", 242 | "aws-smithy-types", 243 | "aws-smithy-xml", 244 | "aws-types", 245 | "http 0.2.9", 246 | "once_cell", 247 | "regex-lite", 248 | "tracing", 249 | ] 250 | 251 | [[package]] 252 | name = "aws-sigv4" 253 | version = "1.1.4" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "c371c6b0ac54d4605eb6f016624fb5c7c2925d315fdf600ac1bf21b19d5f1742" 256 | dependencies = [ 257 | "aws-credential-types", 258 | "aws-smithy-eventstream", 259 | "aws-smithy-http", 260 | "aws-smithy-runtime-api", 261 | "aws-smithy-types", 262 | "bytes", 263 | "crypto-bigint 0.5.5", 264 | "form_urlencoded", 265 | "hex", 266 | "hmac", 267 | "http 0.2.9", 268 | "http 1.0.0", 269 | "once_cell", 270 | "p256", 271 | "percent-encoding", 272 | "ring 0.17.7", 273 | "sha2", 274 | "subtle", 275 | "time", 276 | "tracing", 277 | "zeroize", 278 | ] 279 | 280 | [[package]] 281 | name = "aws-smithy-async" 282 | version = "1.1.4" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | checksum = "72ee2d09cce0ef3ae526679b522835d63e75fb427aca5413cd371e490d52dcc6" 285 | dependencies = [ 286 | "futures-util", 287 | "pin-project-lite", 288 | "tokio", 289 | ] 290 | 291 | [[package]] 292 | name = "aws-smithy-checksums" 293 | version = "0.60.4" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "be2acd1b9c6ae5859999250ed5a62423aedc5cf69045b844432de15fa2f31f2b" 296 | dependencies = [ 297 | "aws-smithy-http", 298 | "aws-smithy-types", 299 | "bytes", 300 | "crc32c", 301 | "crc32fast", 302 | "hex", 303 | "http 0.2.9", 304 | "http-body", 305 | "md-5", 306 | "pin-project-lite", 307 | "sha1", 308 | "sha2", 309 | "tracing", 310 | ] 311 | 312 | [[package]] 313 | name = "aws-smithy-eventstream" 314 | version = "0.60.4" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" 317 | dependencies = [ 318 | "aws-smithy-types", 319 | "bytes", 320 | "crc32fast", 321 | ] 322 | 323 | [[package]] 324 | name = "aws-smithy-http" 325 | version = "0.60.4" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "dab56aea3cd9e1101a0a999447fb346afb680ab1406cebc44b32346e25b4117d" 328 | dependencies = [ 329 | "aws-smithy-eventstream", 330 | "aws-smithy-runtime-api", 331 | "aws-smithy-types", 332 | "bytes", 333 | "bytes-utils", 334 | "futures-core", 335 | "http 0.2.9", 336 | "http-body", 337 | "once_cell", 338 | "percent-encoding", 339 | "pin-project-lite", 340 | "pin-utils", 341 | "tracing", 342 | ] 343 | 344 | [[package]] 345 | name = "aws-smithy-json" 346 | version = "0.60.4" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "fd3898ca6518f9215f62678870064398f00031912390efd03f1f6ef56d83aa8e" 349 | dependencies = [ 350 | "aws-smithy-types", 351 | ] 352 | 353 | [[package]] 354 | name = "aws-smithy-query" 355 | version = "0.60.4" 356 | source = "registry+https://github.com/rust-lang/crates.io-index" 357 | checksum = "bda4b1dfc9810e35fba8a620e900522cd1bd4f9578c446e82f49d1ce41d2e9f9" 358 | dependencies = [ 359 | "aws-smithy-types", 360 | "urlencoding", 361 | ] 362 | 363 | [[package]] 364 | name = "aws-smithy-runtime" 365 | version = "1.1.4" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "fafdab38f40ad7816e7da5dec279400dd505160780083759f01441af1bbb10ea" 368 | dependencies = [ 369 | "aws-smithy-async", 370 | "aws-smithy-http", 371 | "aws-smithy-runtime-api", 372 | "aws-smithy-types", 373 | "bytes", 374 | "fastrand", 375 | "h2", 376 | "http 0.2.9", 377 | "http-body", 378 | "hyper", 379 | "hyper-rustls", 380 | "once_cell", 381 | "pin-project-lite", 382 | "pin-utils", 383 | "rustls", 384 | "tokio", 385 | "tracing", 386 | ] 387 | 388 | [[package]] 389 | name = "aws-smithy-runtime-api" 390 | version = "1.1.4" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "c18276dd28852f34b3bf501f4f3719781f4999a51c7bff1a5c6dc8c4529adc29" 393 | dependencies = [ 394 | "aws-smithy-async", 395 | "aws-smithy-types", 396 | "bytes", 397 | "http 0.2.9", 398 | "pin-project-lite", 399 | "tokio", 400 | "tracing", 401 | "zeroize", 402 | ] 403 | 404 | [[package]] 405 | name = "aws-smithy-types" 406 | version = "1.1.4" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "bb3e134004170d3303718baa2a4eb4ca64ee0a1c0a7041dca31b38be0fb414f3" 409 | dependencies = [ 410 | "base64-simd", 411 | "bytes", 412 | "bytes-utils", 413 | "futures-core", 414 | "http 0.2.9", 415 | "http-body", 416 | "itoa", 417 | "num-integer", 418 | "pin-project-lite", 419 | "pin-utils", 420 | "ryu", 421 | "serde", 422 | "time", 423 | "tokio", 424 | "tokio-util", 425 | ] 426 | 427 | [[package]] 428 | name = "aws-smithy-xml" 429 | version = "0.60.4" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | checksum = "8604a11b25e9ecaf32f9aa56b9fe253c5e2f606a3477f0071e96d3155a5ed218" 432 | dependencies = [ 433 | "xmlparser", 434 | ] 435 | 436 | [[package]] 437 | name = "aws-types" 438 | version = "1.1.4" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | checksum = "789bbe008e65636fe1b6dbbb374c40c8960d1232b96af5ff4aec349f9c4accf4" 441 | dependencies = [ 442 | "aws-credential-types", 443 | "aws-smithy-async", 444 | "aws-smithy-runtime-api", 445 | "aws-smithy-types", 446 | "http 0.2.9", 447 | "rustc_version", 448 | "tracing", 449 | ] 450 | 451 | [[package]] 452 | name = "backtrace" 453 | version = "0.3.69" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 456 | dependencies = [ 457 | "addr2line", 458 | "cc", 459 | "cfg-if", 460 | "libc", 461 | "miniz_oxide", 462 | "object", 463 | "rustc-demangle", 464 | ] 465 | 466 | [[package]] 467 | name = "base16ct" 468 | version = "0.1.1" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" 471 | 472 | [[package]] 473 | name = "base64" 474 | version = "0.21.4" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" 477 | 478 | [[package]] 479 | name = "base64-simd" 480 | version = "0.8.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" 483 | dependencies = [ 484 | "outref", 485 | "vsimd", 486 | ] 487 | 488 | [[package]] 489 | name = "base64ct" 490 | version = "1.6.0" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 493 | 494 | [[package]] 495 | name = "bindgen" 496 | version = "0.68.1" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" 499 | dependencies = [ 500 | "bitflags 2.4.0", 501 | "cexpr", 502 | "clang-sys", 503 | "lazy_static", 504 | "lazycell", 505 | "peeking_take_while", 506 | "proc-macro2", 507 | "quote", 508 | "regex", 509 | "rustc-hash", 510 | "shlex", 511 | "syn", 512 | ] 513 | 514 | [[package]] 515 | name = "bitflags" 516 | version = "1.3.2" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 519 | 520 | [[package]] 521 | name = "bitflags" 522 | version = "2.4.0" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" 525 | 526 | [[package]] 527 | name = "block-buffer" 528 | version = "0.10.4" 529 | source = "registry+https://github.com/rust-lang/crates.io-index" 530 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 531 | dependencies = [ 532 | "generic-array", 533 | ] 534 | 535 | [[package]] 536 | name = "bumpalo" 537 | version = "3.13.0" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" 540 | 541 | [[package]] 542 | name = "bytes" 543 | version = "1.5.0" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 546 | 547 | [[package]] 548 | name = "bytes-utils" 549 | version = "0.1.3" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" 552 | dependencies = [ 553 | "bytes", 554 | "either", 555 | ] 556 | 557 | [[package]] 558 | name = "camino" 559 | version = "1.1.6" 560 | source = "registry+https://github.com/rust-lang/crates.io-index" 561 | checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" 562 | 563 | [[package]] 564 | name = "cc" 565 | version = "1.0.83" 566 | source = "registry+https://github.com/rust-lang/crates.io-index" 567 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 568 | dependencies = [ 569 | "libc", 570 | ] 571 | 572 | [[package]] 573 | name = "cexpr" 574 | version = "0.6.0" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 577 | dependencies = [ 578 | "nom", 579 | ] 580 | 581 | [[package]] 582 | name = "cfg-if" 583 | version = "1.0.0" 584 | source = "registry+https://github.com/rust-lang/crates.io-index" 585 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 586 | 587 | [[package]] 588 | name = "clang-sys" 589 | version = "1.7.0" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" 592 | dependencies = [ 593 | "glob", 594 | "libc", 595 | "libloading", 596 | ] 597 | 598 | [[package]] 599 | name = "clap" 600 | version = "4.4.3" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "84ed82781cea27b43c9b106a979fe450a13a31aab0500595fb3fc06616de08e6" 603 | dependencies = [ 604 | "clap_builder", 605 | "clap_derive", 606 | ] 607 | 608 | [[package]] 609 | name = "clap_builder" 610 | version = "4.4.2" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" 613 | dependencies = [ 614 | "anstream", 615 | "anstyle", 616 | "clap_lex", 617 | "strsim", 618 | ] 619 | 620 | [[package]] 621 | name = "clap_derive" 622 | version = "4.4.2" 623 | source = "registry+https://github.com/rust-lang/crates.io-index" 624 | checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" 625 | dependencies = [ 626 | "heck", 627 | "proc-macro2", 628 | "quote", 629 | "syn", 630 | ] 631 | 632 | [[package]] 633 | name = "clap_lex" 634 | version = "0.5.1" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" 637 | 638 | [[package]] 639 | name = "colorchoice" 640 | version = "1.0.0" 641 | source = "registry+https://github.com/rust-lang/crates.io-index" 642 | checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 643 | 644 | [[package]] 645 | name = "const-oid" 646 | version = "0.9.6" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 649 | 650 | [[package]] 651 | name = "core-foundation" 652 | version = "0.9.3" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 655 | dependencies = [ 656 | "core-foundation-sys", 657 | "libc", 658 | ] 659 | 660 | [[package]] 661 | name = "core-foundation-sys" 662 | version = "0.8.4" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" 665 | 666 | [[package]] 667 | name = "cpufeatures" 668 | version = "0.2.9" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" 671 | dependencies = [ 672 | "libc", 673 | ] 674 | 675 | [[package]] 676 | name = "crc32c" 677 | version = "0.6.4" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" 680 | dependencies = [ 681 | "rustc_version", 682 | ] 683 | 684 | [[package]] 685 | name = "crc32fast" 686 | version = "1.3.2" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 689 | dependencies = [ 690 | "cfg-if", 691 | ] 692 | 693 | [[package]] 694 | name = "crypto-bigint" 695 | version = "0.4.9" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" 698 | dependencies = [ 699 | "generic-array", 700 | "rand_core", 701 | "subtle", 702 | "zeroize", 703 | ] 704 | 705 | [[package]] 706 | name = "crypto-bigint" 707 | version = "0.5.5" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 710 | dependencies = [ 711 | "rand_core", 712 | "subtle", 713 | ] 714 | 715 | [[package]] 716 | name = "crypto-common" 717 | version = "0.1.6" 718 | source = "registry+https://github.com/rust-lang/crates.io-index" 719 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 720 | dependencies = [ 721 | "generic-array", 722 | "typenum", 723 | ] 724 | 725 | [[package]] 726 | name = "der" 727 | version = "0.6.1" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" 730 | dependencies = [ 731 | "const-oid", 732 | "zeroize", 733 | ] 734 | 735 | [[package]] 736 | name = "deranged" 737 | version = "0.3.8" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" 740 | 741 | [[package]] 742 | name = "digest" 743 | version = "0.10.7" 744 | source = "registry+https://github.com/rust-lang/crates.io-index" 745 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 746 | dependencies = [ 747 | "block-buffer", 748 | "crypto-common", 749 | "subtle", 750 | ] 751 | 752 | [[package]] 753 | name = "ecdsa" 754 | version = "0.14.8" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" 757 | dependencies = [ 758 | "der", 759 | "elliptic-curve", 760 | "rfc6979", 761 | "signature", 762 | ] 763 | 764 | [[package]] 765 | name = "either" 766 | version = "1.9.0" 767 | source = "registry+https://github.com/rust-lang/crates.io-index" 768 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 769 | 770 | [[package]] 771 | name = "elliptic-curve" 772 | version = "0.12.3" 773 | source = "registry+https://github.com/rust-lang/crates.io-index" 774 | checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" 775 | dependencies = [ 776 | "base16ct", 777 | "crypto-bigint 0.4.9", 778 | "der", 779 | "digest", 780 | "ff", 781 | "generic-array", 782 | "group", 783 | "pkcs8", 784 | "rand_core", 785 | "sec1", 786 | "subtle", 787 | "zeroize", 788 | ] 789 | 790 | [[package]] 791 | name = "encoding_rs" 792 | version = "0.8.33" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 795 | dependencies = [ 796 | "cfg-if", 797 | ] 798 | 799 | [[package]] 800 | name = "errno" 801 | version = "0.3.3" 802 | source = "registry+https://github.com/rust-lang/crates.io-index" 803 | checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" 804 | dependencies = [ 805 | "errno-dragonfly", 806 | "libc", 807 | "windows-sys", 808 | ] 809 | 810 | [[package]] 811 | name = "errno-dragonfly" 812 | version = "0.1.2" 813 | source = "registry+https://github.com/rust-lang/crates.io-index" 814 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 815 | dependencies = [ 816 | "cc", 817 | "libc", 818 | ] 819 | 820 | [[package]] 821 | name = "fastrand" 822 | version = "2.0.0" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" 825 | 826 | [[package]] 827 | name = "ff" 828 | version = "0.12.1" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" 831 | dependencies = [ 832 | "rand_core", 833 | "subtle", 834 | ] 835 | 836 | [[package]] 837 | name = "fnv" 838 | version = "1.0.7" 839 | source = "registry+https://github.com/rust-lang/crates.io-index" 840 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 841 | 842 | [[package]] 843 | name = "foreign-types" 844 | version = "0.3.2" 845 | source = "registry+https://github.com/rust-lang/crates.io-index" 846 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 847 | dependencies = [ 848 | "foreign-types-shared", 849 | ] 850 | 851 | [[package]] 852 | name = "foreign-types-shared" 853 | version = "0.1.1" 854 | source = "registry+https://github.com/rust-lang/crates.io-index" 855 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 856 | 857 | [[package]] 858 | name = "form_urlencoded" 859 | version = "1.2.0" 860 | source = "registry+https://github.com/rust-lang/crates.io-index" 861 | checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" 862 | dependencies = [ 863 | "percent-encoding", 864 | ] 865 | 866 | [[package]] 867 | name = "futures" 868 | version = "0.3.28" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" 871 | dependencies = [ 872 | "futures-channel", 873 | "futures-core", 874 | "futures-executor", 875 | "futures-io", 876 | "futures-sink", 877 | "futures-task", 878 | "futures-util", 879 | ] 880 | 881 | [[package]] 882 | name = "futures-channel" 883 | version = "0.3.30" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 886 | dependencies = [ 887 | "futures-core", 888 | "futures-sink", 889 | ] 890 | 891 | [[package]] 892 | name = "futures-core" 893 | version = "0.3.30" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 896 | 897 | [[package]] 898 | name = "futures-executor" 899 | version = "0.3.28" 900 | source = "registry+https://github.com/rust-lang/crates.io-index" 901 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" 902 | dependencies = [ 903 | "futures-core", 904 | "futures-task", 905 | "futures-util", 906 | ] 907 | 908 | [[package]] 909 | name = "futures-io" 910 | version = "0.3.30" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 913 | 914 | [[package]] 915 | name = "futures-macro" 916 | version = "0.3.30" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 919 | dependencies = [ 920 | "proc-macro2", 921 | "quote", 922 | "syn", 923 | ] 924 | 925 | [[package]] 926 | name = "futures-sink" 927 | version = "0.3.30" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 930 | 931 | [[package]] 932 | name = "futures-task" 933 | version = "0.3.30" 934 | source = "registry+https://github.com/rust-lang/crates.io-index" 935 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 936 | 937 | [[package]] 938 | name = "futures-util" 939 | version = "0.3.30" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 942 | dependencies = [ 943 | "futures-channel", 944 | "futures-core", 945 | "futures-io", 946 | "futures-macro", 947 | "futures-sink", 948 | "futures-task", 949 | "memchr", 950 | "pin-project-lite", 951 | "pin-utils", 952 | "slab", 953 | ] 954 | 955 | [[package]] 956 | name = "generic-array" 957 | version = "0.14.7" 958 | source = "registry+https://github.com/rust-lang/crates.io-index" 959 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 960 | dependencies = [ 961 | "typenum", 962 | "version_check", 963 | ] 964 | 965 | [[package]] 966 | name = "getrandom" 967 | version = "0.2.12" 968 | source = "registry+https://github.com/rust-lang/crates.io-index" 969 | checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" 970 | dependencies = [ 971 | "cfg-if", 972 | "libc", 973 | "wasi", 974 | ] 975 | 976 | [[package]] 977 | name = "gimli" 978 | version = "0.28.0" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" 981 | 982 | [[package]] 983 | name = "glob" 984 | version = "0.3.1" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 987 | 988 | [[package]] 989 | name = "grep-nixos-cache" 990 | version = "0.1.0" 991 | dependencies = [ 992 | "anyhow", 993 | "aws-config", 994 | "aws-sdk-s3", 995 | "bytes", 996 | "clap", 997 | "futures", 998 | "memmem", 999 | "multimap", 1000 | "nix-nar", 1001 | "reqwest", 1002 | "tokio", 1003 | "xz2", 1004 | "yara", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "group" 1009 | version = "0.12.1" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" 1012 | dependencies = [ 1013 | "ff", 1014 | "rand_core", 1015 | "subtle", 1016 | ] 1017 | 1018 | [[package]] 1019 | name = "h2" 1020 | version = "0.3.21" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" 1023 | dependencies = [ 1024 | "bytes", 1025 | "fnv", 1026 | "futures-core", 1027 | "futures-sink", 1028 | "futures-util", 1029 | "http 0.2.9", 1030 | "indexmap", 1031 | "slab", 1032 | "tokio", 1033 | "tokio-util", 1034 | "tracing", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "hashbrown" 1039 | version = "0.12.3" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1042 | 1043 | [[package]] 1044 | name = "heck" 1045 | version = "0.4.1" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1048 | 1049 | [[package]] 1050 | name = "hermit-abi" 1051 | version = "0.3.2" 1052 | source = "registry+https://github.com/rust-lang/crates.io-index" 1053 | checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" 1054 | 1055 | [[package]] 1056 | name = "hex" 1057 | version = "0.4.3" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1060 | 1061 | [[package]] 1062 | name = "hmac" 1063 | version = "0.12.1" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1066 | dependencies = [ 1067 | "digest", 1068 | ] 1069 | 1070 | [[package]] 1071 | name = "http" 1072 | version = "0.2.9" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" 1075 | dependencies = [ 1076 | "bytes", 1077 | "fnv", 1078 | "itoa", 1079 | ] 1080 | 1081 | [[package]] 1082 | name = "http" 1083 | version = "1.0.0" 1084 | source = "registry+https://github.com/rust-lang/crates.io-index" 1085 | checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" 1086 | dependencies = [ 1087 | "bytes", 1088 | "fnv", 1089 | "itoa", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "http-body" 1094 | version = "0.4.5" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" 1097 | dependencies = [ 1098 | "bytes", 1099 | "http 0.2.9", 1100 | "pin-project-lite", 1101 | ] 1102 | 1103 | [[package]] 1104 | name = "httparse" 1105 | version = "1.8.0" 1106 | source = "registry+https://github.com/rust-lang/crates.io-index" 1107 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1108 | 1109 | [[package]] 1110 | name = "httpdate" 1111 | version = "1.0.3" 1112 | source = "registry+https://github.com/rust-lang/crates.io-index" 1113 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1114 | 1115 | [[package]] 1116 | name = "hyper" 1117 | version = "0.14.27" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" 1120 | dependencies = [ 1121 | "bytes", 1122 | "futures-channel", 1123 | "futures-core", 1124 | "futures-util", 1125 | "h2", 1126 | "http 0.2.9", 1127 | "http-body", 1128 | "httparse", 1129 | "httpdate", 1130 | "itoa", 1131 | "pin-project-lite", 1132 | "socket2 0.4.9", 1133 | "tokio", 1134 | "tower-service", 1135 | "tracing", 1136 | "want", 1137 | ] 1138 | 1139 | [[package]] 1140 | name = "hyper-rustls" 1141 | version = "0.24.1" 1142 | source = "registry+https://github.com/rust-lang/crates.io-index" 1143 | checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" 1144 | dependencies = [ 1145 | "futures-util", 1146 | "http 0.2.9", 1147 | "hyper", 1148 | "log", 1149 | "rustls", 1150 | "rustls-native-certs", 1151 | "tokio", 1152 | "tokio-rustls", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "hyper-tls" 1157 | version = "0.5.0" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" 1160 | dependencies = [ 1161 | "bytes", 1162 | "hyper", 1163 | "native-tls", 1164 | "tokio", 1165 | "tokio-native-tls", 1166 | ] 1167 | 1168 | [[package]] 1169 | name = "idna" 1170 | version = "0.4.0" 1171 | source = "registry+https://github.com/rust-lang/crates.io-index" 1172 | checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" 1173 | dependencies = [ 1174 | "unicode-bidi", 1175 | "unicode-normalization", 1176 | ] 1177 | 1178 | [[package]] 1179 | name = "indexmap" 1180 | version = "1.9.3" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1183 | dependencies = [ 1184 | "autocfg", 1185 | "hashbrown", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "ipnet" 1190 | version = "2.8.0" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" 1193 | 1194 | [[package]] 1195 | name = "is_executable" 1196 | version = "1.0.1" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "fa9acdc6d67b75e626ad644734e8bc6df893d9cd2a834129065d3dd6158ea9c8" 1199 | dependencies = [ 1200 | "winapi", 1201 | ] 1202 | 1203 | [[package]] 1204 | name = "itoa" 1205 | version = "1.0.9" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" 1208 | 1209 | [[package]] 1210 | name = "js-sys" 1211 | version = "0.3.64" 1212 | source = "registry+https://github.com/rust-lang/crates.io-index" 1213 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 1214 | dependencies = [ 1215 | "wasm-bindgen", 1216 | ] 1217 | 1218 | [[package]] 1219 | name = "lazy_static" 1220 | version = "1.4.0" 1221 | source = "registry+https://github.com/rust-lang/crates.io-index" 1222 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1223 | 1224 | [[package]] 1225 | name = "lazycell" 1226 | version = "1.3.0" 1227 | source = "registry+https://github.com/rust-lang/crates.io-index" 1228 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 1229 | 1230 | [[package]] 1231 | name = "libc" 1232 | version = "0.2.152" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" 1235 | 1236 | [[package]] 1237 | name = "libloading" 1238 | version = "0.8.1" 1239 | source = "registry+https://github.com/rust-lang/crates.io-index" 1240 | checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" 1241 | dependencies = [ 1242 | "cfg-if", 1243 | "windows-sys", 1244 | ] 1245 | 1246 | [[package]] 1247 | name = "linux-raw-sys" 1248 | version = "0.4.7" 1249 | source = "registry+https://github.com/rust-lang/crates.io-index" 1250 | checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" 1251 | 1252 | [[package]] 1253 | name = "lock_api" 1254 | version = "0.4.10" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" 1257 | dependencies = [ 1258 | "autocfg", 1259 | "scopeguard", 1260 | ] 1261 | 1262 | [[package]] 1263 | name = "log" 1264 | version = "0.4.20" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1267 | 1268 | [[package]] 1269 | name = "lzma-sys" 1270 | version = "0.1.20" 1271 | source = "registry+https://github.com/rust-lang/crates.io-index" 1272 | checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" 1273 | dependencies = [ 1274 | "cc", 1275 | "libc", 1276 | "pkg-config", 1277 | ] 1278 | 1279 | [[package]] 1280 | name = "md-5" 1281 | version = "0.10.6" 1282 | source = "registry+https://github.com/rust-lang/crates.io-index" 1283 | checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 1284 | dependencies = [ 1285 | "cfg-if", 1286 | "digest", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "memchr" 1291 | version = "2.6.3" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" 1294 | 1295 | [[package]] 1296 | name = "memmem" 1297 | version = "0.1.1" 1298 | source = "registry+https://github.com/rust-lang/crates.io-index" 1299 | checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15" 1300 | 1301 | [[package]] 1302 | name = "mime" 1303 | version = "0.3.17" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1306 | 1307 | [[package]] 1308 | name = "minimal-lexical" 1309 | version = "0.2.1" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1312 | 1313 | [[package]] 1314 | name = "miniz_oxide" 1315 | version = "0.7.1" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1318 | dependencies = [ 1319 | "adler", 1320 | ] 1321 | 1322 | [[package]] 1323 | name = "mio" 1324 | version = "0.8.8" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" 1327 | dependencies = [ 1328 | "libc", 1329 | "wasi", 1330 | "windows-sys", 1331 | ] 1332 | 1333 | [[package]] 1334 | name = "multimap" 1335 | version = "0.10.0" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" 1338 | dependencies = [ 1339 | "serde", 1340 | ] 1341 | 1342 | [[package]] 1343 | name = "native-tls" 1344 | version = "0.2.11" 1345 | source = "registry+https://github.com/rust-lang/crates.io-index" 1346 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" 1347 | dependencies = [ 1348 | "lazy_static", 1349 | "libc", 1350 | "log", 1351 | "openssl", 1352 | "openssl-probe", 1353 | "openssl-sys", 1354 | "schannel", 1355 | "security-framework", 1356 | "security-framework-sys", 1357 | "tempfile", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "nix-nar" 1362 | version = "0.3.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "d5549158a8b179c4fcd06a19f4bcc557db60c9cbd6771add9563f46c8d0325b5" 1365 | dependencies = [ 1366 | "camino", 1367 | "is_executable", 1368 | "symlink", 1369 | "thiserror", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "nom" 1374 | version = "7.1.3" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1377 | dependencies = [ 1378 | "memchr", 1379 | "minimal-lexical", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "num-integer" 1384 | version = "0.1.45" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1387 | dependencies = [ 1388 | "autocfg", 1389 | "num-traits", 1390 | ] 1391 | 1392 | [[package]] 1393 | name = "num-traits" 1394 | version = "0.2.16" 1395 | source = "registry+https://github.com/rust-lang/crates.io-index" 1396 | checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" 1397 | dependencies = [ 1398 | "autocfg", 1399 | ] 1400 | 1401 | [[package]] 1402 | name = "num_cpus" 1403 | version = "1.16.0" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1406 | dependencies = [ 1407 | "hermit-abi", 1408 | "libc", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "object" 1413 | version = "0.32.1" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 1416 | dependencies = [ 1417 | "memchr", 1418 | ] 1419 | 1420 | [[package]] 1421 | name = "once_cell" 1422 | version = "1.18.0" 1423 | source = "registry+https://github.com/rust-lang/crates.io-index" 1424 | checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" 1425 | 1426 | [[package]] 1427 | name = "openssl" 1428 | version = "0.10.57" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" 1431 | dependencies = [ 1432 | "bitflags 2.4.0", 1433 | "cfg-if", 1434 | "foreign-types", 1435 | "libc", 1436 | "once_cell", 1437 | "openssl-macros", 1438 | "openssl-sys", 1439 | ] 1440 | 1441 | [[package]] 1442 | name = "openssl-macros" 1443 | version = "0.1.1" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1446 | dependencies = [ 1447 | "proc-macro2", 1448 | "quote", 1449 | "syn", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "openssl-probe" 1454 | version = "0.1.5" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1457 | 1458 | [[package]] 1459 | name = "openssl-sys" 1460 | version = "0.9.93" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" 1463 | dependencies = [ 1464 | "cc", 1465 | "libc", 1466 | "pkg-config", 1467 | "vcpkg", 1468 | ] 1469 | 1470 | [[package]] 1471 | name = "outref" 1472 | version = "0.5.1" 1473 | source = "registry+https://github.com/rust-lang/crates.io-index" 1474 | checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" 1475 | 1476 | [[package]] 1477 | name = "p256" 1478 | version = "0.11.1" 1479 | source = "registry+https://github.com/rust-lang/crates.io-index" 1480 | checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" 1481 | dependencies = [ 1482 | "ecdsa", 1483 | "elliptic-curve", 1484 | "sha2", 1485 | ] 1486 | 1487 | [[package]] 1488 | name = "parking_lot" 1489 | version = "0.12.1" 1490 | source = "registry+https://github.com/rust-lang/crates.io-index" 1491 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1492 | dependencies = [ 1493 | "lock_api", 1494 | "parking_lot_core", 1495 | ] 1496 | 1497 | [[package]] 1498 | name = "parking_lot_core" 1499 | version = "0.9.8" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" 1502 | dependencies = [ 1503 | "cfg-if", 1504 | "libc", 1505 | "redox_syscall", 1506 | "smallvec", 1507 | "windows-targets", 1508 | ] 1509 | 1510 | [[package]] 1511 | name = "peeking_take_while" 1512 | version = "0.1.2" 1513 | source = "registry+https://github.com/rust-lang/crates.io-index" 1514 | checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" 1515 | 1516 | [[package]] 1517 | name = "percent-encoding" 1518 | version = "2.3.0" 1519 | source = "registry+https://github.com/rust-lang/crates.io-index" 1520 | checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" 1521 | 1522 | [[package]] 1523 | name = "pin-project-lite" 1524 | version = "0.2.13" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 1527 | 1528 | [[package]] 1529 | name = "pin-utils" 1530 | version = "0.1.0" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1533 | 1534 | [[package]] 1535 | name = "pkcs8" 1536 | version = "0.9.0" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" 1539 | dependencies = [ 1540 | "der", 1541 | "spki", 1542 | ] 1543 | 1544 | [[package]] 1545 | name = "pkg-config" 1546 | version = "0.3.27" 1547 | source = "registry+https://github.com/rust-lang/crates.io-index" 1548 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 1549 | 1550 | [[package]] 1551 | name = "proc-macro2" 1552 | version = "1.0.67" 1553 | source = "registry+https://github.com/rust-lang/crates.io-index" 1554 | checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" 1555 | dependencies = [ 1556 | "unicode-ident", 1557 | ] 1558 | 1559 | [[package]] 1560 | name = "quote" 1561 | version = "1.0.33" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 1564 | dependencies = [ 1565 | "proc-macro2", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "rand_core" 1570 | version = "0.6.4" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1573 | dependencies = [ 1574 | "getrandom", 1575 | ] 1576 | 1577 | [[package]] 1578 | name = "redox_syscall" 1579 | version = "0.3.5" 1580 | source = "registry+https://github.com/rust-lang/crates.io-index" 1581 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 1582 | dependencies = [ 1583 | "bitflags 1.3.2", 1584 | ] 1585 | 1586 | [[package]] 1587 | name = "regex" 1588 | version = "1.9.5" 1589 | source = "registry+https://github.com/rust-lang/crates.io-index" 1590 | checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" 1591 | dependencies = [ 1592 | "aho-corasick", 1593 | "memchr", 1594 | "regex-automata", 1595 | "regex-syntax", 1596 | ] 1597 | 1598 | [[package]] 1599 | name = "regex-automata" 1600 | version = "0.3.8" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" 1603 | dependencies = [ 1604 | "aho-corasick", 1605 | "memchr", 1606 | "regex-syntax", 1607 | ] 1608 | 1609 | [[package]] 1610 | name = "regex-lite" 1611 | version = "0.1.5" 1612 | source = "registry+https://github.com/rust-lang/crates.io-index" 1613 | checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" 1614 | 1615 | [[package]] 1616 | name = "regex-syntax" 1617 | version = "0.7.5" 1618 | source = "registry+https://github.com/rust-lang/crates.io-index" 1619 | checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" 1620 | 1621 | [[package]] 1622 | name = "reqwest" 1623 | version = "0.11.20" 1624 | source = "registry+https://github.com/rust-lang/crates.io-index" 1625 | checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" 1626 | dependencies = [ 1627 | "base64", 1628 | "bytes", 1629 | "encoding_rs", 1630 | "futures-core", 1631 | "futures-util", 1632 | "h2", 1633 | "http 0.2.9", 1634 | "http-body", 1635 | "hyper", 1636 | "hyper-tls", 1637 | "ipnet", 1638 | "js-sys", 1639 | "log", 1640 | "mime", 1641 | "native-tls", 1642 | "once_cell", 1643 | "percent-encoding", 1644 | "pin-project-lite", 1645 | "serde", 1646 | "serde_json", 1647 | "serde_urlencoded", 1648 | "tokio", 1649 | "tokio-native-tls", 1650 | "tokio-util", 1651 | "tower-service", 1652 | "url", 1653 | "wasm-bindgen", 1654 | "wasm-bindgen-futures", 1655 | "wasm-streams", 1656 | "web-sys", 1657 | "winreg", 1658 | ] 1659 | 1660 | [[package]] 1661 | name = "rfc6979" 1662 | version = "0.3.1" 1663 | source = "registry+https://github.com/rust-lang/crates.io-index" 1664 | checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" 1665 | dependencies = [ 1666 | "crypto-bigint 0.4.9", 1667 | "hmac", 1668 | "zeroize", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "ring" 1673 | version = "0.16.20" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1676 | dependencies = [ 1677 | "cc", 1678 | "libc", 1679 | "once_cell", 1680 | "spin 0.5.2", 1681 | "untrusted 0.7.1", 1682 | "web-sys", 1683 | "winapi", 1684 | ] 1685 | 1686 | [[package]] 1687 | name = "ring" 1688 | version = "0.17.7" 1689 | source = "registry+https://github.com/rust-lang/crates.io-index" 1690 | checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" 1691 | dependencies = [ 1692 | "cc", 1693 | "getrandom", 1694 | "libc", 1695 | "spin 0.9.8", 1696 | "untrusted 0.9.0", 1697 | "windows-sys", 1698 | ] 1699 | 1700 | [[package]] 1701 | name = "rustc-demangle" 1702 | version = "0.1.23" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 1705 | 1706 | [[package]] 1707 | name = "rustc-hash" 1708 | version = "1.1.0" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 1711 | 1712 | [[package]] 1713 | name = "rustc_version" 1714 | version = "0.4.0" 1715 | source = "registry+https://github.com/rust-lang/crates.io-index" 1716 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 1717 | dependencies = [ 1718 | "semver", 1719 | ] 1720 | 1721 | [[package]] 1722 | name = "rustix" 1723 | version = "0.38.13" 1724 | source = "registry+https://github.com/rust-lang/crates.io-index" 1725 | checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" 1726 | dependencies = [ 1727 | "bitflags 2.4.0", 1728 | "errno", 1729 | "libc", 1730 | "linux-raw-sys", 1731 | "windows-sys", 1732 | ] 1733 | 1734 | [[package]] 1735 | name = "rustls" 1736 | version = "0.21.10" 1737 | source = "registry+https://github.com/rust-lang/crates.io-index" 1738 | checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" 1739 | dependencies = [ 1740 | "log", 1741 | "ring 0.17.7", 1742 | "rustls-webpki", 1743 | "sct", 1744 | ] 1745 | 1746 | [[package]] 1747 | name = "rustls-native-certs" 1748 | version = "0.6.3" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 1751 | dependencies = [ 1752 | "openssl-probe", 1753 | "rustls-pemfile", 1754 | "schannel", 1755 | "security-framework", 1756 | ] 1757 | 1758 | [[package]] 1759 | name = "rustls-pemfile" 1760 | version = "1.0.3" 1761 | source = "registry+https://github.com/rust-lang/crates.io-index" 1762 | checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" 1763 | dependencies = [ 1764 | "base64", 1765 | ] 1766 | 1767 | [[package]] 1768 | name = "rustls-webpki" 1769 | version = "0.101.7" 1770 | source = "registry+https://github.com/rust-lang/crates.io-index" 1771 | checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 1772 | dependencies = [ 1773 | "ring 0.17.7", 1774 | "untrusted 0.9.0", 1775 | ] 1776 | 1777 | [[package]] 1778 | name = "ryu" 1779 | version = "1.0.15" 1780 | source = "registry+https://github.com/rust-lang/crates.io-index" 1781 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 1782 | 1783 | [[package]] 1784 | name = "schannel" 1785 | version = "0.1.22" 1786 | source = "registry+https://github.com/rust-lang/crates.io-index" 1787 | checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" 1788 | dependencies = [ 1789 | "windows-sys", 1790 | ] 1791 | 1792 | [[package]] 1793 | name = "scopeguard" 1794 | version = "1.2.0" 1795 | source = "registry+https://github.com/rust-lang/crates.io-index" 1796 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1797 | 1798 | [[package]] 1799 | name = "sct" 1800 | version = "0.7.0" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" 1803 | dependencies = [ 1804 | "ring 0.16.20", 1805 | "untrusted 0.7.1", 1806 | ] 1807 | 1808 | [[package]] 1809 | name = "sec1" 1810 | version = "0.3.0" 1811 | source = "registry+https://github.com/rust-lang/crates.io-index" 1812 | checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" 1813 | dependencies = [ 1814 | "base16ct", 1815 | "der", 1816 | "generic-array", 1817 | "pkcs8", 1818 | "subtle", 1819 | "zeroize", 1820 | ] 1821 | 1822 | [[package]] 1823 | name = "security-framework" 1824 | version = "2.9.2" 1825 | source = "registry+https://github.com/rust-lang/crates.io-index" 1826 | checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" 1827 | dependencies = [ 1828 | "bitflags 1.3.2", 1829 | "core-foundation", 1830 | "core-foundation-sys", 1831 | "libc", 1832 | "security-framework-sys", 1833 | ] 1834 | 1835 | [[package]] 1836 | name = "security-framework-sys" 1837 | version = "2.9.1" 1838 | source = "registry+https://github.com/rust-lang/crates.io-index" 1839 | checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" 1840 | dependencies = [ 1841 | "core-foundation-sys", 1842 | "libc", 1843 | ] 1844 | 1845 | [[package]] 1846 | name = "semver" 1847 | version = "1.0.18" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" 1850 | 1851 | [[package]] 1852 | name = "serde" 1853 | version = "1.0.188" 1854 | source = "registry+https://github.com/rust-lang/crates.io-index" 1855 | checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" 1856 | dependencies = [ 1857 | "serde_derive", 1858 | ] 1859 | 1860 | [[package]] 1861 | name = "serde_derive" 1862 | version = "1.0.188" 1863 | source = "registry+https://github.com/rust-lang/crates.io-index" 1864 | checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" 1865 | dependencies = [ 1866 | "proc-macro2", 1867 | "quote", 1868 | "syn", 1869 | ] 1870 | 1871 | [[package]] 1872 | name = "serde_json" 1873 | version = "1.0.107" 1874 | source = "registry+https://github.com/rust-lang/crates.io-index" 1875 | checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" 1876 | dependencies = [ 1877 | "itoa", 1878 | "ryu", 1879 | "serde", 1880 | ] 1881 | 1882 | [[package]] 1883 | name = "serde_urlencoded" 1884 | version = "0.7.1" 1885 | source = "registry+https://github.com/rust-lang/crates.io-index" 1886 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1887 | dependencies = [ 1888 | "form_urlencoded", 1889 | "itoa", 1890 | "ryu", 1891 | "serde", 1892 | ] 1893 | 1894 | [[package]] 1895 | name = "sha1" 1896 | version = "0.10.6" 1897 | source = "registry+https://github.com/rust-lang/crates.io-index" 1898 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 1899 | dependencies = [ 1900 | "cfg-if", 1901 | "cpufeatures", 1902 | "digest", 1903 | ] 1904 | 1905 | [[package]] 1906 | name = "sha2" 1907 | version = "0.10.7" 1908 | source = "registry+https://github.com/rust-lang/crates.io-index" 1909 | checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" 1910 | dependencies = [ 1911 | "cfg-if", 1912 | "cpufeatures", 1913 | "digest", 1914 | ] 1915 | 1916 | [[package]] 1917 | name = "shlex" 1918 | version = "1.3.0" 1919 | source = "registry+https://github.com/rust-lang/crates.io-index" 1920 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 1921 | 1922 | [[package]] 1923 | name = "signal-hook-registry" 1924 | version = "1.4.1" 1925 | source = "registry+https://github.com/rust-lang/crates.io-index" 1926 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 1927 | dependencies = [ 1928 | "libc", 1929 | ] 1930 | 1931 | [[package]] 1932 | name = "signature" 1933 | version = "1.6.4" 1934 | source = "registry+https://github.com/rust-lang/crates.io-index" 1935 | checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" 1936 | dependencies = [ 1937 | "digest", 1938 | "rand_core", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "slab" 1943 | version = "0.4.9" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1946 | dependencies = [ 1947 | "autocfg", 1948 | ] 1949 | 1950 | [[package]] 1951 | name = "smallvec" 1952 | version = "1.11.0" 1953 | source = "registry+https://github.com/rust-lang/crates.io-index" 1954 | checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" 1955 | 1956 | [[package]] 1957 | name = "socket2" 1958 | version = "0.4.9" 1959 | source = "registry+https://github.com/rust-lang/crates.io-index" 1960 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" 1961 | dependencies = [ 1962 | "libc", 1963 | "winapi", 1964 | ] 1965 | 1966 | [[package]] 1967 | name = "socket2" 1968 | version = "0.5.4" 1969 | source = "registry+https://github.com/rust-lang/crates.io-index" 1970 | checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" 1971 | dependencies = [ 1972 | "libc", 1973 | "windows-sys", 1974 | ] 1975 | 1976 | [[package]] 1977 | name = "spin" 1978 | version = "0.5.2" 1979 | source = "registry+https://github.com/rust-lang/crates.io-index" 1980 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1981 | 1982 | [[package]] 1983 | name = "spin" 1984 | version = "0.9.8" 1985 | source = "registry+https://github.com/rust-lang/crates.io-index" 1986 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 1987 | 1988 | [[package]] 1989 | name = "spki" 1990 | version = "0.6.0" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" 1993 | dependencies = [ 1994 | "base64ct", 1995 | "der", 1996 | ] 1997 | 1998 | [[package]] 1999 | name = "strsim" 2000 | version = "0.10.0" 2001 | source = "registry+https://github.com/rust-lang/crates.io-index" 2002 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2003 | 2004 | [[package]] 2005 | name = "subtle" 2006 | version = "2.5.0" 2007 | source = "registry+https://github.com/rust-lang/crates.io-index" 2008 | checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 2009 | 2010 | [[package]] 2011 | name = "symlink" 2012 | version = "0.1.0" 2013 | source = "registry+https://github.com/rust-lang/crates.io-index" 2014 | checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" 2015 | 2016 | [[package]] 2017 | name = "syn" 2018 | version = "2.0.33" 2019 | source = "registry+https://github.com/rust-lang/crates.io-index" 2020 | checksum = "9caece70c63bfba29ec2fed841a09851b14a235c60010fa4de58089b6c025668" 2021 | dependencies = [ 2022 | "proc-macro2", 2023 | "quote", 2024 | "unicode-ident", 2025 | ] 2026 | 2027 | [[package]] 2028 | name = "tempfile" 2029 | version = "3.8.0" 2030 | source = "registry+https://github.com/rust-lang/crates.io-index" 2031 | checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" 2032 | dependencies = [ 2033 | "cfg-if", 2034 | "fastrand", 2035 | "redox_syscall", 2036 | "rustix", 2037 | "windows-sys", 2038 | ] 2039 | 2040 | [[package]] 2041 | name = "thiserror" 2042 | version = "1.0.48" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" 2045 | dependencies = [ 2046 | "thiserror-impl", 2047 | ] 2048 | 2049 | [[package]] 2050 | name = "thiserror-impl" 2051 | version = "1.0.48" 2052 | source = "registry+https://github.com/rust-lang/crates.io-index" 2053 | checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" 2054 | dependencies = [ 2055 | "proc-macro2", 2056 | "quote", 2057 | "syn", 2058 | ] 2059 | 2060 | [[package]] 2061 | name = "time" 2062 | version = "0.3.28" 2063 | source = "registry+https://github.com/rust-lang/crates.io-index" 2064 | checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" 2065 | dependencies = [ 2066 | "deranged", 2067 | "serde", 2068 | "time-core", 2069 | "time-macros", 2070 | ] 2071 | 2072 | [[package]] 2073 | name = "time-core" 2074 | version = "0.1.1" 2075 | source = "registry+https://github.com/rust-lang/crates.io-index" 2076 | checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" 2077 | 2078 | [[package]] 2079 | name = "time-macros" 2080 | version = "0.2.14" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" 2083 | dependencies = [ 2084 | "time-core", 2085 | ] 2086 | 2087 | [[package]] 2088 | name = "tinyvec" 2089 | version = "1.6.0" 2090 | source = "registry+https://github.com/rust-lang/crates.io-index" 2091 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2092 | dependencies = [ 2093 | "tinyvec_macros", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "tinyvec_macros" 2098 | version = "0.1.1" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2101 | 2102 | [[package]] 2103 | name = "tokio" 2104 | version = "1.32.0" 2105 | source = "registry+https://github.com/rust-lang/crates.io-index" 2106 | checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" 2107 | dependencies = [ 2108 | "backtrace", 2109 | "bytes", 2110 | "libc", 2111 | "mio", 2112 | "num_cpus", 2113 | "parking_lot", 2114 | "pin-project-lite", 2115 | "signal-hook-registry", 2116 | "socket2 0.5.4", 2117 | "tokio-macros", 2118 | "windows-sys", 2119 | ] 2120 | 2121 | [[package]] 2122 | name = "tokio-macros" 2123 | version = "2.1.0" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" 2126 | dependencies = [ 2127 | "proc-macro2", 2128 | "quote", 2129 | "syn", 2130 | ] 2131 | 2132 | [[package]] 2133 | name = "tokio-native-tls" 2134 | version = "0.3.1" 2135 | source = "registry+https://github.com/rust-lang/crates.io-index" 2136 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 2137 | dependencies = [ 2138 | "native-tls", 2139 | "tokio", 2140 | ] 2141 | 2142 | [[package]] 2143 | name = "tokio-rustls" 2144 | version = "0.24.1" 2145 | source = "registry+https://github.com/rust-lang/crates.io-index" 2146 | checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 2147 | dependencies = [ 2148 | "rustls", 2149 | "tokio", 2150 | ] 2151 | 2152 | [[package]] 2153 | name = "tokio-util" 2154 | version = "0.7.8" 2155 | source = "registry+https://github.com/rust-lang/crates.io-index" 2156 | checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" 2157 | dependencies = [ 2158 | "bytes", 2159 | "futures-core", 2160 | "futures-sink", 2161 | "pin-project-lite", 2162 | "tokio", 2163 | "tracing", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "tower-service" 2168 | version = "0.3.2" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 2171 | 2172 | [[package]] 2173 | name = "tracing" 2174 | version = "0.1.37" 2175 | source = "registry+https://github.com/rust-lang/crates.io-index" 2176 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 2177 | dependencies = [ 2178 | "cfg-if", 2179 | "pin-project-lite", 2180 | "tracing-attributes", 2181 | "tracing-core", 2182 | ] 2183 | 2184 | [[package]] 2185 | name = "tracing-attributes" 2186 | version = "0.1.26" 2187 | source = "registry+https://github.com/rust-lang/crates.io-index" 2188 | checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" 2189 | dependencies = [ 2190 | "proc-macro2", 2191 | "quote", 2192 | "syn", 2193 | ] 2194 | 2195 | [[package]] 2196 | name = "tracing-core" 2197 | version = "0.1.31" 2198 | source = "registry+https://github.com/rust-lang/crates.io-index" 2199 | checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" 2200 | dependencies = [ 2201 | "once_cell", 2202 | ] 2203 | 2204 | [[package]] 2205 | name = "try-lock" 2206 | version = "0.2.4" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" 2209 | 2210 | [[package]] 2211 | name = "typenum" 2212 | version = "1.16.0" 2213 | source = "registry+https://github.com/rust-lang/crates.io-index" 2214 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 2215 | 2216 | [[package]] 2217 | name = "unicode-bidi" 2218 | version = "0.3.13" 2219 | source = "registry+https://github.com/rust-lang/crates.io-index" 2220 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" 2221 | 2222 | [[package]] 2223 | name = "unicode-ident" 2224 | version = "1.0.12" 2225 | source = "registry+https://github.com/rust-lang/crates.io-index" 2226 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 2227 | 2228 | [[package]] 2229 | name = "unicode-normalization" 2230 | version = "0.1.22" 2231 | source = "registry+https://github.com/rust-lang/crates.io-index" 2232 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2233 | dependencies = [ 2234 | "tinyvec", 2235 | ] 2236 | 2237 | [[package]] 2238 | name = "untrusted" 2239 | version = "0.7.1" 2240 | source = "registry+https://github.com/rust-lang/crates.io-index" 2241 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 2242 | 2243 | [[package]] 2244 | name = "untrusted" 2245 | version = "0.9.0" 2246 | source = "registry+https://github.com/rust-lang/crates.io-index" 2247 | checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 2248 | 2249 | [[package]] 2250 | name = "url" 2251 | version = "2.4.1" 2252 | source = "registry+https://github.com/rust-lang/crates.io-index" 2253 | checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" 2254 | dependencies = [ 2255 | "form_urlencoded", 2256 | "idna", 2257 | "percent-encoding", 2258 | ] 2259 | 2260 | [[package]] 2261 | name = "urlencoding" 2262 | version = "2.1.3" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 2265 | 2266 | [[package]] 2267 | name = "utf8parse" 2268 | version = "0.2.1" 2269 | source = "registry+https://github.com/rust-lang/crates.io-index" 2270 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 2271 | 2272 | [[package]] 2273 | name = "uuid" 2274 | version = "1.4.1" 2275 | source = "registry+https://github.com/rust-lang/crates.io-index" 2276 | checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" 2277 | 2278 | [[package]] 2279 | name = "vcpkg" 2280 | version = "0.2.15" 2281 | source = "registry+https://github.com/rust-lang/crates.io-index" 2282 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 2283 | 2284 | [[package]] 2285 | name = "version_check" 2286 | version = "0.9.4" 2287 | source = "registry+https://github.com/rust-lang/crates.io-index" 2288 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2289 | 2290 | [[package]] 2291 | name = "vsimd" 2292 | version = "0.8.0" 2293 | source = "registry+https://github.com/rust-lang/crates.io-index" 2294 | checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" 2295 | 2296 | [[package]] 2297 | name = "want" 2298 | version = "0.3.1" 2299 | source = "registry+https://github.com/rust-lang/crates.io-index" 2300 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 2301 | dependencies = [ 2302 | "try-lock", 2303 | ] 2304 | 2305 | [[package]] 2306 | name = "wasi" 2307 | version = "0.11.0+wasi-snapshot-preview1" 2308 | source = "registry+https://github.com/rust-lang/crates.io-index" 2309 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2310 | 2311 | [[package]] 2312 | name = "wasm-bindgen" 2313 | version = "0.2.87" 2314 | source = "registry+https://github.com/rust-lang/crates.io-index" 2315 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" 2316 | dependencies = [ 2317 | "cfg-if", 2318 | "wasm-bindgen-macro", 2319 | ] 2320 | 2321 | [[package]] 2322 | name = "wasm-bindgen-backend" 2323 | version = "0.2.87" 2324 | source = "registry+https://github.com/rust-lang/crates.io-index" 2325 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" 2326 | dependencies = [ 2327 | "bumpalo", 2328 | "log", 2329 | "once_cell", 2330 | "proc-macro2", 2331 | "quote", 2332 | "syn", 2333 | "wasm-bindgen-shared", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "wasm-bindgen-futures" 2338 | version = "0.4.37" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" 2341 | dependencies = [ 2342 | "cfg-if", 2343 | "js-sys", 2344 | "wasm-bindgen", 2345 | "web-sys", 2346 | ] 2347 | 2348 | [[package]] 2349 | name = "wasm-bindgen-macro" 2350 | version = "0.2.87" 2351 | source = "registry+https://github.com/rust-lang/crates.io-index" 2352 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" 2353 | dependencies = [ 2354 | "quote", 2355 | "wasm-bindgen-macro-support", 2356 | ] 2357 | 2358 | [[package]] 2359 | name = "wasm-bindgen-macro-support" 2360 | version = "0.2.87" 2361 | source = "registry+https://github.com/rust-lang/crates.io-index" 2362 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" 2363 | dependencies = [ 2364 | "proc-macro2", 2365 | "quote", 2366 | "syn", 2367 | "wasm-bindgen-backend", 2368 | "wasm-bindgen-shared", 2369 | ] 2370 | 2371 | [[package]] 2372 | name = "wasm-bindgen-shared" 2373 | version = "0.2.87" 2374 | source = "registry+https://github.com/rust-lang/crates.io-index" 2375 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" 2376 | 2377 | [[package]] 2378 | name = "wasm-streams" 2379 | version = "0.3.0" 2380 | source = "registry+https://github.com/rust-lang/crates.io-index" 2381 | checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7" 2382 | dependencies = [ 2383 | "futures-util", 2384 | "js-sys", 2385 | "wasm-bindgen", 2386 | "wasm-bindgen-futures", 2387 | "web-sys", 2388 | ] 2389 | 2390 | [[package]] 2391 | name = "web-sys" 2392 | version = "0.3.64" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" 2395 | dependencies = [ 2396 | "js-sys", 2397 | "wasm-bindgen", 2398 | ] 2399 | 2400 | [[package]] 2401 | name = "winapi" 2402 | version = "0.3.9" 2403 | source = "registry+https://github.com/rust-lang/crates.io-index" 2404 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2405 | dependencies = [ 2406 | "winapi-i686-pc-windows-gnu", 2407 | "winapi-x86_64-pc-windows-gnu", 2408 | ] 2409 | 2410 | [[package]] 2411 | name = "winapi-i686-pc-windows-gnu" 2412 | version = "0.4.0" 2413 | source = "registry+https://github.com/rust-lang/crates.io-index" 2414 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2415 | 2416 | [[package]] 2417 | name = "winapi-x86_64-pc-windows-gnu" 2418 | version = "0.4.0" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2421 | 2422 | [[package]] 2423 | name = "windows-sys" 2424 | version = "0.48.0" 2425 | source = "registry+https://github.com/rust-lang/crates.io-index" 2426 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2427 | dependencies = [ 2428 | "windows-targets", 2429 | ] 2430 | 2431 | [[package]] 2432 | name = "windows-targets" 2433 | version = "0.48.5" 2434 | source = "registry+https://github.com/rust-lang/crates.io-index" 2435 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2436 | dependencies = [ 2437 | "windows_aarch64_gnullvm", 2438 | "windows_aarch64_msvc", 2439 | "windows_i686_gnu", 2440 | "windows_i686_msvc", 2441 | "windows_x86_64_gnu", 2442 | "windows_x86_64_gnullvm", 2443 | "windows_x86_64_msvc", 2444 | ] 2445 | 2446 | [[package]] 2447 | name = "windows_aarch64_gnullvm" 2448 | version = "0.48.5" 2449 | source = "registry+https://github.com/rust-lang/crates.io-index" 2450 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2451 | 2452 | [[package]] 2453 | name = "windows_aarch64_msvc" 2454 | version = "0.48.5" 2455 | source = "registry+https://github.com/rust-lang/crates.io-index" 2456 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2457 | 2458 | [[package]] 2459 | name = "windows_i686_gnu" 2460 | version = "0.48.5" 2461 | source = "registry+https://github.com/rust-lang/crates.io-index" 2462 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2463 | 2464 | [[package]] 2465 | name = "windows_i686_msvc" 2466 | version = "0.48.5" 2467 | source = "registry+https://github.com/rust-lang/crates.io-index" 2468 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2469 | 2470 | [[package]] 2471 | name = "windows_x86_64_gnu" 2472 | version = "0.48.5" 2473 | source = "registry+https://github.com/rust-lang/crates.io-index" 2474 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2475 | 2476 | [[package]] 2477 | name = "windows_x86_64_gnullvm" 2478 | version = "0.48.5" 2479 | source = "registry+https://github.com/rust-lang/crates.io-index" 2480 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 2481 | 2482 | [[package]] 2483 | name = "windows_x86_64_msvc" 2484 | version = "0.48.5" 2485 | source = "registry+https://github.com/rust-lang/crates.io-index" 2486 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 2487 | 2488 | [[package]] 2489 | name = "winreg" 2490 | version = "0.50.0" 2491 | source = "registry+https://github.com/rust-lang/crates.io-index" 2492 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 2493 | dependencies = [ 2494 | "cfg-if", 2495 | "windows-sys", 2496 | ] 2497 | 2498 | [[package]] 2499 | name = "xmlparser" 2500 | version = "0.13.5" 2501 | source = "registry+https://github.com/rust-lang/crates.io-index" 2502 | checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" 2503 | 2504 | [[package]] 2505 | name = "xz2" 2506 | version = "0.1.7" 2507 | source = "registry+https://github.com/rust-lang/crates.io-index" 2508 | checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" 2509 | dependencies = [ 2510 | "lzma-sys", 2511 | ] 2512 | 2513 | [[package]] 2514 | name = "yara" 2515 | version = "0.24.0" 2516 | source = "registry+https://github.com/rust-lang/crates.io-index" 2517 | checksum = "b40e0a3ad51d2ae8cb016c38bd5af7885352094caf1bbeb5ba37e06d0247e605" 2518 | dependencies = [ 2519 | "bitflags 2.4.0", 2520 | "lazy_static", 2521 | "thiserror", 2522 | "yara-sys", 2523 | ] 2524 | 2525 | [[package]] 2526 | name = "yara-sys" 2527 | version = "0.24.0" 2528 | source = "registry+https://github.com/rust-lang/crates.io-index" 2529 | checksum = "7b155296fb1c32113e689085ab8c249d774910f4e600f8eb612793a59cea4ff1" 2530 | dependencies = [ 2531 | "bindgen", 2532 | ] 2533 | 2534 | [[package]] 2535 | name = "zeroize" 2536 | version = "1.6.0" 2537 | source = "registry+https://github.com/rust-lang/crates.io-index" 2538 | checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" 2539 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "grep-nixos-cache" 3 | version = "0.1.0" 4 | edition = "2021" 5 | authors = ["Pierre Bourdon "] 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | anyhow = "1.0.75" 11 | aws-config = { version = "1.1.4", features = ["behavior-version-latest"] } 12 | aws-sdk-s3 = "1.14.0" 13 | bytes = "1.5.0" 14 | clap = { version = "4.4.3", features = ["derive"]} 15 | futures = "0.3.28" 16 | memmem = "0.1.1" 17 | multimap = "0.10.0" 18 | nix-nar = "0.3.0" 19 | reqwest = { version = "0.11.20", features = ["stream"] } 20 | tokio = { version = "1.32.0", features = ["full"]} 21 | xz2 = "0.1.7" 22 | yara = "0.24.0" 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2023- Pierre Bourdon 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # grep-nixos-cache 2 | 3 | A tool to efficiently grep the contents of many NixOS store paths for a given 4 | string to find. The main use case is looking for vendored libraries through the 5 | entirety of a Hydra evaluation. 6 | 7 | ## How to use 8 | 9 | ``` 10 | $ grep-nixos-cache --needle what-to-search --path /nix/store/... 11 | ``` 12 | 13 | ``` 14 | $ grep-nixos-cache --needle what-to-search --paths /path/to/store-paths.txt 15 | ``` 16 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-utils": { 4 | "inputs": { 5 | "systems": "systems" 6 | }, 7 | "locked": { 8 | "lastModified": 1705309234, 9 | "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", 10 | "owner": "numtide", 11 | "repo": "flake-utils", 12 | "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", 13 | "type": "github" 14 | }, 15 | "original": { 16 | "owner": "numtide", 17 | "repo": "flake-utils", 18 | "type": "github" 19 | } 20 | }, 21 | "naersk": { 22 | "inputs": { 23 | "nixpkgs": [ 24 | "nixpkgs" 25 | ] 26 | }, 27 | "locked": { 28 | "lastModified": 1698420672, 29 | "narHash": "sha256-/TdeHMPRjjdJub7p7+w55vyABrsJlt5QkznPYy55vKA=", 30 | "owner": "nix-community", 31 | "repo": "naersk", 32 | "rev": "aeb58d5e8faead8980a807c840232697982d47b9", 33 | "type": "github" 34 | }, 35 | "original": { 36 | "owner": "nix-community", 37 | "repo": "naersk", 38 | "type": "github" 39 | } 40 | }, 41 | "nixpkgs": { 42 | "locked": { 43 | "lastModified": 1706487304, 44 | "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", 45 | "owner": "NixOS", 46 | "repo": "nixpkgs", 47 | "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", 48 | "type": "github" 49 | }, 50 | "original": { 51 | "owner": "NixOS", 52 | "ref": "nixpkgs-unstable", 53 | "repo": "nixpkgs", 54 | "type": "github" 55 | } 56 | }, 57 | "root": { 58 | "inputs": { 59 | "flake-utils": "flake-utils", 60 | "naersk": "naersk", 61 | "nixpkgs": "nixpkgs" 62 | } 63 | }, 64 | "systems": { 65 | "locked": { 66 | "lastModified": 1681028828, 67 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 68 | "owner": "nix-systems", 69 | "repo": "default", 70 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 71 | "type": "github" 72 | }, 73 | "original": { 74 | "owner": "nix-systems", 75 | "repo": "default", 76 | "type": "github" 77 | } 78 | } 79 | }, 80 | "root": "root", 81 | "version": 7 82 | } 83 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | inputs = { 3 | flake-utils.url = "github:numtide/flake-utils"; 4 | naersk.url = "github:nix-community/naersk"; 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 | 7 | naersk.inputs.nixpkgs.follows = "nixpkgs"; 8 | }; 9 | 10 | outputs = { self, flake-utils, naersk, nixpkgs }: 11 | flake-utils.lib.eachDefaultSystem (system: 12 | let 13 | pkgs = import nixpkgs { 14 | inherit system; 15 | }; 16 | 17 | naersk' = pkgs.callPackage naersk {}; 18 | in rec { 19 | defaultPackage = naersk'.buildPackage { 20 | src = ./.; 21 | 22 | env.YARA_INCLUDE_DIR = "${pkgs.lib.getDev pkgs.yara}/include"; 23 | 24 | nativeBuildInputs = with pkgs; [ rustPlatform.bindgenHook pkg-config ]; 25 | buildInputs = with pkgs; [ openssl yara ]; 26 | }; 27 | 28 | devShell = pkgs.mkShell { 29 | env.YARA_INCLUDE_DIR = "${pkgs.lib.getDev pkgs.yara}/include"; 30 | 31 | nativeBuildInputs = with pkgs; [ rustc rustfmt cargo rustPlatform.bindgenHook pkg-config ]; 32 | buildInputs = with pkgs; [ openssl yara ]; 33 | }; 34 | } 35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use anyhow::{bail, Context, Result}; 2 | use aws_config::imds::region::ImdsRegionProvider; 3 | use bytes::buf::Buf; 4 | use clap::Parser; 5 | use futures::prelude::*; 6 | use memmem::Searcher; 7 | use std::{ 8 | fs, 9 | io::{self, Read}, 10 | process, 11 | sync::Arc, 12 | }; 13 | 14 | const PATHS_COUNT_AWS_THRESHOLD: usize = 50; 15 | const NIX_CACHE_S3_BUCKET: &str = "nix-cache"; 16 | const NIX_CACHE_CDN_URL: &str = "https://cache.nixos.org"; 17 | const NIX_CACHE_REGION: &str = "us-east-1"; 18 | const USER_AGENT: &str = "grep-nixos-cache 1.0 (https://github.com/delroth/grep-nixos-cache)"; 19 | const YARA_TIMEOUT_SECS: i32 = 30; 20 | 21 | #[derive(Debug, Parser)] 22 | #[command(author, version, about, long_about = None)] 23 | struct Flags { 24 | /// String to look for in the target Nix store paths. 25 | #[arg(long, conflicts_with_all = ["yara_ruleset"])] 26 | needle: Option, 27 | 28 | // Yara rules file to match against Nix store paths. 29 | #[arg(long, conflicts_with_all = ["needle"])] 30 | yara_ruleset: Option, 31 | 32 | /// Single Nix store path that need to be checked (mostly for testing purposes). 33 | #[arg(long, conflicts_with_all = ["paths", "hydra_eval_url"])] 34 | path: Option, 35 | 36 | /// Filename containing a newline-separated list of Nix store paths that need to be checked. 37 | #[arg(long, conflicts_with_all = ["path", "hydra_eval_url"])] 38 | paths: Option, 39 | 40 | /// Hydra eval URL to get all output Nix store paths from. 41 | #[arg(long, conflicts_with_all = ["path", "paths"])] 42 | hydra_eval_url: Option, 43 | 44 | /// Number of simultaneous store paths to process in flight. 45 | #[arg(long, default_value_t = 15)] 46 | parallelism: usize, 47 | 48 | /// Allow possibly expensive runs fetching from S3 with requester-pays. 49 | #[arg(long, default_value_t = false)] 50 | allow_possibly_expensive_run: bool, 51 | } 52 | 53 | async fn get_aws_region() -> Option { 54 | ImdsRegionProvider::builder() 55 | .build() 56 | .region() 57 | .await 58 | .map(|x| x.to_string()) 59 | } 60 | 61 | fn collect_output_paths(flags: &Flags) -> Vec { 62 | if flags.path.is_some() { 63 | vec![flags.path.clone().unwrap()] 64 | } else if flags.paths.is_some() { 65 | fs::read_to_string(flags.paths.as_ref().unwrap()) 66 | .unwrap() 67 | .lines() 68 | .map(String::from) 69 | .collect() 70 | } else if flags.hydra_eval_url.is_some() { 71 | println!( 72 | "Reading output paths from Hydra eval URLs is currently unsupported (fix Hydra plz)." 73 | ); 74 | vec![] 75 | } else { 76 | vec![] 77 | } 78 | } 79 | 80 | #[derive(Clone)] 81 | enum Matcher<'a> { 82 | String(StringMatcher<'a>), 83 | Yara(YaraMatcher), 84 | } 85 | 86 | #[derive(Clone)] 87 | struct StringMatcher<'a> { 88 | searcher: memmem::TwoWaySearcher<'a>, 89 | } 90 | 91 | impl StringMatcher<'_> { 92 | fn new<'a>(needle: &'static String) -> StringMatcher<'a> { 93 | StringMatcher { 94 | searcher: memmem::TwoWaySearcher::new(needle.as_bytes()), 95 | } 96 | } 97 | } 98 | 99 | #[derive(Clone)] 100 | struct YaraMatcher { 101 | rules: Arc, 102 | } 103 | 104 | impl YaraMatcher { 105 | fn new(rules_file: &String) -> Result { 106 | let compiler = yara::Compiler::new()?.add_rules_file(rules_file)?; 107 | let rules = compiler.compile_rules()?; 108 | 109 | Ok(YaraMatcher { 110 | rules: Arc::new(rules), 111 | }) 112 | } 113 | } 114 | 115 | impl Matcher<'_> { 116 | fn matches(&self, haystack: &[u8]) -> Result> { 117 | match self { 118 | Matcher::String(sm) => { 119 | if sm.searcher.search_in(haystack).is_some() { 120 | Ok(vec!["needle".to_string()]) 121 | } else { 122 | Ok(vec![]) 123 | } 124 | } 125 | Matcher::Yara(ym) => { 126 | let matches = ym.rules.scan_mem(haystack, YARA_TIMEOUT_SECS)?; 127 | Ok(matches.iter().map(|r| r.identifier.to_string()).collect()) 128 | } 129 | } 130 | } 131 | } 132 | 133 | #[derive(Clone)] 134 | enum Fetcher { 135 | Cdn(CdnFetcher), 136 | S3(S3Fetcher), 137 | } 138 | 139 | #[derive(Clone)] 140 | struct CdnFetcher { 141 | client: reqwest::Client, 142 | url_base: String, 143 | } 144 | 145 | #[derive(Clone)] 146 | struct S3Fetcher { 147 | client: aws_sdk_s3::Client, 148 | bucket: String, 149 | } 150 | 151 | impl CdnFetcher { 152 | fn new(url_base: &str) -> CdnFetcher { 153 | CdnFetcher { 154 | client: reqwest::Client::builder() 155 | .user_agent(USER_AGENT) 156 | .build() 157 | .unwrap(), 158 | url_base: url_base.to_string(), 159 | } 160 | } 161 | } 162 | 163 | impl S3Fetcher { 164 | fn new(config: &aws_config::SdkConfig, bucket: &str) -> S3Fetcher { 165 | S3Fetcher { 166 | client: aws_sdk_s3::Client::new(config), 167 | bucket: bucket.to_string(), 168 | } 169 | } 170 | } 171 | 172 | impl Fetcher { 173 | async fn download(&self, path: &str) -> Result<(u16, bytes::Bytes)> { 174 | match self { 175 | Fetcher::Cdn(cf) => { 176 | let url = format!("{}/{}", cf.url_base, path); 177 | let resp = cf.client.get(url).send().await?; 178 | Ok((resp.status().as_u16(), resp.bytes().await?)) 179 | } 180 | Fetcher::S3(sf) => { 181 | let resp = sf 182 | .client 183 | .get_object() 184 | .bucket(&sf.bucket) 185 | .request_payer(aws_sdk_s3::types::RequestPayer::Requester) 186 | .key(path) 187 | .send() 188 | .await?; 189 | Ok((200, resp.body.collect().await?.into_bytes())) 190 | } 191 | } 192 | } 193 | } 194 | 195 | struct SearchOutcome { 196 | path: String, 197 | files_matched: multimap::MultiMap, 198 | } 199 | 200 | struct NarInfo { 201 | nar_url: String, 202 | compression: String, 203 | nar_size: usize, 204 | } 205 | 206 | fn hash_from_path(path: &String) -> Result { 207 | let basename = path 208 | .strip_prefix("/nix/store/") 209 | .context("Path does not start with /nix/store/")?; 210 | Ok(basename 211 | .split_once('-') 212 | .context("No - in path basename")? 213 | .0 214 | .to_string()) 215 | } 216 | 217 | fn parse_narinfo(text: String) -> Result { 218 | let mut nar_url: Option = None; 219 | let mut compression: Option = None; 220 | let mut nar_size: Option = None; 221 | 222 | for l in text.lines() { 223 | if let Some(val) = l.strip_prefix("URL: ") { 224 | nar_url = Some(val.to_string()); 225 | } else if let Some(val) = l.strip_prefix("Compression: ") { 226 | compression = Some(val.to_string()); 227 | } else if let Some(val) = l.strip_prefix("NarSize: ") { 228 | nar_size = Some(val.parse::().context("Invalid NarSize")?); 229 | } 230 | } 231 | 232 | Ok(NarInfo { 233 | nar_url: nar_url.context("Did not find a NAR URL key")?, 234 | compression: compression.context("Did not a NAR Compression key")?, 235 | nar_size: nar_size.context("Did not find a NAR NarSize key")?, 236 | }) 237 | } 238 | 239 | async fn fetch_narinfo(fetcher: &Fetcher, hash: &String) -> Result> { 240 | let path = format!("{}.narinfo", hash); 241 | let (code, body) = fetcher.download(&path).await?; 242 | 243 | if code == 403 { 244 | return Ok(None); 245 | } 246 | 247 | let data = std::str::from_utf8(&body)?.to_string(); 248 | Ok(Some( 249 | parse_narinfo(data).context("Could not parse narinfo file")?, 250 | )) 251 | } 252 | 253 | async fn fetch_nar(fetcher: &Fetcher, narinfo: NarInfo) -> Result> { 254 | // TODO: This buffers everything into memory. Unfortunately there's no NAR parser right now 255 | // which can deal with async decoding... 256 | 257 | let (_, compressed) = fetcher.download(&narinfo.nar_url).await?; 258 | 259 | let mut contents = Vec::with_capacity(narinfo.nar_size); 260 | match narinfo.compression.as_str() { 261 | "xz" => xz2::bufread::XzDecoder::new(compressed.reader()).read_to_end(&mut contents)?, 262 | _ => bail!("Unknown compression method: {}", narinfo.compression), 263 | }; 264 | 265 | Ok(nix_nar::Decoder::new(io::Cursor::new(contents)).context("Not a valid NAR file")?) 266 | } 267 | 268 | async fn find_matches_in_path( 269 | matcher: &Matcher<'_>, 270 | fetcher: &Fetcher, 271 | path: &String, 272 | ) -> Result { 273 | let hash = hash_from_path(path).with_context(|| format!("Failed to parse path: {}", path))?; 274 | let narinfo = fetch_narinfo(fetcher, &hash) 275 | .await 276 | .context("Failed to fetch narinfo")?; 277 | 278 | let mut files_matched = multimap::MultiMap::::new(); 279 | 280 | if let Some(narinfo) = narinfo { 281 | let nar = fetch_nar(fetcher, narinfo) 282 | .await 283 | .context("Failed to fetch nar")?; 284 | 285 | for entry in nar.entries()? { 286 | let entry = entry.context("Failed to parse NAR entry")?; 287 | if let nix_nar::Content::File { mut data, size, .. } = entry.content { 288 | let mut bytes = Vec::with_capacity(size.try_into().unwrap()); 289 | data.read_to_end(&mut bytes)?; 290 | for tag in matcher.matches(bytes.as_slice())?.iter() { 291 | files_matched.insert(entry.path.clone().unwrap().into_string(), tag.clone()); 292 | } 293 | } 294 | } 295 | } 296 | 297 | Ok(SearchOutcome { 298 | path: path.clone(), 299 | files_matched, 300 | }) 301 | } 302 | 303 | #[tokio::main] 304 | async fn main() { 305 | let flags = Flags::parse(); 306 | 307 | let paths = collect_output_paths(&flags); 308 | 309 | let fetcher = if paths.is_empty() { 310 | println!("No paths to check, exiting"); 311 | process::exit(1); 312 | } else if paths.len() >= PATHS_COUNT_AWS_THRESHOLD { 313 | if !flags.allow_possibly_expensive_run 314 | && get_aws_region().await.unwrap_or("not-aws".to_string()) != NIX_CACHE_REGION 315 | { 316 | println!("To avoid unnecessary costs, please run this program in the AWS {} region. Exiting.", NIX_CACHE_REGION); 317 | println!("This behavior can be overridden with --allow-possibly-expensive-run."); 318 | process::exit(1); 319 | } else { 320 | let aws_config = aws_config::load_from_env().await; 321 | Fetcher::S3(S3Fetcher::new(&aws_config, NIX_CACHE_S3_BUCKET)) 322 | } 323 | } else { 324 | Fetcher::Cdn(CdnFetcher::new(NIX_CACHE_CDN_URL)) 325 | }; 326 | 327 | let matcher = if let Some(needle) = flags.needle { 328 | let needle = Box::leak(Box::new(needle)); 329 | Matcher::String(StringMatcher::new(needle)) 330 | } else if let Some(ruleset) = flags.yara_ruleset { 331 | Matcher::Yara(YaraMatcher::new(&ruleset).expect("Failed to parse Yara ruleset")) 332 | } else { 333 | println!("No matcher provided, please use either --needle or --yara_ruleset"); 334 | process::exit(1); 335 | }; 336 | 337 | let futures = paths.iter().map(|p| { 338 | let matcher = matcher.clone(); 339 | let fetcher = fetcher.clone(); 340 | let p = p.clone(); 341 | async move { 342 | tokio::spawn(async move { 343 | find_matches_in_path(&matcher, &fetcher, &p) 344 | .await 345 | .with_context(|| format!("Error while analyzing path {:?}", p)) 346 | }) 347 | .await? 348 | } 349 | }); 350 | 351 | let mut processed: u32 = 0; 352 | let mut stream = futures::stream::iter(futures).buffer_unordered(flags.parallelism); 353 | while let Some(result) = stream.next().await { 354 | match result { 355 | Ok(result) => { 356 | if !result.files_matched.is_empty() { 357 | println!("Found in {}: {:?}", result.path, result.files_matched); 358 | } 359 | } 360 | Err(err) => { 361 | println!("Error: {:?}", err); 362 | } 363 | } 364 | 365 | processed += 1; 366 | if processed % 1000 == 0 { 367 | let pct = 100.0 * (processed as f32) / (paths.len() as f32); 368 | println!( 369 | "Processed {} out of {} ({}%)", 370 | processed, 371 | paths.len(), 372 | pct as u32 373 | ); 374 | } 375 | } 376 | } 377 | -------------------------------------------------------------------------------- /yara/example.yara: -------------------------------------------------------------------------------- 1 | rule contains_libwebp { 2 | strings: 3 | $sig = "no memory during frame initialization." 4 | condition: 5 | $sig 6 | } 7 | 8 | rule contains_libpng { 9 | strings: 10 | $sig = "Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." 11 | condition: 12 | $sig 13 | } 14 | 15 | rule contains_openssl { 16 | strings: 17 | $sig = "calling OPENSSL_dir_read(%s)" 18 | condition: 19 | $sig 20 | } 21 | 22 | rule contains_libressl { 23 | strings: 24 | $sig = "peer failed to provide a certificate" 25 | condition: 26 | $sig 27 | } 28 | 29 | rule contains_zlib { 30 | strings: 31 | $sig = "too many length or distance symbols" 32 | condition: 33 | $sig 34 | } 35 | 36 | rule contains_libjpeg { 37 | strings: 38 | $sig = "Missing Huffman code table entry" 39 | condition: 40 | $sig 41 | } 42 | 43 | rule contains_libcurl { 44 | strings: 45 | $sig = "A libcurl function was given a bad argument" 46 | condition: 47 | $sig 48 | } 49 | --------------------------------------------------------------------------------