Commit graph

258 commits

Author SHA1 Message Date
Collin B. Stuart cc94573e9b Constant time compare
- fix case when second part of the && conditional is skipped when data is not equal

- isEqual variable marked volatile to prevent case when it doesn't equal 0, the loop can break early since it can never be 0 again

- tested with Fastest O3 and Whole Module optimization (App Store Release)

// FREEBIE
2018-02-13 16:18:06 -08:00
Joshua Lund 2c18a75d12 Update to the new GitHub organization name 2018-02-13 10:52:07 -05:00
Matthew Chen ba42ac73d8 Revisit TODOs in the SAE work. 2018-02-12 22:33:26 -05:00
Matthew Chen 9c8178653d Revisit TODOs in the SAE work. 2018-02-12 22:33:26 -05:00
Matthew Chen bd0f601792 Respond to CR. 2018-02-09 10:31:29 -05:00
Matthew Chen 7d3f79440f Clean up ahead of PR. 2018-02-09 10:31:29 -05:00
Matthew Chen 122ef91e57 Add protocol context to protocol kit. 2018-02-09 10:31:29 -05:00
Michael Kirk a1d3073705 Cannot open settings from share extension
// FREEBIE
2018-02-06 18:50:36 -08:00
Matthew Chen 4bfdef520a Respond to CR. 2018-01-30 12:39:27 -05:00
Matthew Chen a30170b3b2 Prefer "app is ready" flag to "storage is ready" flag. 2018-01-30 11:34:00 -05:00
Matthew Chen 8e427111ef Clean up ahead of PR. 2018-01-30 10:31:13 -05:00
Matthew Chen 6eddfae214 Improve post-migration testing tools. 2018-01-30 10:31:13 -05:00
Matthew Chen 100adae245 Register all database views asynchronously. 2018-01-30 10:30:28 -05:00
Matthew Chen 5cf89a0f3d Register all database views asynchronously. 2018-01-30 10:30:28 -05:00
Matthew Chen 6f7f1b3b08 Improve pre-migration testing tools. 2018-01-30 10:06:46 -05:00
Matthew Chen b3e6278a45 Clean up ahead of PR. 2018-01-25 15:24:21 -05:00
Matthew Chen 9d909025c9 Handle UIImage shares. 2018-01-25 15:17:51 -05:00
Matthew Chen 5770a18b08 Handle text shares like URLs. 2018-01-25 13:26:10 -05:00
Matthew Chen 6a81d8e5c2 Respond to CR. 2018-01-25 13:16:35 -05:00
Matthew Chen 7e769de5d2 Remove spurious warning. 2018-01-25 13:07:56 -05:00
Matthew Chen 0cc7f3e00e Clean up ahead of PR. 2018-01-25 11:00:38 -05:00
Matthew Chen 149199138c Clean up ahead of PR. 2018-01-25 11:00:38 -05:00
Matthew Chen 173da64bc4 Modify YapDatabase to read converted database, part 1. 2018-01-25 11:00:38 -05:00
Michael Kirk 71dc7f55d3 Copy DB setup / keying from Yap into conversion
// FREEBIE
2018-01-25 11:00:38 -05:00
Michael Kirk 5dde17d939 Show approval/caption view in app.
ApprovalView/Captioning is shown for:
- Images/Videos from Library
- Images/Video from Camera
- Document Picker
- GIFs

Voice notes are intentionally not captionable.

Also, in main app, hide status bar when ApprovalView is presented

// FREEBIE
2018-01-17 18:19:48 -05:00
Matthew Chen 2b528ad894 Don't use mainApplicationState in business logic. 2018-01-12 14:24:35 -05:00
Matthew Chen 59933ce1d6 Fix rebase breakage. 2018-01-11 11:15:50 -05:00
Matthew Chen 16f7317579 Complete backup restore/import. 2018-01-11 10:44:03 -05:00
Matthew Chen 272a90d269 Add import back up UI. Begin work on import backup logic. 2018-01-11 10:42:57 -05:00
Matthew Chen 980b3d25a7 Rework "export backup" UI. 2018-01-11 10:42:27 -05:00
Matthew Chen 77572bdaec Retain changes from session database branch. 2018-01-10 12:36:23 -05:00
Matthew Chen 1839b10550 Retain changes from session database branch. 2018-01-10 12:18:34 -05:00
Matthew Chen 9ac2383a2c Retain changes from session database branch. 2018-01-10 12:18:29 -05:00
sdkjfhsdkjhfsdlkjhfsdf 6e2d9c8141 identity change vs. share extension
// FREEBIE
2018-01-02 11:24:36 -06:00
Matthew Chen 085f8a6f64 Clean up ahead of PR. 2017-12-19 12:02:58 -05:00
Matthew Chen d52eba739d Clean up TSStorageManager usage. 2017-12-19 11:41:31 -05:00
Matthew Chen 9a990b58e8 Respond to CR. 2017-12-19 11:38:25 -05:00
Matthew Chen 9815bca825 Clean up ahead of PR. 2017-12-19 11:16:01 -05:00
Matthew Chen 137fe6fb8b Pull out OWSStorage base class for TSStorageManager. 2017-12-19 11:16:01 -05:00
Matthew Chen a29c4ce5d6 Pull out OWSStorage base class for TSStorageManager. 2017-12-19 11:16:01 -05:00
Matthew Chen a572285ad2 Respond to CR. 2017-12-19 11:10:12 -05:00
Matthew Chen 2cc3752901 Improve background task logic. 2017-12-19 11:05:17 -05:00
Matthew Chen c3b6de4f83 Improve background task logic. 2017-12-19 11:05:17 -05:00
Matthew Chen f9ce34f553 Improve background task logic. 2017-12-19 11:05:17 -05:00
Matthew Chen 5adf98788d Use background task during message processing. 2017-12-19 11:05:17 -05:00
Matthew Chen 609536fcb1 Include build version in logging. 2017-12-15 11:11:04 -05:00
Michael Kirk 56f1bf0305 cleanup 2017-12-11 19:37:49 -05:00
Matthew Chen 791743a5f0 Fix order of operations in SAE setup. 2017-12-07 16:04:52 -05:00
Matthew Chen f148003fb3 Convert logTag to property. 2017-12-07 14:32:22 -05:00
Matthew Chen 99f0b9d3e8 Fix issues around statics. 2017-12-07 12:34:02 -05:00
Michael Kirk 0429836ff9 CR: rename keyWindow -> keyReferenceView, split long line
// FREEBIE
2017-12-07 10:39:44 -05:00
Michael Kirk eca19e5874 Reconcile MediaMessageView zoom behavior with AppExtension
Previously it was predicated on UIApplication.shared

// FREEBIE
2017-12-07 10:14:30 -05:00
Michael Kirk 89b9887f1d Make DeviceSleepManager extension compatible
// FREEBIE
2017-12-07 10:13:47 -05:00
Michael Kirk a58f1f385c Share a photo from photos app
Shows the conversation picker, and sends the attachment to that
conversation.

There's still a lot TODO

-[ ] resolve JSQ dependency
-[ ] properly wait for app to load
-[ ] dismiss share extension after send is complete
-[ ] support non jpeg file types
-[ ] Fix device sleep manager

// FREEBIE
2017-12-07 10:13:06 -05:00
Matthew Chen 150f417a5e Clean up ahead of PR. 2017-12-05 11:32:19 -05:00
Matthew Chen 022b2f93dd Respond to CR. 2017-12-05 11:22:52 -05:00
Matthew Chen e94ef01d72 Respond to CR. 2017-12-05 11:22:01 -05:00
Matthew Chen 9da165b846 Continue conversion of app setup. 2017-12-05 11:19:11 -05:00
Matthew Chen b4e8df79da Migrate environment to SignalMessaging. 2017-12-05 10:29:29 -05:00
Matthew Chen a16058e477 Migrate environment to SignalMessaging. 2017-12-05 10:29:29 -05:00
Matthew Chen 6d87df88aa Migrate environment to SignalMessaging. 2017-12-05 10:29:28 -05:00
Matthew Chen c817aa51b3 Migrate environment to SignalMessaging. 2017-12-05 10:28:46 -05:00
Michael Kirk 06f52deaf9 address some additional compiler warnings 2017-12-04 12:52:59 -05:00
Michael Kirk 2af818b3ba Make SignalMessaging AppExtension safe
// FREEBIE
2017-12-04 12:50:28 -05:00
Michael Kirk 0138777343 New @available syntax avoids compiler warnings
// FREEBIE
2017-12-04 12:50:28 -05:00
Michael Kirk 5e7ca89930 Proper function prototypes
// FREEBIE
2017-12-04 12:50:28 -05:00
Matthew Chen bf21d0c0ed Enable logging in SAE; rework log file management to include multiple log directories. 2017-12-01 12:55:47 -05:00
Michael Kirk 336d59a6ce restore chrono timestamp
make SSK compatible with c++ by using non-modular imports, which
requires disambiguating our ddLog variable.

// FREEBIE
2017-11-30 09:38:39 -08:00
Matthew Chen d17ccadea2 Use AppContext to resolve share extension FIXMEs. 2017-11-30 10:12:32 -05:00
Matthew Chen e712e8bfc4 Use AppContext to resolve share extension FIXMEs. 2017-11-30 10:12:24 -05:00
Matthew Chen 4c31d99498 Respond to CR. 2017-11-30 10:10:30 -05:00
Matthew Chen ffa69b3502 Add application context class. 2017-11-30 10:07:20 -05:00
Matthew Chen 8d4e9b4565 Respond to CR. 2017-11-30 10:02:04 -05:00
Matthew Chen 779e89fe74 Clean up ahead of PR. 2017-11-30 09:49:01 -05:00
Matthew Chen 7429e1968c Clean up ahead of PR. 2017-11-30 09:49:01 -05:00
Matthew Chen edaf65223a Migrate to shared data NSUserDefaults. 2017-11-30 09:49:01 -05:00
Matthew Chen cd11ec5698 Add app group, share keychain. Take a first pass at file migration to shared data directory. 2017-11-30 09:49:01 -05:00
Michael Kirk 2072359a72 add todo 2017-11-29 14:07:03 -08:00
Michael Kirk c5b0f7cd01 framework compatible CocoaLumberjack import
With previous import style, the `LOG_ASYNC_ENABLED, LOG_LEVEL_DEF`
macros were not being defined.

@import style module includes are handled differently in ObjC++, causing
problems with out millisecondTimeStamp implementation. Rather than
address that problem head on, I simple reimplemented our millisecond
timestamp method in objective-c, removing our single ObjC++ file.

// FREEBIE
2017-11-29 13:58:27 -08:00
Michael Kirk 7894a58769 FIXME: Changes to get share extension compiling
This was a slash and burn approach, and breaks existing functionality.
We need to address all of these before merging.

// FREEBIE
2017-11-29 13:58:27 -08:00
Matthew Chen 2d8a7b03d0 Respond to CR.
// FREEBIE
2017-11-16 10:12:47 -05:00
Matthew Chen fce52841f9 Don't resurrect zombies. 2017-11-15 07:16:12 -05:00
Matthew Chen 5c90bc72df Never request contacts permission if app is in the background. 2017-11-10 13:21:34 -05:00
Matthew Chen 6e840ff956 Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Matthew Chen a6bfc0a60e Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Matthew Chen 2d21e2ae2c Fix build warnings from XCode 9. 2017-11-09 02:52:44 -05:00
Matthew Chen db8a381960 Merge remote-tracking branch 'origin/release/2.18.0' 2017-11-01 12:02:37 -04:00
Michael Kirk cf9874302b Remove unecessary subdata for unpadded attachment
// FREEBIE
2017-10-27 08:51:23 -07:00
Michael Kirk ce51d2da3e Example (disabled) padding strategy for attachment sender
The padding strategy the sender uses can change without needing to
update the receiver, so long as we continue to record the unpadded
length of the attachment in the attachment pointer.

// FREEBIE
2017-10-27 08:47:53 -07:00
Michael Kirk cbbb376860 Handle receiving padded attachments
Don't send padded attachments yet.

// FREEBIE
2017-10-27 08:47:53 -07:00
Michael Kirk 259695a9fd Attachments require digest or show explanatory error.
// FREEBIE
2017-10-27 08:42:54 -07:00
Matthew Chen 3927815a35 Fix tests broken by the JSQ rewrite.
// FREEBIE
2017-10-25 16:08:15 -04:00
Matthew Chen d04f9111db Rework attachment approval UI.
// FREEBIE
2017-10-24 09:42:29 -04:00
Matthew Chen 4dabb71815 Fix "can't send same GIF twice" issue.
// FREEBIE
2017-10-19 22:33:51 -04:00
Matthew Chen fb4d43d542 Fix "can't send same GIF twice" issue.
// FREEBIE
2017-10-19 10:04:49 -07:00
Michael Kirk df15c904bc Rework push registration
== Account Registration ==

Not complete until push tokens are uploaded

== Remote Notifications Registration ==

Extracted from PushManager

- wait for notification-settings registration to complete before
  requesting push tokens, otherwise it's possible token requests will
  be ignored.

- Less state required for push notification callbacks, specifically, we
  no longer need to ensure we've created a promise before the
  registration delegate methods get called.

- no more TOCFuture in Signal-iOS (still in SSK for now). It's not in
  cases of inexplicable behavior - one a recently, push notification
  premature free, in redphone, and more popular use, and I've seen two
  futures inexplicably being nil.  Instead, let's consolidate around
  PromiseKit for popularly used, maintained, strongly-typed futures.

- separate logic for registering for vanilla push/voip notifications
  (few dependencies) from responding to UILocalNotifications (lots of
  dependencies). Ultimately I'd like to consolidate the remaining
  UILocalNotifications logic with the existing NotificationsManager

== Misc ==

more debug logging
more uniform logging
remove stale logic around newly registered user

// FREEBIE
2017-10-12 12:02:22 -04:00
Matthew Chen d557817bb4 Format message statuses with date if possible.
// FREEBIE
2017-09-27 16:38:48 -04:00
Matthew Chen 19e010645e Respond to CR.
// FREEBIE
2017-09-26 09:32:48 -04:00
Matthew Chen 9f9ac746d1 Sketch out message metadata view.
* Show message metadata view from conversation view.
* Pull out MediaMessageView class.
* Track recipient read timestamps.
* Add per-recipient status to message metadata view.
* Add share button to message metadata view.

// FREEBIE
2017-09-25 17:25:49 -04:00
Matthew Chen 7268bde506 Add stress group to debug UI.
// FREEBIE
2017-09-22 10:30:35 -04:00
Matthew Chen 35a2470cb7 Post notifications asynchronously.
// FREEBIE
2017-09-21 17:03:57 -04:00
Matthew Chen b28c4b74b2 Pull out TSMessageDecrypter class.
// FREEBIE
2017-09-21 14:38:30 -04:00
Matthew Chen 993df25f3f Respond to CR.
// FREEBIE
2017-09-20 11:48:37 -04:00
Matthew Chen 8a4d67a6e4 Respond to CR.
// FREEBIE
2017-09-20 09:19:15 -04:00
Matthew Chen 183f0f1ccd Respond to CR.
// FREEBIE
2017-09-19 17:45:18 -04:00
Matthew Chen a5ece18e6c Fix build break.
// FREEBIE
2017-09-19 09:35:33 -04:00
Matthew Chen 400f536e37 Respond to CR.
// FREEBIE
2017-09-19 09:30:01 -04:00
Matthew Chen 872ce17dd6 Clean up data source temp files when complete.
// FREEBIE
2017-09-19 09:30:01 -04:00
Matthew Chen d3ad0950ba Clean up the data source class.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 9dfebb2d4b Apply OWSFail() in more places.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen c21a7673c8 Rework preservation of attachment filenames.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 0746b1300d Apply DataSource to message sender.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen b95b5f69de Apply DataSource to message sender.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 20e5013aae Convert DataSource to Objective-C.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen 69816cdf0e Convert DataSource to Objective-C.
// FREEBIE
2017-09-11 10:20:48 -04:00
Matthew Chen bb1681f965 Respond to CR.
// FREEBIE
2017-08-30 12:53:02 -04:00
Matthew Chen cc048b3971 Respond to CR.
// FREEBIE
2017-08-30 12:46:21 -04:00
Michael Kirk 1e51bf4899 extract event names
// FREEBIE
2017-08-25 17:19:31 -04:00
Matthew Chen a825fad47b Start reworking the contact offers.
// FREEBIE
2017-08-21 17:05:42 -04:00
Michael Kirk 0ab958f03a cleanup per codereview
- reference OWS OpenSSL
- clarify comments
- fix typo

// FREEBIE
2017-08-21 16:37:16 -04:00
Michael Kirk 0f9f26a577 handle remote user's profile key has changed
// FREEBIE
2017-08-21 16:37:16 -04:00
Michael Kirk 72fbb02028 aes-gcm via openssl
// FREEBIE
2017-08-21 16:37:16 -04:00
Michael Kirk 97afa4d48a verification on decrypt
// FREEBIE
2017-08-15 15:19:40 -04:00
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 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
Matthew Chen 43b3abe321 Merge branch 'hotfix/2.15.2' 2017-08-03 13:10:01 -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 0bd23345a1 Sketch out the profile view.
// FREEBIE
2017-08-01 16:17:59 -04:00
Matthew Chen bdb50552d3 Fix asserts in analytics macros.
// FREEBIE
2017-07-28 11:33:20 -04:00
Matthew Chen dd13119f12 Add more instrumentation to CallService.
// FREEBIE
2017-07-27 13:57:29 -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
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
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