ModernUO/Projects
Kamron Batman 970cd42699 fix(accounts): derive the password phrase from the target algorithm
SetPassword salted the phrase with the username according to the OUTGOING
algorithm but stored the result under the INCOMING one. SHA1 and SHA2 prepend
the username; Argon2 and PBKDF2 do not. Two live lockouts followed:

- A ServUO-imported SHA2 account logging in with the default Argon2 config was
  'upgraded' to argon2(username + password) and tagged Argon2. The next login
  rebuilt the phrase as bare password and could never match. One successful
  login, then permanent lockout.
- SetPassword also runs from the Account constructor, before _passwordAlgorithm
  is assigned, so it is still None. Creating an account under SHA1 or SHA2
  hashed the bare password and tagged it with an algorithm that re-adds the
  username -- a brand-new account that could never log in.

Derive the phrase from the algorithm being written. Also configures Accounts
persistence in the UOContent test fixture so an Account can be constructed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 16:24:37 -07:00
..
Application fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
BuildTool fix: Require only runtime packages on Linux, and check ICU and tzdata the way the runtime does (#2561) 2026-08-07 15:03:08 -07:00
Logger fix: Bumps dependencies. (#2531) 2026-07-14 15:17:55 -07:00
Server fix: Require only runtime packages on Linux, and check ICU and tzdata the way the runtime does (#2561) 2026-08-07 15:03:08 -07:00
Server.Tests feat(network): allowlist false-positive IPs, escalate on behavior (#2556) 2026-07-30 23:12:17 -07:00
UOContent fix(accounts): derive the password phrase from the target algorithm 2026-08-07 16:24:37 -07:00
UOContent.Tests fix(accounts): derive the password phrase from the target algorithm 2026-08-07 16:24:37 -07:00