Skip to content

fix(auth): fall back for Turtle security extensions#16

Merged
paleophyte merged 1 commit into
masterfrom
fix/turtle-auth-protocol-fallback
Jul 16, 2026
Merged

fix(auth): fall back for Turtle security extensions#16
paleophyte merged 1 commit into
masterfrom
fix/turtle-auth-protocol-fallback

Conversation

@paleophyte

@paleophyte paleophyte commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

  • My Turtle WoW server really doesn't want to accept auth protocol-3.
  • Keep Turtle's configured auth protocol preference at 3, but treat v8 security-extension flags on a protocol-3 challenge as a protocol mismatch so the UI fallback retries protocol 8.
  • Stop writing a v8 security-flags byte in the legacy LOGON_PROOF packet shape.
  • Add a regression check for legacy vs v8 proof packet sizes.

Why

Turtle can advertise PIN/security extensions even when the regular client starts with the vanilla-family protocol-3 preference. Previously the client sent a doomed legacy proof after seeing those v8-only flags, producing a login failure before fallback could happen.

Validation

  • cmake --build build --target test_realm_list --config Debug
  • ./build/bin/test_realm_list.exe
  • WOWEE_LOG_LEVEL=debug ./build/bin/wowee
...
[2026-07-15 17:23:17.036] [DEBUG] Handling LOGON_CHALLENGE response
[2026-07-15 17:23:17.036] [INFO ] LOGON_CHALLENGE response: Success
[2026-07-15 17:23:17.036] [DEBUG] Parsed LOGON_CHALLENGE response:
[2026-07-15 17:23:17.036] [DEBUG]   B size: 32 bytes
[2026-07-15 17:23:17.036] [DEBUG]   g size: 1 bytes
[2026-07-15 17:23:17.036] [DEBUG]   N size: 32 bytes
[2026-07-15 17:23:17.036] [DEBUG]   salt size: 32 bytes
[2026-07-15 17:23:17.036] [DEBUG]   Security flags: 1
[2026-07-15 17:23:17.036] [DEBUG]   PIN grid seed: 2613764122
[2026-07-15 17:23:17.036] [WARN ] Server sent security flags: 0x1
[2026-07-15 17:23:17.036] [WARN ]   PIN required
[2026-07-15 17:23:17.036] [INFO ] Challenge: N=32B g=1B salt=32B secFlags=0x1
[2026-07-15 17:23:17.036] [ERROR] Authentication failed: Server requires auth protocol 8 security extensions
[2026-07-15 17:23:17.036] [DEBUG] Auth state: 2 -> 10
[2026-07-15 17:23:17.037] [INFO ] Auth failed on protocol 3 (Server requires auth protocol 8 security extensions) - retrying with protocol 8
...
[2026-07-15 17:23:19.315] [INFO ] Server proof verified successfully!
[2026-07-15 17:23:19.315] [DEBUG] Auth state: 6 -> 7
[2026-07-15 17:23:19.315] [INFO ] ========================================
[2026-07-15 17:23:19.315] [INFO ]    AUTHENTICATION SUCCESSFUL!
[2026-07-15 17:23:19.315] [INFO ] ========================================

@paleophyte
paleophyte force-pushed the fix/turtle-auth-protocol-fallback branch 4 times, most recently from c3df594 to 6a216c7 Compare July 15, 2026 22:13
@paleophyte
paleophyte force-pushed the fix/turtle-auth-protocol-fallback branch from 6a216c7 to d574339 Compare July 15, 2026 22:20
@paleophyte
paleophyte marked this pull request as ready for review July 16, 2026 12:38
@paleophyte
paleophyte merged commit 4c9691f into master Jul 16, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant