Commit Graph

153 Commits (6f959ff2929484fbd6ce8224db4d8b52f904811d)

Author SHA1 Message Date
Michael Kirk 4f1ee98489 scrub any data that slips through to logs
Similar to phone number scrubbing, we leave a short prefix of the data
to help with debugging without leaking much data.

// FREEBIE
8 years ago
Matthew Chen 1e67bb52e3 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 2202fe70fe Fix broken tests.
// FREEBIE
8 years ago
Matthew Chen f584c4b434 Fix broken tests.
// FREEBIE
8 years ago
Matthew Chen 0b28285deb Fix broken tests.
// FREEBIE
8 years ago
Michael Kirk d15da6e6d4 fix bubble calculator tests
// FREEBIE
8 years ago
Michael Kirk 82180f6a97 fix compilation problems
// FREEBIE
8 years ago
Matthew Chen 2bec1db541 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen d42588b957 Improve appearance of generic attachments and the attachment approval dialog.
// FREEBIE
8 years ago
Matthew Chen d12a582ee3 Rename source directories with a space in their name.
// FREEBIE
8 years ago
Michael Kirk 0b49037179 Remove some more RP related code
// FREEBIE
8 years ago
Matthew Chen 9db33a9651 Remove RedPhone code.
// FREEBIE
8 years ago
Michael Kirk 4b52a90c8e Fix test
//FREEBIE
8 years ago
Michael Kirk 6466e9f41f [SSK] Better logging for envelopes
Leave last 3 digits of recipientId when scrubbing logs.

This is in line with other Signal clients, and makes it possible to
trace interactions.

// FREEBIE
8 years ago
Michael Kirk 6036e20079 Filter high diacritical text, regardless of length
// FREEBIE
8 years ago
Michael Kirk da32570dc6 [SSK] remove convoluted dependency
Moved query method to PhoneNumberUtil since that's they only caller.
Moved corresponding tests to SSK

// FREEBIE
8 years ago
Matthew Chen a264d9aa9b Responding to CR.
// FREEBIE
8 years ago
Matthew Chen a226a4a1b3 Respond to CR.
// FREEBIE
8 years ago
Michael Kirk 3e651fb8df filter undisplayable text
// FREEBIE
8 years ago
Michael Kirk f37b8bac0f Fix test to use updated PeerConnectionClient API
// FREEBIE
8 years ago
Matthew Chen f4453eb995 Enable WebRTC-based audio and video calls by default.
// FREEBIE
8 years ago
Matthew Chen 3c3f782e7d Clean up prekey usage.
// FREEBIE
8 years ago
Matthew Chen 97001018ae Clean up prekey logic.
// FREEBIE
8 years ago
Matthew Chen ca76ec6f36 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen d9bcd563b1 Avoid possible deadlock in PeerConnectionClient.
// FREEBIE
8 years ago
Matthew Chen b415b6142f Respond to CR, mainly by fixing broken tests.
// FREEBIE
8 years ago
Michael Kirk dbb29d7d7e Don't require recording permissions until call is ringing.
We do this by manually managing the RTCAudioSession.
Unfortunately to do this we have to include a couple of RTC headers not
exported by the default build of WebRTC.framework (see: Libraries/WebRTC)

// FREEBIE
8 years ago
Michael Kirk ca218ebb64 update call signatures for test fakes
// FREEBIE
8 years ago
Michael Kirk 32789bd960 Move RTCDataChannelDelegate to PeerConnectionClient
- minimizes CallService exposure to WebRTC

// FREEBIE
8 years ago
Michael Kirk 8998853aff Move RTCPeerConnectionDelegate to PeerConnectionClient
This makes sense as PeerConnectionClient is our interface to WebRTC

- Makes it easier to test PeerConnectionClient and CallService
- Allows us to shrink CallService class a bit (it's huge)

// FREEBIE
8 years ago
Daniel Rosado 76d01863db [Invite Flow] Use email address to collate contacts when no given or family name is provided
* Add tests to ContactsPicker collate contacts functionality
8 years ago
Michael Kirk 7bcf5190b4 Address some lingering emoji cropping
This is an expedient, but not good, "fix". Some messages are going to
have extra space at the bottom of the bubble. But, for the time being,
that's preferable to getting messages clipped.

// FREEBIE
9 years ago
Michael Kirk ddf0890408 Fix crash on nil message
// FREEBIE
9 years ago
Michael Kirk bd370f1de4 Fix cropped Chinese/Japanese messages
The earlier fix for the broken ios10 emoji font ended up breaking
messages for some users with a tall font.

Here we have a lighter touch - ensuring we don't touch messages that
don't use emoji.

Also, introduce a different approach to the fix, rather than trying to
compute the bounding rect of an appropriately attributed string, just
add an extra bit of height per line.

This approach isn't ideal for long messages with only one emoji line in
them, but the previous approach was incompatible with Chinese messages
that also contain emoji. See the new
`MesssagesBubblesSizeCalculatorTest.swift` for test cases considered.

// FREEBIE
9 years ago
Michael Kirk 1dd06a5e6c Fix registration flow / Keep push tokens in sync
* Separate registering an account from registering for push notifications
  * Allows us to complete registration without prompting user for
    notification settings.

UX Changes
----------
* Automatically keep push tokens in sync on startup.
  Push tokens *can* change, though they rarely do. It happens more often
  for people switching between appstore/beta builds.

  fixes #1174

* Show alert with registration failure
  * add secret 8-tap debug log gesture to registration flow

* Move registration to separate flow
  * don't see flash of inbox when first launching

* show useful error messages when given wrong code / no code

* remove background fetch
  We werent using it, but only relying on a side effect of it which is
  no longer necessary.

Code Changes
------------

* More registration logging.

* Install PromiseKit with carthage

  Our dependencies are not yet framework compatible, so we can't use
  cocoapods.

* Merge preferences util "category" into superclass.

  The immediate reason for this is Swift interop was assuming optional
  types were not optional, and exploding when a value was nil.

  This is clearer anyway, since we were treating it like a subclass, and
  it was the only thing using the class anyway.

* auto-genstrings now searches *.swift (and *.h, which was previously
  broken) for translateable strings.

// FREEBIE
9 years ago
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
9 years ago
Michael Kirk 2ab6955967 More logging, scrub phone numbers from file logs (#1357)
Phone number are still logged in TTY for development.

// FREEBIE
9 years ago
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
9 years ago
Michael Kirk 9db3b0db27 Consistent and efficient media Delete/Copy/Save UX
copy/save/delete is accessed via longpress for all media messages, just
like for simple text messages.

Notes
-----
We don't support saving audio attachments as it's not clear where they should go.
(I don't think users expect them to end up in their iTunes library.)

There is still no UX for "pasting" media into Signal.

Removed the now redundant (and confusing) "share" button interface.

//FREEBIE
9 years ago
Michael Kirk a181d218cf extract and test contact searcher
// FREEBIE
9 years ago
Michael Kirk 1e0f0157c1 namespace ContactsManager -> OWSContactsManager
rename test class ContactManager->OWSContact_s_Manager
update docs

// FREEBIE
9 years ago
Frederic Jacobs 4034baedb9 Adapting to renaming. 9 years ago
Frederic Jacobs 1b02e186f8 Fixes #146 #147. 9 years ago
Frederic Jacobs 975cda312c Adding missing queue test.
The test wasn’t running because wasn’t prefixed with `test`.

//FREEBIE
9 years ago
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.
9 years ago
Frederic Jacobs 26f9207cab Bye Bye Bloomfilters
For reasons outlined in
https://whispersystems.org/blog/contact-discovery/ , Signal will no
more use bloom filters for RedPhone contact intersection.
10 years ago
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).
10 years ago
Frederic Jacobs ada07351e1 Support for `supportsVOIP` attribute.
- Deprecates RedPhone upgrade flow.
- Adds a generic upgrade dialog.
- Upgrades dependencies.
- Reorganizes `TSStorageManager` & TSNetworkManager imports.
10 years ago
Frederic Jacobs f6c0625c2c Removing unused imported classes.
//FREEBIE
10 years ago
Frederic Jacobs b6ef5f0b7f Bloomfilter moves to Cache folder
The bloom filter is not user generated content so Apple is not going to
let us store it into the Documents folder. Moving it to the Cache
folder.
10 years ago
Frederic Jacobs 456d1c479a Fixes #530 10 years ago
Frederic Jacobs 19ca10d431 Allows retry of failed downloads. 10 years ago
Christine Corbett 8a5c5efd73 Group avatar relationship for deletion. 10 years ago
Frederic Jacobs 884c960798 Closes #319 10 years ago
Frederic Jacobs bcd98f90ee Closes #263 10 years ago
Frederic Jacobs 5ccbc4131b Closes #315 10 years ago
Frederic Jacobs 7c658b2879 Enhancements in build configuration.
- Helps onboarding of new contributors because signup generates a fake
push token to register devices.
- Deleted Ad-Hoc configuration since no more HockeyApp distribution.
TestFlight uses default `AppStore release` build configuration.
10 years ago
Christine Corbett b954ff2445 Closes #261 - Signal 1.0 to 2.0 utility.
Reviewed-by: @FredericJacobs
10 years ago
Christine Corbett e58f9bf966 Groups: Update messages, avatars and bug fixes 10 years ago
Christine Corbett 333c920e0b Group functionality
• create
• send/receive full functionality
• basic UI for group updating.

TODOS:
    -group avatars not supported
    -group update occurrence initiated by Android displayed in thread UI but not yet fully

Reviewed-by: @FredericJacobs
10 years ago
Frederic Jacobs 8334adb4d9 Attachments: Sending and receiving 10 years ago
Frederic Jacobs 9683451ed9 Rename to 'attachment' 10 years ago
Frederic Jacobs a55b00552d Removing keyboard when proposing new fingerprint. 10 years ago
Frederic Jacobs 8435a800d4 WebSocket Public Key Pinning. 10 years ago
dtsbourg e48ea52924 ContactDetail: Fix crash on parsedPhoneNumbers 10 years ago
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
10 years ago
Frederic Jacobs b9907b9a32 Laying ground for signup flow refactoring 10 years ago
Frederic Jacobs 43af8c18e3 Merging UI code with some basic TextSecureKit code. 10 years ago
Ben Sandofsky f65d552f6d Prefix NSArray categories.
Begin process of prefixing categories on Foundation and UIKit. This
follows Cocoa best practices. This makes sense given the number of third
party libraries the project incorporates, which may include their own
colliding category method names.

Use OWS prefix on classes that may be used across apps.
11 years ago
Craig Gidney abb0486ec1 Fixed a warning in PriorityQueueTest, and some dot syntax //FREEBIE
- Also simplified the comparators
11 years ago
Craig Gidney f98d661eaa Removed size-assuming NSUInteger parsing tests 11 years ago
Craig Gidney 06a4597859 Fixed RecentCall unconditionally setting userNotified, even for missed calls //FREEBIE 11 years ago
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
11 years ago
Frederic Jacobs 8b42036f16 Reverting timestamp RTP field
See discussion in #143
//FREEBIE
11 years ago
Craig Gidney f1de95ab06 Recursively added dot syntax, translating more terms when they were encountered in the dif
FREEBIE
11 years ago
Craig Gidney baaef78323 Using dot syntax for local*, all*, full*, first*, last*, to*, encodedAs*, copy*
FREEBIE
11 years ago
Craig Gidney 97e2285b23 Setting timestamp based on number of samples sent
- Added timeStamp property to EncodedAudioPacket
- Added timeStamp parameter to rtpPackageWithDefaults constructor
- Added nextTimeStamp to AudioPacker with random initial value and sample length increases
- AudioSocket forwards timeStamp
- Added generateSecureRandomUInt32 to CryptoTools
- Updated tests
FREEBIE
11 years ago
Craig Gidney 03ce3635cb Improved the phone number editing during registration
- Fixed a crash where an offset wrapped around when deleting the opening bracket
- Backspacing now skips over formatting characters
- Cursor position is maintained more accurately when reformatting
- Added a few utility methods
- Also fixed a test not having "test" as a prefix, causing it not to run
//FREEBIE
11 years ago
Craig Gidney e9f8881bd4 Checking error codes and cleaning up when errors occur in EvpKeyAgreement
- Added a test to actually exercise the DH agreement path
//FREEBIE
11 years ago
Craig Gidney 5401056d31 Checked indentation, future source results, directory layout, thenTry vs then, dependencies 11 years ago
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
11 years ago
Craig Gidney 5d31f76f3e Fixed packEcCoordinatesFromEcPoint having variable-sized output, prevent reconstruction of public key 11 years ago
Craig Gidney 4cd30f32ed Using getter syntax for shared*, is*, and has* 11 years ago
Craig Gidney 9e36872644 Using dot syntax for count and length 11 years ago
Craig Gidney 1e9a3e9a46 Ran "Edit -> Refactor -> Convert to Modern Objective-C Syntax"
- dictionaryWithObject -> @{key: val}
- objectAtIndex -> a[i]
- numberWithBool/Int/etc -> @1, @(val)
- Reverted friendly fire on ProtocolBuffers
- Did not do ANY other changes (including changes to make more refactorings succeed)
//FREEBIE
11 years ago
Craig Gidney 6fd78ef143 Added canary test to notify future maintainers when safety pads can be removed from spandsp usage //FREEBIE 11 years ago
Frederic Jacobs 619b53cb0b Screen security feature. Closes #31 11 years ago
Frederic Jacobs f5bbf9d480 Enhancements to certificate pinning
//FREEBIE
11 years ago
Frederic Jacobs aca4733ac0 Multiple fixes
- Make logging optional if desired
- HTTPS external URLs
- Clean app data when re-registering
- If registration future fails, bring back user interaction
11 years ago
Frederic Jacobs 9240a095ae Travis CI-support and iOS8 push notifications
//FREEBIE
11 years ago
Frederic Jacobs dd73eafe47 Preparing tests for Travis
- Removing test server tests
- Getting ZRTP values from Keychain
- Getting NSCFErrors in NetworkStreamTest
- Fixing PriorityQueueTest comparator
11 years ago
mjewkes 2031a95092 UInt16 variance test //FREEBIE 11 years ago
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
11 years ago
Frederic Jacobs 3113665f08 Removing some test headers 11 years ago
Frederic Jacobs c33e38e926 Merging various bug fixes 11 years ago
Frederic Jacobs 7ec22427c0 Closes #75 11 years ago
mjewkes 65e9b47822 Class comment in the header. 11 years ago
mjewkes e48bea1a32 Final removal of the CryptoUtils class name, replaced with CryptoTools. 11 years ago
mjewkes eabb5f43f6 Handshake HMAC Authentication success/failure test. Random uint16 generation variance testing for full CryptoTools test coverage. Removal of stub tests. 11 years ago
Frederic Jacobs 675956f792 Goodbye OCTest, Hello XCTest
Some tests are still failing after the new key datastore transition.
11 years ago