Commit graph

305 commits

Author SHA1 Message Date
Michael Kirk 7499b3aaf0 Avatar API integration / WIP crypto scheme
Crypto Scheme:

- Name (un)padding
- WIP AES-GCM (funtioning, but need to verify against android
  implementation, and tag functionality)

Changes to avatar API:

- hard code avatar domain (cdn.signal.org)
- avatar form hands out new avatar key, invalidating old avatar
- preliminary aes-gcm integration

Also:

- New type to represent AES128 keys, rather than passing around opaque
  data blobs everywhere, we can use the compiler to help us make sure
  we're passing compliant keying material.

- Started using factory pattern for API requests. This is intended to be
  a lighter weight way to implement new API requests, rather than the
  current 1-method class ceremony.

// FREEBIE
2017-08-14 12:45:37 -04:00
Michael Kirk fc3f9ae396 Replace server sent avatar URL with hardcoded
// FREEBIE
2017-08-11 11:19:05 -04:00
Michael Kirk 9fdc3202af White listing must happen on main thread
followup to: ee613e4889

Again, this solves a crash, but we'll want to revisit the perf
implications.

// FREEBIE
2017-08-11 09:11:55 -04:00
Michael Kirk 40b99a15ed Fix up some tests
Included plausible test implementation for an in-memory profile manager.

Note two tests remain failing (they've been failing for a while)

// FREEBIE
2017-08-09 12:17:03 -04:00
Michael Kirk a3ae22c84f Upload profile avatar to service
WIP, this currently lacks crypto pending further discussion.

// FREEBIE
2017-08-09 11:44:34 -04:00
Michael Kirk 45a1f534ba Rename method to make way for new method.
No behavioral changes.

// FREEBIE
2017-08-08 15:03:48 -04:00
Michael Kirk 72b3f3779b Discard GroupInfoRequest from unknown group
// FREEBIE
2017-08-08 12:17:26 -04:00
Michael Kirk ee613e4889 Can only set whitelist on main thread
As written solves a crash, but we'll probalby want to revisit the perf
implications.

// FREEBIE
2017-08-07 16:48:12 -04:00
Michael Kirk e07ed50170 define avatar form URL
// FREEBIE
2017-08-07 15:17:34 -04:00
Matthew Chen e01fbc247e Refine profile logic.
// FREEBIE
2017-08-04 17:35:22 -04:00
Matthew Chen 21304c18a6 Once we've shared our profile key with a user (perhaps due to being a member of a whitelisted group), make sure they're whitelisted.
// FREEBIE
2017-08-04 17:34:27 -04:00
Matthew Chen 98def41782 Respond to CR.
// FREEBIE
2017-08-04 17:33:16 -04:00
Matthew Chen 823927685d Update profile on service.
// FREEBIE
2017-08-04 15:25:17 -04:00
Matthew Chen 83e2fbe28c Rework where profile key is attached in photos.
// FREEBIE
2017-08-04 15:23:17 -04:00
Matthew Chen b5fdc05b91 Move profile key to data, call, sync and null protos.
// FREEBIE
2017-08-04 15:23:02 -04:00
Matthew Chen 37ce388eb6 Add “add to profile whitelist” offer.
// FREEBIE
2017-08-04 15:23:02 -04:00
Michael Kirk ed4de7e8af Simplify code / pre-cache localNumber
Now that localNumber is read from a dedicated dbConnection we don't have
to worry about it blocking.

// FREEBIE
2017-08-04 15:19:26 -04:00
Michael Kirk f99d4e9df9 Merge branch 'hotfix/2.15.2' 2017-08-04 13:11:53 -04:00
Michael Kirk 3856f3dfb1 Improve asserts/logging
// FREEBIE
2017-08-04 12:14:43 -04:00
Michael Kirk 52bd682565 fix some recently broken tests
// FREEBIE
2017-08-04 11:33:51 -04:00
Matthew Chen 6ec756de44 Move profile manager to Signal.
// FREEBIE
2017-08-04 09:45:33 -04:00
Matthew Chen 540a0a8e48 Refine UserProfile class. Move local user properties to UserProfile.
// FREEBIE
2017-08-04 09:45:33 -04:00
Michael Kirk 935b51aa19 Fixup tests
// FREEBIE
2017-08-03 13:27:09 -04:00
Michael Kirk 01e808febe localNumber persistance from Category -> TSAccountManager
Following the pattern that singleton methods for effectively global
state should get/set on their own dedicated dbConnection for consistency
and to avoid being blocked by unrelated writes.
2017-08-03 13:27:09 -04:00
Michael Kirk 8a4712bf4c Only access localNumber on AccountManager and cache it
// FREEBIE
2017-08-03 13:27:09 -04:00
Matthew Chen 43b3abe321 Merge branch 'hotfix/2.15.2' 2017-08-03 13:10:01 -04:00
Matthew Chen 539490ee19 Respond to CR.
// FREEBIE
2017-08-03 12:05:53 -04:00
Matthew Chen 9c5934359e Don’t dismiss call view controller to present other view.
// FREEBIE
2017-08-03 10:41:16 -04:00
Matthew Chen 791e270578 Terminate call if call view presentation is delayed.
// FREEBIE
2017-08-03 10:29:40 -04:00
Matthew Chen 6f03c2d92f Don’t hide threads if they are a group thread, or if they have _ever_ had a message.
// FREEBIE
2017-08-02 15:12:42 -04:00
Matthew Chen c603a2651d Rework how user profiles are updated and persisted. Persist other user’s profiles. Load and cache other user’s profile avatars.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen d7f275ce73 Add accessor for other users’ profile names.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 4a54f1a99c DRY up and refine the logic to attach the local profile key to outgoing messages.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen aa6312b586 DRY up and refine the logic to attach the local profile key to outgoing messages.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 1c1e173c58 Add support for adding groups to the profile whitelist.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 26b668cce7 Add profile key to proto schema. Send and receive profile keys. Cache profile manager state.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen e58358ce53 Add profile key to content proto schema.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 202724cdcc Persist profile whitelist and known profile keys.
// FREEBIE
2017-08-02 10:50:44 -04:00
Matthew Chen 2993ac002f Clean up database convenience methods and add assertions.
// FREEBIE
2017-08-02 10:47:42 -04:00
Matthew Chen a3b16812ec Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen 4be706caf5 Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen 7692a393c1 Add convenience category for YapDatabaseConnection.
// FREEBIE
2017-08-02 10:38:23 -04:00
Matthew Chen a748987d72 Add option to clear profile avatar.
// FREEBIE
2017-08-01 16:32:36 -04:00
Matthew Chen 03a4ebc4d8 Respond to CR.
// FREEBIE
2017-08-01 16:30:24 -04:00
Matthew Chen c331788c06 Modify the profile view to update profile manager state.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 0f3a3d1903 Sketch out profile upload.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 0bd23345a1 Sketch out the profile view.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 72ea096970 Sketch out the profile view.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen 63e20cd8bb Sketch out profile manager.
// FREEBIE
2017-08-01 11:41:55 -04:00
Michael Kirk 4bf407a24f fix some compiler warnings
// FREEBIE
2017-07-31 11:56:47 -04:00
Michael Kirk a196693425 Make sure DB views are ready before kicking processing job
// FREEBIE
2017-07-28 17:12:47 -04:00
Michael Kirk 0b38b46683 remove unnecessary dispatch
// FREEBIE
2017-07-28 17:12:47 -04:00
Michael Kirk 6a5c6a9fc9 didBecomeActive kicks the processing queue
// FREEBIE
2017-07-28 17:12:47 -04:00
Michael Kirk 1066089980 Fix thread explosion
Without this, when the user has a large message queue to process, things
slow to a crawl as we spew more and more threads. Since it's on a serial
queue anyway, there's no need to have multiple threads executing this
code.

// FREEBIE
2017-07-28 17:12:47 -04:00
Matthew Chen bdb50552d3 Fix asserts in analytics macros.
// FREEBIE
2017-07-28 11:33:20 -04:00
Matthew Chen 678db31c1f Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen c042a96aa4 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen c6e21e83a3 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:35 -04:00
Matthew Chen 8e628a6296 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:40:19 -04:00
Matthew Chen 103a7fab36 Hide empty conversations in home view.
// FREEBIE
2017-07-27 15:39:26 -04:00
Matthew Chen 07ee0db80c Merge branch 'charlesmchen/moreCallServiceAnalytics' 2017-07-27 13:57:41 -04:00
Matthew Chen dd13119f12 Add more instrumentation to CallService.
// FREEBIE
2017-07-27 13:57:29 -04:00
Matthew Chen e16d0e326b Avoid crash when deleting threads - and improve perf.
// FREEBIE
2017-07-27 13:02:42 -04:00
Matthew Chen e5c0fa89d6 Respond to CR.
// FREEBIE
2017-07-27 12:48:46 -04:00
Matthew Chen 465711c2cb Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:45:29 -04:00
Matthew Chen f1807cd709 Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:29:05 -04:00
Matthew Chen 0cf9c01af2 Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:27:48 -04:00
Matthew Chen 8aff95c44e Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Matthew Chen b4f348ad14 Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Matthew Chen 31ab9a00da Add script to extract and gather analytics event names.
// FREEBIE
2017-07-27 12:26:02 -04:00
Michael Kirk 91ad2ec32b Properly handle too-large messages
1. Take note of any large messages.
2. If they are way too large, we just drop them on the floor.

// FREEBIE
2017-07-27 11:37:10 -04:00
Matthew Chen 531489a828 Streamline analytics properties.
// FREEBIE
2017-07-27 10:16:16 -04:00
Matthew Chen f973af5a83 Streamline analytics properties.
// FREEBIE
2017-07-27 10:16:16 -04:00
Matthew Chen 013bf62f7c Streamline analytics properties.
// FREEBIE
2017-07-27 10:16:16 -04:00
Michael Kirk 3f4dcecf15 ensure blocking keychange message has identityKey before proceeding
This is increasingly irrelevant due to recent safety number changes, but
legacy clients with old messages can still run into this.

FIXES: https://github.com/WhisperSystems/Signal-iOS/issues/2346

// FREEBIE
2017-07-26 16:00:32 -04:00
Michael Kirk eafc370bbe CR: move property to method to clearly avoid Mantle serialization
Also some formatting cleanup and extra asserts

// FREEBIE
2017-07-26 14:29:56 -04:00
Michael Kirk 4d8429186d Store undecrypted envelopes before doing any processing.
This lets us clear the server side queue immediately, and paves the way
for retry, give up logic.

// FREEBIE
2017-07-26 14:29:56 -04:00
Matthew Chen d72c4a21c3 Fix missing variable type.
// FREEBIE
2017-07-26 11:58:41 -04:00
Matthew Chen 863fd27abe Respond to CR.
// FREEBIE
2017-07-26 10:52:15 -04:00
Matthew Chen 7cbdde7b1d Rework handling of critical errors, e.g. errors while initializing TSStorageManager.
// FREEBIE
2017-07-26 10:01:43 -04:00
Matthew Chen 958a8b4c80 Instrument CallService.
// FREEBIE
2017-07-26 10:01:43 -04:00
Matthew Chen ef4b1cf477 Respond to CR.
// FREEBIE
2017-07-24 17:18:15 -04:00
Matthew Chen fa7a2407bf Respond to CR.
// FREEBIE
2017-07-24 16:20:00 -04:00
Matthew Chen b17a7c5751 Review NSError usage.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 11f52757b2 Use background task when sending analytics events.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 543c05b2c5 Add a “critical” severity level for analytics events.
// FREEBIE
2017-07-24 16:13:59 -04:00
Matthew Chen 2418baec15 Respond to CR.
// FREEBIE
2017-07-24 16:13:22 -04:00
Matthew Chen 9587aab37b Instrument network errors.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen 117bca7c48 Instrument errors in app delegate.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen 7da5df594f Instrument errors in storage manager.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen 19c0a7ad7c Instrument errors in message sender.
// FREEBIE
2017-07-24 16:05:39 -04:00
Matthew Chen e168db79aa Instrument errors in message manager.
// FREEBIE
2017-07-24 16:05:39 -04:00
Michael Kirk 6e19c1aae8 Don't crash when messaging user with malformed profile
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk a5f067936c migration to fix any half-registered users
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk 7c28805442 Don't consider yourself registered until you've uploaded your prekeys
// FREEBIE
2017-07-24 13:01:43 -04:00
Michael Kirk 6ef9d568fc Instructions, how to use SignalServiceKit
// FREEBIE
2017-07-21 16:21:49 -04:00
Matthew Chen 128c40a26c Respond to CR.
// FREEBIE
2017-07-21 15:32:26 -04:00
Matthew Chen c8b2e22a3b [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 15:22:28 -04:00
Matthew Chen 4059c34170 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 15:17:35 -04:00
Matthew Chen 64a99c63b3 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 15:08:37 -04:00
Matthew Chen 4f5b2993b0 [SSK] Migrating changes from obsolete SSK repo.
// FREEBIE
2017-07-21 14:55:31 -04:00
Michael Kirk 1b8efb5255 CI runs SSK tests
Clean up Makefile cruft

// FREEBIE
2017-07-21 13:58:57 -04:00
Michael Kirk 00fede4229 Consolidate Gemfile w/ SSK, update fastlane
// FREEBIE
2017-07-21 13:58:43 -04:00
Michael Kirk 4b69126d1a Use interned SSK
// FREEBIE
2017-07-21 13:58:32 -04:00
Michael Kirk ccb4a88742 Import SSK (and history) into Signal-iOS
git remote add ssk ../SignalServiceKit
git remote update
git merge -s ours --allow-unrelated-histories --no-commit ssk/master
git read-tree --prefix=SignalServiceKit -u ssk/master
git commit
2017-07-21 13:55:01 -04:00