[INFO] cloning repository https://github.com/alecchendev/cryptopals-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alecchendev/cryptopals-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falecchendev%2Fcryptopals-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falecchendev%2Fcryptopals-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6ba6cb41f3b0f5b9a6a27f1e2e26c07d785c5818
[INFO] testing alecchendev/cryptopals-rust against 1.90.0 for beta-1.91-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falecchendev%2Fcryptopals-rust" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/alecchendev/cryptopals-rust
[INFO] finished tweaking git repo https://github.com/alecchendev/cryptopals-rust
[INFO] tweaked toml for git repo https://github.com/alecchendev/cryptopals-rust written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/alecchendev/cryptopals-rust on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/alecchendev/cryptopals-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tungstenite v0.17.3
[INFO] [stderr]   Downloaded tokio-tungstenite v0.17.2
[INFO] [stderr]   Downloaded rustls-pemfile v0.2.1
[INFO] [stderr]   Downloaded openssl-sys v0.9.83
[INFO] [stderr]   Downloaded proc-macro2 v1.0.54
[INFO] [stderr]   Downloaded reqwest v0.11.16
[INFO] [stderr]   Downloaded num-bigint-dig v0.8.2
[INFO] [stderr]   Downloaded warp v0.3.3
[INFO] [stderr]   Downloaded headers v0.3.8
[INFO] [stderr]   Downloaded syn v2.0.11
[INFO] [stderr]   Downloaded serde_json v1.0.95
[INFO] [stderr]   Downloaded serde v1.0.159
[INFO] [stderr]   Downloaded multipart v0.18.0
[INFO] [stderr]   Downloaded openssl v0.10.48
[INFO] [stderr]   Downloaded rustix v0.37.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8c5fe87b26acd95532c3720f5f5fc387e4cae1540b6d1725bd62a6033634a83f
[INFO] running `Command { std: "docker" "start" "-a" "8c5fe87b26acd95532c3720f5f5fc387e4cae1540b6d1725bd62a6033634a83f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8c5fe87b26acd95532c3720f5f5fc387e4cae1540b6d1725bd62a6033634a83f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8c5fe87b26acd95532c3720f5f5fc387e4cae1540b6d1725bd62a6033634a83f", kill_on_drop: false }`
[INFO] [stdout] 8c5fe87b26acd95532c3720f5f5fc387e4cae1540b6d1725bd62a6033634a83f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1004c248f4fc1658c6ffcf1c26d20db13a0bc4cc955244485505e8bb9401d162
[INFO] running `Command { std: "docker" "start" "-a" "1004c248f4fc1658c6ffcf1c26d20db13a0bc4cc955244485505e8bb9401d162", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.140
[INFO] [stderr]    Compiling proc-macro2 v1.0.54
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling quote v1.0.26
[INFO] [stderr]    Compiling typenum v1.16.0
[INFO] [stderr]    Compiling bytes v1.4.0
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling lock_api v0.4.9
[INFO] [stderr]    Compiling smallvec v1.10.0
[INFO] [stderr]    Compiling itoa v1.0.6
[INFO] [stderr]    Compiling pin-project-lite v0.2.9
[INFO] [stderr]    Compiling parking_lot_core v0.9.7
[INFO] [stderr]    Compiling futures-core v0.3.27
[INFO] [stderr]    Compiling log v0.4.17
[INFO] [stderr]    Compiling scopeguard v1.1.0
[INFO] [stderr]    Compiling tokio v1.27.0
[INFO] [stderr]    Compiling once_cell v1.17.1
[INFO] [stderr]    Compiling cc v1.0.79
[INFO] [stderr]    Compiling pkg-config v0.3.26
[INFO] [stderr]    Compiling slab v0.4.8
[INFO] [stderr]    Compiling futures-task v0.3.27
[INFO] [stderr]    Compiling futures-sink v0.3.27
[INFO] [stderr]    Compiling httparse v1.8.0
[INFO] [stderr]    Compiling futures-util v0.3.27
[INFO] [stderr]    Compiling http v0.2.9
[INFO] [stderr]    Compiling cpufeatures v0.2.5
[INFO] [stderr]    Compiling tinyvec v1.6.0
[INFO] [stderr]    Compiling tracing-core v0.1.30
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling generic-array v0.14.6
[INFO] [stderr]    Compiling unicase v2.6.0
[INFO] [stderr]    Compiling serde v1.0.159
[INFO] [stderr]    Compiling percent-encoding v2.2.0
[INFO] [stderr]    Compiling form_urlencoded v1.1.0
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.13
[INFO] [stderr]    Compiling openssl v0.10.48
[INFO] [stderr]    Compiling io-lifetimes v1.0.9
[INFO] [stderr]    Compiling futures-channel v0.3.27
[INFO] [stderr]    Compiling tracing v0.1.37
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling rustix v0.37.4
[INFO] [stderr]    Compiling httpdate v1.0.2
[INFO] [stderr]    Compiling thiserror v1.0.38
[INFO] [stderr]    Compiling try-lock v0.2.4
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]    Compiling syn v2.0.11
[INFO] [stderr]    Compiling want v0.3.0
[INFO] [stderr]    Compiling mime_guess v2.0.4
[INFO] [stderr]    Compiling http-body v0.4.5
[INFO] [stderr]    Compiling openssl-sys v0.9.83
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling tower-service v0.3.2
[INFO] [stderr]    Compiling ryu v1.0.13
[INFO] [stderr]    Compiling linux-raw-sys v0.3.0
[INFO] [stderr]    Compiling openssl-probe v0.1.5
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling utf-8 v0.7.6
[INFO] [stderr]    Compiling libm v0.2.6
[INFO] [stderr]    Compiling serde_json v1.0.95
[INFO] [stderr]    Compiling fastrand v1.9.0
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling unicode-normalization v0.1.22
[INFO] [stderr]    Compiling inout v0.1.3
[INFO] [stderr]    Compiling headers-core v0.2.0
[INFO] [stderr]    Compiling digest v0.10.6
[INFO] [stderr]    Compiling num-bigint-dig v0.8.2
[INFO] [stderr]    Compiling buf_redux v0.8.4
[INFO] [stderr]    Compiling twoway v0.1.8
[INFO] [stderr]    Compiling quick-error v1.2.3
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling cipher v0.4.3
[INFO] [stderr]    Compiling rustls-pemfile v0.2.1
[INFO] [stderr]    Compiling sha-1 v0.10.1
[INFO] [stderr]    Compiling sha1 v0.10.5
[INFO] [stderr]    Compiling num_cpus v1.15.0
[INFO] [stderr]    Compiling socket2 v0.4.9
[INFO] [stderr]    Compiling mio v0.8.6
[INFO] [stderr]    Compiling signal-hook-registry v1.4.1
[INFO] [stderr]    Compiling getrandom v0.2.8
[INFO] [stderr]    Compiling idna v0.3.0
[INFO] [stderr]    Compiling parking_lot v0.12.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling headers v0.3.8
[INFO] [stderr]    Compiling encoding_rs v0.8.32
[INFO] [stderr]    Compiling base64 v0.21.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling ipnet v2.7.2
[INFO] [stderr]    Compiling aes v0.8.2
[INFO] [stderr]    Compiling url v2.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling sha2 v0.10.6
[INFO] [stderr]    Compiling tempfile v3.5.0
[INFO] [stderr]    Compiling multipart v0.18.0
[INFO] [stderr]    Compiling tokio-macros v2.0.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling openssl-macros v0.1.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.38
[INFO] [stderr]    Compiling pin-project-internal v1.0.12
[INFO] [stderr]    Compiling tungstenite v0.17.3
[INFO] [stderr]    Compiling pin-project v1.0.12
[INFO] [stderr]    Compiling tokio-util v0.7.7
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling tokio-stream v0.1.12
[INFO] [stderr]    Compiling tokio-tungstenite v0.17.2
[INFO] [stderr]    Compiling h2 v0.3.16
[INFO] [stderr]    Compiling hyper v0.14.25
[INFO] [stderr]    Compiling hyper-tls v0.5.0
[INFO] [stderr]    Compiling warp v0.3.3
[INFO] [stderr]    Compiling reqwest v0.11.16
[INFO] [stderr]    Compiling cryptopals-rust v0.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/set1.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                        ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/set1.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::general_purpose`
[INFO] [stdout]  --> src/set2.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/set2.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set3.rs:256:7
[INFO] [stdout]     |
[INFO] [stdout] 256 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: expected names are: `docsrs`, `feature`, and `test` and 31 more
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `generate_key` and `repeating_key_xor`
[INFO] [stdout]  --> src/set3.rs:2:58
[INFO] [stdout]   |
[INFO] [stdout] 2 |     aes_ecb_encrypt, decrypt_single_byte_xor, fixed_xor, generate_key, pkcs7_pad,
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^
[INFO] [stdout] 3 |     repeating_key_xor, transpose_blocks,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Engine` and `engine::general_purpose`
[INFO] [stdout]  --> src/set3.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RngCore`
[INFO] [stdout]  --> src/set3.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/set3.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]   --> src/set4.rs:71:7
[INFO] [stdout]    |
[INFO] [stdout] 71 | #[cfg(wait)]
[INFO] [stdout]    |       ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set4.rs:227:7
[INFO] [stdout]     |
[INFO] [stdout] 227 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Engine` and `engine::general_purpose`
[INFO] [stdout]  --> src/set4.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RngCore`
[INFO] [stdout]  --> src/set4.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusCode`
[INFO] [stdout]  --> src/set4.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use reqwest::{Client, Response, StatusCode};
[INFO] [stdout]   |                                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/set4.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Reply`
[INFO] [stdout]   --> src/set4.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use warp::{http, Filter, Reply};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aes_ecb_decrypt`
[INFO] [stdout]   --> src/set4.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::set1::{aes_ecb_decrypt, aes_ecb_encrypt, fixed_xor, generate_key, pkcs7_pad};
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RngCore`
[INFO] [stdout]  --> src/set5.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Sub`
[INFO] [stdout]  --> src/set5.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::Sub;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `generate_key` and `pkcs7_pad`
[INFO] [stdout]   --> src/set5.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::set1::{generate_key, pkcs7_pad};
[INFO] [stdout]    |                   ^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set6.rs:217:7
[INFO] [stdout]     |
[INFO] [stdout] 217 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set6.rs:463:7
[INFO] [stdout]     |
[INFO] [stdout] 463 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Engine` and `engine::general_purpose`
[INFO] [stdout]  --> src/set6.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RandPrime`
[INFO] [stdout]  --> src/set6.rs:2:47
[INFO] [stdout]   |
[INFO] [stdout] 2 | use num_bigint::{BigInt, BigUint, RandBigInt, RandPrime, ToBigInt, ToBigUint};
[INFO] [stdout]   |                                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CheckedSub` and `Num`
[INFO] [stdout]  --> src/set6.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use num_traits::{FromPrimitive, Num, One, Zero, Pow, CheckedSub};
[INFO] [stdout]   |                                 ^^^                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/set6.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mul`
[INFO] [stdout]  --> src/set6.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::{Range, Mul};
[INFO] [stdout]   |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]  --> src/set6.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::str::FromStr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::sleep`
[INFO] [stdout]   --> src/set6.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread::sleep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/set6.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_random_utf8`
[INFO] [stdout]   --> src/set6.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     set4::{get_random_utf8, sha1, DIGEST_LENGTH_SHA1},
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/set4.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     port: u16,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/set1.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/set2.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Engine`
[INFO] [stdout]  --> src/set2.rs:1:39
[INFO] [stdout]   |
[INFO] [stdout] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |                                       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/set3.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/set4.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/set6.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]   --> src/set5.rs:80:21
[INFO] [stdout]    |
[INFO] [stdout] 80 |         if let Some(d) = inv_mod(exp, &totient) {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/set5.rs:112:16
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let (g, x, y) = egcd(a, m);
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `counterparty`
[INFO] [stdout]    --> src/set5.rs:730:26
[INFO] [stdout]     |
[INFO] [stdout] 730 |     fn send_dh_pk(&self, counterparty: &mut impl DHActor) {}
[INFO] [stdout]     |                          ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `counterparty`
[INFO] [stdout]    --> src/set5.rs:734:33
[INFO] [stdout]     |
[INFO] [stdout] 734 |     fn send_dh_start(&mut self, counterparty: &mut impl DHActor) {}
[INFO] [stdout]     |                                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_aes_ecb` is never used
[INFO] [stdout]   --> src/set1.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn detect_aes_ecb(lines: &[Vec<u8>]) -> Option<Vec<u8>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_key` is never used
[INFO] [stdout]   --> src/set1.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn generate_key() -> [u8; 16] {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_ecb_encrypt` is never used
[INFO] [stdout]   --> src/set1.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn aes_ecb_encrypt(input: &[u8], key: &[u8]) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs7_pad` is never used
[INFO] [stdout]   --> src/set1.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn pkcs7_pad(input: &[u8], block_size: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_ecb_decrypt` is never used
[INFO] [stdout]   --> src/set1.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn aes_ecb_decrypt(input: &[u8], key: &[u8]) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_best_key_size` is never used
[INFO] [stdout]    --> src/set1.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn get_best_key_size(input: &[u8]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_sizes` is never used
[INFO] [stdout]    --> src/set1.rs:120:4
[INFO] [stdout]     |
[INFO] [stdout] 120 | fn get_key_sizes(input: &[u8]) -> Vec<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_distance` is never used
[INFO] [stdout]    --> src/set1.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn normalize_distance(distance: u32, key_size: usize) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_key_size_score` is never used
[INFO] [stdout]    --> src/set1.rs:135:4
[INFO] [stdout]     |
[INFO] [stdout] 135 | fn get_key_size_score(input: &[u8], key_size: usize) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_repeating_key_xor` is never used
[INFO] [stdout]    --> src/set1.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn decrypt_repeating_key_xor(input: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transpose_blocks` is never used
[INFO] [stdout]    --> src/set1.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn transpose_blocks(blocks: &[&[u8]]) -> Vec<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `div_ceil` is never used
[INFO] [stdout]    --> src/set1.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn div_ceil(a: usize, b: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_blocks` is never used
[INFO] [stdout]    --> src/set1.rs:225:4
[INFO] [stdout]     |
[INFO] [stdout] 225 | fn get_blocks(input: &[u8], key_size: usize) -> Vec<Vec<u8>> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hamming_distance` is never used
[INFO] [stdout]    --> src/set1.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn hamming_distance(input1: Vec<u8>, input2: Vec<u8>) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeating_key_xor` is never used
[INFO] [stdout]    --> src/set1.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn repeating_key_xor(key: &[u8], input: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_single_byte_xor_many` is never used
[INFO] [stdout]    --> src/set1.rs:300:4
[INFO] [stdout]     |
[INFO] [stdout] 300 | fn decrypt_single_byte_xor_many(lines: Vec<String>) -> (u32, u8, Vec<u8>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_single_byte_xor` is never used
[INFO] [stdout]    --> src/set1.rs:330:8
[INFO] [stdout]     |
[INFO] [stdout] 330 | pub fn decrypt_single_byte_xor(ciphertext: Vec<u8>) -> (u32, u8, Vec<u8>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_score` is never used
[INFO] [stdout]    --> src/set1.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn calculate_score(plaintext: &[u8]) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixed_xor` is never used
[INFO] [stdout]    --> src/set1.rs:396:8
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub fn fixed_xor(input1: &[u8], input2: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hex_to_base64` is never used
[INFO] [stdout]    --> src/set1.rs:424:4
[INFO] [stdout]     |
[INFO] [stdout] 424 | fn hex_to_base64(input: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hex_to_base64_string` is never used
[INFO] [stdout]    --> src/set1.rs:429:4
[INFO] [stdout]     |
[INFO] [stdout] 429 | fn hex_to_base64_string(input: String) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLOCK_SIZE` is never used
[INFO] [stdout]  --> src/set2.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const BLOCK_SIZE: usize = 16;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_random_block` is never used
[INFO] [stdout]   --> src/set2.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn create_random_block(bad_chars: &[u8]) -> [u8; BLOCK_SIZE] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbc_bit_flipping_attack` is never used
[INFO] [stdout]   --> src/set2.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub(crate) fn cbc_bit_flipping_attack(oracle: &CbcBitFlippingOracle) -> Vec<u8> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CbcBitFlippingOracle` is never used
[INFO] [stdout]    --> src/set2.rs:127:17
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub(crate) type CbcBitFlippingOracle<'a> = BitFlippingOracle<'a, AesCbcOracle>;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AesCbcOracle` is never constructed
[INFO] [stdout]    --> src/set2.rs:131:19
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub(crate) struct AesCbcOracle {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `new_with_args` are never used
[INFO] [stdout]    --> src/set2.rs:137:19
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl AesCbcOracle {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] 137 |     pub(crate) fn new() -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub(crate) fn new_with_args(key: [u8; BLOCK_SIZE], iv: [u8; BLOCK_SIZE]) -> Self {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitFlippingOracle` is never constructed
[INFO] [stdout]    --> src/set2.rs:159:19
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub(crate) struct BitFlippingOracle<'a, T: CipherOracle> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `check_admin` are never used
[INFO] [stdout]    --> src/set2.rs:166:19
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl<'a, T: CipherOracle> BitFlippingOracle<'a, T> {
[INFO] [stdout]     | -------------------------------------------------- associated items in this implementation
[INFO] [stdout] 166 |     pub(crate) fn new(cipher: &'a T, prefix: &'a [u8], suffix: &'a [u8]) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub(crate) fn encrypt(&self, plaintext: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub(crate) fn check_admin(&self, ciphertext: &[u8]) -> Result<bool, ()> {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CipherOracle` is never used
[INFO] [stdout]    --> src/set2.rs:197:18
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub(crate) trait CipherOracle {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs7_unpad` is never used
[INFO] [stdout]    --> src/set2.rs:223:15
[INFO] [stdout]     |
[INFO] [stdout] 223 | pub(crate) fn pkcs7_unpad(input: &[u8]) -> Result<Vec<u8>, ()> {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EcbOracleHarder` is never constructed
[INFO] [stdout]    --> src/set2.rs:256:19
[INFO] [stdout]     |
[INFO] [stdout] 256 | pub(crate) struct EcbOracleHarder<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encrypt` are never used
[INFO] [stdout]    --> src/set2.rs:263:19
[INFO] [stdout]     |
[INFO] [stdout] 262 | impl<'a> EcbOracleHarder<'a> {
[INFO] [stdout]     | ---------------------------- associated items in this implementation
[INFO] [stdout] 263 |     pub(crate) fn new(key: &'a [u8; 16], target: &'a [u8], prefix: &'a [u8]) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub(crate) fn encrypt(&self, input: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `byte_at_a_time_ecb_decrypt_harder` is never used
[INFO] [stdout]    --> src/set2.rs:278:15
[INFO] [stdout]     |
[INFO] [stdout] 278 | pub(crate) fn byte_at_a_time_ecb_decrypt_harder(oracle: &EcbOracleHarder) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forge_admin_ciphertext` is never used
[INFO] [stdout]    --> src/set2.rs:400:15
[INFO] [stdout]     |
[INFO] [stdout] 400 | pub(crate) fn forge_admin_ciphertext(oracle: &ProfileManager) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProfileManager` is never constructed
[INFO] [stdout]    --> src/set2.rs:415:19
[INFO] [stdout]     |
[INFO] [stdout] 415 | pub(crate) struct ProfileManager<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_profile`, `profile_for`, and `profile_for_encrypted` are never used
[INFO] [stdout]    --> src/set2.rs:420:19
[INFO] [stdout]     |
[INFO] [stdout] 419 | impl<'a> ProfileManager<'a> {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 420 |     pub(crate) fn new(key: &'a [u8]) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub(crate) fn add_profile(&self, ciphertext: &'a [u8]) -> UserProfile {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub(crate) fn profile_for(&self, email: &str) -> String {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     pub(crate) fn profile_for_encrypted(&self, email: &str) -> Vec<u8> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Role` is never used
[INFO] [stdout]    --> src/set2.rs:447:17
[INFO] [stdout]     |
[INFO] [stdout] 447 | pub(crate) enum Role {
[INFO] [stdout]     |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UserProfile` is never constructed
[INFO] [stdout]    --> src/set2.rs:453:19
[INFO] [stdout]     |
[INFO] [stdout] 453 | pub(crate) struct UserProfile {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encode`, and `decode` are never used
[INFO] [stdout]    --> src/set2.rs:460:19
[INFO] [stdout]     |
[INFO] [stdout] 459 | impl UserProfile {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 460 |     pub(crate) fn new(email: String, uid: usize, role: Role) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     fn encode(&self) -> String {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     fn decode(input: &str) -> Self {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_key_value` is never used
[INFO] [stdout]    --> src/set2.rs:500:15
[INFO] [stdout]     |
[INFO] [stdout] 500 | pub(crate) fn parse_key_value(input: &str) -> HashMap<&str, &str> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs7_unpad_unchecked` is never used
[INFO] [stdout]    --> src/set2.rs:514:4
[INFO] [stdout]     |
[INFO] [stdout] 514 | fn pkcs7_unpad_unchecked(input: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `byte_at_a_time_ecb_decrypt` is never used
[INFO] [stdout]    --> src/set2.rs:581:15
[INFO] [stdout]     |
[INFO] [stdout] 581 | pub(crate) fn byte_at_a_time_ecb_decrypt(oracle: &ConsistentKey) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConsistentKey` is never constructed
[INFO] [stdout]    --> src/set2.rs:643:19
[INFO] [stdout]     |
[INFO] [stdout] 643 | pub(crate) struct ConsistentKey<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encrypt` are never used
[INFO] [stdout]    --> src/set2.rs:649:19
[INFO] [stdout]     |
[INFO] [stdout] 648 | impl<'a> ConsistentKey<'a> {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 649 |     pub(crate) fn new(key: &'a [u8], append_text: &'a [u8]) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 653 |     fn encrypt(&self, plaintext: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_mode` is never used
[INFO] [stdout]    --> src/set2.rs:674:15
[INFO] [stdout]     |
[INFO] [stdout] 674 | pub(crate) fn detect_mode(ciphertext: &[u8]) -> AesBlockCipherMode {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AesBlockCipherMode` is never used
[INFO] [stdout]    --> src/set2.rs:703:17
[INFO] [stdout]     |
[INFO] [stdout] 703 | pub(crate) enum AesBlockCipherMode {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_oracle` is never used
[INFO] [stdout]    --> src/set2.rs:708:15
[INFO] [stdout]     |
[INFO] [stdout] 708 | pub(crate) fn encrypt_oracle(input: &[u8]) -> (AesBlockCipherMode, Vec<u8>) {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_encrypt` is never used
[INFO] [stdout]    --> src/set2.rs:749:15
[INFO] [stdout]     |
[INFO] [stdout] 749 | pub(crate) fn aes_cbc_encrypt(input: &[u8], key: &[u8], iv: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_decrypt` is never used
[INFO] [stdout]    --> src/set2.rs:764:15
[INFO] [stdout]     |
[INFO] [stdout] 764 | pub(crate) fn aes_cbc_decrypt(input: &[u8], key: &[u8], iv: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_password_token` is never used
[INFO] [stdout]   --> src/set3.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub(crate) fn generate_password_token(seed: u16) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_password_token` is never used
[INFO] [stdout]   --> src/set3.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub(crate) fn crack_password_token(token: u32) -> Option<u16> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `prng_encrypt_with_prefix` is never used
[INFO] [stdout]   --> src/set3.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub(crate) fn prng_encrypt_with_prefix(plaintext: &[u8], seed: u16) -> Vec<u8> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_prefixed` is never used
[INFO] [stdout]   --> src/set3.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) fn crack_prefixed(ciphertext: &[u8], plaintext: &[u8]) -> Option<u16> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mt19937_encrypt` is never used
[INFO] [stdout]   --> src/set3.rs:65:15
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub(crate) fn mt19937_encrypt(plaintext: &[u8], seed: u16) -> Vec<u8> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mt19937_decrypt` is never used
[INFO] [stdout]   --> src/set3.rs:77:15
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub(crate) fn mt19937_decrypt(ciphertext: &[u8], seed: u16) -> Vec<u8> {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clone_mt19937` is never used
[INFO] [stdout]    --> src/set3.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub(crate) fn clone_mt19937(orig: &mut MersenneTwisterRng) -> MersenneTwisterRng {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert_right` is never used
[INFO] [stdout]    --> src/set3.rs:143:15
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub(crate) fn invert_right(output: u32, shift: u32, magic: u32) -> u32 {
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert_left` is never used
[INFO] [stdout]    --> src/set3.rs:155:15
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub(crate) fn invert_left(output: u32, shift: u32, magic: u32) -> u32 {
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `invert_temper` is never used
[INFO] [stdout]    --> src/set3.rs:167:15
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub(crate) fn invert_temper(out: u32, shift: &[u32; 4], magic: &[u32; 3]) -> u32 {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_mt19937_time_seed` is never used
[INFO] [stdout]    --> src/set3.rs:226:15
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub(crate) fn crack_mt19937_time_seed(num: u32) -> Option<u32> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_wait_time` is never used
[INFO] [stdout]    --> src/set3.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn gen_wait_time() -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_random` is never used
[INFO] [stdout]    --> src/set3.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn wait_random() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MersenneTwisterRng` is never constructed
[INFO] [stdout]    --> src/set3.rs:314:19
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub(crate) struct MersenneTwisterRng {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `lowest_bits`, `new`, `new_from_state`, `generate`, and `twist` are never used
[INFO] [stdout]    --> src/set3.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 319 | impl MersenneTwisterRng {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 320 |     fn lowest_bits(num: u64) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub(crate) fn new(seed: u32) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub(crate) fn new_from_state(state: &[u32; mt::N]) -> MersenneTwisterRng {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub(crate) fn generate(&mut self) -> u32 {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn twist(&mut self) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixed_nonce_ctr_attack` is never used
[INFO] [stdout]    --> src/set3.rs:392:15
[INFO] [stdout]     |
[INFO] [stdout] 392 | pub(crate) fn fixed_nonce_ctr_attack(ciphertexts: &[&[u8]]) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_ctr_encrypt` is never used
[INFO] [stdout]    --> src/set3.rs:444:15
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub(crate) fn aes_ctr_encrypt(plaintext: &[u8], key: &[u8; 16], nonce: u64) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_ctr_decrypt` is never used
[INFO] [stdout]    --> src/set3.rs:456:15
[INFO] [stdout]     |
[INFO] [stdout] 456 | pub(crate) fn aes_ctr_decrypt(ciphertext: &[u8], key: &[u8; 16], nonce: u64) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cbc_padding_oracle_attack` is never used
[INFO] [stdout]    --> src/set3.rs:483:15
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub(crate) fn cbc_padding_oracle_attack(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CbcPaddingOracle` is never constructed
[INFO] [stdout]    --> src/set3.rs:549:19
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub(crate) struct CbcPaddingOracle<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `check_valid_padding` are never used
[INFO] [stdout]    --> src/set3.rs:556:19
[INFO] [stdout]     |
[INFO] [stdout] 555 | impl<'a> CbcPaddingOracle<'a> {
[INFO] [stdout]     | ----------------------------- associated items in this implementation
[INFO] [stdout] 556 |     pub(crate) fn new(key: &'a [u8; 16], iv: &'a [u8; 16], plaintexts: Vec<Vec<u8>>) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     pub(crate) fn encrypt(&self) -> (Vec<u8>, [u8; 16], usize) {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 576 |     pub(crate) fn check_valid_padding(&self, ciphertext: &[u8]) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `N` is never used
[INFO] [stdout]    --> src/set3.rs:295:15
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub const N: usize = 624;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `F` is never used
[INFO] [stdout]    --> src/set3.rs:297:15
[INFO] [stdout]     |
[INFO] [stdout] 297 |     pub const F: u64 = 1812433253;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W` is never used
[INFO] [stdout]    --> src/set3.rs:299:15
[INFO] [stdout]     |
[INFO] [stdout] 299 |     pub const W: u32 = 32;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `R` is never used
[INFO] [stdout]    --> src/set3.rs:300:15
[INFO] [stdout]     |
[INFO] [stdout] 300 |     pub const R: u32 = 31;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `M` is never used
[INFO] [stdout]    --> src/set3.rs:301:15
[INFO] [stdout]     |
[INFO] [stdout] 301 |     pub const M: usize = 397;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A` is never used
[INFO] [stdout]    --> src/set3.rs:302:15
[INFO] [stdout]     |
[INFO] [stdout] 302 |     pub const A: u32 = 0x9908B0DF;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `U` is never used
[INFO] [stdout]    --> src/set3.rs:304:15
[INFO] [stdout]     |
[INFO] [stdout] 304 |     pub const U: u32 = 11;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `D` is never used
[INFO] [stdout]    --> src/set3.rs:305:15
[INFO] [stdout]     |
[INFO] [stdout] 305 |     pub const D: u32 = 0xFFFFFFFF;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S` is never used
[INFO] [stdout]    --> src/set3.rs:306:15
[INFO] [stdout]     |
[INFO] [stdout] 306 |     pub const S: u32 = 7;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `B` is never used
[INFO] [stdout]    --> src/set3.rs:307:15
[INFO] [stdout]     |
[INFO] [stdout] 307 |     pub const B: u32 = 0x9D2C5680;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T` is never used
[INFO] [stdout]    --> src/set3.rs:308:15
[INFO] [stdout]     |
[INFO] [stdout] 308 |     pub const T: u32 = 15;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `C` is never used
[INFO] [stdout]    --> src/set3.rs:309:15
[INFO] [stdout]     |
[INFO] [stdout] 309 |     pub const C: u32 = 0xEFC60000;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `L` is never used
[INFO] [stdout]    --> src/set3.rs:310:15
[INFO] [stdout]     |
[INFO] [stdout] 310 |     pub const L: u32 = 18;
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_insecure_compare` is never used
[INFO] [stdout]   --> src/set4.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn less_insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_artificial_timing_attack` is never used
[INFO] [stdout]   --> src/set4.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | async fn less_artificial_timing_attack<F, Fut>(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hmac_sha1` is never used
[INFO] [stdout]    --> src/set4.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn hmac_sha1(key: &[u8], message: &[u8]) -> [u8; DIGEST_LENGTH_SHA1] {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hmac` is never used
[INFO] [stdout]    --> src/set4.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub fn hmac<F>(key: &[u8], message: &[u8], hash: F) -> Vec<u8>
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_random_utf8` is never used
[INFO] [stdout]    --> src/set4.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn get_random_utf8() -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_server` is never used
[INFO] [stdout]    --> src/set4.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn start_server<F: Clone + Send + Sync + 'static>(port: u16, key: Arc<Vec<u8>>, compare: F)
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request` is never used
[INFO] [stdout]    --> src/set4.rs:181:10
[INFO] [stdout]     |
[INFO] [stdout] 181 | async fn send_request(port: u16, file: String, sig: String) -> Response {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insecure_compare` is never used
[INFO] [stdout]    --> src/set4.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `artificial_timing_attack` is never used
[INFO] [stdout]    --> src/set4.rs:199:10
[INFO] [stdout]     |
[INFO] [stdout] 199 | async fn artificial_timing_attack<F, Fut>(file: &[u8], send_request: F) -> [u8; DIGEST_LENGTH_SHA1]
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_mac_sign` is never used
[INFO] [stdout]    --> src/set4.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn md4_mac_sign(message: &[u8], key: &[u8]) -> [u8; DIGEST_LENGTH_MD4] {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_mac_verify` is never used
[INFO] [stdout]    --> src/set4.rs:268:8
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub fn md4_mac_verify(mac: &[u8; DIGEST_LENGTH_MD4], message: &[u8], key: &[u8]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIGEST_LENGTH_MD4` is never used
[INFO] [stdout]    --> src/set4.rs:272:11
[INFO] [stdout]     |
[INFO] [stdout] 272 | pub const DIGEST_LENGTH_MD4: usize = 16;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_STATE_MD4` is never used
[INFO] [stdout]    --> src/set4.rs:274:11
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub const DEFAULT_STATE_MD4: [u32; 4] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476];
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_pad` is never used
[INFO] [stdout]    --> src/set4.rs:276:8
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub fn md4_pad(message_len: u64) -> Vec<u8> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4` is never used
[INFO] [stdout]    --> src/set4.rs:291:8
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub fn md4(message: &[u8]) -> [u8; DIGEST_LENGTH_MD4] {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_from_state` is never used
[INFO] [stdout]    --> src/set4.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub fn md4_from_state(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_digest_to_state` is never used
[INFO] [stdout]    --> src/set4.rs:394:8
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub fn md4_digest_to_state(digest: &[u8; DIGEST_LENGTH_MD4]) -> [u32; 4] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `md4_state_to_digest` is never used
[INFO] [stdout]    --> src/set4.rs:402:8
[INFO] [stdout]     |
[INFO] [stdout] 402 | pub fn md4_state_to_digest(state: &[u32; 4]) -> [u8; DIGEST_LENGTH_MD4] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extend_secret_prefix_md4_mac` is never used
[INFO] [stdout]    --> src/set4.rs:410:4
[INFO] [stdout]     |
[INFO] [stdout] 410 | fn extend_secret_prefix_md4_mac<F>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extend_secret_prefix_sha1_mac` is never used
[INFO] [stdout]    --> src/set4.rs:453:4
[INFO] [stdout]     |
[INFO] [stdout] 453 | fn extend_secret_prefix_sha1_mac<F>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_padding` is never used
[INFO] [stdout]    --> src/set4.rs:484:4
[INFO] [stdout]     |
[INFO] [stdout] 484 | fn get_padding(message: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K0` is never used
[INFO] [stdout]    --> src/set4.rs:513:7
[INFO] [stdout]     |
[INFO] [stdout] 513 | const K0: u32 = 0x5A827999u32;
[INFO] [stdout]     |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K1` is never used
[INFO] [stdout]    --> src/set4.rs:514:7
[INFO] [stdout]     |
[INFO] [stdout] 514 | const K1: u32 = 0x6ED9EBA1u32;
[INFO] [stdout]     |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K2` is never used
[INFO] [stdout]    --> src/set4.rs:515:7
[INFO] [stdout]     |
[INFO] [stdout] 515 | const K2: u32 = 0x8F1BBCDCu32;
[INFO] [stdout]     |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K3` is never used
[INFO] [stdout]    --> src/set4.rs:516:7
[INFO] [stdout]     |
[INFO] [stdout] 516 | const K3: u32 = 0xCA62C1D6u32;
[INFO] [stdout]     |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_STATE` is never used
[INFO] [stdout]    --> src/set4.rs:518:7
[INFO] [stdout]     |
[INFO] [stdout] 518 | const DEFAULT_STATE: [u32; 5] = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
[INFO] [stdout]     |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIGEST_LENGTH_SHA1` is never used
[INFO] [stdout]    --> src/set4.rs:520:11
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub const DIGEST_LENGTH_SHA1: usize = 20;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1` is never used
[INFO] [stdout]    --> src/set4.rs:522:8
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub fn sha1(message: &[u8]) -> [u8; DIGEST_LENGTH_SHA1] {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1_from_state` is never used
[INFO] [stdout]    --> src/set4.rs:527:8
[INFO] [stdout]     |
[INFO] [stdout] 527 | pub fn sha1_from_state(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state_to_digest` is never used
[INFO] [stdout]    --> src/set4.rs:634:8
[INFO] [stdout]     |
[INFO] [stdout] 634 | pub fn state_to_digest(state: &[u32; 5]) -> [u8; DIGEST_LENGTH_SHA1] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `digest_to_state` is never used
[INFO] [stdout]    --> src/set4.rs:642:8
[INFO] [stdout]     |
[INFO] [stdout] 642 | pub fn digest_to_state(digest: &[u8; DIGEST_LENGTH_SHA1]) -> [u32; 5] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1_pad` is never used
[INFO] [stdout]    --> src/set4.rs:655:8
[INFO] [stdout]     |
[INFO] [stdout] 655 | pub fn sha1_pad(len: u64) -> [u8; 128] {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1_mac_sign` is never used
[INFO] [stdout]    --> src/set4.rs:678:15
[INFO] [stdout]     |
[INFO] [stdout] 678 | pub(crate) fn sha1_mac_sign(message: &[u8], key: &[u8]) -> [u8; DIGEST_LENGTH_SHA1] {
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha1_mac_verify` is never used
[INFO] [stdout]    --> src/set4.rs:682:15
[INFO] [stdout]     |
[INFO] [stdout] 682 | pub(crate) fn sha1_mac_verify(mac: &[u8; DIGEST_LENGTH_SHA1], message: &[u8], key: &[u8]) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recoverkey_from_cbc_key_as_iv` is never used
[INFO] [stdout]    --> src/set4.rs:701:15
[INFO] [stdout]     |
[INFO] [stdout] 701 | pub(crate) fn recoverkey_from_cbc_key_as_iv(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AesCbcOracleKeyAsIv` is never constructed
[INFO] [stdout]    --> src/set4.rs:723:19
[INFO] [stdout]     |
[INFO] [stdout] 723 | pub(crate) struct AesCbcOracleKeyAsIv<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `check_admin` are never used
[INFO] [stdout]    --> src/set4.rs:730:19
[INFO] [stdout]     |
[INFO] [stdout] 729 | impl<'a> AesCbcOracleKeyAsIv<'a> {
[INFO] [stdout]     | -------------------------------- associated items in this implementation
[INFO] [stdout] 730 |     pub(crate) fn new(key: &[u8; BLOCK_SIZE], prefix: &'a [u8], suffix: &'a [u8]) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 739 |     pub(crate) fn encrypt(&self, plaintext: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub(crate) fn check_admin(&self, ciphertext: &[u8]) -> Result<bool, Vec<u8>> {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ctr_bit_flipping_attack` is never used
[INFO] [stdout]    --> src/set4.rs:780:15
[INFO] [stdout]     |
[INFO] [stdout] 780 | pub(crate) fn ctr_bit_flipping_attack(oracle: &CtrBitFlippingOracle) -> Vec<u8> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `CtrBitFlippingOracle` is never used
[INFO] [stdout]    --> src/set4.rs:803:17
[INFO] [stdout]     |
[INFO] [stdout] 803 | pub(crate) type CtrBitFlippingOracle<'a> = BitFlippingOracle<'a, AesCtrOracle>;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AesCtrOracle` is never constructed
[INFO] [stdout]    --> src/set4.rs:807:19
[INFO] [stdout]     |
[INFO] [stdout] 807 | pub(crate) struct AesCtrOracle {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/set4.rs:813:19
[INFO] [stdout]     |
[INFO] [stdout] 812 | impl AesCtrOracle {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 813 |     pub(crate) fn new() -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_random_access_read_write_aes_ctr` is never used
[INFO] [stdout]    --> src/set4.rs:848:15
[INFO] [stdout]     |
[INFO] [stdout] 848 | pub(crate) fn break_random_access_read_write_aes_ctr(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CtrEditOracle` is never constructed
[INFO] [stdout]    --> src/set4.rs:855:19
[INFO] [stdout]     |
[INFO] [stdout] 855 | pub(crate) struct CtrEditOracle<'a> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `edit` are never used
[INFO] [stdout]    --> src/set4.rs:861:19
[INFO] [stdout]     |
[INFO] [stdout] 860 | impl<'a> CtrEditOracle<'a> {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 861 |     pub(crate) fn new(key: &'a [u8; BLOCK_SIZE], nonce: u64) -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 864 |     pub(crate) fn edit(&self, ciphertext: &[u8], offset: usize, new_text: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_keystream` is never used
[INFO] [stdout]    --> src/set4.rs:869:4
[INFO] [stdout]     |
[INFO] [stdout] 869 | fn create_keystream(key: &[u8; BLOCK_SIZE], nonce: u64, range: Range<usize>) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `edit` is never used
[INFO] [stdout]    --> src/set4.rs:885:4
[INFO] [stdout]     |
[INFO] [stdout] 885 | fn edit(ciphertext: &[u8], key: &[u8; 16], offset: usize, nonce: u64, new_text: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cube_root` is never used
[INFO] [stdout]   --> src/set5.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn cube_root(n: &BigUint) -> BigUint {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rsa_broadcast_attack` is never used
[INFO] [stdout]   --> src/set5.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn rsa_broadcast_attack(residues: &[BigUint; 3], moduli: &[BigUint; 3]) -> BigUint {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_test_rsa` is never used
[INFO] [stdout]   --> src/set5.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn do_test_rsa(p: &BigUint, q: &BigUint, e: &BigUint, message: &[u8]) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_large_primes` is never used
[INFO] [stdout]   --> src/set5.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn generate_large_primes(bit_size: usize, exp: &BigUint) -> (BigUint, BigUint) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inv_mod` is never used
[INFO] [stdout]    --> src/set5.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn inv_mod(a: &BigUint, m: &BigUint) -> Option<BigUint> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `egcd` is never used
[INFO] [stdout]    --> src/set5.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn egcd(a: &BigUint, b: &BigUint) -> (BigUint, BigInt, BigInt) {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrpMitm` is never constructed
[INFO] [stdout]    --> src/set5.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | struct SrpMitm {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `establish_shared_secret`, and `crack_password` are never used
[INFO] [stdout]    --> src/set5.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl SrpMitm {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 165 |     fn new(n: BigUint, g: BigUint, k: BigUint, passwords_filename: String) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn establish_shared_secret(&mut self, pk: &BigUint) -> Result<(BigUint, BigUint, BigUint), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     fn crack_password(&self, client_hmac: &[u8; 32]) -> Result<String, ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_random_password` is never used
[INFO] [stdout]    --> src/set5.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn get_random_password(filename: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_srp_client_mitm` is never used
[INFO] [stdout]    --> src/set5.rs:227:4
[INFO] [stdout]     |
[INFO] [stdout] 227 | fn init_srp_client_mitm(passwords_filename: &str) -> (SrpClient, SrpMitm) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_test_break_srp_with_zero_key` is never used
[INFO] [stdout]    --> src/set5.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn do_test_break_srp_with_zero_key(public_key: &BigUint) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_srp_client_server` is never used
[INFO] [stdout]    --> src/set5.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn init_srp_client_server() -> (SrpClient, SrpServer) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `n_g_k` is never used
[INFO] [stdout]    --> src/set5.rs:287:4
[INFO] [stdout]     |
[INFO] [stdout] 287 | fn n_g_k() -> (BigUint, BigUint, BigUint) {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha2` is never used
[INFO] [stdout]    --> src/set5.rs:297:8
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub fn sha2(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hmac_sha2` is never used
[INFO] [stdout]    --> src/set5.rs:303:8
[INFO] [stdout]     |
[INFO] [stdout] 303 | pub fn hmac_sha2(key: &[u8], message: &[u8]) -> [u8; 32] {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrpClient` is never constructed
[INFO] [stdout]    --> src/set5.rs:309:8
[INFO] [stdout]     |
[INFO] [stdout] 309 | struct SrpClient {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/set5.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 319 | impl SrpClient {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 320 |     fn new(n: BigUint, g: BigUint, k: BigUint, email: String, password: String) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     fn email(&self) -> &str {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     fn password(&self) -> &str {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     fn public_key(&self) -> BigUint {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     fn generate_hmac(&self, salt: &BigUint, pk: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 362 |     fn generate_zero_key_hmac(&self, salt: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     fn generate_hmac_simplified(&self, salt: &BigUint, pk: &BigUint, u: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrpUserInfo` is never constructed
[INFO] [stdout]    --> src/set5.rs:376:8
[INFO] [stdout]     |
[INFO] [stdout] 376 | struct SrpUserInfo {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SrpServer` is never constructed
[INFO] [stdout]    --> src/set5.rs:382:8
[INFO] [stdout]     |
[INFO] [stdout] 382 | struct SrpServer {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `register`, `establish_shared_secret`, and `authenticate` are never used
[INFO] [stdout]    --> src/set5.rs:390:8
[INFO] [stdout]     |
[INFO] [stdout] 389 | impl SrpServer {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 390 |     fn new(n: &BigUint, g: &BigUint, k: &BigUint) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     fn register(&mut self, email: String, password: String) -> Result<(), ()> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     fn establish_shared_secret(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     fn authenticate(&self, email: &str, hmac: &[u8; 32]) -> Result<(), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server_sk_pk` is never used
[INFO] [stdout]    --> src/set5.rs:465:4
[INFO] [stdout]     |
[INFO] [stdout] 465 | fn server_sk_pk(n: &BigUint, k: &BigUint, v: &BigUint, g: &BigUint) -> (BigUint, BigUint) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server_K` is never used
[INFO] [stdout]    --> src/set5.rs:471:4
[INFO] [stdout]     |
[INFO] [stdout] 471 | fn server_K(pk_a: &BigUint, v: &BigUint, u: &BigUint, n: &BigUint, sk_b: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server_v` is never used
[INFO] [stdout]    --> src/set5.rs:476:4
[INFO] [stdout]     |
[INFO] [stdout] 476 | fn server_v(salt: &BigUint, password: &[u8], n: &BigUint, g: &BigUint) -> BigUint {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client_K` is never used
[INFO] [stdout]    --> src/set5.rs:482:4
[INFO] [stdout]     |
[INFO] [stdout] 482 | fn client_K(
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `big_prime` is never used
[INFO] [stdout]    --> src/set5.rs:499:4
[INFO] [stdout]     |
[INFO] [stdout] 499 | fn big_prime() -> BigUint {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DHAesCbc` is never used
[INFO] [stdout]    --> src/set5.rs:600:7
[INFO] [stdout]     |
[INFO] [stdout] 600 | trait DHAesCbc {
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DHActor` is never used
[INFO] [stdout]    --> src/set5.rs:605:7
[INFO] [stdout]     |
[INFO] [stdout] 605 | trait DHActor {
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DHBasic` is never constructed
[INFO] [stdout]    --> src/set5.rs:612:8
[INFO] [stdout]     |
[INFO] [stdout] 612 | struct DHBasic {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_from`, `new_from_other`, `new_from_other_with_secret`, and `public_key` are never used
[INFO] [stdout]    --> src/set5.rs:643:8
[INFO] [stdout]     |
[INFO] [stdout] 642 | impl DHBasic {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 643 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 650 |     fn new_from(g: &BigUint, p: &BigUint, secret: &BigUint) -> Self {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 660 |     fn new_from_other(g: &BigUint, p: &BigUint, their_pk: &BigUint) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     fn new_from_other_with_secret(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 676 |     fn public_key(&self) -> BigUint {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DHFixedKey` is never constructed
[INFO] [stdout]    --> src/set5.rs:700:8
[INFO] [stdout]     |
[INFO] [stdout] 700 | struct DHFixedKey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/set5.rs:708:8
[INFO] [stdout]     |
[INFO] [stdout] 707 | impl DHFixedKey {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 708 |     fn new(shared_secret: &BigUint) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DHMitm` is never constructed
[INFO] [stdout]    --> src/set5.rs:743:8
[INFO] [stdout]     |
[INFO] [stdout] 743 | struct DHMitm {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/set5.rs:751:8
[INFO] [stdout]     |
[INFO] [stdout] 750 | impl DHMitm {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 751 |     fn new(key: &BigUint) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_key_from_dh_shared_secret` is never used
[INFO] [stdout]    --> src/set5.rs:764:4
[INFO] [stdout]     |
[INFO] [stdout] 764 | fn aes_key_from_dh_shared_secret(shared_secret: &BigUint) -> [u8; 16] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_key_from_dh` is never used
[INFO] [stdout]    --> src/set5.rs:770:4
[INFO] [stdout]     |
[INFO] [stdout] 770 | fn aes_key_from_dh(my_sk: &BigUint, their_pk: &BigUint, p: &BigUint) -> [u8; 16] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_dh_secret` is never used
[INFO] [stdout]    --> src/set5.rs:775:4
[INFO] [stdout]     |
[INFO] [stdout] 775 | fn generate_dh_secret(p: &BigUint) -> BigUint {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_test_basic_dh` is never used
[INFO] [stdout]    --> src/set5.rs:782:4
[INFO] [stdout]     |
[INFO] [stdout] 782 | fn do_test_basic_dh(p: &BigUint, g: &BigUint, a: &BigUint, b: &BigUint) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_test_bleichenbacher_padding_oracle` is never used
[INFO] [stdout]   --> src/set6.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn do_test_bleichenbacher_padding_oracle(modulus_bit_length: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ceil_div` is never used
[INFO] [stdout]   --> src/set6.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn ceil_div(dividend: &BigUint, divisor: &BigUint) -> BigUint {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `floor_div` is never used
[INFO] [stdout]   --> src/set6.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn floor_div(dividend: &BigUint, divisor: &BigUint) -> BigUint {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rsa_decrypt_from_padding_oracle_simple` is never used
[INFO] [stdout]   --> src/set6.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn rsa_decrypt_from_padding_oracle_simple(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs1_5_pad` is never used
[INFO] [stdout]    --> src/set6.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn pkcs1_5_pad(msg: &[u8], key_byte_length: usize) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaPublicKey` is never constructed
[INFO] [stdout]    --> src/set6.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | struct RsaPublicKey {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `encrypt` is never used
[INFO] [stdout]    --> src/set6.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | impl RsaPublicKey {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 197 |     fn encrypt(&self, message: &BigUint) -> BigUint {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaPaddingOracle` is never constructed
[INFO] [stdout]    --> src/set6.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | struct RsaPaddingOracle {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_plaintext_padding` is never used
[INFO] [stdout]    --> src/set6.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 206 | impl RsaPaddingOracle {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 207 |     fn check_plaintext_padding(&self, ciphertext: &BigUint) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rsa_decrypt_from_parity_oracle` is never used
[INFO] [stdout]    --> src/set6.rs:240:4
[INFO] [stdout]     |
[INFO] [stdout] 240 | fn rsa_decrypt_from_parity_oracle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaParityOracle` is never constructed
[INFO] [stdout]    --> src/set6.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | struct RsaParityOracle {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_plaintext_odd` is never used
[INFO] [stdout]    --> src/set6.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | impl RsaParityOracle {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 267 |     fn is_plaintext_odd(&self, ciphertext: &BigUint) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_g_equals_zero` is never used
[INFO] [stdout]    --> src/set6.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn dsa_sign_g_equals_zero(params: &DsaParameters, message: &[u8]) -> DsaSignature {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_g_equals_one_mod_p` is never used
[INFO] [stdout]    --> src/set6.rs:326:4
[INFO] [stdout]     |
[INFO] [stdout] 326 | fn dsa_sign_g_equals_one_mod_p(params: &DsaParameters, pk: &DsaPublicKey) -> DsaSignature {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recover_repeated_nonce_from_messages` is never used
[INFO] [stdout]    --> src/set6.rs:377:4
[INFO] [stdout]     |
[INFO] [stdout] 377 | fn recover_repeated_nonce_from_messages(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recover_repeated_nonce` is never used
[INFO] [stdout]    --> src/set6.rs:412:4
[INFO] [stdout]     |
[INFO] [stdout] 412 | fn recover_repeated_nonce(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_secret_k_range` is never used
[INFO] [stdout]    --> src/set6.rs:476:4
[INFO] [stdout]     |
[INFO] [stdout] 476 | fn find_secret_k_range(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_k_range` is never used
[INFO] [stdout]    --> src/set6.rs:499:4
[INFO] [stdout]     |
[INFO] [stdout] 499 | fn dsa_sign_k_range(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_secret` is never used
[INFO] [stdout]    --> src/set6.rs:531:4
[INFO] [stdout]     |
[INFO] [stdout] 531 | fn find_secret(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_secret_given_values` is never used
[INFO] [stdout]    --> src/set6.rs:545:4
[INFO] [stdout]     |
[INFO] [stdout] 545 | fn find_secret_given_values(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_new_keypair` is never used
[INFO] [stdout]    --> src/set6.rs:569:4
[INFO] [stdout]     |
[INFO] [stdout] 569 | fn dsa_new_keypair(params: &DsaParameters) -> (DsaSecretKey, DsaPublicKey) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DsaSecretKey` is never constructed
[INFO] [stdout]    --> src/set6.rs:576:8
[INFO] [stdout]     |
[INFO] [stdout] 576 | struct DsaSecretKey {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DsaPublicKey` is never constructed
[INFO] [stdout]    --> src/set6.rs:580:8
[INFO] [stdout]     |
[INFO] [stdout] 580 | struct DsaPublicKey {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DsaSignature` is never constructed
[INFO] [stdout]    --> src/set6.rs:585:8
[INFO] [stdout]     |
[INFO] [stdout] 585 | struct DsaSignature {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign` is never used
[INFO] [stdout]    --> src/set6.rs:590:4
[INFO] [stdout]     |
[INFO] [stdout] 590 | fn dsa_sign(params: &DsaParameters, sk: &DsaSecretKey, message: &[u8]) -> DsaSignature {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_given_k` is never used
[INFO] [stdout]    --> src/set6.rs:599:4
[INFO] [stdout]     |
[INFO] [stdout] 599 | fn dsa_sign_given_k(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_unsafe` is never used
[INFO] [stdout]    --> src/set6.rs:619:4
[INFO] [stdout]     |
[INFO] [stdout] 619 | fn dsa_sign_unsafe(params: &DsaParameters, sk: &DsaSecretKey, message: &[u8]) -> DsaSignature {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_given_values` is never used
[INFO] [stdout]    --> src/set6.rs:633:4
[INFO] [stdout]     |
[INFO] [stdout] 633 | fn dsa_sign_given_values(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_verify` is never used
[INFO] [stdout]    --> src/set6.rs:648:4
[INFO] [stdout]     |
[INFO] [stdout] 648 | fn dsa_verify(
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_verify_unsafe` is never used
[INFO] [stdout]    --> src/set6.rs:674:4
[INFO] [stdout]     |
[INFO] [stdout] 674 | fn dsa_verify_unsafe(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DsaParameters` is never constructed
[INFO] [stdout]    --> src/set6.rs:700:8
[INFO] [stdout]     |
[INFO] [stdout] 700 | struct DsaParameters {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_default_parameters` is never used
[INFO] [stdout]    --> src/set6.rs:706:4
[INFO] [stdout]     |
[INFO] [stdout] 706 | fn dsa_default_parameters() -> DsaParameters {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bleichenbacher_forge_signature` is never used
[INFO] [stdout]    --> src/set6.rs:726:4
[INFO] [stdout]     |
[INFO] [stdout] 726 | fn bleichenbacher_forge_signature(message: &BigUint, key_length: usize) -> BigUint {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `asn1_sha1` is never used
[INFO] [stdout]    --> src/set6.rs:739:4
[INFO] [stdout]     |
[INFO] [stdout] 739 | fn asn1_sha1() -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaKeypair` is never constructed
[INFO] [stdout]    --> src/set6.rs:743:8
[INFO] [stdout]     |
[INFO] [stdout] 743 | struct RsaKeypair {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `public_key`, `encrypt`, `decrypt`, `verify`, and `sign` are never used
[INFO] [stdout]    --> src/set6.rs:750:8
[INFO] [stdout]     |
[INFO] [stdout] 749 | impl RsaKeypair {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 750 |     fn new(e: BigUint, bit_size: usize) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 758 |     fn public_key(&self) -> RsaPublicKey {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 762 |     fn encrypt(&self, message: &BigUint) -> BigUint {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 766 |     fn decrypt(&self, ciphertext: &BigUint) -> BigUint {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 772 |     fn verify(&self, message: &BigUint, signature: &BigUint) -> bool {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 810 |     fn sign(&self, message: &BigUint) -> BigUint {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaOracle` is never constructed
[INFO] [stdout]    --> src/set6.rs:843:8
[INFO] [stdout]     |
[INFO] [stdout] 843 | struct RsaOracle {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `public_key`, and `decrypt` are never used
[INFO] [stdout]    --> src/set6.rs:850:8
[INFO] [stdout]     |
[INFO] [stdout] 849 | impl RsaOracle {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 850 |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 863 |     fn public_key(&self) -> (BigUint, BigUint) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 867 |     fn decrypt(&mut self, ciphertext: &BigUint) -> Result<BigUint, ()> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recover_message_from_unpadded_oracle` is never used
[INFO] [stdout]    --> src/set6.rs:879:4
[INFO] [stdout]     |
[INFO] [stdout] 879 | fn recover_message_from_unpadded_oracle(ciphertext: &BigUint, oracle: &mut RsaOracle) -> BigUint {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server_K` should have a snake case name
[INFO] [stdout]    --> src/set5.rs:471:4
[INFO] [stdout]     |
[INFO] [stdout] 471 | fn server_K(pk_a: &BigUint, v: &BigUint, u: &BigUint, n: &BigUint, sk_b: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `server_k`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client_K` should have a snake case name
[INFO] [stdout]    --> src/set5.rs:482:4
[INFO] [stdout]     |
[INFO] [stdout] 482 | fn client_K(
[INFO] [stdout]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `client_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 02s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: buf_redux v0.8.4, multipart v0.18.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "1004c248f4fc1658c6ffcf1c26d20db13a0bc4cc955244485505e8bb9401d162", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1004c248f4fc1658c6ffcf1c26d20db13a0bc4cc955244485505e8bb9401d162", kill_on_drop: false }`
[INFO] [stdout] 1004c248f4fc1658c6ffcf1c26d20db13a0bc4cc955244485505e8bb9401d162
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5ecbafe2e6b6dc79cfc8120ee6e67be1f3dc7e8be5bfae798c411a26aae5210a
[INFO] running `Command { std: "docker" "start" "-a" "5ecbafe2e6b6dc79cfc8120ee6e67be1f3dc7e8be5bfae798c411a26aae5210a", kill_on_drop: false }`
[INFO] [stderr]    Compiling cryptopals-rust v0.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set3.rs:256:7
[INFO] [stdout]     |
[INFO] [stdout] 256 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: expected names are: `docsrs`, `feature`, and `test` and 31 more
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RngCore`
[INFO] [stdout]  --> src/set3.rs:7:29
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]   --> src/set4.rs:71:7
[INFO] [stdout]    |
[INFO] [stdout] 71 | #[cfg(wait)]
[INFO] [stdout]    |       ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider using a Cargo feature instead
[INFO] [stdout]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]             [lints.rust]
[INFO] [stdout]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set4.rs:227:7
[INFO] [stdout]     |
[INFO] [stdout] 227 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusCode`
[INFO] [stdout]  --> src/set4.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use reqwest::{Client, Response, StatusCode};
[INFO] [stdout]   |                                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Reply`
[INFO] [stdout]   --> src/set4.rs:12:26
[INFO] [stdout]    |
[INFO] [stdout] 12 | use warp::{http, Filter, Reply};
[INFO] [stdout]    |                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RngCore`
[INFO] [stdout]  --> src/set5.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stdout]   |                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set6.rs:217:7
[INFO] [stdout]     |
[INFO] [stdout] 217 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition name: `wait`
[INFO] [stdout]    --> src/set6.rs:463:7
[INFO] [stdout]     |
[INFO] [stdout] 463 | #[cfg(wait)]
[INFO] [stdout]     |       ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider using a Cargo feature instead
[INFO] [stdout]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stdout]              [lints.rust]
[INFO] [stdout]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stdout]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Engine` and `engine::general_purpose`
[INFO] [stdout]  --> src/set6.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RandPrime`
[INFO] [stdout]  --> src/set6.rs:2:47
[INFO] [stdout]   |
[INFO] [stdout] 2 | use num_bigint::{BigInt, BigUint, RandBigInt, RandPrime, ToBigInt, ToBigUint};
[INFO] [stdout]   |                                               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CheckedSub`
[INFO] [stdout]  --> src/set6.rs:4:54
[INFO] [stdout]   |
[INFO] [stdout] 4 | use num_traits::{FromPrimitive, Num, One, Zero, Pow, CheckedSub};
[INFO] [stdout]   |                                                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mul`
[INFO] [stdout]  --> src/set6.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::{Range, Mul};
[INFO] [stdout]   |                       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::sleep`
[INFO] [stdout]   --> src/set6.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::thread::sleep;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/set6.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `port`
[INFO] [stdout]   --> src/set4.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     port: u16,
[INFO] [stdout]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]   --> src/set5.rs:80:21
[INFO] [stdout]    |
[INFO] [stdout] 80 |         if let Some(d) = inv_mod(exp, &totient) {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/set5.rs:112:16
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let (g, x, y) = egcd(a, m);
[INFO] [stdout]     |                ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `counterparty`
[INFO] [stdout]    --> src/set5.rs:730:26
[INFO] [stdout]     |
[INFO] [stdout] 730 |     fn send_dh_pk(&self, counterparty: &mut impl DHActor) {}
[INFO] [stdout]     |                          ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `counterparty`
[INFO] [stdout]    --> src/set5.rs:734:33
[INFO] [stdout]     |
[INFO] [stdout] 734 |     fn send_dh_start(&mut self, counterparty: &mut impl DHActor) {}
[INFO] [stdout]     |                                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_random` is never used
[INFO] [stdout]    --> src/set3.rs:251:4
[INFO] [stdout]     |
[INFO] [stdout] 251 | fn wait_random() {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_insecure_compare` is never used
[INFO] [stdout]   --> src/set4.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn less_insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `less_artificial_timing_attack` is never used
[INFO] [stdout]   --> src/set4.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | async fn less_artificial_timing_attack<F, Fut>(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_server` is never used
[INFO] [stdout]    --> src/set4.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn start_server<F: Clone + Send + Sync + 'static>(port: u16, key: Arc<Vec<u8>>, compare: F)
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request` is never used
[INFO] [stdout]    --> src/set4.rs:181:10
[INFO] [stdout]     |
[INFO] [stdout] 181 | async fn send_request(port: u16, file: String, sig: String) -> Response {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `insecure_compare` is never used
[INFO] [stdout]    --> src/set4.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `artificial_timing_attack` is never used
[INFO] [stdout]    --> src/set4.rs:199:10
[INFO] [stdout]     |
[INFO] [stdout] 199 | async fn artificial_timing_attack<F, Fut>(file: &[u8], send_request: F) -> [u8; DIGEST_LENGTH_SHA1]
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `k` is never read
[INFO] [stdout]    --> src/set5.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 152 | struct SrpMitm {
[INFO] [stdout]     |        ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 155 |     k: BigUint,
[INFO] [stdout]     |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shared_secret` is never read
[INFO] [stdout]    --> src/set5.rs:703:5
[INFO] [stdout]     |
[INFO] [stdout] 700 | struct DHFixedKey {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 703 |     shared_secret: BigUint,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `g` and `p` are never read
[INFO] [stdout]    --> src/set5.rs:744:5
[INFO] [stdout]     |
[INFO] [stdout] 743 | struct DHMitm {
[INFO] [stdout]     |        ------ fields in this struct
[INFO] [stdout] 744 |     g: BigUint,
[INFO] [stdout]     |     ^
[INFO] [stdout] 745 |     p: BigUint,
[INFO] [stdout]     |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_key_from_dh` is never used
[INFO] [stdout]    --> src/set5.rs:770:4
[INFO] [stdout]     |
[INFO] [stdout] 770 | fn aes_key_from_dh(my_sk: &BigUint, their_pk: &BigUint, p: &BigUint) -> [u8; 16] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rsa_decrypt_from_parity_oracle` is never used
[INFO] [stdout]    --> src/set6.rs:240:4
[INFO] [stdout]     |
[INFO] [stdout] 240 | fn rsa_decrypt_from_parity_oracle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RsaParityOracle` is never constructed
[INFO] [stdout]    --> src/set6.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | struct RsaParityOracle {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_plaintext_odd` is never used
[INFO] [stdout]    --> src/set6.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 266 | impl RsaParityOracle {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 267 |     fn is_plaintext_odd(&self, ciphertext: &BigUint) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dsa_sign_k_range` is never used
[INFO] [stdout]    --> src/set6.rs:499:4
[INFO] [stdout]     |
[INFO] [stdout] 499 | fn dsa_sign_k_range(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server_K` should have a snake case name
[INFO] [stdout]    --> src/set5.rs:471:4
[INFO] [stdout]     |
[INFO] [stdout] 471 | fn server_K(pk_a: &BigUint, v: &BigUint, u: &BigUint, n: &BigUint, sk_b: &BigUint) -> [u8; 32] {
[INFO] [stdout]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `server_k`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client_K` should have a snake case name
[INFO] [stdout]    --> src/set5.rs:482:4
[INFO] [stdout]     |
[INFO] [stdout] 482 | fn client_K(
[INFO] [stdout]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `client_k`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.13s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: buf_redux v0.8.4, multipart v0.18.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "5ecbafe2e6b6dc79cfc8120ee6e67be1f3dc7e8be5bfae798c411a26aae5210a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5ecbafe2e6b6dc79cfc8120ee6e67be1f3dc7e8be5bfae798c411a26aae5210a", kill_on_drop: false }`
[INFO] [stdout] 5ecbafe2e6b6dc79cfc8120ee6e67be1f3dc7e8be5bfae798c411a26aae5210a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 740ca31d79aad9201856b6b70d0331fd90ff44bd72b086dea4ee11540656f275
[INFO] running `Command { std: "docker" "start" "-a" "740ca31d79aad9201856b6b70d0331fd90ff44bd72b086dea4ee11540656f275", kill_on_drop: false }`
[INFO] [stderr] warning: unexpected `cfg` condition name: `wait`
[INFO] [stderr]    --> src/set3.rs:256:7
[INFO] [stderr]     |
[INFO] [stderr] 256 | #[cfg(wait)]
[INFO] [stderr]     |       ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: expected names are: `docsrs`, `feature`, and `test` and 31 more
[INFO] [stderr]     = help: consider using a Cargo feature instead
[INFO] [stderr]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stderr]              [lints.rust]
[INFO] [stderr]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stderr]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RngCore`
[INFO] [stderr]  --> src/set3.rs:7:29
[INFO] [stderr]   |
[INFO] [stderr] 7 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stderr]   |                             ^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unexpected `cfg` condition name: `wait`
[INFO] [stderr]   --> src/set4.rs:71:7
[INFO] [stderr]    |
[INFO] [stderr] 71 | #[cfg(wait)]
[INFO] [stderr]    |       ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = help: consider using a Cargo feature instead
[INFO] [stderr]    = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stderr]             [lints.rust]
[INFO] [stderr]             unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stderr]    = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stderr]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr] 
[INFO] [stderr] warning: unexpected `cfg` condition name: `wait`
[INFO] [stderr]    --> src/set4.rs:227:7
[INFO] [stderr]     |
[INFO] [stderr] 227 | #[cfg(wait)]
[INFO] [stderr]     |       ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: consider using a Cargo feature instead
[INFO] [stderr]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stderr]              [lints.rust]
[INFO] [stderr]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stderr]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `StatusCode`
[INFO] [stderr]  --> src/set4.rs:3:33
[INFO] [stderr]   |
[INFO] [stderr] 3 | use reqwest::{Client, Response, StatusCode};
[INFO] [stderr]   |                                 ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Reply`
[INFO] [stderr]   --> src/set4.rs:12:26
[INFO] [stderr]    |
[INFO] [stderr] 12 | use warp::{http, Filter, Reply};
[INFO] [stderr]    |                          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RngCore`
[INFO] [stderr]  --> src/set5.rs:1:29
[INFO] [stderr]   |
[INFO] [stderr] 1 | use rand::{thread_rng, Rng, RngCore};
[INFO] [stderr]   |                             ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unexpected `cfg` condition name: `wait`
[INFO] [stderr]    --> src/set6.rs:217:7
[INFO] [stderr]     |
[INFO] [stderr] 217 | #[cfg(wait)]
[INFO] [stderr]     |       ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: consider using a Cargo feature instead
[INFO] [stderr]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stderr]              [lints.rust]
[INFO] [stderr]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stderr]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr] 
[INFO] [stderr] warning: unexpected `cfg` condition name: `wait`
[INFO] [stderr]    --> src/set6.rs:463:7
[INFO] [stderr]     |
[INFO] [stderr] 463 | #[cfg(wait)]
[INFO] [stderr]     |       ^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: consider using a Cargo feature instead
[INFO] [stderr]     = help: or consider adding in `Cargo.toml` the `check-cfg` lint config for the lint:
[INFO] [stderr]              [lints.rust]
[INFO] [stderr]              unexpected_cfgs = { level = "warn", check-cfg = ['cfg(wait)'] }
[INFO] [stderr]     = help: or consider adding `println!("cargo::rustc-check-cfg=cfg(wait)");` to the top of the `build.rs`
[INFO] [stderr]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Engine` and `engine::general_purpose`
[INFO] [stderr]  --> src/set6.rs:1:14
[INFO] [stderr]   |
[INFO] [stderr] 1 | use base64::{engine::general_purpose, Engine};
[INFO] [stderr]   |              ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RandPrime`
[INFO] [stderr]  --> src/set6.rs:2:47
[INFO] [stderr]   |
[INFO] [stderr] 2 | use num_bigint::{BigInt, BigUint, RandBigInt, RandPrime, ToBigInt, ToBigUint};
[INFO] [stderr]   |                                               ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `CheckedSub`
[INFO] [stderr]  --> src/set6.rs:4:54
[INFO] [stderr]   |
[INFO] [stderr] 4 | use num_traits::{FromPrimitive, Num, One, Zero, Pow, CheckedSub};
[INFO] [stderr]   |                                                      ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Mul`
[INFO] [stderr]  --> src/set6.rs:8:23
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::ops::{Range, Mul};
[INFO] [stderr]   |                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread::sleep`
[INFO] [stderr]   --> src/set6.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::thread::sleep;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]   --> src/set6.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::time::Duration;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `port`
[INFO] [stderr]   --> src/set4.rs:31:5
[INFO] [stderr]    |
[INFO] [stderr] 31 |     port: u16,
[INFO] [stderr]    |     ^^^^ help: if this is intentional, prefix it with an underscore: `_port`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `d`
[INFO] [stderr]   --> src/set5.rs:80:21
[INFO] [stderr]    |
[INFO] [stderr] 80 |         if let Some(d) = inv_mod(exp, &totient) {
[INFO] [stderr]    |                     ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `y`
[INFO] [stderr]    --> src/set5.rs:112:16
[INFO] [stderr]     |
[INFO] [stderr] 112 |     let (g, x, y) = egcd(a, m);
[INFO] [stderr]     |                ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `counterparty`
[INFO] [stderr]    --> src/set5.rs:730:26
[INFO] [stderr]     |
[INFO] [stderr] 730 |     fn send_dh_pk(&self, counterparty: &mut impl DHActor) {}
[INFO] [stderr]     |                          ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `counterparty`
[INFO] [stderr]    --> src/set5.rs:734:33
[INFO] [stderr]     |
[INFO] [stderr] 734 |     fn send_dh_start(&mut self, counterparty: &mut impl DHActor) {}
[INFO] [stderr]     |                                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_counterparty`
[INFO] [stderr] 
[INFO] [stderr] warning: function `wait_random` is never used
[INFO] [stderr]    --> src/set3.rs:251:4
[INFO] [stderr]     |
[INFO] [stderr] 251 | fn wait_random() {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `less_insecure_compare` is never used
[INFO] [stderr]   --> src/set4.rs:20:4
[INFO] [stderr]    |
[INFO] [stderr] 20 | fn less_insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `less_artificial_timing_attack` is never used
[INFO] [stderr]   --> src/set4.rs:30:10
[INFO] [stderr]    |
[INFO] [stderr] 30 | async fn less_artificial_timing_attack<F, Fut>(
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `start_server` is never used
[INFO] [stderr]    --> src/set4.rs:159:4
[INFO] [stderr]     |
[INFO] [stderr] 159 | fn start_server<F: Clone + Send + Sync + 'static>(port: u16, key: Arc<Vec<u8>>, compare: F)
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `send_request` is never used
[INFO] [stderr]    --> src/set4.rs:181:10
[INFO] [stderr]     |
[INFO] [stderr] 181 | async fn send_request(port: u16, file: String, sig: String) -> Response {
[INFO] [stderr]     |          ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `insecure_compare` is never used
[INFO] [stderr]    --> src/set4.rs:189:4
[INFO] [stderr]     |
[INFO] [stderr] 189 | fn insecure_compare(a: &[u8], b: &[u8]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `artificial_timing_attack` is never used
[INFO] [stderr]    --> src/set4.rs:199:10
[INFO] [stderr]     |
[INFO] [stderr] 199 | async fn artificial_timing_attack<F, Fut>(file: &[u8], send_request: F) -> [u8; DIGEST_LENGTH_SHA1]
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `k` is never read
[INFO] [stderr]    --> src/set5.rs:155:5
[INFO] [stderr]     |
[INFO] [stderr] 152 | struct SrpMitm {
[INFO] [stderr]     |        ------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 155 |     k: BigUint,
[INFO] [stderr]     |     ^
[INFO] [stderr] 
[INFO] [stderr] warning: field `shared_secret` is never read
[INFO] [stderr]    --> src/set5.rs:703:5
[INFO] [stderr]     |
[INFO] [stderr] 700 | struct DHFixedKey {
[INFO] [stderr]     |        ---------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 703 |     shared_secret: BigUint,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `g` and `p` are never read
[INFO] [stderr]    --> src/set5.rs:744:5
[INFO] [stderr]     |
[INFO] [stderr] 743 | struct DHMitm {
[INFO] [stderr]     |        ------ fields in this struct
[INFO] [stderr] 744 |     g: BigUint,
[INFO] [stderr]     |     ^
[INFO] [stderr] 745 |     p: BigUint,
[INFO] [stderr]     |     ^
[INFO] [stderr] 
[INFO] [stderr] warning: function `aes_key_from_dh` is never used
[INFO] [stderr]    --> src/set5.rs:770:4
[INFO] [stderr]     |
[INFO] [stderr] 770 | fn aes_key_from_dh(my_sk: &BigUint, their_pk: &BigUint, p: &BigUint) -> [u8; 16] {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rsa_decrypt_from_parity_oracle` is never used
[INFO] [stderr]    --> src/set6.rs:240:4
[INFO] [stderr]     |
[INFO] [stderr] 240 | fn rsa_decrypt_from_parity_oracle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RsaParityOracle` is never constructed
[INFO] [stderr]    --> src/set6.rs:262:8
[INFO] [stderr]     |
[INFO] [stderr] 262 | struct RsaParityOracle {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_plaintext_odd` is never used
[INFO] [stderr]    --> src/set6.rs:267:8
[INFO] [stderr]     |
[INFO] [stderr] 266 | impl RsaParityOracle {
[INFO] [stderr]     | -------------------- method in this implementation
[INFO] [stderr] 267 |     fn is_plaintext_odd(&self, ciphertext: &BigUint) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `dsa_sign_k_range` is never used
[INFO] [stderr]    --> src/set6.rs:499:4
[INFO] [stderr]     |
[INFO] [stderr] 499 | fn dsa_sign_k_range(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `server_K` should have a snake case name
[INFO] [stderr]    --> src/set5.rs:471:4
[INFO] [stderr]     |
[INFO] [stderr] 471 | fn server_K(pk_a: &BigUint, v: &BigUint, u: &BigUint, n: &BigUint, sk_b: &BigUint) -> [u8; 32] {
[INFO] [stderr]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `server_k`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `client_K` should have a snake case name
[INFO] [stderr]    --> src/set5.rs:482:4
[INFO] [stderr]     |
[INFO] [stderr] 482 | fn client_K(
[INFO] [stderr]     |    ^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `client_k`
[INFO] [stderr] 
[INFO] [stderr] warning: `cryptopals-rust` (bin "cryptopals-rust" test) generated 37 warnings (run `cargo fix --bin "cryptopals-rust" --tests` to apply 10 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.18s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: buf_redux v0.8.4, multipart v0.18.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/cryptopals_rust-d5cd5242b101c715)
[INFO] [stdout] 
[INFO] [stdout] running 71 tests
[INFO] [stdout] test set1::test_hamming_distance ... ok
[INFO] [stdout] test set1::test_get_blocks ... ok
[INFO] [stdout] test set1::test_aes_ecb_decrypt ... ok
[INFO] [stdout] test set1::test_fixed_xor ... ok
[INFO] [stdout] test set1::test_detect_aes_ecb ... ok
[INFO] [stdout] test set1::test_transpose_blocks ... ok
[INFO] [stdout] test set2::test_aes_cbc_encrypt ... ok
[INFO] [stdout] test set1::test_hex_to_base64 ... ok
[INFO] [stdout] test set2::test_add_profile ... ok
[INFO] [stdout] test set2::test_aes_cbc_decrypt ... ok
[INFO] [stdout] test set1::test_aes_ecb_encrypt ... ok
[INFO] [stdout] test set1::test_hex_to_base64_string ... ok
[INFO] [stdout] test set2::test_forge_admin_ciphertext ... ok
[INFO] [stdout] test set2::test_parse_key_value ... ok
[INFO] [stdout] test set2::test_pkcs7_pad ... ok
[INFO] [stdout] test set2::test_pkcs7_unpad ... ok
[INFO] [stdout] test set3::test_invert_left ... ok
[INFO] [stdout] test set1::test_decrypt_single_bytes_xor ... ok
[INFO] [stdout] test set2::test_profile_for ... ok
[INFO] [stdout] test set3::test_crack_mt19937_time_seed ... ok
[INFO] [stdout] test set3::test_aes_ctr_mode ... ok
[INFO] [stdout] test set3::test_clone_mt19937 ... ok
[INFO] [stdout] test set3::test_invert_right ... ok
[INFO] [stdout] test set3::test_invert_temper ... ok
[INFO] [stdout] test set4::test_break_random_access_aes_ctr ... ok
[INFO] [stdout] test set3::test_mt19937_rng ... ok
[INFO] [stdout] test set3::test_mt19937_cipher ... ok
[INFO] [stdout] test set4::test_extend_secret_prefix_md4_mac ... ok
[INFO] [stdout] test set4::test_extend_secret_prefix_sha1_mac ... ok
[INFO] [stdout] test set4::test_md4 ... ok
[INFO] [stdout] test set4::test_md4_update ... ok
[INFO] [stdout] test set4::test_sha1 ... ok
[INFO] [stdout] test set4::test_recover_key_from_cbc_key_as_iv ... ok
[INFO] [stdout] test set1::test_repeating_key_xor ... ok
[INFO] [stdout] test set4::test_sha1_keyed_mac ... ok
[INFO] [stdout] test set4::test_ctr_bit_flipping ... ok
[INFO] [stdout] test set4::test_sha1_update ... ok
[INFO] [stdout] test set4::test_sha1_hmac ... ok
[INFO] [stdout] test set3::test_cbc_padding_oracle_attack ... ok
[INFO] [stdout] test set2::test_profile_for_panic - should panic ... ok
[INFO] [stdout] test set2::test_detect_mode ... ok
[INFO] [stdout] test set2::test_byte_at_a_time_ecb_decryption_harder ... ok
[INFO] [stdout] test set5::test_egcd ... ok
[INFO] [stdout] test set5::test_inv_mod ... ok
[INFO] [stdout] test set2::test_byte_at_a_time_ecb_decryption_simple ... ok
[INFO] [stdout] test set2::test_cbc_bit_flipping ... ok
[INFO] [stdout] test set5::test_basic_dh ... ok
[INFO] [stdout] test set5::test_dh_g_equal_one ... ok
[INFO] [stdout] test set5::test_dh_g_equal_p ... ok
[INFO] [stdout] test set1::test_decrypt_repeating_key_xor ... ok
[INFO] [stdout] test set5::test_dh_mitm_param_injection ... ok
[INFO] [stdout] test set6::test_dsa ... ok
[INFO] [stdout] test set5::test_dh_interfaces ... ok
[INFO] [stdout] test set5::test_dh_g_equal_p_minus_one ... ok
[INFO] [stdout] test set6::test_find_secret_given_k ... ok
[INFO] [stdout] test set5::test_srp ... ok
[INFO] [stdout] test set3::test_fixed_nonce_ctr_attack ... ok
[INFO] [stdout] test set6::test_dsa_parameter_tampering ... ok
[INFO] [stdout] test set6::test_repeated_nonce_recovery ... ok
[INFO] [stdout] test set6::test_find_secret_example ... ok
[INFO] [stdout] test set5::test_break_srp_with_zero_key ... ok
[INFO] [stdout] test set6::test_unpadded_message_recovery_oracle ... ok
[INFO] [stdout] test set3::test_prefixed_prng ... ok
[INFO] [stdout] test set6::test_bleichenbacher_padding_oracle_simple ... ok
[INFO] [stdout] test set5::test_offline_dictionary_attack_simplified_srp ... ok
[INFO] [stdout] test set1::test_detect_single_byte_xor ... ok
[INFO] [stdout] test set5::test_rsa ... ok
[INFO] [stdout] test set5::test_e_equals_three_rsa_broadcast_attack ... ok
[INFO] [stdout] test set3::test_password_token ... ok
[INFO] [stdout] test set6::test_e_equals_three_bleichenbacher ... ok
[INFO] [stdout] test set6::test_bleichenbacher_padding_oracle_complete has been running for over 60 seconds
[ERROR] error running command: no output for 300 seconds
[INFO] running `Command { std: "docker" "inspect" "740ca31d79aad9201856b6b70d0331fd90ff44bd72b086dea4ee11540656f275", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "740ca31d79aad9201856b6b70d0331fd90ff44bd72b086dea4ee11540656f275", kill_on_drop: false }`
[INFO] [stdout] 740ca31d79aad9201856b6b70d0331fd90ff44bd72b086dea4ee11540656f275
