Commit Graph

38 Commits (c6d461c579342ca4a0b1357176c006900b022e6a)

Author SHA1 Message Date
Lilia ae190fed44
Profiles (#1453)
* Add AES-GCM encryption for profiles

With tests.

* Add profileKey to DataMessage protobuf

// FREEBIE

* Decrypt and save profile names

// FREEBIE

* Save incoming profile keys

* Move pad/unpad to crypto module

// FREEBIE

* Support fetching avatars from the cdn

// FREEBIE

* Translate failed authentication errors

When AES-GCM authentication fails, webcrypto returns a very generic error. The
same error is thrown for invalid length inputs, but our earlier checks in
decryptProfile should rule out those failure modes and leave us safe to assume
that we either had bad ciphertext or the wrong key.

// FREEBIE

* Handle profile avatars (wip) and log decrypt errors

// FREEBIE

* Display profile avatars

Synced contact avatars will still override profile avatars.

* Display profile names in convo list

Only if we don't have a synced contact name.

// FREEBIE

* Make cdn url an environment config

Use different ones for staging and production

// FREEBIE

* Display profile name in conversation header

* Display profile name in group messages

* Update conversation header if profile avatar changes

// FREEBIE

* Style profile names small with ~

* Save profileKeys from contact sync messages

// FREEBIE

* Save profile keys from provisioning messages

For standalone accounts, generate a random profile key.

// FREEBIE

* Special case for one-time sync of our profile key

Android will use a contact sync message to sync a profile key from Android
clients who have just upgraded and generated their profile key. Normally we
should receive this data in a provisioning message.

// FREEBIE

* Infer profile sharing from synced data messages

* Populate profile keys on outgoing messages

Requires that `profileSharing` be set on the conversation.

// FREEBIE

* Support for the profile key update flag

When receiving a message with this flag, don't init a message record, just
process the profile key and move on.

// FREEBIE

* Display profile names in group member list

* Refresh contact's profile on profile key changes

// FREEBIE

* Catch errors on profile save

// FREEBIE

* Save our own synced contact info

Don't return early if we get a contact sync for our own number

// FREEBIE
8 years ago
Scott Nonnenberg f414c13220 Protos: Update to optional verified in sync (was: repeated)
This means that we no longer need to iterate.

FREEBIE
8 years ago
lilia 1e93b12b90 Update protos with support for null messages
// FREEBIE
8 years ago
Scott Nonnenberg 20f4d48991 Protos: Move to latest iteration of verification protos
FREEBIE
8 years ago
Scott Nonnenberg 3360f65fac Protos: Update spacing to match libsignal-service-java
FREEBIE
8 years ago
Scott Nonnenberg 0caba71901 Protos: Re-order ContactDetails and GroupDetails to match iOS
FREEBIE
8 years ago
Scott Nonnenberg 3d65581c30 Protos: Put avatar in each message type like iOS/Android
FREEBIE
8 years ago
Scott Nonnenberg b940988da5 Protos: Add support for synchronizing verification of contacts
FREEBIE
8 years ago
Scott Nonnenberg 0eacb8780a Protos: Add support for requesting group context
FREEBIE
8 years ago
Scott Nonnenberg 165217d020 Protos: Add support for the contact sync end event
FREEBIE
8 years ago
Scott Nonnenberg 7b62c4184e Protos: Sync spacing with iOS version of protos
FREEBIE
8 years ago
lilia 6055e9ce55 Add voice note flag to protobufs 8 years ago
lilia fc514aa96f Add support for attachment file names
Send, receive, and save attachment filenames. Use them as suggested
names when saving files.

// FREEBIE
8 years ago
lilia 43de0cc2ec Add attachment digests
// FREEBIE
8 years ago
lilia c8a0fe5a92 Add CallMessage protos 8 years ago
lilia b3e932dce8 Add protocol support for disappearing messages 9 years ago
lilia b1afb79a14 Set theme based on master device userAgent
// FREEBIE
9 years ago
lilia f610233ef6 Add support for syncing blocked numbers
// FREEBIE
9 years ago
lilia 53f20640af Add support for syncing colors
// FREEBIE
9 years ago
lilia 4169336776 Update libsignal protobuf package name
// FREEBIE
9 years ago
lilia 781ada64ca Add libtextsecure support for syncing read messages
Plumbing for sending and receiving a new sync protobuf for marking
messages read on/from my other devices.

// FREEBIE
9 years ago
lilia 010297f4c5 Track groups I've left
// FREEBIE
9 years ago
lilia 5925c2fe84 Support for group sync
Protocol and handling is all analogous to contact sync: Multiple
GroupDetails structs are packed into a single attachment blob and parsed
on our end. We don't display the synced groups in the conversation list
until a new message is sent to one of them.

// FREEBIE
10 years ago
lilia 2f935dfd5e Add contact sync request protocol 10 years ago
lilia a833d62a71 Implement sync protocol changes
Update protobuf definitions and refactor message receive and decrypt
codepath to support new protocol, including various flavors of sync
messages (sent messages, contacts, and groups).

Also cleans up background.js and lets libtextsecure internalize
textsecure.processDecrypted and ensure that it is called before handing
DataMessages off to the application.

The Envelope structure now has a generic content field and a
legacyMessage field for backwards compatibility. We'll send outgoing
messages as legacy messages, and sync messages as "content" while
continuing to support both legacy and non-legacy messages on the receive
side until old clients have a chance to transition.
10 years ago
Matt Corallo 2277b41639 Remove non-existant device messages 10 years ago
lilia 104b49c371 Add SyncMessageContext
The sync field on a push message content indicates that this is a sync
message from a master or sibling device and what conversation it belongs
to.
10 years ago
Matt Corallo 184b1ec89c Move protocol protobufs to libaxolotl/, handling DeviceControl 10 years ago
Matt Corallo 02d0c58e5e Mostly done device-bringup stuff 10 years ago
Matt Corallo 29b2ffc769 Update to real server provisioning API 10 years ago
lilia 7f04439b37 New websocket protocol 11 years ago
Matt Corallo f6f35c5b61 Fix a missing function and dont blow up on delivery receipts 11 years ago
Matt Corallo a6b0d1f84b Add entirely untested secondary device init 11 years ago
Matt Corallo eab0911d3d I lied, there is no verification tag 11 years ago
Matt Corallo 1d2e252595 Update WhisperTextProtocol for v3 11 years ago
Matt Corallo 288d66b4a3 New protos with group messaging stuff 11 years ago
Matt Corallo fe570c754a Genericify initSession (and break it for alice) 11 years ago
Matt Corallo eec4c66ef6 Fixup dir structure 11 years ago