forked from c-fu/arah2
- GREENs the plan-01 RED vector suite: T1-T7 all PASS (10/10 cases) - Telegram-verified two-step key derivation: secretKey = HMAC(botToken, key=salt), checkHex = HMAC(dataCheckString, secretKey bytes) - Sort by field name, hash/signature excluded, values decoded once with '+' literal (no URLSearchParams) - Rejection precedence: malformed (hash/user.id/auth_date) -> tampered (timing-safe hex compare) -> stale (>900s, D-13) - Hand-rolled WebAppInitUser/WebAppInitChat types (grammy ships none); zero deps of any kind — pure (raw, botToken, opts)