bb0d060135450e2ed87a22b067a6481b975e30bc
Independent post-port review (behavior-preservation + security + coverage focus; the alknet sources consulted only as prior art). Findings: - S-1 [major, security posture]: AcceptAnyCertVerifier does not verify the client CertificateVerify (no proof-of-possession) — executable probe confirms a victim-cert + attacker-key handshake completes and the server extracts the victim's fingerprint (both X.509 and RFC 7250 SPKI variants). Doc/ADR remediation, not a behavior change (the shape is the alknet-inherited design). - C-1..C-4 [minor]: self-signed cert validity 1975-4096 undocumented; acme-tls/1 duplicated if caller supplies it; empty ACME domains construct without validation; malformed/case-shifted fingerprint pins reject at handshake with no config-layer doc. - U-1..U-3 [minor, coverage]: ACME event-loop body uncovered (23 lines); resolvers' resolve() methods uncovered; zero handshake-level tests (fail-closed/pin/raw-key paths asserted only structurally); webpki-roots fallback loop nondeterministically covered. - N-1..N-7: doc nits, two non-findings (dangerous()-downgrade suspect retracted; zeroize marker verified inert via ed25519-dalek default features), packaging noise (tasks/ + docs/architecture/ ship), requires_raw_public_keys interaction note (raw-only clients fail against request-but-don't-require), http:// custom ACME directory warning. - Behavior preservation: full src/ diff vs alknet-tls + alknet-core — zero unrecorded behavioral divergences (Part B). Verification: cargo test 68 default / 75 --all-features; clippy -D warnings (both configs); fmt --check; cargo doc --no-deps; cargo publish --dry-run --allow-dirty; cargo llvm-cov --all-features 95.32% line / 94.48% functions, uncovered-line inventory in the doc; temporary review probes (fingerprint pins, DER adversarial battery, empty-PEM, ACME construction edges, impersonation handshake) all run and deleted after the run.
Description
No description provided
766 KiB
Languages
Rust
100%