REVIEW-001 (M0) L5s: a code valid for ±90s could be replayed. TOTP is a login fallback (D-005) and the only factor the bootstrap admin has (D-041), so a code observed once (shoulder-surfed, phished, in a log) must not work twice. Track the highest accepted counter per identity and refuse any counter that is not strictly newer. The search is newest-first and compares in constant time; a replay is reported as ErrInvalidCode — indistinguishable from a wrong code, so the response is not an oracle (A3). A fresh secret (re-enrollment) resets the counter. |
||
|---|---|---|
| .. | ||
| flow | ||
| totp | ||
| webauthn | ||
| acceptance_test.go | ||
| auth.go | ||
| credentials.go | ||
| identities.go | ||
| sealer.go | ||
| sealer_test.go | ||
| sessions.go | ||
| totp.go | ||