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
This commit is contained in:
parent
c4eecb24d7
commit
4e72ab92c8
5
Podfile
5
Podfile
|
@ -3,8 +3,9 @@ source 'https://github.com/CocoaPods/Specs.git'
|
||||||
|
|
||||||
target 'Signal' do
|
target 'Signal' do
|
||||||
pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git'
|
pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git'
|
||||||
pod 'AxolotlKit', git: 'https://github.com/WhisperSystems/SignalProtocolKit.git'
|
pod 'AxolotlKit', git: 'https://github.com/WhisperSystems/SignalProtocolKit.git', branch: 'mkirk/session-corruption'
|
||||||
pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git', branch: 'master'
|
#pod 'AxolotlKit', path: '../SignalProtocolKit'
|
||||||
|
pod 'SignalServiceKit', git: 'https://github.com/WhisperSystems/SignalServiceKit.git'
|
||||||
#pod 'SignalServiceKit', path: '../SignalServiceKit'
|
#pod 'SignalServiceKit', path: '../SignalServiceKit'
|
||||||
pod 'OpenSSL'
|
pod 'OpenSSL'
|
||||||
pod 'PastelogKit', '~> 1.3'
|
pod 'PastelogKit', '~> 1.3'
|
||||||
|
|
12
Podfile.lock
12
Podfile.lock
|
@ -115,31 +115,31 @@ PODS:
|
||||||
- ZXingObjC/All (3.1.0)
|
- ZXingObjC/All (3.1.0)
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- AxolotlKit (from `https://github.com/WhisperSystems/SignalProtocolKit.git`)
|
- AxolotlKit (from `https://github.com/WhisperSystems/SignalProtocolKit.git`, branch `mkirk/session-corruption`)
|
||||||
- FFCircularProgressView (~> 0.5)
|
- FFCircularProgressView (~> 0.5)
|
||||||
- JSQMessagesViewController
|
- JSQMessagesViewController
|
||||||
- OpenSSL
|
- OpenSSL
|
||||||
- PastelogKit (~> 1.3)
|
- PastelogKit (~> 1.3)
|
||||||
- SCWaveformView (~> 1.0)
|
- SCWaveformView (~> 1.0)
|
||||||
- SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`, branch `master`)
|
- SignalServiceKit (from `https://github.com/WhisperSystems/SignalServiceKit.git`)
|
||||||
- SocketRocket (from `https://github.com/facebook/SocketRocket.git`)
|
- SocketRocket (from `https://github.com/facebook/SocketRocket.git`)
|
||||||
- ZXingObjC
|
- ZXingObjC
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
AxolotlKit:
|
AxolotlKit:
|
||||||
|
:branch: mkirk/session-corruption
|
||||||
:git: https://github.com/WhisperSystems/SignalProtocolKit.git
|
:git: https://github.com/WhisperSystems/SignalProtocolKit.git
|
||||||
SignalServiceKit:
|
SignalServiceKit:
|
||||||
:branch: master
|
|
||||||
:git: https://github.com/WhisperSystems/SignalServiceKit.git
|
:git: https://github.com/WhisperSystems/SignalServiceKit.git
|
||||||
SocketRocket:
|
SocketRocket:
|
||||||
:git: https://github.com/facebook/SocketRocket.git
|
:git: https://github.com/facebook/SocketRocket.git
|
||||||
|
|
||||||
CHECKOUT OPTIONS:
|
CHECKOUT OPTIONS:
|
||||||
AxolotlKit:
|
AxolotlKit:
|
||||||
:commit: 714f5ebe199ecc999b33c6f97a4bb57e2db90e75
|
:commit: 55630ef62403de7eee31ac42b8827e390b6194f3
|
||||||
:git: https://github.com/WhisperSystems/SignalProtocolKit.git
|
:git: https://github.com/WhisperSystems/SignalProtocolKit.git
|
||||||
SignalServiceKit:
|
SignalServiceKit:
|
||||||
:commit: a112930277890f78676ae32632e9e1ed44034c45
|
:commit: 32aad85a7861433571c70622fe720098275cad56
|
||||||
:git: https://github.com/WhisperSystems/SignalServiceKit.git
|
:git: https://github.com/WhisperSystems/SignalServiceKit.git
|
||||||
SocketRocket:
|
SocketRocket:
|
||||||
:commit: 41b57bb2fc292a814f758441a05243eb38457027
|
:commit: 41b57bb2fc292a814f758441a05243eb38457027
|
||||||
|
@ -170,6 +170,6 @@ SPEC CHECKSUMS:
|
||||||
YapDatabase: b1e43555a34a5298e23a045be96817a5ef0da58f
|
YapDatabase: b1e43555a34a5298e23a045be96817a5ef0da58f
|
||||||
ZXingObjC: bf15b3814f7a105b6d99f47da2333c93a063650a
|
ZXingObjC: bf15b3814f7a105b6d99f47da2333c93a063650a
|
||||||
|
|
||||||
PODFILE CHECKSUM: cb24c78080551874a45d1a20de4a1bef7427b41f
|
PODFILE CHECKSUM: 0b9f2a480586a683632948584eb8eba8ab0f4283
|
||||||
|
|
||||||
COCOAPODS: 1.0.1
|
COCOAPODS: 1.0.1
|
||||||
|
|
|
@ -21,9 +21,11 @@
|
||||||
#import "TSSocketManager.h"
|
#import "TSSocketManager.h"
|
||||||
#import "TextSecureKitEnv.h"
|
#import "TextSecureKitEnv.h"
|
||||||
#import "VersionMigrations.h"
|
#import "VersionMigrations.h"
|
||||||
|
#import <AxolotlKit/SessionCipher.h>
|
||||||
#import <PastelogKit/Pastelog.h>
|
#import <PastelogKit/Pastelog.h>
|
||||||
#import <PromiseKit/AnyPromise.h>
|
#import <PromiseKit/AnyPromise.h>
|
||||||
#import <SignalServiceKit/OWSDisappearingMessagesJob.h>
|
#import <SignalServiceKit/OWSDisappearingMessagesJob.h>
|
||||||
|
#import <SignalServiceKit/OWSDispatch.h>
|
||||||
#import <SignalServiceKit/OWSIncomingMessageReadObserver.h>
|
#import <SignalServiceKit/OWSIncomingMessageReadObserver.h>
|
||||||
#import <SignalServiceKit/OWSMessageSender.h>
|
#import <SignalServiceKit/OWSMessageSender.h>
|
||||||
#import <SignalServiceKit/TSAccountManager.h>
|
#import <SignalServiceKit/TSAccountManager.h>
|
||||||
|
@ -175,6 +177,9 @@ static NSString *const kURLHostVerifyPrefix = @"verify";
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setupTSKitEnv {
|
- (void)setupTSKitEnv {
|
||||||
|
// Encryption/Descryption mutates session state and must be synchronized on a serial queue.
|
||||||
|
[SessionCipher setSessionCipherDispatchQueue:[OWSDispatch sessionCipher]];
|
||||||
|
|
||||||
[TextSecureKitEnv sharedEnv].contactsManager = [Environment getCurrent].contactsManager;
|
[TextSecureKitEnv sharedEnv].contactsManager = [Environment getCurrent].contactsManager;
|
||||||
[[TSStorageManager sharedManager] setupDatabase];
|
[[TSStorageManager sharedManager] setupDatabase];
|
||||||
[TextSecureKitEnv sharedEnv].notificationsManager = [[NotificationsManager alloc] init];
|
[TextSecureKitEnv sharedEnv].notificationsManager = [[NotificationsManager alloc] init];
|
||||||
|
|
Loading…
Reference in New Issue