[INFO] cloning repository https://github.com/moons03/rust_tls_layer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/moons03/rust_tls_layer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 259592b6868651f6fa8bc12d7367d305ae877ac5 [INFO] testing moons03/rust_tls_layer against master#cdb45c87e2cd43495379f7e867e3cc15dcee9f93 for pr-145838-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmoons03%2Frust_tls_layer" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/moons03/rust_tls_layer [INFO] finished tweaking git repo https://github.com/moons03/rust_tls_layer [INFO] tweaked toml for git repo https://github.com/moons03/rust_tls_layer written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/moons03/rust_tls_layer on toolchain cdb45c87e2cd43495379f7e867e3cc15dcee9f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/moons03/rust_tls_layer 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" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 13acbfddf35b7d3f160c78163c4704e415de81c59799df20c3e3dacf1d972d7f [INFO] running `Command { std: "docker" "start" "-a" "13acbfddf35b7d3f160c78163c4704e415de81c59799df20c3e3dacf1d972d7f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "13acbfddf35b7d3f160c78163c4704e415de81c59799df20c3e3dacf1d972d7f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "13acbfddf35b7d3f160c78163c4704e415de81c59799df20c3e3dacf1d972d7f", kill_on_drop: false }` [INFO] [stdout] 13acbfddf35b7d3f160c78163c4704e415de81c59799df20c3e3dacf1d972d7f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 321260b13be2ae417bd622e4bec7330ade98cdd56988dee5063376a983cf418e [INFO] running `Command { std: "docker" "start" "-a" "321260b13be2ae417bd622e4bec7330ade98cdd56988dee5063376a983cf418e", kill_on_drop: false }` [INFO] [stderr] Compiling types v0.1.0 (/opt/rustwide/workdir/src/types) [INFO] [stdout] warning: unused variable: `iv` [INFO] [stdout] --> src/types/src/block_cipher.rs:1:92 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_iv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/types/src/block_cipher.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut pad_len = block_size - data.len() % block_size; [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VecStructU32` is never used [INFO] [stdout] --> src/types/src/lib.rs:43:7 [INFO] [stdout] | [INFO] [stdout] 43 | trait VecStructU32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ECB_MODE` should have a snake case name [INFO] [stdout] --> src/types/src/block_cipher.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `ecb_mode` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling aes v0.1.0 (/opt/rustwide/workdir/src/aes) [INFO] [stdout] warning: unused import: `types::block_cipher` [INFO] [stdout] --> src/aes/src/core.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use types::block_cipher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nr` [INFO] [stdout] --> src/aes/src/core.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | let (nk, nr, nwords) = get_aes_params(key.len()); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `block` is never read [INFO] [stdout] --> src/aes/src/crypto.rs:37:21 [INFO] [stdout] | [INFO] [stdout] 37 | let mut block = vec![]; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/aes/src/crypto.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut aes = core::AES::new(self.key.clone(), block_cipher::ECB_MODE); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INV_S_BOX` is never used [INFO] [stdout] --> src/aes/src/core.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const INV_S_BOX: [u8; 256] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inv_shift_rows` is never used [INFO] [stdout] --> src/aes/src/core.rs:139:8 [INFO] [stdout] | [INFO] [stdout] 139 | pub fn inv_shift_rows(state: [u8; 16]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mult` is never used [INFO] [stdout] --> src/aes/src/core.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn mult(a: u8, b: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inv_mix_columns` is never used [INFO] [stdout] --> src/aes/src/core.rs:167:8 [INFO] [stdout] | [INFO] [stdout] 167 | pub fn inv_mix_columns(state: [u8; 16]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `aes_decrypt_block` is never used [INFO] [stdout] --> src/aes/src/core.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | pub fn aes_decrypt_block(plaintext: [u8; 16], key: &[u8]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `decrypt` is never used [INFO] [stdout] --> src/aes/src/core.rs:215:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl AES { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 215 | pub fn decrypt(&self, plaintext: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `H` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let H = aes.encrypt([0; 16].to_vec()); [INFO] [stdout] | ^ help: convert the identifier to snake case: `h` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `J0` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | let mut J0 = params.iv.clone(); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `S` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | let S = core::ghash(H, params.aad.clone(), ciphertext.clone()); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `J0` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:61:17 [INFO] [stdout] | [INFO] [stdout] 61 | let mut J0 = params.iv.clone(); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `S` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | let S = core::ghash(h, params.aad.clone(), ciphertext.clone()); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling tls_layer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> src/main.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/x509.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/x509.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `oid_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct oid_struct { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `OidStruct` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `name_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub struct name_struct { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NameStruct` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `time_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub struct time_struct { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `TimeStruct` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `self` and `write` [INFO] [stdout] --> src/db.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt::{self, write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::net` [INFO] [stdout] --> src/db.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::net; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HandshakeType` [INFO] [stdout] --> src/db.rs:5:24 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::handshake::{HandshakeType, Handshake, ClientKeyExchange, HandshakeFragment, Finished}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/db.rs:10:22 [INFO] [stdout] | [INFO] [stdout] 10 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `change_cipher_spec` should have an upper camel case name [INFO] [stdout] --> src/db.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | change_cipher_spec = 20, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ChangeCipherSpec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `alert` should have an upper camel case name [INFO] [stdout] --> src/db.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | alert = 21, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `Alert` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `handshake` should have an upper camel case name [INFO] [stdout] --> src/db.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | handshake = 22, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `Handshake` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `application_data` should have an upper camel case name [INFO] [stdout] --> src/db.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | application_data = 23, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ApplicationData` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `TLS_RSA_WITH_AES_256_GCM_SHA384` should have an upper camel case name [INFO] [stdout] --> src/db.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `TlsRsaWithAes256GcmSha384` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `null` should have an upper camel case name [INFO] [stdout] --> src/db.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | null = 0, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `Null` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Handshake_type` should have an upper camel case name [INFO] [stdout] --> src/db.rs:335:10 [INFO] [stdout] | [INFO] [stdout] 335 | pub enum Handshake_type { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HandshakeType` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/net.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TLSPlaintext` [INFO] [stdout] --> src/handshake.rs:1:32 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `hello_request` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | hello_request = 0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloRequest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `client_hello` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | client_hello = 1, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientHello` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_hello` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | server_hello = 2, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHello` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | certificate = 11, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_key_exchange` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | server_key_exchange = 12, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerKeyExchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate_request` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | certificate_request = 13, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateRequest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_hello_done` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | server_hello_done = 14, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHelloDone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate_verify` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | certificate_verify = 15, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateVerify` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `client_key_exchange` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | client_key_exchange = 16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientKeyExchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `finished` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | finished = 20, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Finished` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `unknown` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | unknown = 255 [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Unknown` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::block_cipher` [INFO] [stdout] --> src/crypto.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use types::block_cipher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `aes` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use aes; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hash` [INFO] [stdout] --> src/hash.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::hash::Hash; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UsizeToVec` [INFO] [stdout] --> src/handshake.rs:1:95 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/x509.rs:283:20 [INFO] [stdout] | [INFO] [stdout] 283 | let (_, _, mut data) = sig_alg.read_tlv(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length` [INFO] [stdout] --> src/x509.rs:446:19 [INFO] [stdout] | [INFO] [stdout] 446 | let (tag, length, value) = self.read_tlv(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/x509.rs:502:13 [INFO] [stdout] | [INFO] [stdout] 502 | let s = String::from_utf8_lossy(value).into_owned(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tag` [INFO] [stdout] --> src/x509.rs:528:22 [INFO] [stdout] | [INFO] [stdout] 528 | let (tag, _, val) = ext_seq.read_tlv(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tag` [INFO] [stdout] --> src/x509.rs:534:18 [INFO] [stdout] | [INFO] [stdout] 534 | let (tag, _, value) = ext_seq.read_tlv(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rounds` [INFO] [stdout] --> src/hash.rs:15:46 [INFO] [stdout] | [INFO] [stdout] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rounds` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hash.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/db.rs:134:13 [INFO] [stdout] | [INFO] [stdout] 133 | CipherSuite::TLS_RSA_WITH_AES_256_GCM_SHA384 => (32, 4), [INFO] [stdout] | -------------------------------------------- matches all the relevant values [INFO] [stdout] 134 | _ => (0, 0) [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/db.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/db.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 233 | ContentType::alert => { TLSFragment::Alert(Alert::new()) } [INFO] [stdout] | ------------------ matches some of the same values [INFO] [stdout] 234 | ContentType::handshake => { TLSFragment::Handshake(Handshake::new(1)) } [INFO] [stdout] | ---------------------- matches some of the same values [INFO] [stdout] 235 | ContentType::application_data => { TLSFragment::ApplicationData(ApplicationData::new(vec![])) } [INFO] [stdout] | ----------------------------- matches some of the same values [INFO] [stdout] 236 | ContentType::change_cipher_spec => { TLSFragment::ChangeCipherSpec(ChangeCipherSpec::new()) } [INFO] [stdout] | ------------------------------- matches some of the same values [INFO] [stdout] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/db.rs:249:13 [INFO] [stdout] | [INFO] [stdout] 249 | let mut fragment = ClientKeyExchange::from_key(key); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/handshake.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/handshake.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 41 | HandshakeFragment::ClientHello(client_hello) => client_hello.to_vec(), [INFO] [stdout] | -------------------------------------------- matches some of the same values [INFO] [stdout] 42 | HandshakeFragment::ServerHello(server_hello) => server_hello.to_vec(), [INFO] [stdout] | -------------------------------------------- matches some of the same values [INFO] [stdout] 43 | HandshakeFragment::ClientKeyExchange(client_key_exchange) => client_key_exchange.to_vec(), [INFO] [stdout] | --------------------------------------------------------- matches some of the same values [INFO] [stdout] 44 | HandshakeFragment::Certificate(certificate) => certificate.to_vec(), [INFO] [stdout] | ------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stdout] | ^ ...and 3 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut vec: Vec = Vec::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bigint.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | let mut base = self.mod_(modulus); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | let mut client_hello_tls = steam_manager.send_handshake(db::Handshake_type::ClientHello)?; // client hello [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut server_hello_tls = steam_manager.read()?; // server hello [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | let mut certificate_tls = steam_manager.read()?; // certificate [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | let mut client_key_exchange_tls = steam_manager.send_handshake(db::Handshake_type::ClientKeyExchange)?; // client key exchange [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | let mut change_cipher_spec_tls = steam_manager.send_spec_change()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | let mut finished_tls = steam_manager.send_handshake(db::Handshake_type::Finished)?; [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut server_spec_change = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut server_finished_tls = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | let mut data_tls = steam_manager.send_data(b"GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nUser-Agent: CustomTLSClient/1... [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | let mut data_tls = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `Certificate::signatureAlgorithm` [INFO] [stdout] --> src/x509.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `Certificate::signatureAlgorithm` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `TBSCertificate::signature` [INFO] [stdout] --> src/x509.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | pub signature: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::signature` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Validity` is more private than the item `TBSCertificate::validity` [INFO] [stdout] --> src/x509.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | pub validity: Validity, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::validity` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:302:1 [INFO] [stdout] | [INFO] [stdout] 302 | struct Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Extensions` is more private than the item `TBSCertificate::extensions` [INFO] [stdout] --> src/x509.rs:198:5 [INFO] [stdout] | [INFO] [stdout] 198 | pub extensions: Extensions, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::extensions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:317:1 [INFO] [stdout] | [INFO] [stdout] 317 | struct Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `SubjectPublicKeyInfo::algorithm` [INFO] [stdout] --> src/x509.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | pub algorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `SubjectPublicKeyInfo::algorithm` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Validity` is more private than the item `ASN1Parser::<'a>::parse_validity` [INFO] [stdout] --> src/x509.rs:506:5 [INFO] [stdout] | [INFO] [stdout] 506 | pub fn parse_validity(&mut self) -> Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_validity` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:302:1 [INFO] [stdout] | [INFO] [stdout] 302 | struct Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Extensions` is more private than the item `ASN1Parser::<'a>::parse_extensions` [INFO] [stdout] --> src/x509.rs:514:5 [INFO] [stdout] | [INFO] [stdout] 514 | pub fn parse_extensions(&mut self) -> Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_extensions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:317:1 [INFO] [stdout] | [INFO] [stdout] 317 | struct Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ChangeCipherSpec` is more private than the item `TLSFragment::ChangeCipherSpec::0` [INFO] [stdout] --> src/db.rs:193:22 [INFO] [stdout] | [INFO] [stdout] 193 | ChangeCipherSpec(ChangeCipherSpec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ field `TLSFragment::ChangeCipherSpec::0` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ChangeCipherSpec` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/db.rs:151:1 [INFO] [stdout] | [INFO] [stdout] 151 | struct ChangeCipherSpec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Alert` is more private than the item `TLSFragment::Alert::0` [INFO] [stdout] --> src/db.rs:194:11 [INFO] [stdout] | [INFO] [stdout] 194 | Alert(Alert), [INFO] [stdout] | ^^^^^ field `TLSFragment::Alert::0` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Alert` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/db.rs:165:1 [INFO] [stdout] | [INFO] [stdout] 165 | struct Alert { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VecCertificateSequence` is never used [INFO] [stdout] --> src/x509.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub trait VecCertificateSequence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | / define_enum_macro! { [INFO] [stdout] 100 | | #[derive(Debug)] [INFO] [stdout] 101 | | pub enum ContentType { [INFO] [stdout] 102 | | change_cipher_spec = 20, [INFO] [stdout] ... | [INFO] [stdout] 107 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/db.rs:62:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | / define_enum_macro! { [INFO] [stdout] 110 | | #[derive(Debug)] [INFO] [stdout] 111 | | pub enum CipherSuite { [INFO] [stdout] ... | [INFO] [stdout] 127 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | / define_enum_macro!( [INFO] [stdout] 144 | | #[derive(Debug)] [INFO] [stdout] 145 | | pub enum CompressionMethod { [INFO] [stdout] 146 | | null = 0, [INFO] [stdout] 147 | | } [INFO] [stdout] 148 | | ); [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `UsizeToVec` is never used [INFO] [stdout] --> src/db.rs:318:11 [INFO] [stdout] | [INFO] [stdout] 318 | pub trait UsizeToVec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ServerHello` and `Certificate` are never constructed [INFO] [stdout] --> src/db.rs:337:5 [INFO] [stdout] | [INFO] [stdout] 335 | pub enum Handshake_type { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 336 | ClientHello = 0x01, [INFO] [stdout] 337 | ServerHello = 0x02, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 338 | Certificate = 0x0b, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Handshake_type` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_u8`, `to_u8`, and `to_string` are never used [INFO] [stdout] --> src/db.rs:344:12 [INFO] [stdout] | [INFO] [stdout] 343 | impl Handshake_type { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 344 | pub fn from_u8(value: u8) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn to_u8(self) -> u8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn to_string(self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `send` is never used [INFO] [stdout] --> src/db.rs:410:12 [INFO] [stdout] | [INFO] [stdout] 403 | impl TLSStreamManager { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 410 | pub fn send(&mut self, tls: &mut TLSPlaintext) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `write_tls` is never used [INFO] [stdout] --> src/net.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn write_tls(stream: &mut TcpStream, tls: &mut db::TLSPlaintext) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_tls` is never used [INFO] [stdout] --> src/net.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn read_tls(stream: &mut TcpStream) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string` and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/handshake.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / define_enum_macro! { [INFO] [stdout] 7 | | #[derive(Debug)] [INFO] [stdout] 8 | | pub enum HandshakeType { [INFO] [stdout] 9 | | hello_request = 0, [INFO] [stdout] ... | [INFO] [stdout] 21 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/handshake.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 262 | impl HandshakeCertificate { [INFO] [stdout] | ------------------------- associated function in this implementation [INFO] [stdout] 263 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `add`, `complement`, and `shr1` are never used [INFO] [stdout] --> src/bigint.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl BigInt { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn add(&self, other: &Self) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn complement(&self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn shr1(a: &[u8]) -> Vec { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `parseLength` should have a snake case name [INFO] [stdout] --> src/x509.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | fn parseLength(&self) -> (u32, Vec); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `parse_length` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stdout] --> src/x509.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub tbsCertificate: TBSCertificate, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `signatureAlgorithm` should have a snake case name [INFO] [stdout] --> src/x509.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `signatureValue` should have a snake case name [INFO] [stdout] --> src/x509.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub signatureValue: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `serialNumber` should have a snake case name [INFO] [stdout] --> src/x509.rs:190:5 [INFO] [stdout] | [INFO] [stdout] 190 | serialNumber: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `serial_number` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `issuerUniqueID` should have a snake case name [INFO] [stdout] --> src/x509.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | pub issuerUniqueID: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `issuer_unique_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `subjectUniqueID` should have a snake case name [INFO] [stdout] --> src/x509.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | pub subjectUniqueID: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `subject_unique_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `notBefore` should have a snake case name [INFO] [stdout] --> src/x509.rs:303:5 [INFO] [stdout] | [INFO] [stdout] 303 | notBefore: time_struct, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `not_before` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `notAfter` should have a snake case name [INFO] [stdout] --> src/x509.rs:304:5 [INFO] [stdout] | [INFO] [stdout] 304 | notAfter: time_struct, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `not_after` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `publicKey` should have a snake case name [INFO] [stdout] --> src/x509.rs:360:9 [INFO] [stdout] | [INFO] [stdout] 360 | pub publicKey: PublicKey, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `publicKey` should have a snake case name [INFO] [stdout] --> src/x509.rs:391:25 [INFO] [stdout] | [INFO] [stdout] 391 | pub fn parse_public_key(publicKey: &[u8]) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `publicKey_seq` should have a snake case name [INFO] [stdout] --> src/x509.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | let mut publicKey_seq = ASN1Parser::new(publicKey) [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_seq` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `handshakeType` should have a snake case name [INFO] [stdout] --> src/handshake.rs:209:16 [INFO] [stdout] | [INFO] [stdout] 209 | pub fn new(handshakeType: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `handshake_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stdout] --> src/handshake.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | pub tbsCertificate: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.41s [INFO] running `Command { std: "docker" "inspect" "321260b13be2ae417bd622e4bec7330ade98cdd56988dee5063376a983cf418e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "321260b13be2ae417bd622e4bec7330ade98cdd56988dee5063376a983cf418e", kill_on_drop: false }` [INFO] [stdout] 321260b13be2ae417bd622e4bec7330ade98cdd56988dee5063376a983cf418e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0cd5fb8a320037d8300782c5cd7801707431549734384e41fe696ebd0024a8e7 [INFO] running `Command { std: "docker" "start" "-a" "0cd5fb8a320037d8300782c5cd7801707431549734384e41fe696ebd0024a8e7", kill_on_drop: false }` [INFO] [stderr] Compiling tls_layer v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `iv` [INFO] [stdout] --> src/types/src/block_cipher.rs:1:92 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_iv` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/types/src/block_cipher.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | let mut pad_len = block_size - data.len() % block_size; [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VecStructU32` is never used [INFO] [stdout] --> src/types/src/lib.rs:43:7 [INFO] [stdout] | [INFO] [stdout] 43 | trait VecStructU32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ECB_MODE` should have a snake case name [INFO] [stdout] --> src/types/src/block_cipher.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `ecb_mode` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::block_cipher` [INFO] [stdout] --> src/aes/src/core.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use types::block_cipher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nr` [INFO] [stdout] --> src/aes/src/core.rs:95:14 [INFO] [stdout] | [INFO] [stdout] 95 | let (nk, nr, nwords) = get_aes_params(key.len()); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_nr` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `block` is never read [INFO] [stdout] --> src/aes/src/crypto.rs:37:21 [INFO] [stdout] | [INFO] [stdout] 37 | let mut block = vec![]; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/aes/src/crypto.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut aes = core::AES::new(self.key.clone(), block_cipher::ECB_MODE); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `INV_S_BOX` is never used [INFO] [stdout] --> src/aes/src/core.rs:22:11 [INFO] [stdout] | [INFO] [stdout] 22 | pub const INV_S_BOX: [u8; 256] = [ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inv_shift_rows` is never used [INFO] [stdout] --> src/aes/src/core.rs:139:8 [INFO] [stdout] | [INFO] [stdout] 139 | pub fn inv_shift_rows(state: [u8; 16]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mult` is never used [INFO] [stdout] --> src/aes/src/core.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn mult(a: u8, b: u8) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `inv_mix_columns` is never used [INFO] [stdout] --> src/aes/src/core.rs:167:8 [INFO] [stdout] | [INFO] [stdout] 167 | pub fn inv_mix_columns(state: [u8; 16]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `aes_decrypt_block` is never used [INFO] [stdout] --> src/aes/src/core.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | pub fn aes_decrypt_block(plaintext: [u8; 16], key: &[u8]) -> [u8; 16] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `decrypt` is never used [INFO] [stdout] --> src/aes/src/core.rs:215:12 [INFO] [stdout] | [INFO] [stdout] 206 | impl AES { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 215 | pub fn decrypt(&self, plaintext: Vec) -> Vec { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `H` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let H = aes.encrypt([0; 16].to_vec()); [INFO] [stdout] | ^ help: convert the identifier to snake case: `h` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `J0` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | let mut J0 = params.iv.clone(); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `S` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | let S = core::ghash(H, params.aad.clone(), ciphertext.clone()); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `J0` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:61:17 [INFO] [stdout] | [INFO] [stdout] 61 | let mut J0 = params.iv.clone(); [INFO] [stdout] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `S` should have a snake case name [INFO] [stdout] --> src/aes/src/crypto.rs:79:13 [INFO] [stdout] | [INFO] [stdout] 79 | let S = core::ghash(h, params.aad.clone(), ciphertext.clone()); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::net::TcpStream` [INFO] [stdout] --> src/main.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::net::TcpStream; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/x509.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/x509.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `oid_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 66 | pub struct oid_struct { [INFO] [stdout] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `OidStruct` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `name_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub struct name_struct { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NameStruct` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `time_struct` should have an upper camel case name [INFO] [stdout] --> src/x509.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub struct time_struct { [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `TimeStruct` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `self` and `write` [INFO] [stdout] --> src/db.rs:1:16 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt::{self, write}; [INFO] [stdout] | ^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::net` [INFO] [stdout] --> src/db.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::net; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `HandshakeType` [INFO] [stdout] --> src/db.rs:5:24 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::handshake::{HandshakeType, Handshake, ClientKeyExchange, HandshakeFragment, Finished}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ErrorKind` [INFO] [stdout] --> src/db.rs:10:22 [INFO] [stdout] | [INFO] [stdout] 10 | use std::io::{Error, ErrorKind}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `change_cipher_spec` should have an upper camel case name [INFO] [stdout] --> src/db.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | change_cipher_spec = 20, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ChangeCipherSpec` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `alert` should have an upper camel case name [INFO] [stdout] --> src/db.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | alert = 21, [INFO] [stdout] | ^^^^^ help: convert the identifier to upper camel case: `Alert` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `handshake` should have an upper camel case name [INFO] [stdout] --> src/db.rs:104:9 [INFO] [stdout] | [INFO] [stdout] 104 | handshake = 22, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to upper camel case: `Handshake` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `application_data` should have an upper camel case name [INFO] [stdout] --> src/db.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | application_data = 23, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ApplicationData` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `TLS_RSA_WITH_AES_256_GCM_SHA384` should have an upper camel case name [INFO] [stdout] --> src/db.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `TlsRsaWithAes256GcmSha384` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `null` should have an upper camel case name [INFO] [stdout] --> src/db.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | null = 0, [INFO] [stdout] | ^^^^ help: convert the identifier to upper camel case: `Null` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Handshake_type` should have an upper camel case name [INFO] [stdout] --> src/db.rs:335:10 [INFO] [stdout] | [INFO] [stdout] 335 | pub enum Handshake_type { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HandshakeType` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/net.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TLSPlaintext` [INFO] [stdout] --> src/handshake.rs:1:32 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::VecStructU8` [INFO] [stdout] --> src/handshake.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use types::VecStructU8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `hello_request` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | hello_request = 0, [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloRequest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `client_hello` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | client_hello = 1, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientHello` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_hello` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | server_hello = 2, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHello` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | certificate = 11, [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_key_exchange` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | server_key_exchange = 12, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerKeyExchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate_request` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | certificate_request = 13, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateRequest` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `server_hello_done` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | server_hello_done = 14, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHelloDone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `certificate_verify` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 16 | certificate_verify = 15, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateVerify` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `client_key_exchange` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | client_key_exchange = 16, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientKeyExchange` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `finished` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | finished = 20, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Finished` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `unknown` should have an upper camel case name [INFO] [stdout] --> src/handshake.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | unknown = 255 [INFO] [stdout] | ^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Unknown` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::block_cipher` [INFO] [stdout] --> src/crypto.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use types::block_cipher; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `aes` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use aes; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::hash::Hash` [INFO] [stdout] --> src/hash.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::hash::Hash; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `UsizeToVec` [INFO] [stdout] --> src/handshake.rs:1:95 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::prelude` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io::prelude::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/x509.rs:283:20 [INFO] [stdout] | [INFO] [stdout] 283 | let (_, _, mut data) = sig_alg.read_tlv(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `length` [INFO] [stdout] --> src/x509.rs:446:19 [INFO] [stdout] | [INFO] [stdout] 446 | let (tag, length, value) = self.read_tlv(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/x509.rs:502:13 [INFO] [stdout] | [INFO] [stdout] 502 | let s = String::from_utf8_lossy(value).into_owned(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tag` [INFO] [stdout] --> src/x509.rs:528:22 [INFO] [stdout] | [INFO] [stdout] 528 | let (tag, _, val) = ext_seq.read_tlv(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tag` [INFO] [stdout] --> src/x509.rs:534:18 [INFO] [stdout] | [INFO] [stdout] 534 | let (tag, _, value) = ext_seq.read_tlv(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rounds` [INFO] [stdout] --> src/hash.rs:15:46 [INFO] [stdout] | [INFO] [stdout] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rounds` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/hash.rs:15:14 [INFO] [stdout] | [INFO] [stdout] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/db.rs:134:13 [INFO] [stdout] | [INFO] [stdout] 133 | CipherSuite::TLS_RSA_WITH_AES_256_GCM_SHA384 => (32, 4), [INFO] [stdout] | -------------------------------------------- matches all the relevant values [INFO] [stdout] 134 | _ => (0, 0) [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/db.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/db.rs:237:13 [INFO] [stdout] | [INFO] [stdout] 233 | ContentType::alert => { TLSFragment::Alert(Alert::new()) } [INFO] [stdout] | ------------------ matches some of the same values [INFO] [stdout] 234 | ContentType::handshake => { TLSFragment::Handshake(Handshake::new(1)) } [INFO] [stdout] | ---------------------- matches some of the same values [INFO] [stdout] 235 | ContentType::application_data => { TLSFragment::ApplicationData(ApplicationData::new(vec![])) } [INFO] [stdout] | ----------------------------- matches some of the same values [INFO] [stdout] 236 | ContentType::change_cipher_spec => { TLSFragment::ChangeCipherSpec(ChangeCipherSpec::new()) } [INFO] [stdout] | ------------------------------- matches some of the same values [INFO] [stdout] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stdout] | ^ collectively making this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/db.rs:249:13 [INFO] [stdout] | [INFO] [stdout] 249 | let mut fragment = ClientKeyExchange::from_key(key); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/handshake.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/handshake.rs:48:13 [INFO] [stdout] | [INFO] [stdout] 41 | HandshakeFragment::ClientHello(client_hello) => client_hello.to_vec(), [INFO] [stdout] | -------------------------------------------- matches some of the same values [INFO] [stdout] 42 | HandshakeFragment::ServerHello(server_hello) => server_hello.to_vec(), [INFO] [stdout] | -------------------------------------------- matches some of the same values [INFO] [stdout] 43 | HandshakeFragment::ClientKeyExchange(client_key_exchange) => client_key_exchange.to_vec(), [INFO] [stdout] | --------------------------------------------------------- matches some of the same values [INFO] [stdout] 44 | HandshakeFragment::Certificate(certificate) => certificate.to_vec(), [INFO] [stdout] | ------------------------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stdout] | ^ ...and 3 other patterns collectively make this unreachable [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/handshake.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut vec: Vec = Vec::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/bigint.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | let mut base = self.mod_(modulus); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | let mut client_hello_tls = steam_manager.send_handshake(db::Handshake_type::ClientHello)?; // client hello [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | let mut server_hello_tls = steam_manager.read()?; // server hello [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | let mut certificate_tls = steam_manager.read()?; // certificate [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | let mut client_key_exchange_tls = steam_manager.send_handshake(db::Handshake_type::ClientKeyExchange)?; // client key exchange [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | let mut change_cipher_spec_tls = steam_manager.send_spec_change()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 44 | let mut finished_tls = steam_manager.send_handshake(db::Handshake_type::Finished)?; [INFO] [stdout] | ----^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | let mut server_spec_change = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 52 | let mut server_finished_tls = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | let mut data_tls = steam_manager.send_data(b"GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nUser-Agent: CustomTLSClient/1... [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | let mut data_tls = steam_manager.read()?; [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `Certificate::signatureAlgorithm` [INFO] [stdout] --> src/x509.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `Certificate::signatureAlgorithm` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = note: `#[warn(private_interfaces)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `TBSCertificate::signature` [INFO] [stdout] --> src/x509.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | pub signature: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::signature` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Validity` is more private than the item `TBSCertificate::validity` [INFO] [stdout] --> src/x509.rs:193:5 [INFO] [stdout] | [INFO] [stdout] 193 | pub validity: Validity, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::validity` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:302:1 [INFO] [stdout] | [INFO] [stdout] 302 | struct Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Extensions` is more private than the item `TBSCertificate::extensions` [INFO] [stdout] --> src/x509.rs:198:5 [INFO] [stdout] | [INFO] [stdout] 198 | pub extensions: Extensions, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::extensions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:317:1 [INFO] [stdout] | [INFO] [stdout] 317 | struct Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `AlgorithmIdentifier` is more private than the item `SubjectPublicKeyInfo::algorithm` [INFO] [stdout] --> src/x509.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | pub algorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `SubjectPublicKeyInfo::algorithm` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:264:1 [INFO] [stdout] | [INFO] [stdout] 264 | struct AlgorithmIdentifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Validity` is more private than the item `ASN1Parser::<'a>::parse_validity` [INFO] [stdout] --> src/x509.rs:506:5 [INFO] [stdout] | [INFO] [stdout] 506 | pub fn parse_validity(&mut self) -> Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_validity` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:302:1 [INFO] [stdout] | [INFO] [stdout] 302 | struct Validity { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Extensions` is more private than the item `ASN1Parser::<'a>::parse_extensions` [INFO] [stdout] --> src/x509.rs:514:5 [INFO] [stdout] | [INFO] [stdout] 514 | pub fn parse_extensions(&mut self) -> Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_extensions` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/x509.rs:317:1 [INFO] [stdout] | [INFO] [stdout] 317 | struct Extensions { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `ChangeCipherSpec` is more private than the item `TLSFragment::ChangeCipherSpec::0` [INFO] [stdout] --> src/db.rs:193:22 [INFO] [stdout] | [INFO] [stdout] 193 | ChangeCipherSpec(ChangeCipherSpec), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ field `TLSFragment::ChangeCipherSpec::0` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `ChangeCipherSpec` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/db.rs:151:1 [INFO] [stdout] | [INFO] [stdout] 151 | struct ChangeCipherSpec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type `Alert` is more private than the item `TLSFragment::Alert::0` [INFO] [stdout] --> src/db.rs:194:11 [INFO] [stdout] | [INFO] [stdout] 194 | Alert(Alert), [INFO] [stdout] | ^^^^^ field `TLSFragment::Alert::0` is reachable at visibility `pub(crate)` [INFO] [stdout] | [INFO] [stdout] note: but type `Alert` is only usable at visibility `pub(self)` [INFO] [stdout] --> src/db.rs:165:1 [INFO] [stdout] | [INFO] [stdout] 165 | struct Alert { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `VecCertificateSequence` is never used [INFO] [stdout] --> src/x509.rs:36:11 [INFO] [stdout] | [INFO] [stdout] 36 | pub trait VecCertificateSequence { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | / define_enum_macro! { [INFO] [stdout] 100 | | #[derive(Debug)] [INFO] [stdout] 101 | | pub enum ContentType { [INFO] [stdout] 102 | | change_cipher_spec = 20, [INFO] [stdout] ... | [INFO] [stdout] 107 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_u32` is never used [INFO] [stdout] --> src/db.rs:62:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | / define_enum_macro! { [INFO] [stdout] 110 | | #[derive(Debug)] [INFO] [stdout] 111 | | pub enum CipherSuite { [INFO] [stdout] ... | [INFO] [stdout] 127 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | / define_enum_macro!( [INFO] [stdout] 144 | | #[derive(Debug)] [INFO] [stdout] 145 | | pub enum CompressionMethod { [INFO] [stdout] 146 | | null = 0, [INFO] [stdout] 147 | | } [INFO] [stdout] 148 | | ); [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `UsizeToVec` is never used [INFO] [stdout] --> src/db.rs:318:11 [INFO] [stdout] | [INFO] [stdout] 318 | pub trait UsizeToVec { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ServerHello` and `Certificate` are never constructed [INFO] [stdout] --> src/db.rs:337:5 [INFO] [stdout] | [INFO] [stdout] 335 | pub enum Handshake_type { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 336 | ClientHello = 0x01, [INFO] [stdout] 337 | ServerHello = 0x02, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 338 | Certificate = 0x0b, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Handshake_type` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_u8`, `to_u8`, and `to_string` are never used [INFO] [stdout] --> src/db.rs:344:12 [INFO] [stdout] | [INFO] [stdout] 343 | impl Handshake_type { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 344 | pub fn from_u8(value: u8) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn to_u8(self) -> u8 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn to_string(self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `send` is never used [INFO] [stdout] --> src/db.rs:410:12 [INFO] [stdout] | [INFO] [stdout] 403 | impl TLSStreamManager { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 410 | pub fn send(&mut self, tls: &mut TLSPlaintext) -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `write_tls` is never used [INFO] [stdout] --> src/net.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub fn write_tls(stream: &mut TcpStream, tls: &mut db::TLSPlaintext) -> Result<(), Error> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_tls` is never used [INFO] [stdout] --> src/net.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn read_tls(stream: &mut TcpStream) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `to_string` and `iter` are never used [INFO] [stdout] --> src/db.rs:49:20 [INFO] [stdout] | [INFO] [stdout] 48 | impl $name { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 49 | pub fn to_string(&self) -> String { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn iter() -> Vec{ [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] ::: src/handshake.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | / define_enum_macro! { [INFO] [stdout] 7 | | #[derive(Debug)] [INFO] [stdout] 8 | | pub enum HandshakeType { [INFO] [stdout] 9 | | hello_request = 0, [INFO] [stdout] ... | [INFO] [stdout] 21 | | } [INFO] [stdout] | |_- in this macro invocation [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/handshake.rs:263:12 [INFO] [stdout] | [INFO] [stdout] 262 | impl HandshakeCertificate { [INFO] [stdout] | ------------------------- associated function in this implementation [INFO] [stdout] 263 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `add`, `complement`, and `shr1` are never used [INFO] [stdout] --> src/bigint.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl BigInt { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn add(&self, other: &Self) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn complement(&self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn shr1(a: &[u8]) -> Vec { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait method `parseLength` should have a snake case name [INFO] [stdout] --> src/x509.rs:37:8 [INFO] [stdout] | [INFO] [stdout] 37 | fn parseLength(&self) -> (u32, Vec); [INFO] [stdout] | ^^^^^^^^^^^ help: convert the identifier to snake case: `parse_length` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stdout] --> src/x509.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub tbsCertificate: TBSCertificate, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `signatureAlgorithm` should have a snake case name [INFO] [stdout] --> src/x509.rs:61:9 [INFO] [stdout] | [INFO] [stdout] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_algorithm` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `signatureValue` should have a snake case name [INFO] [stdout] --> src/x509.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub signatureValue: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `serialNumber` should have a snake case name [INFO] [stdout] --> src/x509.rs:190:5 [INFO] [stdout] | [INFO] [stdout] 190 | serialNumber: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `serial_number` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `issuerUniqueID` should have a snake case name [INFO] [stdout] --> src/x509.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | pub issuerUniqueID: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `issuer_unique_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `subjectUniqueID` should have a snake case name [INFO] [stdout] --> src/x509.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | pub subjectUniqueID: Option>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `subject_unique_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `notBefore` should have a snake case name [INFO] [stdout] --> src/x509.rs:303:5 [INFO] [stdout] | [INFO] [stdout] 303 | notBefore: time_struct, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `not_before` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `notAfter` should have a snake case name [INFO] [stdout] --> src/x509.rs:304:5 [INFO] [stdout] | [INFO] [stdout] 304 | notAfter: time_struct, [INFO] [stdout] | ^^^^^^^^ help: convert the identifier to snake case: `not_after` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `publicKey` should have a snake case name [INFO] [stdout] --> src/x509.rs:360:9 [INFO] [stdout] | [INFO] [stdout] 360 | pub publicKey: PublicKey, [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `publicKey` should have a snake case name [INFO] [stdout] --> src/x509.rs:391:25 [INFO] [stdout] | [INFO] [stdout] 391 | pub fn parse_public_key(publicKey: &[u8]) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `publicKey_seq` should have a snake case name [INFO] [stdout] --> src/x509.rs:392:13 [INFO] [stdout] | [INFO] [stdout] 392 | let mut publicKey_seq = ASN1Parser::new(publicKey) [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_seq` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `handshakeType` should have a snake case name [INFO] [stdout] --> src/handshake.rs:209:16 [INFO] [stdout] | [INFO] [stdout] 209 | pub fn new(handshakeType: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `handshake_type` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stdout] --> src/handshake.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | pub tbsCertificate: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.66s [INFO] running `Command { std: "docker" "inspect" "0cd5fb8a320037d8300782c5cd7801707431549734384e41fe696ebd0024a8e7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0cd5fb8a320037d8300782c5cd7801707431549734384e41fe696ebd0024a8e7", kill_on_drop: false }` [INFO] [stdout] 0cd5fb8a320037d8300782c5cd7801707431549734384e41fe696ebd0024a8e7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+cdb45c87e2cd43495379f7e867e3cc15dcee9f93" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] cb565776e5a926d61fa0317cf2419dde62127c3b01ea732b84926cc96c79f454 [INFO] running `Command { std: "docker" "start" "-a" "cb565776e5a926d61fa0317cf2419dde62127c3b01ea732b84926cc96c79f454", kill_on_drop: false }` [INFO] [stderr] warning: unused variable: `iv` [INFO] [stderr] --> src/types/src/block_cipher.rs:1:92 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_iv` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/types/src/block_cipher.rs:22:9 [INFO] [stderr] | [INFO] [stdout] [INFO] [stderr] 22 | let mut pad_len = block_size - data.len() % block_size; [INFO] [stdout] running 0 tests [INFO] [stderr] | ----^^^^^^^ [INFO] [stdout] [INFO] [stderr] | | [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stderr] | help: remove this `mut` [INFO] [stdout] [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: trait `VecStructU32` is never used [INFO] [stderr] --> src/types/src/lib.rs:43:7 [INFO] [stderr] | [INFO] [stderr] 43 | trait VecStructU32 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `ECB_MODE` should have a snake case name [INFO] [stderr] --> src/types/src/block_cipher.rs:1:8 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn ECB_MODE(cipher_func: fn([u8; 16], &[u8]) -> [u8; 16], data: Vec, key: Vec, iv: Vec, mode: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `ecb_mode` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `types` (lib) generated 4 warnings (run `cargo fix --lib -p types` to apply 1 suggestion) [INFO] [stderr] warning: unused import: `types::block_cipher` [INFO] [stderr] --> src/aes/src/core.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use types::block_cipher; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `nr` [INFO] [stderr] --> src/aes/src/core.rs:95:14 [INFO] [stderr] | [INFO] [stderr] 95 | let (nk, nr, nwords) = get_aes_params(key.len()); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_nr` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `block` is never read [INFO] [stderr] --> src/aes/src/crypto.rs:37:21 [INFO] [stderr] | [INFO] [stderr] 37 | let mut block = vec![]; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/aes/src/crypto.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | let mut aes = core::AES::new(self.key.clone(), block_cipher::ECB_MODE); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: constant `INV_S_BOX` is never used [INFO] [stderr] --> src/aes/src/core.rs:22:11 [INFO] [stderr] | [INFO] [stderr] 22 | pub const INV_S_BOX: [u8; 256] = [ [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: function `inv_shift_rows` is never used [INFO] [stderr] --> src/aes/src/core.rs:139:8 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn inv_shift_rows(state: [u8; 16]) -> [u8; 16] { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `mult` is never used [INFO] [stderr] --> src/aes/src/core.rs:148:8 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn mult(a: u8, b: u8) -> u8 { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `inv_mix_columns` is never used [INFO] [stderr] --> src/aes/src/core.rs:167:8 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn inv_mix_columns(state: [u8; 16]) -> [u8; 16] { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `aes_decrypt_block` is never used [INFO] [stderr] --> src/aes/src/core.rs:182:8 [INFO] [stderr] | [INFO] [stderr] 182 | pub fn aes_decrypt_block(plaintext: [u8; 16], key: &[u8]) -> [u8; 16] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `decrypt` is never used [INFO] [stderr] --> src/aes/src/core.rs:215:12 [INFO] [stderr] | [INFO] [stderr] 206 | impl AES { [INFO] [stderr] | -------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 215 | pub fn decrypt(&self, plaintext: Vec) -> Vec { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `H` should have a snake case name [INFO] [stderr] --> src/aes/src/crypto.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let H = aes.encrypt([0; 16].to_vec()); [INFO] [stderr] | ^ help: convert the identifier to snake case: `h` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable `J0` should have a snake case name [INFO] [stderr] --> src/aes/src/crypto.rs:31:17 [INFO] [stderr] | [INFO] [stderr] 31 | let mut J0 = params.iv.clone(); [INFO] [stderr] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stderr] [INFO] [stderr] warning: variable `S` should have a snake case name [INFO] [stderr] --> src/aes/src/crypto.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | let S = core::ghash(H, params.aad.clone(), ciphertext.clone()); [INFO] [stderr] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stderr] [INFO] [stderr] warning: variable `J0` should have a snake case name [INFO] [stderr] --> src/aes/src/crypto.rs:61:17 [INFO] [stderr] | [INFO] [stderr] 61 | let mut J0 = params.iv.clone(); [INFO] [stderr] | ^^ help: convert the identifier to snake case: `j0` [INFO] [stderr] [INFO] [stderr] warning: variable `S` should have a snake case name [INFO] [stderr] --> src/aes/src/crypto.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | let S = core::ghash(h, params.aad.clone(), ciphertext.clone()); [INFO] [stderr] | ^ help: convert the identifier to snake case (notice the capitalization): `s` [INFO] [stderr] [INFO] [stderr] warning: `aes` (lib) generated 15 warnings (run `cargo fix --lib -p aes` to apply 2 suggestions) [INFO] [stderr] warning: unused import: `std::net::TcpStream` [INFO] [stderr] --> src/main.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::net::TcpStream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Error` [INFO] [stderr] --> src/x509.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::io::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `types::VecStructU8` [INFO] [stderr] --> src/x509.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use types::VecStructU8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `oid_struct` should have an upper camel case name [INFO] [stderr] --> src/x509.rs:66:12 [INFO] [stderr] | [INFO] [stderr] 66 | pub struct oid_struct { [INFO] [stderr] | ^^^^^^^^^^ help: convert the identifier to upper camel case: `OidStruct` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: type `name_struct` should have an upper camel case name [INFO] [stderr] --> src/x509.rs:93:12 [INFO] [stderr] | [INFO] [stderr] 93 | pub struct name_struct { [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `NameStruct` [INFO] [stderr] [INFO] [stderr] warning: type `time_struct` should have an upper camel case name [INFO] [stderr] --> src/x509.rs:117:12 [INFO] [stderr] | [INFO] [stderr] 117 | pub struct time_struct { [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to upper camel case: `TimeStruct` [INFO] [stderr] [INFO] [stderr] warning: unused imports: `self` and `write` [INFO] [stderr] --> src/db.rs:1:16 [INFO] [stderr] | [INFO] [stderr] 1 | use std::fmt::{self, write}; [INFO] [stderr] | ^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::net` [INFO] [stderr] --> src/db.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use crate::net; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `HandshakeType` [INFO] [stderr] --> src/db.rs:5:24 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::handshake::{HandshakeType, Handshake, ClientKeyExchange, HandshakeFragment, Finished}; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ErrorKind` [INFO] [stderr] --> src/db.rs:10:22 [INFO] [stderr] | [INFO] [stderr] 10 | use std::io::{Error, ErrorKind}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `change_cipher_spec` should have an upper camel case name [INFO] [stderr] --> src/db.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | change_cipher_spec = 20, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ChangeCipherSpec` [INFO] [stderr] [INFO] [stderr] warning: variant `alert` should have an upper camel case name [INFO] [stderr] --> src/db.rs:103:9 [INFO] [stderr] | [INFO] [stderr] 103 | alert = 21, [INFO] [stderr] | ^^^^^ help: convert the identifier to upper camel case: `Alert` [INFO] [stderr] [INFO] [stderr] warning: variant `handshake` should have an upper camel case name [INFO] [stderr] --> src/db.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | handshake = 22, [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to upper camel case: `Handshake` [INFO] [stderr] [INFO] [stderr] warning: variant `application_data` should have an upper camel case name [INFO] [stderr] --> src/db.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | application_data = 23, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ApplicationData` [INFO] [stderr] [INFO] [stderr] warning: variant `TLS_RSA_WITH_AES_256_GCM_SHA384` should have an upper camel case name [INFO] [stderr] --> src/db.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `TlsRsaWithAes256GcmSha384` [INFO] [stderr] [INFO] [stderr] warning: variant `null` should have an upper camel case name [INFO] [stderr] --> src/db.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | null = 0, [INFO] [stderr] | ^^^^ help: convert the identifier to upper camel case: `Null` [INFO] [stderr] [INFO] [stderr] warning: type `Handshake_type` should have an upper camel case name [INFO] [stderr] --> src/db.rs:335:10 [INFO] [stderr] | [INFO] [stderr] 335 | pub enum Handshake_type { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HandshakeType` [INFO] [stderr] [INFO] [stderr] warning: unused import: `types::VecStructU8` [INFO] [stderr] --> src/net.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use types::VecStructU8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `TLSPlaintext` [INFO] [stderr] --> src/handshake.rs:1:32 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `types::VecStructU8` [INFO] [stderr] --> src/handshake.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use types::VecStructU8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `hello_request` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | hello_request = 0, [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloRequest` [INFO] [stderr] [INFO] [stderr] warning: variant `client_hello` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 10 | client_hello = 1, [INFO] [stderr] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientHello` [INFO] [stderr] [INFO] [stderr] warning: variant `server_hello` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | server_hello = 2, [INFO] [stderr] | ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHello` [INFO] [stderr] [INFO] [stderr] warning: variant `certificate` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | certificate = 11, [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Certificate` [INFO] [stderr] [INFO] [stderr] warning: variant `server_key_exchange` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | server_key_exchange = 12, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerKeyExchange` [INFO] [stderr] [INFO] [stderr] warning: variant `certificate_request` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | certificate_request = 13, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateRequest` [INFO] [stderr] [INFO] [stderr] warning: variant `server_hello_done` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | server_hello_done = 14, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ServerHelloDone` [INFO] [stderr] [INFO] [stderr] warning: variant `certificate_verify` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | certificate_verify = 15, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `CertificateVerify` [INFO] [stderr] [INFO] [stderr] warning: variant `client_key_exchange` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | client_key_exchange = 16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClientKeyExchange` [INFO] [stderr] [INFO] [stderr] warning: variant `finished` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | finished = 20, [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Finished` [INFO] [stderr] [INFO] [stderr] warning: variant `unknown` should have an upper camel case name [INFO] [stderr] --> src/handshake.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | unknown = 255 [INFO] [stderr] | ^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Unknown` [INFO] [stderr] [INFO] [stderr] warning: unused import: `types::block_cipher` [INFO] [stderr] --> src/crypto.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use types::block_cipher; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aes` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use aes; [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::hash::Hash` [INFO] [stderr] --> src/hash.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::hash::Hash; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `UsizeToVec` [INFO] [stderr] --> src/handshake.rs:1:95 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::{define_enum_macro, TLSPlaintext, ProtocolVersion, CipherSuite, CompressionMethod, UsizeToVec}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/main.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/x509.rs:283:20 [INFO] [stderr] | [INFO] [stderr] 283 | let (_, _, mut data) = sig_alg.read_tlv(); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/x509.rs:446:19 [INFO] [stderr] | [INFO] [stderr] 446 | let (tag, length, value) = self.read_tlv(); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_length` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `s` [INFO] [stderr] --> src/x509.rs:502:13 [INFO] [stderr] | [INFO] [stderr] 502 | let s = String::from_utf8_lossy(value).into_owned(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tag` [INFO] [stderr] --> src/x509.rs:528:22 [INFO] [stderr] | [INFO] [stderr] 528 | let (tag, _, val) = ext_seq.read_tlv(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tag` [INFO] [stderr] --> src/x509.rs:534:18 [INFO] [stderr] | [INFO] [stderr] 534 | let (tag, _, value) = ext_seq.read_tlv(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_tag` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `rounds` [INFO] [stderr] --> src/hash.rs:15:46 [INFO] [stderr] | [INFO] [stderr] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_rounds` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/hash.rs:15:14 [INFO] [stderr] | [INFO] [stderr] 15 | let (mut h, block_size, output_size, rounds, word_bytes) = hash_info(self.len); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/db.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 133 | CipherSuite::TLS_RSA_WITH_AES_256_GCM_SHA384 => (32, 4), [INFO] [stderr] | -------------------------------------------- matches all the relevant values [INFO] [stderr] 134 | _ => (0, 0) [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/db.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/db.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 233 | ContentType::alert => { TLSFragment::Alert(Alert::new()) } [INFO] [stderr] | ------------------ matches some of the same values [INFO] [stderr] 234 | ContentType::handshake => { TLSFragment::Handshake(Handshake::new(1)) } [INFO] [stderr] | ---------------------- matches some of the same values [INFO] [stderr] 235 | ContentType::application_data => { TLSFragment::ApplicationData(ApplicationData::new(vec![])) } [INFO] [stderr] | ----------------------------- matches some of the same values [INFO] [stderr] 236 | ContentType::change_cipher_spec => { TLSFragment::ChangeCipherSpec(ChangeCipherSpec::new()) } [INFO] [stderr] | ------------------------------- matches some of the same values [INFO] [stderr] 237 | _ => { panic!("Unsupported content type: {:?}", content_type) } [INFO] [stderr] | ^ collectively making this unreachable [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/db.rs:249:13 [INFO] [stderr] | [INFO] [stderr] 249 | let mut fragment = ClientKeyExchange::from_key(key); [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/handshake.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stderr] | ^ no value can reach this [INFO] [stderr] | [INFO] [stderr] note: multiple earlier patterns match some of the same values [INFO] [stderr] --> src/handshake.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 41 | HandshakeFragment::ClientHello(client_hello) => client_hello.to_vec(), [INFO] [stderr] | -------------------------------------------- matches some of the same values [INFO] [stderr] 42 | HandshakeFragment::ServerHello(server_hello) => server_hello.to_vec(), [INFO] [stderr] | -------------------------------------------- matches some of the same values [INFO] [stderr] 43 | HandshakeFragment::ClientKeyExchange(client_key_exchange) => client_key_exchange.to_vec(), [INFO] [stderr] | --------------------------------------------------------- matches some of the same values [INFO] [stderr] 44 | HandshakeFragment::Certificate(certificate) => certificate.to_vec(), [INFO] [stderr] | ------------------------------------------- matches some of the same values [INFO] [stderr] ... [INFO] [stderr] 48 | _ => panic!("Unsupported handshake fragment: {:?}", self) [INFO] [stderr] | ^ ...and 3 other patterns collectively make this unreachable [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handshake.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | let mut vec: Vec = Vec::new(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/bigint.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | let mut base = self.mod_(modulus); [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | let mut client_hello_tls = steam_manager.send_handshake(db::Handshake_type::ClientHello)?; // client hello [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | let mut server_hello_tls = steam_manager.read()?; // server hello [INFO] [stderr] | ----^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | let mut certificate_tls = steam_manager.read()?; // certificate [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | let mut client_key_exchange_tls = steam_manager.send_handshake(db::Handshake_type::ClientKeyExchange)?; // client key exchange [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | let mut change_cipher_spec_tls = steam_manager.send_spec_change()?; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | let mut finished_tls = steam_manager.send_handshake(db::Handshake_type::Finished)?; [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | let mut server_spec_change = steam_manager.read()?; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | let mut server_finished_tls = steam_manager.read()?; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | let mut data_tls = steam_manager.send_data(b"GET / HTTP/1.1\r\nHost: google.com\r\nConnection: close\r\nUser-Agent: CustomTLSClient/1... [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | let mut data_tls = steam_manager.read()?; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: type `AlgorithmIdentifier` is more private than the item `Certificate::signatureAlgorithm` [INFO] [stderr] --> src/x509.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `Certificate::signatureAlgorithm` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | struct AlgorithmIdentifier { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: `#[warn(private_interfaces)]` on by default [INFO] [stderr] [INFO] [stderr] warning: type `AlgorithmIdentifier` is more private than the item `TBSCertificate::signature` [INFO] [stderr] --> src/x509.rs:191:5 [INFO] [stderr] | [INFO] [stderr] 191 | pub signature: AlgorithmIdentifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::signature` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | struct AlgorithmIdentifier { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `Validity` is more private than the item `TBSCertificate::validity` [INFO] [stderr] --> src/x509.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | pub validity: Validity, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::validity` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:302:1 [INFO] [stderr] | [INFO] [stderr] 302 | struct Validity { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `Extensions` is more private than the item `TBSCertificate::extensions` [INFO] [stderr] --> src/x509.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | pub extensions: Extensions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ field `TBSCertificate::extensions` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:317:1 [INFO] [stderr] | [INFO] [stderr] 317 | struct Extensions { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `AlgorithmIdentifier` is more private than the item `SubjectPublicKeyInfo::algorithm` [INFO] [stderr] --> src/x509.rs:359:5 [INFO] [stderr] | [INFO] [stderr] 359 | pub algorithm: AlgorithmIdentifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ field `SubjectPublicKeyInfo::algorithm` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `AlgorithmIdentifier` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:264:1 [INFO] [stderr] | [INFO] [stderr] 264 | struct AlgorithmIdentifier { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `Validity` is more private than the item `ASN1Parser::<'a>::parse_validity` [INFO] [stderr] --> src/x509.rs:506:5 [INFO] [stderr] | [INFO] [stderr] 506 | pub fn parse_validity(&mut self) -> Validity { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_validity` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Validity` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:302:1 [INFO] [stderr] | [INFO] [stderr] 302 | struct Validity { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `Extensions` is more private than the item `ASN1Parser::<'a>::parse_extensions` [INFO] [stderr] --> src/x509.rs:514:5 [INFO] [stderr] | [INFO] [stderr] 514 | pub fn parse_extensions(&mut self) -> Extensions { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `ASN1Parser::<'a>::parse_extensions` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Extensions` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/x509.rs:317:1 [INFO] [stderr] | [INFO] [stderr] 317 | struct Extensions { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `ChangeCipherSpec` is more private than the item `TLSFragment::ChangeCipherSpec::0` [INFO] [stderr] --> src/db.rs:193:22 [INFO] [stderr] | [INFO] [stderr] 193 | ChangeCipherSpec(ChangeCipherSpec), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ field `TLSFragment::ChangeCipherSpec::0` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `ChangeCipherSpec` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/db.rs:151:1 [INFO] [stderr] | [INFO] [stderr] 151 | struct ChangeCipherSpec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type `Alert` is more private than the item `TLSFragment::Alert::0` [INFO] [stderr] --> src/db.rs:194:11 [INFO] [stderr] | [INFO] [stderr] 194 | Alert(Alert), [INFO] [stderr] | ^^^^^ field `TLSFragment::Alert::0` is reachable at visibility `pub(crate)` [INFO] [stderr] | [INFO] [stderr] note: but type `Alert` is only usable at visibility `pub(self)` [INFO] [stderr] --> src/db.rs:165:1 [INFO] [stderr] | [INFO] [stderr] 165 | struct Alert { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait `VecCertificateSequence` is never used [INFO] [stderr] --> src/x509.rs:36:11 [INFO] [stderr] | [INFO] [stderr] 36 | pub trait VecCertificateSequence { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stderr] --> src/db.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 48 | impl $name { [INFO] [stderr] | ---------- associated items in this implementation [INFO] [stderr] 49 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | pub fn iter() -> Vec{ [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 99 | / define_enum_macro! { [INFO] [stderr] 100 | | #[derive(Debug)] [INFO] [stderr] 101 | | pub enum ContentType { [INFO] [stderr] 102 | | change_cipher_spec = 20, [INFO] [stderr] ... | [INFO] [stderr] 107 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: associated function `from_u32` is never used [INFO] [stderr] --> src/db.rs:62:20 [INFO] [stderr] | [INFO] [stderr] 48 | impl $name { [INFO] [stderr] | ---------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 109 | / define_enum_macro! { [INFO] [stderr] 110 | | #[derive(Debug)] [INFO] [stderr] 111 | | pub enum CipherSuite { [INFO] [stderr] ... | [INFO] [stderr] 127 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: associated items `to_string`, `from_u32`, and `iter` are never used [INFO] [stderr] --> src/db.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 48 | impl $name { [INFO] [stderr] | ---------- associated items in this implementation [INFO] [stderr] 49 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 62 | pub fn from_u32(value: u32) -> Option { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | pub fn iter() -> Vec{ [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 143 | / define_enum_macro!( [INFO] [stderr] 144 | | #[derive(Debug)] [INFO] [stderr] 145 | | pub enum CompressionMethod { [INFO] [stderr] 146 | | null = 0, [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | ); [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: trait `UsizeToVec` is never used [INFO] [stderr] --> src/db.rs:318:11 [INFO] [stderr] | [INFO] [stderr] 318 | pub trait UsizeToVec { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `ServerHello` and `Certificate` are never constructed [INFO] [stderr] --> src/db.rs:337:5 [INFO] [stderr] | [INFO] [stderr] 335 | pub enum Handshake_type { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] 336 | ClientHello = 0x01, [INFO] [stderr] 337 | ServerHello = 0x02, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 338 | Certificate = 0x0b, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `Handshake_type` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `from_u8`, `to_u8`, and `to_string` are never used [INFO] [stderr] --> src/db.rs:344:12 [INFO] [stderr] | [INFO] [stderr] 343 | impl Handshake_type { [INFO] [stderr] | ------------------- associated items in this implementation [INFO] [stderr] 344 | pub fn from_u8(value: u8) -> Option { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 355 | pub fn to_u8(self) -> u8 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 365 | pub fn to_string(self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `send` is never used [INFO] [stderr] --> src/db.rs:410:12 [INFO] [stderr] | [INFO] [stderr] 403 | impl TLSStreamManager { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 410 | pub fn send(&mut self, tls: &mut TLSPlaintext) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `write_tls` is never used [INFO] [stderr] --> src/net.rs:7:8 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn write_tls(stream: &mut TcpStream, tls: &mut db::TLSPlaintext) -> Result<(), Error> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `read_tls` is never used [INFO] [stderr] --> src/net.rs:15:8 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn read_tls(stream: &mut TcpStream) -> Result { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `to_string` and `iter` are never used [INFO] [stderr] --> src/db.rs:49:20 [INFO] [stderr] | [INFO] [stderr] 48 | impl $name { [INFO] [stderr] | ---------- associated items in this implementation [INFO] [stderr] 49 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | pub fn iter() -> Vec{ [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/handshake.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | / define_enum_macro! { [INFO] [stderr] 7 | | #[derive(Debug)] [INFO] [stderr] 8 | | pub enum HandshakeType { [INFO] [stderr] 9 | | hello_request = 0, [INFO] [stderr] ... | [INFO] [stderr] 21 | | } [INFO] [stderr] | |_- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: this warning originates in the macro `define_enum_macro` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: associated function `new` is never used [INFO] [stderr] --> src/handshake.rs:263:12 [INFO] [stderr] | [INFO] [stderr] 262 | impl HandshakeCertificate { [INFO] [stderr] | ------------------------- associated function in this implementation [INFO] [stderr] 263 | pub fn new() -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `add`, `complement`, and `shr1` are never used [INFO] [stderr] --> src/bigint.rs:87:12 [INFO] [stderr] | [INFO] [stderr] 6 | impl BigInt { [INFO] [stderr] | ----------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 87 | pub fn add(&self, other: &Self) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 108 | pub fn complement(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 146 | pub fn shr1(a: &[u8]) -> Vec { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: trait method `parseLength` should have a snake case name [INFO] [stderr] --> src/x509.rs:37:8 [INFO] [stderr] | [INFO] [stderr] 37 | fn parseLength(&self) -> (u32, Vec); [INFO] [stderr] | ^^^^^^^^^^^ help: convert the identifier to snake case: `parse_length` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stderr] --> src/x509.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | pub tbsCertificate: TBSCertificate, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stderr] [INFO] [stderr] warning: structure field `signatureAlgorithm` should have a snake case name [INFO] [stderr] --> src/x509.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | pub signatureAlgorithm: AlgorithmIdentifier, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_algorithm` [INFO] [stderr] [INFO] [stderr] warning: structure field `signatureValue` should have a snake case name [INFO] [stderr] --> src/x509.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | pub signatureValue: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `signature_value` [INFO] [stderr] [INFO] [stderr] warning: structure field `serialNumber` should have a snake case name [INFO] [stderr] --> src/x509.rs:190:5 [INFO] [stderr] | [INFO] [stderr] 190 | serialNumber: Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: convert the identifier to snake case: `serial_number` [INFO] [stderr] [INFO] [stderr] warning: structure field `issuerUniqueID` should have a snake case name [INFO] [stderr] --> src/x509.rs:196:9 [INFO] [stderr] | [INFO] [stderr] 196 | pub issuerUniqueID: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `issuer_unique_id` [INFO] [stderr] [INFO] [stderr] warning: structure field `subjectUniqueID` should have a snake case name [INFO] [stderr] --> src/x509.rs:197:9 [INFO] [stderr] | [INFO] [stderr] 197 | pub subjectUniqueID: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `subject_unique_id` [INFO] [stderr] [INFO] [stderr] warning: structure field `notBefore` should have a snake case name [INFO] [stderr] --> src/x509.rs:303:5 [INFO] [stderr] | [INFO] [stderr] 303 | notBefore: time_struct, [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `not_before` [INFO] [stderr] [INFO] [stderr] warning: structure field `notAfter` should have a snake case name [INFO] [stderr] --> src/x509.rs:304:5 [INFO] [stderr] | [INFO] [stderr] 304 | notAfter: time_struct, [INFO] [stderr] | ^^^^^^^^ help: convert the identifier to snake case: `not_after` [INFO] [stderr] [INFO] [stderr] warning: structure field `publicKey` should have a snake case name [INFO] [stderr] --> src/x509.rs:360:9 [INFO] [stderr] | [INFO] [stderr] 360 | pub publicKey: PublicKey, [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stderr] [INFO] [stderr] warning: variable `publicKey` should have a snake case name [INFO] [stderr] --> src/x509.rs:391:25 [INFO] [stderr] | [INFO] [stderr] 391 | pub fn parse_public_key(publicKey: &[u8]) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^^ help: convert the identifier to snake case: `public_key` [INFO] [stderr] [INFO] [stderr] warning: variable `publicKey_seq` should have a snake case name [INFO] [stderr] --> src/x509.rs:392:13 [INFO] [stderr] | [INFO] [stderr] 392 | let mut publicKey_seq = ASN1Parser::new(publicKey) [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `public_key_seq` [INFO] [stderr] [INFO] [stderr] warning: variable `handshakeType` should have a snake case name [INFO] [stderr] --> src/handshake.rs:209:16 [INFO] [stderr] | [INFO] [stderr] 209 | pub fn new(handshakeType: u32) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^ help: convert the identifier to snake case: `handshake_type` [INFO] [stderr] [INFO] [stderr] warning: structure field `tbsCertificate` should have a snake case name [INFO] [stderr] --> src/handshake.rs:259:9 [INFO] [stderr] | [INFO] [stderr] 259 | pub tbsCertificate: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `tbs_certificate` [INFO] [stderr] [INFO] [stderr] warning: `tls_layer` (bin "tls_layer" test) generated 95 warnings (run `cargo fix --bin "tls_layer" --tests` to apply 27 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.22s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/tls_layer-e0104874686b6f19) [INFO] running `Command { std: "docker" "inspect" "cb565776e5a926d61fa0317cf2419dde62127c3b01ea732b84926cc96c79f454", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cb565776e5a926d61fa0317cf2419dde62127c3b01ea732b84926cc96c79f454", kill_on_drop: false }` [INFO] [stdout] cb565776e5a926d61fa0317cf2419dde62127c3b01ea732b84926cc96c79f454