Commit Graph

118 Commits (544f06451fad9c4f2a711271949d917e51f9287f)

Author SHA1 Message Date
Moxie Marlinspike 355d0be78a Introduce new simultaneous initiate strategy.
1) Fix bugs that prevented decrypt() from being non-transactional
   in some cases.

2) Introduce a new unified storage interface.

3) Transition simultaneous initiate from the "needs refresh"
   strategy to one that uses session state resurrection and
   promotion.
10 years ago
Moxie Marlinspike 741171c49f Switch to CBC mode with a derived IV.
1) Since we're not CPU or space constrained (and are in fact
   padding), and since keystream reuse would be more catastrophic
   than IV reuse without chosen plaintext.
10 years ago
Moxie Marlinspike 27b5bf54cc Remove 1 mod 8. 10 years ago
Moxie Marlinspike 82bd75fb75 Fix padding problem. 10 years ago
Moxie Marlinspike 819982af7b Rearrange decrypt API.
1) Change SessionBuilder to only establish sessions via
   KeyExchangeMessage and PreKeyBundles.

2) Change SessionCipher to decrypt either WhisperMessage
   or PreKeyWhisperMessage items, automatically building
   a session for the latter.

3) Change SessionCipher to tear down new sessions built
   with PreKeyWhisperMessages if the embedded WhsiperMessage
   fails to decrypt.
10 years ago
Moxie Marlinspike 5f5ddd7c26 Generate SignedPreKey records, improve SignedPreKey cleanup. 10 years ago
Moxie Marlinspike 0d532afd8e Rename 'device key' to 'signed prekey'. 10 years ago
Moxie Marlinspike 07fd17ccda Add padding for push messages.
1) Use 'bit padding.'

1) By default, pad at 160 byte increments.
10 years ago
Moxie Marlinspike 811479d168 Add first cut of protocol v3 support.
1) Use the new /v2/keys API for storing/retrieving prekey bundles.

2) For sessions built with PreKeyBundle and PreKeyWhisperMessage,
   use a v3 ratcheting session when available.
10 years ago
Moxie Marlinspike 79020cd33c Better FS Locking. 10 years ago
Moxie Marlinspike 2a65257182 Add serialization helpers for IdentityKeyPair. 10 years ago
Moxie Marlinspike a601c56af1 Collapse SessionRecord, SessionState, and PreKeyRecord interfaces. 10 years ago
Moxie Marlinspike 5a3c19fe3e Javadocs, and some minor refactoring. 10 years ago
Moxie Marlinspike 72af8b11c2 Move session construction and KeyExchangeMessage into libaxolotl.
1) Add plain two-way key exchange support libaxolotl by moving
   all the KeyExchangeMessage code there.

2) Move the bulk of KeyExchangeProcessor code to libaxolotl
   for setting up sessions based on retrieved prekeys, received
   prekeybundles, or exchanged key exchange messages.
10 years ago
Moxie Marlinspike 14b8f97de2 Reorganize session store load/store operations. 10 years ago
Moxie Marlinspike d902c12941 Break core ratchet out into libaxolotol.
1) Break the core cryptography functions out into libaxolotol.

2) The objective for this code is a Java library that isn't
   dependent on any Android functions.  However, while the
   code has been separated from any Android functionality,
   it is still an 'android library project' because of the
   JNI.
10 years ago
Moxie Marlinspike d979593cbb Bump version to 2.1.7 10 years ago
Jake McGinty 23a1c1c8fa Upgrade to latest Android gradle plugin
// FREEBIE
Closes #1660
10 years ago
Jake McGinty f6e04d0f89 use latest android number as recipient number
Fixes #791
// FREEBIE
10 years ago
Jake McGinty de90222c95 Upgrade android plugin to stay compatible with latest Android Studio
// FREEBIE
10 years ago
Jake McGinty ce7b8ab75a new passphrase prompt activity
// FREEBIE
10 years ago
Moxie Marlinspike 0574ec170a Display legacy message error when V1 message is received. 10 years ago
Moxie Marlinspike cebad39422 Collapse some v2 interfaces now that there's no v1. 10 years ago
Moxie Marlinspike 1d07ca3e6f Remove V1 code. 10 years ago
Moxie Marlinspike 4438b4ae69 Add a TrustManager that blacklists via serial numbers. 10 years ago
Jake McGinty 832763f695 UX for unencrypted fallback case 10 years ago
Moxie Marlinspike 5a3daf4846 Curve25519 keys to 1 mod 8 for ephemerals. 10 years ago
Moxie Marlinspike fd1a18d2d0 Don't display duplicate push messages. 10 years ago
Moxie Marlinspike ad5d6d5bb7 Add refresh path for PreKey queue. 10 years ago
Moxie Marlinspike 926d3c929f Handle simultaneous initiate protocol case.
1) Modify SessionRecord to store a list of "previous" sessions
   in addition to the current active session.  Previous sessions
   can be used for receiving messages, but not for sending
   messages.

2) When a possible "simultaneous initiate" is detected, push the
   current session onto the "previous session" stack instead of
   clearing it and starting over.

3) Additionally, mark the new session created on a received
   possible "simultaneous initiate" as stale for sending.  The
   next outgoing message would trigger a full prekey refresh.

4) Work to do: outgoing messages on the SMS transport should
   probably not use the existing session if it's marked stale
   for sending.  These messages need to fail and notify the user,
   similar to how we'll handle SMS fallback to push users before
   a prekey session is created.
10 years ago
Jake McGinty 11cfc4f1a1 upgrade gradle version
// FREEBIE
10 years ago
Moxie Marlinspike 0850f1b0f1 Add libcurve25519 bins.
// FREEBIE
11 years ago
Florian Walch 1ddc45fd9c Build native code for multiple architectures.
* Include native libs without requiring intermediate .jar.
 * Fix build warnings; use latest build tools.
11 years ago
Benjamin Albrecht 0f6c7660cb Use modern icons in info and alert dialogs for ICS+ 11 years ago
Moxie Marlinspike 20fd881613 Display error code from server when already registered elsewhere. 11 years ago
Moxie Marlinspike 559228af5b Fix for bug modifying immutable list. 11 years ago
Moxie Marlinspike e8a0fac05b Fix for identity key mismatch on devices with V1 identities. 11 years ago
Moxie Marlinspike ca2eecaedf Add advanced preference for refreshing push directory. 11 years ago
Moxie Marlinspike a6e1d56cde Refactor group messaging protocol.
// FREEBIE
11 years ago
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."
11 years ago
Jake McGinty 649f037ed8 apply same fix used on DecryptingPartInputStream to AttachmentCipherInputStream // FREEBIE 11 years ago
Jake McGinty d19ab04bdd gradle wrapper 1.10, android plugin 0.8, android support 19.0.1 //
FREEBIE
11 years ago
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.
11 years ago
Moxie Marlinspike 9bb327db42 Handle SMS fallback preferences correctly, and fix directory sync. 11 years ago
Moxie Marlinspike b9f4fba98a Handle identity key mismatch on outgoing group messages.
Additionally, make the group creation process asynchronous.
11 years ago
Moxie Marlinspike 7d3a2acb29 Fix build 11 years ago
Moxie Marlinspike 9438973eac Switch to protobuf enums for push signal type. 11 years ago
Jake McGinty b4a4e629f1 alignment and string work 11 years ago
Jake McGinty 9cd5a67ec5 directory changes to use number instead of token, group ui progress 11 years ago
Moxie Marlinspike 0af473d880 Merge branch 'groups' of github.com:WhisperSystems/TextSecure into groups 11 years ago