You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(yandex): full password and credit card decryption
Implement Yandex's decryption protocol end-to-end. The existing skeleton queried
the wrong URL column (action_url instead of origin_url), so the per-row AAD
never matched the one Yandex seals GCM with, and every row decrypted to empty
plaintext — that's why #105, #462, #476 kept surfacing against the "supported"
browser.
Each Ya Passman Data / Ya Credit Cards DB holds a per-DB data key inside
meta.local_encryptor_data: a protobuf-framed 96-byte blob encrypted under the
Chromium master key. The row-level data (password_value, records.private_data)
is AES-GCM with per-row AAD — SHA1 over five form fields for passwords, the
row's guid for cards. Credit cards live in records(guid, public_data,
private_data) as two JSON blobs, not Chromium's credit_cards table, so
CreditCardEntry gains optional CVC and Comment fields.
Profiles guarded by a browser-level master password (non-empty
active_keys.sealed_key) are detected and skipped with a warning; RSA-OAEP
unseal is deferred. Linux is out of scope: Yandex Browser has no Linux release.
Validated on a Windows 10 sandbox with a real Yandex profile: two stored
passwords decrypt to readable ASCII (stackoverflow and douban); full-sweep
regression across 13 browsers is unchanged (703 cookies, 0 non-ASCII).
Design documented in RFC-012.
Closes#90Closes#105Closes#462Closes#476
0 commit comments