You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* ci: bind equality evidence to exact release binaries
Inspect production comparison paths after final linking and bind call closure, timing, formal results, provenance, and artifacts to the exact release identity. Reject ancestor evidence for a different release commit.
* build: migrate to cargo-rail 0.18
Replace removed config synchronization with semantic migration checks while preserving disabled MSRV policy, push-only release effects, and the tagged v5.1 action contract.
formal_limitation = "BINSEC owner kernels cover the representative 16-, 32-, 48-, and 64-byte production monomorphizations. The 28- and ML-KEM-sized owner monomorphizations require linked-binary disassembly/closure and heuristics on every release lane; BINSEC proof kernels are deferred because they add no caller-selectable shape and the large copies exceed the present proof budget."
46
+
downstream_limitation = "Evidence binds this final linked harness executable and its exact compiler/linker configuration. It does not claim constant-time behavior for arbitrary downstream binaries that rebuild or inline rscrypto differently. Returning bool remains the T3.4 declassification limitation."
47
+
48
+
[[asm_public_operand]]
49
+
primitive = "password.argon2i"
50
+
root = "ct_entry_argon2i_verify"
51
+
symbol = "rscrypto::auth::argon2::argon2_hash_with_kernel_inner"
52
+
kind = "variable_latency_division"
53
+
max_count = 2
54
+
source = "src/auth/argon2/mod.rs:1751"
55
+
rationale = "The divisions derive matrix dimensions and iteration bounds from validated public Argon2Params and the caller-visible output length. Password and salt contents do not feed the divisors."
56
+
57
+
[[asm_public_operand]]
58
+
primitive = "password.argon2i"
59
+
root = "ct_entry_argon2i_verify"
60
+
symbol = "rscrypto::auth::argon2::fill_segment_inner"
61
+
kind = "variable_latency_division"
62
+
max_count = 2
63
+
source = "src/auth/argon2/mod.rs:1434"
64
+
rationale = "For the Argon2i retained root, address generation and segment positions are data-independent; these divisions use public lane, segment, and matrix dimensions rather than password-derived contents."
public_length = "Widths derive from the public modulus, digest algorithm, DER/padding profile, or caller-visible encoded length."
43
101
secret_contents = "Private representatives, decoded plaintext/hash fields, or validation intermediates are compared without content-dependent exits after public shape checks."
44
102
tests = "RSA official/Wycheproof/differential/private-operation tests and RSA CT harness/DudeCT cases."
103
+
evidence_symbols = [
104
+
"ct_entry_rsa_pkcs1v15_sign_fixed_blinding",
105
+
"ct_entry_rsa_pss_sign_fixed_blinding",
106
+
"ct_entry_rsa_oaep_decrypt_fixed_blinding",
107
+
"ct_entry_rsa_pkcs1v15_decrypt_fixed_blinding",
108
+
"ct_entry_rsa_private_key_pkcs8_roundtrip",
109
+
]
110
+
evidenced_call_count = 7
111
+
limited_call_count = 5
112
+
limitation = "The two Miller-Rabin key-generation comparisons and three public verification comparisons are not reachable from the retained release equality roots. Their lengths remain public and their source traversal is audited, but T3.3 does not convert that source review into linked-binary evidence."
notes = "Public callers select a semantic owner, never a raw secret length. Source structure and black_box are not machine-code proofs; T3.3 owns exact release-binary evidence. Returning bool remains an explicit T3.4 limitation."
0 commit comments