Commit Graph

480 Commits

Author SHA1 Message Date
Jake McGinty
a0cbbd2d21 confirm session abort handler in ConversationItem
// FREEBIE
2014-02-20 11:42:15 -08:00
Moxie Marlinspike
9614dc9055 Refactor group database model and flow.
1) Use existing DB types instead of adding new columns.

2) Store group attributes in message body, like everything else.
2014-02-19 21:07:47 -08:00
Jake McGinty
0cdc6fd87d embrace the darkness, don't open quickcontact for groups
// FREEBIE
2014-02-19 15:01:10 -08:00
Moxie Marlinspike
19dddd7adf Support for an 'end session' protocol message.
1) On the push side, this message is a flag in PushMessageContent.
   Any secure message with that flag will terminate the current
   sessin.

2) On the SMS side, there is an "end session" wire type and
   the convention that a message with this wire type must be
   secure and contain the string "TERMINATE."
2014-02-19 13:50:32 -08:00
Jake McGinty
0688dd0c2c repurpose ImageDivet for avatar, minor lint, fix bitmap decoding
// FREEBIE
2014-02-19 00:01:37 -08:00
Jake McGinty
9d9a0ec218 collection of fixes based on comments/small aesthetic stuff // FREEBIE 2014-02-18 16:42:44 -08:00
Jake McGinty
e05bacd8c3 fixing avatar selection when some gallery apps won't return any extras
but still succeed // FREEBIE
2014-02-18 16:42:33 -08:00
Moxie Marlinspike
760c96171d Merge branch 'master' into groups 2014-02-18 13:53:35 -08:00
Moxie Marlinspike
3999171377 Introduce registration-time ID for detecting stale sessions.
1) At registration time, a client generates a random ID and
   transmits to the the server.

2) The server provides that registration ID to any client
   that requests a prekey.

3) Clients include that registration ID in any
   PreKeyWhisperMessage.

4) Clients include that registration ID in their sendMessage
   API call to the server.

5) The server verifies that the registration ID included in
   an API call is the same as the current registration ID
   for the destination device.  Otherwise, it notifies the
   sender that their session is stale.
2014-02-18 12:51:23 -08:00
Jake McGinty
abce678cb4 received group messages aren't processed as "meta" group stuff, oops. 2014-02-17 22:20:43 -08:00
Jake McGinty
fb75d90edc fix bug where it opened wrong thread for TS group creates 2014-02-17 22:04:08 -08:00
Jake McGinty
25324a45b3 Show something for unnamed groups, allow us to have different default photos for groups vs. individuals 2014-02-17 21:42:30 -08:00
Jake McGinty
877ed8f59c Show TS group titles properly, hide MMS options 2014-02-17 20:25:40 -08:00
Jake McGinty
54b087c458 MMS should open conversation also 2014-02-17 20:19:54 -08:00
Jake McGinty
ca51ddac7f re-privatize getRecipientForNumber 2014-02-17 20:19:35 -08:00
Jake McGinty
e15ff6193f unbreak group insertion for new installs 2014-02-17 20:10:37 -08:00
Jake McGinty
93329df530 avatar selection on gb fixed, disable push groups if not push registered 2014-02-17 17:33:20 -08:00
Jake McGinty
948f888670 group ui task refactor, small bug fixes 2014-02-17 16:36:31 -08:00
Jake McGinty
c19ac8ec1e less hacky way of converting ContactData to Recipients 2014-02-17 16:23:29 -08:00
Jake McGinty
04327e9ed7 refresh conversation fragment to new thread when created 2014-02-17 15:48:09 -08:00
Jake McGinty
e81526e581 error messaging for group creation issues 2014-02-17 15:48:09 -08:00
Jake McGinty
4f87c1e52e better intent sequence for single contact selection 2014-02-17 15:48:08 -08:00
Moxie Marlinspike
9bb327db42 Handle SMS fallback preferences correctly, and fix directory sync. 2014-02-17 15:31:42 -08:00
Moxie Marlinspike
94b54a6d63 Fix build. 2014-02-17 13:22:37 -08:00
Moxie Marlinspike
fe03a22926 Make group creation exceptions more accurate. 2014-02-17 13:19:49 -08:00
Moxie Marlinspike
d8e1df9233 Check prekey identity on mismatched devices too. 2014-02-17 12:41:06 -08:00
Moxie Marlinspike
6b5753337c Putting this functionality in the hands of the user was a bad idea. 2014-02-17 12:37:34 -08:00
Moxie Marlinspike
18f3314cd2 Fix for no paradigm. 2014-02-17 11:54:39 -08:00
Moxie Marlinspike
b9f4fba98a Handle identity key mismatch on outgoing group messages.
Additionally, make the group creation process asynchronous.
2014-02-17 11:43:37 -08:00
Jake McGinty
5810062b25 group action conversation items, tweaks to single contact selection 2014-02-16 21:09:15 -08:00
Moxie Marlinspike
e7e5bc0884 Verify identity keys on outgoing messages.
If PreKeyEntity identity key doesn't match local DB, fail
outgoing message and queue "incoming" identity key update
message for manual user approval.
2014-02-16 15:23:49 -08:00
Moxie Marlinspike
e2989373cd All push groups are 'secure' ConversationActivities. 2014-02-15 18:40:08 -08:00
Moxie Marlinspike
4e703d5a00 Correct retry logic for SMS JB+ and for push groups. 2014-02-15 18:31:25 -08:00
Moxie Marlinspike
b79bc4c234 Fix for non-group threading issue. 2014-02-15 11:44:47 -08:00
Moxie Marlinspike
a305bb80e6 Correctly display group members 2014-02-15 11:30:20 -08:00
Jake McGinty
8e3aa94a05 group member name tags, group convo iconography, tweaks 2014-02-15 04:21:56 -08:00
Moxie Marlinspike
7d3a2acb29 Fix build 2014-02-14 16:41:06 -08:00
Jake McGinty
9b41675f8f single contact selection 2014-02-14 16:21:48 -08:00
Moxie Marlinspike
9438973eac Switch to protobuf enums for push signal type. 2014-02-14 16:20:47 -08:00
Moxie Marlinspike
2f98622948 Fix group migration. 2014-02-14 16:18:18 -08:00
Moxie Marlinspike
067799be06 Display group actions and correctly handle group delivery. 2014-02-14 15:59:57 -08:00
Moxie Marlinspike
7c46f3cbf8 Fill in group creation actions 2014-02-13 17:10:20 -08:00
Jake McGinty
41aa53dd66 masterSecret 2014-02-13 12:36:31 -08:00
Jake McGinty
b47076cf1b kill wrong finish() for mms creation 2014-02-13 12:18:17 -08:00
Jake McGinty
bb4a4d33c9 handlePush and handleMms prototypes 2014-02-13 12:15:26 -08:00
Jake McGinty
c5d010c86f Quick progressbar sample for network operations during group create 2014-02-13 11:44:07 -08:00
Jake McGinty
01a438de09 basic messaging when non-push users are added 2014-02-12 17:17:33 -08:00
Jake McGinty
b4a4e629f1 alignment and string work 2014-02-12 12:05:18 -08:00
Jake McGinty
9cd5a67ec5 directory changes to use number instead of token, group ui progress 2014-02-12 11:35:04 -08:00
Moxie Marlinspike
0af473d880 Merge branch 'groups' of github.com:WhisperSystems/TextSecure into groups 2014-02-03 11:52:27 -08:00
Moxie Marlinspike
0ace469d74 Support for multi-device.
1) In addition to the Recipient interface, there is now
   RecipientDevice.  A Recipient can have multiple corresponding
   RecipientDevices.  All addressing is done to a Recipient, but
   crypto sessions and transport delivery are done to
   RecipientDevice.

2) The Push transport handles the discovery and session setup
   of additional Recipient devices.

3) Some internal rejiggering of Groups.
2014-02-02 19:38:06 -08:00
Jake McGinty
ed3151bdb5 backward compatible navigation drawer toggle // FREEBIE 2014-02-01 19:40:46 -08:00
Jake McGinty
9fd2c4753e ui wip 2014-01-25 23:39:56 -08:00
Jake McGinty
2f01569e45 Revert "Don't stick thread IDs in the Intent extra data. Always mark all threads read from notification."
This reverts commit 91b52bed18.
2014-01-18 18:25:51 -08:00
Moxie Marlinspike
49daa45dca wip 2014-01-14 00:26:43 -08:00
Moxie Marlinspike
4851a555e7 Merge pull request #540 from WhisperSystems/lint
Fixes more lint errors
2014-01-11 10:52:32 -08:00
Ruben Pollan
6cdd2aff0d Suppress lint errors 2014-01-11 01:34:11 -10:00
Ruben Pollan
c134709009 Add apn settings for some providers 2014-01-10 21:03:45 -10:00
Moxie Marlinspike
9b6d4e3696 Merge pull request #532 from mcginty/visual_refresh
WBoC Visual Refresh
2014-01-09 21:08:15 -08:00
Jake McGinty
28c1c5006b icon, contact list and conversation redesign 2014-01-09 19:06:41 -10:00
bozsco
e9a8c7474c Automatically show keyboard when new SMS is composed 2014-01-09 16:52:11 -05:00
Ben Reser
149671095b Fix issue #469: Hide "Clear Passphrase" if passphrase is disabled. 2014-01-07 21:47:28 -08:00
Moxie Marlinspike
c488947248 Merge pull request #453 from irv/master
Merge Fix issue #433
2014-01-07 20:08:53 -08:00
Moxie Marlinspike
04b2c3772a Support skipping password creation at setup 2014-01-07 16:27:00 -08:00
Moxie Marlinspike
5c97b1e864 Twiddle the auto initiate 2014-01-06 20:03:16 -08:00
Moxie Marlinspike
dde2d2564a Fix rebase errors 2014-01-06 19:49:35 -08:00
Moxie Marlinspike
71664926e9 Better handling for unregistered users on outgoing message. 2014-01-06 14:38:41 -08:00
Moxie Marlinspike
d4188c4a1c SHA256 attachment MACs. 2014-01-06 14:38:14 -08:00
Moxie Marlinspike
f002072f38 New attachment API 2014-01-06 14:38:14 -08:00
Moxie Marlinspike
327ee4ff62 Remove unnecessary classes, up prekey limit to 100 2014-01-06 14:38:14 -08:00
Moxie Marlinspike
1ab4e7e9de Library accepts push connection certificate as argument. 2014-01-06 14:38:14 -08:00
Moxie Marlinspike
ce5f3c5157 Validate phone numbers when formatting. 2014-01-06 14:37:52 -08:00
Moxie Marlinspike
44092a3eff Support for Axolotl protocol.
1) Split code into v1 and v2 message paths.

2) Do the Axolotl protocol for v2.

3) Switch all v2 entities to protobuf.
2014-01-06 14:37:52 -08:00
Moxie Marlinspike
dc73bc2a5c Having calling code specify push URL to library. 2014-01-06 14:37:52 -08:00
Moxie Marlinspike
4380b46a35 Correctly update MMS security status. 2014-01-06 14:37:51 -08:00
Moxie Marlinspike
fde8d32848 Subtle rebase conflicts... 2014-01-06 14:37:51 -08:00
Moxie Marlinspike
dadabdfaa8 Make UI responsive to UniversalTransport upgrades. 2014-01-06 14:36:23 -08:00
Moxie Marlinspike
c38a8aa699 Migrate to Curve25519.
1) Generate a Curve25519 identity key.

2) Use Curve25519 ephemerals and identities for v2 3DHE agreements.

3) Initiate v2 key exchange messages.

4) Accept v1 key exchange messages.

5) TOFU Curve25519 identities.
2014-01-06 14:36:22 -08:00
Moxie Marlinspike
dbc070cd65 Refactor the ciphertext message parsing and building. 2014-01-06 14:36:22 -08:00
Moxie Marlinspike
44d59d0fd1 Correctly store destination SMS state. 2014-01-06 14:36:21 -08:00
Moxie Marlinspike
51b9affe90 Add federation support for attachment retrieval. 2014-01-06 14:36:21 -08:00
Moxie Marlinspike
246cd10454 Bundle e164 and relay into PushDestination 2014-01-06 14:36:21 -08:00
Moxie Marlinspike
ca3c82f581 Simply PushServiceSocket constructor. 2014-01-06 14:36:21 -08:00
Moxie Marlinspike
5b2caa0074 Make relay arguments consistent. 2014-01-06 14:36:21 -08:00
Moxie Marlinspike
fa5ccc3f8a Support for server federation. 2014-01-06 14:35:54 -08:00
Moxie Marlinspike
25a2ad7289 Add directory refreshing at 24hr intervals. 2014-01-06 14:35:54 -08:00
Moxie Marlinspike
eb4cc7f4e5 Add incoming message sources to active token dir. 2014-01-06 14:35:54 -08:00
Moxie Marlinspike
1ac32346c1 Graduate to a rebased and gradle world. 2014-01-06 14:35:54 -08:00
Moxie Marlinspike
2d083208cc Handle negative directory case and unlisted contacts. 2014-01-06 14:35:54 -08:00
Moxie Marlinspike
75cca3add1 Resign ourselves to a less sophisticated contact intersection method. 2014-01-06 14:35:53 -08:00
Moxie Marlinspike
073b1f69e3 Rollbacks, v2 sms-transport key exchanges, push identity conflicts.
1) Stop protocol rollbacks.

2) Handle v2 version key exchange messages.

3) Handle identity key conflicts on prekeybundle messages.
2014-01-06 14:35:53 -08:00
Moxie Marlinspike
5e6d39beea Move classes into library 2014-01-06 14:35:53 -08:00
Moxie Marlinspike
8f6590b738 Handle notifications and receiving push when locked. 2014-01-06 14:35:53 -08:00
Moxie Marlinspike
0dd36c64a4 Basic support for encrypted push-based attachments.
1) Move the attachment structures into the encrypted message body.

2) Encrypt attachments with symmetric keys transmitted in the
   encryptd attachment pointer structure.

3) Correctly handle asynchronous decryption and categorization of
   encrypted push messages.

TODO: Correct notification process and network/interruption
      retries.
2014-01-06 14:35:53 -08:00
Moxie Marlinspike
cddba2738f Make encoding/decoding more explicit. 2014-01-06 14:35:53 -08:00
Moxie Marlinspike
0cc5837d7f Support encrypted transport, properly handle multiple recipients.
1) Add encryption support for the transport layer.  This obscures
   metadata from the push messaging provider.

2) Better support the direction multiple destination messages is
   headed (one unique message per recipient).
2014-01-06 14:35:53 -08:00
Moxie Marlinspike
68ec0a3727 Add last resort key and signaling key. 2014-01-06 14:35:53 -08:00
Moxie Marlinspike
45e380a5bb move constants into library 2014-01-06 14:35:52 -08:00
Moxie Marlinspike
1bbcedabd4 Added SMS transport support for PreKeyBundle messages.
1) Added SMS transport support.

2) Keep track of whether a PreKeyBundle message has gotten
   a response, and send them as subsequent messages until
   one has been received.
2014-01-06 14:35:52 -08:00
Moxie Marlinspike
c3b8b62d32 Delete pre-key record when establishing agreement. 2014-01-06 14:35:52 -08:00
Moxie Marlinspike
43492b66c4 Rename EncryptedMessage 2014-01-06 14:35:52 -08:00
Moxie Marlinspike
7f642666dd Basic support for prekeybundle message delivery and receipt. 2014-01-06 14:35:52 -08:00
Moxie Marlinspike
1cc2762656 Refactor relationship between SessionCipher and Message. 2014-01-06 14:35:52 -08:00
Moxie Marlinspike
d1969412fb Move PreKey ids to be Mediums, generate in circular buffer. 2014-01-06 14:35:51 -08:00
Moxie Marlinspike
edb89ee3e9 Encode prekey as full JSON rather than protobuf blobs.
1) Split prekey messages out into full JSON.

2) Add support for retrieving prekeys.
2014-01-06 14:35:51 -08:00
Moxie Marlinspike
499de2d2bf Move prekey jsonifcation into the push code, add identity key. 2014-01-06 14:35:51 -08:00
Moxie Marlinspike
b8f663b69c Move common crypto classes into TextSecureLibrary.
1) Move all the crypto classes from securesms.crypto.

2) Move all the crypto storage from securesms.database.keys

3) Replace the old imported BC code with spongycastle.
2014-01-06 14:35:51 -08:00
Moxie Marlinspike
2042ca6cb7 Generate "prekeys" at push registration time.
This generates a large number of key exchange messages and
registers them with the server during signup.
2014-01-06 14:34:47 -08:00
Moxie Marlinspike
cfb7b8fcba Consider unregistered if authorization fails.
This should only occur if another device has registered with the
same number, effectively making the current device unregistered.
2014-01-06 14:34:46 -08:00
Moxie Marlinspike
03ff55db97 Actually set the preference to unregistered 2014-01-06 14:33:53 -08:00
Moxie Marlinspike
fb378a6e00 Change attachment retrieval interface 2014-01-06 14:33:53 -08:00
Moxie Marlinspike
9287d413ac Support for incoming attachments.
1) Refactored MMS layer to use abstracted types.

2) Added support for retrieving attachment IDs.
2014-01-06 14:33:52 -08:00
Moxie Marlinspike
4bb337a3a0 Revised support for outgoing attachments 2014-01-06 14:33:52 -08:00
Moxie Marlinspike
fd045f2354 Refactor MMS send/download to be synchronous.
1) Make the radio change a synchronous action with a timeout.

2) Move the send logic into an MmsTransport, in preparation for
   UniversalTransport composition.

3) Move the download logic into a synchronous receiver.
2014-01-06 14:33:52 -08:00
Moxie Marlinspike
53803630d4 Enable TextSecure universal transport. 2014-01-06 14:33:52 -08:00
Moxie Marlinspike
d7070e7ecf Inserted the Registration activity into initial setup flow.
1) Added push messaging toggle to preferences.

2) Added push messaging registration screen to setup flow.

3) Migrated rest of SharedPreferences accessors to
   TextSecurePreferences.
2014-01-06 14:30:03 -08:00
Moxie Marlinspike
52e5274a2f Add registration notification support. 2014-01-06 14:21:51 -08:00
Moxie Marlinspike
0ed9da9a2c Strings and slight cleanup 2014-01-06 14:21:50 -08:00
Moxie Marlinspike
26dadfcb7a Move trust store to raw resource from asset. 2014-01-06 14:21:50 -08:00
Moxie Marlinspike
1ac06312a0 Move directory and push service socket into library. 2014-01-06 14:21:50 -08:00
Moxie Marlinspike
a200d29514 Move most of Util into library 2014-01-06 14:21:50 -08:00
Moxie Marlinspike
21eee19380 Split into library project and add shared preferences layer of indirection. 2014-01-06 14:20:59 -08:00
Moxie Marlinspike
0958c30400 Stringify 2014-01-06 14:19:06 -08:00
Moxie Marlinspike
3634ba0b55 Registration with voice verification. 2014-01-06 14:18:30 -08:00
Veeti Paananen
eb1b762a76 Improve password caching notification UI & UX
On Jelly Bean and above:

- Use the standard notification style for a better and consistent visual
  appearance

- Use the JB notification actions API for the locking action

- Use a lower notification priority to prioritize other notifications
  over TextSecure

On ICS:

- Use the existing custom notification layout

Everywhere:

- Allow opening the app itself from the notification

- Simplify strings: don't talk about a "cached passphrase" but about the
  app being "unlocked"/"locked"
2013-12-22 04:48:39 +02:00
nicky g
a0c821f6ac set unread message count in notifications.
was not able to squash commit requesting new pull
2013-12-19 02:44:42 +05:30
Moxie Marlinspike
d260cdcc9f Add giffgaff APN defaults. // FREEBIE 2013-12-17 16:57:40 -08:00
Moxie Marlinspike
496d5e21d2 Add Slovenia APN defaults 2013-12-17 16:53:35 -08:00
Veeti Paananen
6eb094c87e Show LED and ringtone setting values in their summaries
As instructed in the Android design guidelines. Also removed unnatural
capitalization.
2013-12-17 03:13:22 +02:00
Veeti Paananen
f18324e2d6 Add tab swiping in the contact picker 2013-12-16 22:17:52 +02:00
Andy Irving
91b52bed18 Don't stick thread IDs in the Intent extra data. Always mark all threads read from notification. 2013-12-14 16:55:24 +00:00
Moxie Marlinspike
7c2fb74af4 Fix for bug that could drop unencrypted MMS on KitKat. 2013-12-07 11:03:26 -08:00
Moxie Marlinspike
7489f3463a Change the way notifications work for non-default KitKat.
Messages that are not "secure" (encrypted or key exchange) are
automatically marked as read if TextSecure isn't the default
KitKat SMS app.

This change in functionality allows people who aren't using
TextSecure as a default SMS app on KitKat to still receive
notifications when they get incoming encrypted messages.
2013-12-07 11:03:25 -08:00
Andy Irving
7f44b029fe use PendingIntent.FLAG_UPDATE_CURRENT in calls to PendingIntent.getActivity() to avoid re-using the same extra data on every intent. 2013-12-03 21:48:16 +00:00
Moxie Marlinspike
c2b809c7c6 Fix for long multipart message bug on some ROMs. 2013-12-03 08:21:31 -08:00
Moxie Marlinspike
e0aa7fd359 Let unencrypted messages through. 2013-12-03 08:10:58 -08:00
Veeti Paananen
10580a7f20 Fix crash when no SMS package is set 2013-12-03 09:06:16 +02:00
Moxie Marlinspike
aad82e314d Fix duplicate MMS bug in KitKat.
1) Fix for typo that caused duplicate incoming MMS.

2) Only pay attention to "use for all" properties in < KitKat.
2013-12-02 21:39:09 -08:00
Moxie Marlinspike
fda01796ab Merge pull request #421 from wsot/master
Fix issue #410: DecryptingPartInputStream could return more data than re...
2013-12-02 12:43:23 -08:00
Moxie Marlinspike
b0216e1494 Finish KitKat compatibility details.
1) The system does actually enforce having a BROADCAST_SMS
   permission on the SMS receiver. Break out the "delivered"
   parts of this into a separate Receiver, so the permission
   won't trip up GB devices.

2) The system does actually enforce having "quick response"
   intents.  Add a no-op for now.

3) Add a "make default" prompt.

4) Update settings to reflect what's going on in KitKat.
2013-12-02 12:31:59 -08:00
Gabe Conradi
e81756f443 Proper SMS support for KitKat. 2013-12-02 08:32:34 -08:00
Simeon Morgan
4931d7327b Switch to two-space indentation, remove inline comments. 2013-11-14 17:53:38 +11:00
Simeon Morgan
adfa3c1b10 Optimised use of buffers when decrypting to avoid unnecessary array copying properly. 2013-11-12 13:37:57 +11:00
Simeon Morgan
3cc6344c8b Optimised use of buffers when decrypting to avoid unnecessary array copying 2013-11-12 13:31:30 +11:00
Simeon Morgan
546dd5485c Fix issue #410: DecryptingPartInputStream could return more data than requested, causing segfaults in BitmapFactory on Android 4.4. 2013-11-12 12:57:47 +11:00
Moxie Marlinspike
73bf21602a Move ReceiveKeyActivity back to themed dialog activity. 2013-10-20 19:12:53 -07:00
Moxie Marlinspike
798e3c0656 Merge pull request #384 from meskio/383_batch_selection
Add deselect to batch selection mode
2013-10-20 16:59:41 -07:00
Moxie Marlinspike
891e3aeb97 Merge pull request #381 from meskio/add_contact
New 'add contact info' option on the conversation contextual menu
2013-10-20 16:58:58 -07:00
rhodey
2c2a03e5e2 Enhanced MMS configuration prompts and processing.
1) Added a new message status to MmsDatabase to
   signify a pending MMS download which requires
   APN settings.

2) Added a database method to query MMS messages
   based on status.

3) Added login to SendReceiveService for processing
   of MMS pending APN information.

4) Moved all APN/MMS settings into ApnPreferencesActivity
   and transformed PromptApnActivity into a simple
   informational activity.

5) Added logic to check for APN settings on send and
   receive of all MMS (media, group, email) and direct
   user to PromptApnActivity then ApnPreferencesActivity
   if necessary.

6) Vocab/grammar adjustments.
2013-10-20 16:56:34 -07:00
Ruben Pollan
c7b39eca11 Add deselect to batch selection mode 2013-10-20 18:25:01 +02:00