Share-токен приватного видео считался в legacy/keygen.a только от video id, без ключа: seed=(seed*17+42)%62, out[i]=alpha[seed]. После первой итерации состояние схлопывалось в id%62, то есть на весь сервис приходилось 62 различных токена. Разбирать бинарь не требовалось: 62 своих приватных видео дают таблицу токенов ко всем чужим. Форж токена => POST /access => строка в таблице access => haveAccess() отдаёт и description, и субтитры, и .webm совершенно легально, мимо патча /vtt/. Теперь HMAC-SHA256(secret, vid), те же сигнатуры и тот же 30-символьный base62, cgo и keygen.a из сборки выпали (образ собирается под любую архитектуру). Сверка constant-time через hmac.Equal. Совместимость со старыми токенами намеренно не сохранена: раунды ещё не начинались, приватных видео нет. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>