feat: PIN d action sensible P2 (PinVerifier RG-T13) #13

Merged
Corentin merged 1 commit from feat/p2-pin into dev 2026-06-15 21:00:12 +02:00
Owner

PIN d'action sensible (RG-T13) : primitif de verification.

  • PinVerifier::verify(user_id, pin) contre user.pin_hash (argon2id, default-deny, filtre is_active = 1).
    Decoy argon2id sur le chemin sans PIN -> parite de timing (anti-enumeration, meme posture que l'auth).
  • meetsLengthPolicy : chiffres ASCII, bornes min/max (STAFF_PIN_MIN/MAX_LENGTH, RG-T18).
  • Primitif reutilise par chaque operation sensible en P3 ; flux PIN + audit_log dans la meme
    transaction deja specifie (docs/uml/security-sequence.md). Non cable a une route en P2 (mirror
    SessionGuard/Authorizer).

Qualite : 119 tests (unit + integration DB auto-skippee, dont la garde du filtre is_active contre le
vrai schema), PHPStan L6 vert. Revue adversariale passee (3 findings corriges : decoy de timing,
politique de longueur durcie, couverture du filtre is_active ; 2 refutes : throttle = concern P3, cast redondant).

Base volontaire : dev.

PIN d'action sensible (RG-T13) : primitif de verification. - PinVerifier::verify(user_id, pin) contre user.pin_hash (argon2id, default-deny, filtre is_active = 1). Decoy argon2id sur le chemin sans PIN -> parite de timing (anti-enumeration, meme posture que l'auth). - meetsLengthPolicy : chiffres ASCII, bornes min/max (STAFF_PIN_MIN/MAX_LENGTH, RG-T18). - Primitif reutilise par chaque operation sensible en P3 ; flux PIN + audit_log dans la meme transaction deja specifie (docs/uml/security-sequence.md). Non cable a une route en P2 (mirror SessionGuard/Authorizer). Qualite : 119 tests (unit + integration DB auto-skippee, dont la garde du filtre is_active contre le vrai schema), PHPStan L6 vert. Revue adversariale passee (3 findings corriges : decoy de timing, politique de longueur durcie, couverture du filtre is_active ; 2 refutes : throttle = concern P3, cast redondant). Base volontaire : dev.
Corentin added 1 commit 2026-06-15 20:57:19 +02:00
feat(pin): primitif de verification du PIN d'action sensible (RG-T13)
Some checks failed
CI / secret-scan (push) Successful in 9s
CI / php-lint (push) Successful in 17s
CI / static-tests (pull_request) Successful in 29s
CI / auto-merge (push) Has been skipped
CI / static-tests (push) Successful in 28s
CI / secret-scan (pull_request) Successful in 7s
CI / php-lint (pull_request) Successful in 16s
CI / auto-merge (pull_request) Failing after 7s
75dd98668c
PinVerifier verifie un PIN soumis contre user.pin_hash (argon2id, default-deny, filtre
is_active = 1) et porte la politique de longueur (chiffres ASCII, bornes min/max STAFF_PIN_*, RG-T18).
Primitif reutilise par chaque operation sensible en P3 (annulation, prix/TVA, suppressions, inventaire,
gestion user/RBAC, effacement PII) ; le flux PIN + audit_log dans la meme transaction est specifie
dans docs/uml/security-sequence.md. Un decoy argon2id sur le chemin sans PIN egalise le timing
(anti-enumeration). Tests unit + integration (auto-skippee), dont la garde du filtre is_active contre
le vrai schema.
Corentin added the
auto-merge
label 2026-06-15 20:57:20 +02:00
Corentin merged commit 7c35f8e2dc into dev 2026-06-15 21:00:12 +02:00
Corentin deleted branch feat/p2-pin 2026-06-15 21:00:12 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: AcadeNice/corentin_wakdo#13
No description provided.