v3.1.5 - E2EE QR Login Key Verification Fix
What's Changed
Bug Fixes
- fix(e2ee): verify transferred key pair after QR login and fallback to fresh registration (#197, fixes #195)
- After QR login, accounts with pre-existing E2EE identity keys could end up with a stored private key that doesn't match the server-registered public key, causing deterministic "Unsupported state or unable to authenticate data" GCM errors on text message decryption
decodeE2EEKeyV1now validates decoded keys before storing (privKey→pubKey derivation + server-registered pubKey check)- Falls back to registering a fresh Curve25519 key pair when verification fails
- Emits
e2ee:keyMismatchevent for observability
New Features
- feat(relation): add
findContactBySearchIdOrTicketV3andaddFriendByUserId(#196)RelationService.findContactBySearchIdOrTicketV3({ searchId })— resolves a Contact from a LINE ID via RE4RelationService.addFriendByUserId({ userId })— searches by id then adds as friendRelationService.findContactByPhoneV3({ phoneNumber })andaddFriendByPhone({ phoneNumber })
Full Changelog: v3.1.4...v3.1.5