Skip to content

v3.3.3 — E2EE keychain and transport fixes

Latest

Choose a tag to compare

@EdamAme-x EdamAme-x released this 06 Sep 03:44
0e1d6d0

Fixes

  • Fix multi-generation E2EE login key selection (#229): match keyId, validate pairs, preserve historical keys, and verify against the server only after authentication. Explicit mismatch does not trigger automatic key replacement.
  • Apply BaseClient.config.timeout to Node RPC and HTTP/2 PUSH TCP/TLS connections (#230), preserving custom fetch and avoiding global dispatcher changes.
  • Forward cancellation through encrypted LEGY requests (#231); handle PUSH connect failures without unhandled rejections (#232).
  • Retrieve/cache the group shared-key generation requested by each message (#233).
  • Correct isEdited for messages fetched from history (#228).
  • Report failed OBS downloads as HTTP-status ObsError before decryption/JSON parsing (#234).
  • Harden APK schema extraction gates and reproducible Thrift generation, including Windows newline handling (#235).

Upgrade notes

If your existing E2EE storage was written with the wrong key pair, perform a new QR/password login after upgrading to transfer the correct keychain. Do not clear all storage or manually register new E2EE keys. Auth-token-only login cannot recover missing private keys.

Low-level decryptKeyChain callers must supply keyId for multi-entry chains; ambiguous selection now fails safely. verifyStoredKeyAgainstServer returns true only for an actual match; unavailable checks are not positive verification.

#211 still needs confirmation on the affected account; #198 (1:1 call T103) is not resolved by this release.

Verification

296 Deno tests passed, 2 real Node transport regressions passed, and PR CI / JSR dry-runs passed. No affected-user credentials or real account key material were used.

Integrated in #236. Thanks to @kyo5uke and @frankekn.

Full changelog