Commit Graph

297 Commits

Author SHA1 Message Date
Michael Kirk f29ca7851f Move PureLayout back to cocoapods for now
This introduced some unexpected crashes related to frameworks in Swift.

// FREEBIE
2017-03-23 21:48:59 -04:00
Michael Kirk 0d52a18458 Update dependencies
Also moved PureLayout to Carthage for faster incremental builds

// FREEBIE
2017-03-23 20:35:21 -04:00
Michael Kirk 8adba61b37 intern Pastelog back into Signal.
Not worth the cocaopods/framework/project mgmt machinery for making
changes to 1 class.

// FREEBIE
2017-03-17 17:37:32 -04:00
Michael Kirk 99c982fbb2 change ZXing to framework for faster incremental compiles in xcode
// FREEBIE
2017-03-16 12:04:45 -04:00
Michael Kirk 8f7e0a8a5b [SSK] Fix crash-on-launch for older installs
populating the de-duping index assumes authorId is always set for
incoming messages, but this was not always the case.

// FREEBIE
2017-03-03 15:33:28 -05:00
Matthew Chen c35c118dcd Respond to CR.
// FREEBIE
2017-02-24 23:02:17 -05:00
Michael Kirk be9725c7ce [SSK] lost changes needed to fixup 'charlesmchen/webrtcByDefault'
Previous commit referenced no-longer existent SHA

// FREEBIE
2017-02-22 15:52:29 -08:00
Matthew Chen f4453eb995 Enable WebRTC-based audio and video calls by default.
// FREEBIE
2017-02-21 11:10:57 -05:00
Matthew Chen 3c3f782e7d Clean up prekey usage.
// FREEBIE
2017-02-14 13:46:08 -05:00
Matthew Chen c0f52d1de9 [SSK] Mark "attempting out" messages as "unsent" on app launch
// FREEBIE
2017-02-13 17:21:58 -05:00
Matthew Chen 21e55d3be5 Mark "attempting out" messages as "unsent" on app launch.
// FREEBIE
2017-02-13 17:16:32 -05:00
Matthew Chen fcf1d7af97 Respond to CR.
// FREEBIE
2017-02-13 16:07:33 -05:00
Matthew Chen 2b64d94bad Update SignalServiceKit pod.
// FREEBIE
2017-02-13 15:59:07 -05:00
Matthew Chen e798964308 Update SignalServiceKit pod.
// FREEBIE
2017-02-08 17:22:49 -05:00
Matthew Chen 06a775b41a Improve the call status messages in conversation view.
// FREEBIE
2017-02-08 16:47:09 -05:00
Michael Kirk 947d345837 SSK update to include latest master (which now includes CallKit)
// FREEBIE
2017-02-02 17:13:53 -05:00
Michael Kirk d3e6747499 Merge remote-tracking branch 'origin/master' into feature/webrtc 2017-01-25 12:13:37 -05:00
Michael Kirk 4e72ab92c8 Prevent session corruption by using a single serial queue for encrypt and decrypt
coordinate SignalProtocol encryption/decryption on a single serial
queue. Previously message sending encrypted on the sending thread, while
message receiving decrypted on the main thread.

// FREEBIE
2017-01-25 11:00:21 -05:00
Matthew Chen 4a65a88512 Rework new call view.
// FREEBIE
2017-01-12 15:55:14 -05:00
Matthew Chen 26a6e391b3 Fix pod.
// FREEBIE
2017-01-12 10:13:47 -05:00
Michael Kirk a17873291b Fix up tests
// FREEBIE
2017-01-12 09:56:09 -05:00
Michael Kirk 647b2b37e9 WIP: WebRTC calling
* Ensure NotificationsManager has dependencies
    Otherwise it's easy to mess up the order of the required dependencies.
* move AccountManager into Environment, it's heavy to construct

// FREEBIE
2017-01-12 09:56:05 -05:00
Matthew Chen 2dac6c888a Update SignalServiceKit pod.
* Fetch messages when app becomes active.
2017-01-06 13:28:41 -05:00
Michael Kirk ddba843d44 Censorship circumvention in Egypt and UAE
* domain fronting
* non-websocket message fetching

// FREEBIE
2016-12-21 10:04:23 -06:00
Michael Kirk c4baf5a625 [SSK] Avoid bricking signal if a key is temporarily unreadable
// FREEBIE
2016-12-16 14:51:00 -06:00
Michael Kirk 32a05dabce [SPK] Update SignalProtocolKit (AxolotlKit) (#1549)
// FREEBIE
2016-12-16 08:47:24 -06:00
Josh Schneier 896dd026d2 Remove DJWActionSheet 2016-11-29 10:20:56 -05:00
Michael Kirk 7120ca1192 Make sure we're laying out contact cell after assigning avatar
// FREEBIE
2016-11-22 16:55:07 -05:00
Michael Kirk 0aa226f3d1 [SSK] If a new message type is introduced, ignore it
rather than printing an empty bubble.

// FREEBIE
2016-11-22 12:18:05 -05:00
Michael Kirk de7752ab20 Revert 50abf4d02d
The real problem was addressed (or, worked around) here:
1eb234e8ba

// FREEBIE
2016-11-17 18:22:02 -05:00
Michael Kirk ee29fff0da [SSK] Default to blocking changed Safety Numbers
// FREEBIE
2016-11-14 14:24:03 -05:00
Michael Kirk 50abf4d02d [JSQMVC] Fix crash on delete when under load.
Hack to fix https://github.com/jessesquires/JSQMessagesViewController/issues/1885

This doesn't happen often, but is reproducible under simulated message
churn (~50 insert/update/deletes randomly spaced over 10 seconds).

During performBatchUpdates, the collectionViewLayout can call
layoutAttributesForElementsInRect which can reference the just-deleted
item's
view. (The view presumably hasn't been deleted yet, but will be by the
time
performBatchUpdates is complete).

It's opaque how layoutAttributesForElementsInRect get's it's list of
views. I
can only speculate how this works based on debugging, but it seems that
the
CollectionFlowLayout keeps an internal list of item frames, which when
crashing
still contain items corresponding to the to-be-deleted items.

In any case, it seems like a bug that JSQMVC would ever attempt to get
layoutAttributes for an item which doesn't exist in the datasource.
2016-10-31 10:38:20 -04:00
Michael Kirk 689df1be37 Handle key change in group send
// FREEBIE
2016-10-26 15:22:35 -04:00
Michael Kirk 33f6a95520 Explain send failures for text and media messages
fixes #1231

Motivation
----------
Previously when messages failed to send, there was no reason given.
Furthermore, when media messages failed to send there was no indication
that any attempt to send the message even occurred, nor a retry
dialog.

UX Changes
----------
- Show "uploading" status for media
- Show specific error message in retry-send dialog
- Only scroll to bottom when new message is inserted
- Show specific errors when group creation fails

Code Changes
-----------
- Updated incorrect references to TSMessageAdapters which were actually
  references to OWSMessageData
- MessageSender was extracted from SSK MessagesManager
- access MessagesManager as property
- idiomatic init/properties for Env
- log contact intersections
- Move scroll-to-bottom animation to main thread.

// FREEBIE
2016-10-26 15:22:35 -04:00
Michael Kirk 89ee74f134 Update SSL to 1.0.2j (#1409)
// FREEBIE
2016-10-20 13:24:20 -04:00
Michael Kirk 49de772997 Fix slow reloading conversation view. (#1397)
Fix animation memory leak exacerbated every time you reload a
conversation with expiration timers.

Stop animation on cells that aren't currently being displayed. This is
relatively minor compared to the above, but still, no reason to waste
cycles.

// FREEBIE
2016-10-15 16:41:40 -04:00
Michael Kirk 50ce283582 Fix empty bubble when setting disappearing message timer in a thread to
yourself.

fixes #1393

// FREEBIE
2016-10-14 19:37:38 -04:00
Michael Kirk ee0cce75e8 Disappearing Messages
* Per thread settings menu accessed by tapping on thread title

  This removed the toggle-phone behavior. You'll be able to see the phone
  number in the settings table view.

  This removed the "add contact" functionality, although it was already
  broken for ios>=9 (which is basically everybody).

  The group actions menu was absorbed into this screen

* Added a confirm alert to leave group (fixes #938)

* New Translation Strings
* Extend "Add People" label to fit translations.
* resolved issues with translations not fitting in group menu

* Fix the long standing type warning where TSCalls were assigned to a TSMessageAdapter.

* Can delete info messages

  Follow the JSQMVC pattern and put UIResponder-able content in the
  messageBubbleContainer. This gives us more functionality *and* allows us
  to delete some code. yay!

  It's still not yet possible to delete phone messages. =(

* Fixed some compiler warnings.

* xcode8 touching storyboard. So long xcode7!

* Fixup multiline info messages.

  We were seeing info messages like "You set disappearing message timer to
  10" instead of "You set disappearing message timer to 10 seconds."

  Admittedly this isn't a very good fix, as now one liners feel like they
  have too much padding.

   If the message is well over one line, we were wrapping properly, but
  there's a problem when the message is *just barely* two lines, the cell
  height grows, but the label still thinks it's just one line (as evinced
  by the one line appearing in the center of the label frame. The result
  being that the last word of the label is cropped.

* Disable group actions after leaving group.

// FREEBIE
2016-10-12 09:30:25 -04:00
Michael Kirk 11a586a835 New Fingerprint Format
Rather than verifying eachothers keys separately, you now verify the
privacy with your recipient by sharing a single composite number or
QRCode.

This is a breaking change, in coordination with Desktop and Android.

UX
--

Fingeprint is no longer in line with identity key error. Instead you
have the option of going to the full-screen safety number verification
experience.

Overhauled fingerprint design
-----------------------------

* use same modal dismiss button as elsewhere
* remove fingerprint from settings.
* quick slide in animation vs slow fade
  * existing was painfully slow
  * blur effect is better metaphor for something slide over top
  * anyway there was a rendering glitch in the end of fade where
    underlying navbar would "snap" out

Also Fixed
----------
Always provide a name string for contact

* Centralize all the nil-checking
* Fall back to "unknown contact"

allow multi-line error messages

// FREEBIE
2016-10-12 09:30:25 -04:00
Michael Kirk 3e7e67e276 Async migrations framework
* nonblocking by default
* track success of each migration independently

// FREEBIE
2016-09-28 17:09:11 -04:00
Michael Kirk 3b687da0ec Upgrade SSK to setup db async where possible
fixes #1358

// FREEBIE
2016-09-28 17:09:11 -04:00
Michael Kirk 7c6e9e07b8 Read receipts remove lockscreen notifications
No need to have a notification for a message you've already read on
desktop.

// FREEBIE
2016-09-17 13:51:33 -04:00
Michael Kirk 90dab190f3 Update SSK to send useragent upon provisioning
We do this to coordinate a theme choice on the desktop

// FREEBIE
2016-09-12 14:44:27 -04:00
Michael Kirk 9006ff604f Multi device read receipts.
All the heavy lifting is in SignalServiceKit.

// FREEBIE
2016-09-06 15:57:44 -04:00
Michael Kirk 84156698c4 Provision device from QRCode.
NEEDS DESIGN - will likely have an intermediate "device manager" screen.

* extracted QRCode Scanner into re-usable ViewController

// FREEBIE
2016-09-02 12:40:21 -04:00
Michael Kirk 4d320d6015 Unfork JSQMessagesViewController
Geting back on upstream fixes a couple bugs (see ##Bugfixes), and also
will make future updates easier.

The unforking process was basically this:

* move custom message types (Calls and DisplayedMessages) classes from our
  custom JSQMVC fork into Signal-iOS.
* Move any method customization into our subclass. Including
  ColletionView stuff, bubble sizing, and gesture behavior

Bug Fixes
---------
* Fix mis-sized incoming media bubbles.

Bubble size was being cached by interaction id. Which broke when
receiving an attachment. The problem is that incoming media messages
were initially the height of a "Downloading Attachment" info message.
Instead we use the mediaHash for media messages to expire the bubble
size when the media changes.

* fix missized bubble when MVC did appear

The MessagesViewController isn't sized correctly until ViewWillAppear.
This caused the first round of bubbles to be rendered incorrectly (they
assumed a larger container than they had).  I think is reflected in the
current version of the app by a reflow occurring shortly after the view
appears.

Chores
------
* bump travis to build with xcode8
* specify RQV development team for device build. required by xcode 8 beta

Cleanup
------
* Refactor messageing XIB so that elements are hangning outside of
  the views frame
* Fix compiler warning with explicit cast
* delete deprecated lineBreakmode, it's the default value anyway.

// FREEBIE
2016-07-14 23:15:05 -07:00
Michael Kirk 1e43e139fd Get back on upstream SocketRocket (#1241)
* Latest SocketRocket includes
  * crash fixes.
  * our new security policy management, so we don't have to
    keep rebasing to incorporate updates.

* Adapt to policy renaming in SignalServiceKit
* bump XCode version to play nice with SWIFT_NAME

// FREEBIE
2016-06-30 23:08:49 -07:00
Michael Kirk 7fef6aeab2 Fix crash after deleting message (#1219)
* update to JSQMessageViewController fixes #1218
* no need for SVC to retain membership of MVC

// FREEBIE
2016-06-15 12:46:29 -07:00
Michael Kirk 965261f465 attempt to fix intermittent SEGFAULT in SocketRocket (Maybe Fixes #1196) (#1217)
* Rebased OWS fork of SocketRocket against upstream
* Pulling in SocketRocket directly from OWS Github rather than going
  through the motions of publishing a pod that only we use.
* Bump version

// FREEBIE
2016-06-14 14:19:28 -07:00
Michael Kirk e7f3092f00 CocoaPods 1.0 update and Travis-CI compatibility (#1216)
* CocoaPods 1.0 compatibility. Thanks to @brianherman and @orta for the Podfile changes, taken from PR #1156
* Modified Travis-CI to use the newer CocoaPods 1.0 as well.
* Performance improvements to Travis-CI to reduce build time by 50%-75%

Cherry-picked and conflicts resolved by @michaelkirk
2016-06-14 11:58:56 -07:00
Frederic Jacobs b7813bdc9a OpenSSL dependency update. (#1167)
Following security advisory
(https://www.openssl.org/news/secadv/20160503.txt), OpenSSL removed
sources of previous version.

//FREEBIE
2016-05-03 23:07:27 +02:00
Michael Kirk fc494d735f Merge pull request #1140 from michaelkirk/fix-screen-protection-image
After removing launch image, we need to update screen security
2016-04-11 16:22:15 -04:00
Frederic Jacobs 4034baedb9 Adapting to renaming. 2016-04-08 09:47:41 +02:00
Frederic Jacobs a7ec383a7b Fixes #984 Fixes #948.
A future improvement could be to store the usage data in the encrypted
database than in the NSUserDefaults that are more vulnerable to
forensics.
2015-12-24 15:40:50 +01:00
Frederic Jacobs c6d44e59e2 TextSecureKit Refactoring
- Using same clang format file for old and new files.
- Moving out all TextSecure code to allow other clients (OS X, iOS) to
  integrate easily TextSecure functionality.
- Use TextSecure API to signup.
2015-12-22 23:41:10 +01:00
Frederic Jacobs 3d4d4123f7 Removing APNavigation as a dependency. 2015-10-31 23:43:16 +01:00
Frederic Jacobs bbde7cd2a8 iOS 9 Support
- Fixing size classes rendering bugs.
- Supporting native iOS San Francisco font.
- Quick Reply
- Settings now slide to the left as suggested in original designed
  opposed to modal.
- Simplification of restraints on many screens.
- Full-API compatiblity with iOS 9 and iOS 8 legacy support.
- Customized AddressBook Permission prompt when restrictions are
  enabled. If user installed Signal previously and already approved
  access to Contacts, don't bugg him again.
- Fixes crash in migration for users who installed Signal <2.1.3 but hadn't signed up
  yet.

- Xcode 7 / iOS 9 Travis Support
- Bitcode Support is disabled until it is better understood how exactly
  optimizations are performed. In a first time, we will split out the
  crypto code into a separate binary to make it easier to optimize the
  non-sensitive code. Blog post with more details coming.
- Partial ATS support. We are running our own Certificate Authority at
  Open Whisper Systems. Signal is doing certificate pinning to verify
  that certificates were signed by our own CA. Unfortunately Apple's App
  Transport Security requires to hand over chain verification to their
  framework with no control over the trust store. We have filed a radar
  to get ATS features with pinned certificates. In the meanwhile, ATS is
  disabled on our domain. We also followed Amazon's recommendations for
  our S3 domain we use to upload/download attachments. (#891)
- Implement a unified `AFSecurityOWSPolicy` pinning strategy accross
  libraries (AFNetworking RedPhone/TextSecure & SocketRocket).
2015-10-31 04:45:55 +01:00
Frederic Jacobs 0090030f3d Adding rating code
We’ve noticed that most people went to the App Store to leave really
bad reviews of the app and it is severely affecting our discoverability.
We will ask for a rating if we see you’ve been using the app for some
time. If you rate the app or decline to rate, that’s fine. We will
never bug you again!
2015-08-24 00:28:50 +02:00
Frederic Jacobs ada07351e1 Support for `supportsVOIP` attribute.
- Deprecates RedPhone upgrade flow.
- Adds a generic upgrade dialog.
- Upgrades dependencies.
- Reorganizes `TSStorageManager` & TSNetworkManager imports.
2015-08-23 00:00:39 +02:00
Frederic Jacobs c4bf4a8f50 Preliminary iOS9 support and upgrading to CocoaLumberjack 2.0 2015-08-14 00:19:29 +02:00
Frederic Jacobs 28dae649d1 Upgrading OpenSSL to 1.0.2d.
//FREEBIE
2015-07-13 14:12:09 +02:00
Frederic Jacobs 02560f8b2f Flagging release.
- Bump up version number.
- Fetching latest localizations.
- Upgrading libPhoneNumber and Mantle dependencies.
//FREEBIE
2015-06-24 11:06:45 +02:00
Frederic Jacobs a4014c6ad3 Upgrading AxolotlKit
Work on AxolotlKit has no BitHub so taking a contribution for this
commit.
2015-06-15 14:42:31 +02:00
Frederic Jacobs b329062e02 Open SSL 1.0.2c
//FREEBIE
2015-06-13 22:55:00 +02:00
Frederic Jacobs cd0fb8bc51 Fixing graphical glitch in tread with images. 2015-06-07 22:41:59 +02:00
Frederic Jacobs b1b936e436 Bumping up version number
- Upgrading dependencies.
- Fetching latest localizations.
2015-05-18 22:41:01 +02:00
Frederic Jacobs 0f04132b81 Bumping up version number
- Upgraded dependencies.
- Fetching latest localizations.
2015-05-12 22:43:40 +02:00
Frederic Jacobs 9652584ada Upgrading dependencies. 2015-04-28 02:15:41 +02:00
Frederic Jacobs 82a9029c37 Fixes #713 2015-03-21 17:53:39 +01:00
Frederic Jacobs 099bea05ba OpenSSL 1.0.2a 2015-03-21 17:53:38 +01:00
Frederic Jacobs dfdd0a1974 Support for `remoteRegistrationId`.
1) Supporting `remoteRegistrationId` on sending messages. Now showing
warning before sending the message if key conflict exists. Fixes #574
2) Upgrading dependencies: adapting to new libPhoneNumber API.
3) Fixes race condition in database code.
4) Fixing ordering bug. Hopefully once and for good.
2015-02-16 23:49:35 +01:00
Frederic Jacobs 5e92fdbbbe Pinning upstream cert. 2015-01-30 01:33:08 -10:00
Jack Rogers 1eef08628a Audio attachments UI 2015-01-24 16:28:35 -10:00
Christine Corbett ccdc4b5d17 Redesign implementation.
Result of stashed commits by @corbett and @abolishme
2015-01-24 16:28:34 -10:00
Frederic Jacobs bfd710a9ef Upgrading to OpenSSL 1.0.2.
//FREEBIE
2015-01-22 23:04:28 +01:00
Christine Corbett b954ff2445 Closes #261 - Signal 1.0 to 2.0 utility.
Reviewed-by: @FredericJacobs
2015-01-16 14:24:05 +01:00
Frederic Jacobs eff589af93 Closes #236
- Sublassing errors in case of expected behaviour
- When receiving a new message that was using a previously unknown
identity key, we search for any other messages that are encrypted with
the new accepted key and decrypt those too.
- Addressing some of the warnings we had before.
2015-01-04 11:30:28 +01:00
Frederic Jacobs 80a8c39213 Debug: Logging new password creation. 2015-01-04 11:30:25 +01:00
Frederic Jacobs 1eff2b3ad5 Rewriting outgoing pipeline with GCD. 2015-01-04 11:30:23 +01:00
Frederic Jacobs 6dd04a49fe Refactoring signup flow, storage, contacts.
- Signal preferences and keying material moved to the unified storage
- Set up for staging environment to try out the new APIs
- Changes in the push registration flow to send token to RP & TS
2015-01-04 11:29:59 +01:00
Frederic Jacobs b9907b9a32 Laying ground for signup flow refactoring 2015-01-04 11:28:38 +01:00
Frederic Jacobs 43af8c18e3 Merging UI code with some basic TextSecureKit code. 2015-01-04 11:28:38 +01:00
dtsbourg a60bc8be92 Initial Message UI 2015-01-04 11:28:38 +01:00
Frederic Jacobs d05791e699 Moving away from custom HTTP stack 2014-10-06 01:28:45 +02:00
Frederic Jacobs 779e9d1b38 Multiple fixes
- Fixes inherited build settings
- New Podfile format
- Fetching updated strings
2014-10-02 00:32:39 +02:00
Frederic Jacobs cd0bda7105 iOS 8 Support
- Supporting iOS 8
- Updating translations
- Rewriting PushManager to extensively use futures
- Pick up calls directly from the lock-screen
2014-09-15 01:32:19 +02:00
Craig Gidney 5401056d31 Checked indentation, future source results, directory layout, thenTry vs then, dependencies 2014-08-20 19:43:33 -04:00
Craig Gidney ced4fc8947 Initial work to depend on external futures library instead of internal implementation
Still need to:
- Fix indentation
- Check for any FutureSource being returned instead of FutureSource.future
- Check for then: vs thenTry: mixups
- Check for main thread related issues
- Check for other exception catching issues
- Adjust directory layout
- Manual end-to-end testing
2014-08-20 08:08:32 -04:00
Frederic Jacobs 2a0b0cbffc Updating OpenSSL
//FREEBIE
2014-08-07 09:45:43 +02:00
Frederic Jacobs 5ac7acfbc5 Enhancements in the verification flow
- Certificate Pinning with AFNetworking
- Block syntax for number validation
- Fixes null debug logs
2014-08-02 13:57:50 +02:00
Frederic Jacobs 60fb869baa Closes #80 #37
- Use of new Keychain Access attribute
- Error management (notifying the user) when opening app without
required push and microphone permission
- Enforcing APNID are sent to server, retry later if not able to reach
server
2014-08-01 01:53:58 -04:00
Frederic Jacobs 755bc5961e Closes #67 2014-07-30 21:03:20 -04:00
Frederic Jacobs 5c124c647b Using PastelogKit 2014-07-19 12:25:22 -10:00
Frederic Jacobs c69747e48b Production logging & sign up error handling 2014-06-30 17:14:33 +02:00
Frederic Jacobs 6c2f33a6d5 Updating OpenSSL to 1.0.1h 2014-06-27 02:53:18 +02:00
Frederic Jacobs a6bf143855 Cleaner Keychain storage 2014-05-07 00:33:20 +02:00
Frederic Jacobs 6373507108 initial commit 2014-05-06 19:41:08 +02:00