Compare commits
1 Commits
master
...
tor-framew
Author | SHA1 | Date |
---|---|---|
![]() |
81245b79c0 |
|
@ -40,3 +40,6 @@
|
|||
[submodule "Submodules/libsqlfs"]
|
||||
path = Submodules/libsqlfs
|
||||
url = git@github.com:ChatSecure/libsqlfs.git
|
||||
[submodule "Submodules/Tor_framework"]
|
||||
path = Submodules/Tor_framework
|
||||
url = git@github.com:ChatSecure/Tor.framework.git
|
||||
|
|
|
@ -192,9 +192,6 @@
|
|||
633105181A16D1A300C17BAE /* OTREncryptionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTREncryptionManager.m; sourceTree = "<group>"; };
|
||||
6331051B1A16D1A300C17BAE /* OTRLanguageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTRLanguageManager.h; sourceTree = "<group>"; };
|
||||
6331051C1A16D1A300C17BAE /* OTRLanguageManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTRLanguageManager.m; sourceTree = "<group>"; };
|
||||
6331051D1A16D1A300C17BAE /* OTROAuthRefresher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTROAuthRefresher.h; sourceTree = "<group>"; };
|
||||
6331051E1A16D1A300C17BAE /* OTROAuthRefresher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTROAuthRefresher.m; sourceTree = "<group>"; };
|
||||
633105211A16D1A300C17BAE /* OTRProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTRProtocol.h; sourceTree = "<group>"; };
|
||||
633105221A16D1A300C17BAE /* OTRProtocolManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTRProtocolManager.h; sourceTree = "<group>"; };
|
||||
633105231A16D1A300C17BAE /* OTRProtocolManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OTRProtocolManager.m; sourceTree = "<group>"; };
|
||||
6331052E1A16D1A300C17BAE /* OTRSettingsManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OTRSettingsManager.h; sourceTree = "<group>"; };
|
||||
|
@ -641,6 +638,7 @@
|
|||
D9C6E6A01B71575300572273 /* OTRUsernameCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OTRUsernameCell.swift; sourceTree = "<group>"; };
|
||||
D9CBBC571C642BAA005CD715 /* EnablePushViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EnablePushViewController.swift; path = "ChatSecure/Classes/View Controllers/Onboarding/EnablePushViewController.swift"; sourceTree = SOURCE_ROOT; };
|
||||
D9DB2D131F37AEBB005D64E4 /* OTRYapMessageSendAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OTRYapMessageSendAction.swift; sourceTree = "<group>"; };
|
||||
D9DE95F322DA86AD00E76C7A /* OTRTorManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OTRTorManager.swift; sourceTree = "<group>"; };
|
||||
D9DEC3491FABC9F900BF1F7C /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
|
||||
D9E8277D1E2819F20071F40D /* strings.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = strings.json; path = OTRAssets/Strings/strings.json; sourceTree = SOURCE_ROOT; };
|
||||
D9EEEDD11D27388600B8BC54 /* OTRvCard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OTRvCard.h; path = "Yap Storage/OTRvCard.h"; sourceTree = "<group>"; };
|
||||
|
@ -800,13 +798,11 @@
|
|||
633105161A16D1A300C17BAE /* OTRDatabaseView.m */,
|
||||
633105171A16D1A300C17BAE /* OTREncryptionManager.h */,
|
||||
633105181A16D1A300C17BAE /* OTREncryptionManager.m */,
|
||||
6331051D1A16D1A300C17BAE /* OTROAuthRefresher.h */,
|
||||
6331051E1A16D1A300C17BAE /* OTROAuthRefresher.m */,
|
||||
633105211A16D1A300C17BAE /* OTRProtocol.h */,
|
||||
633105221A16D1A300C17BAE /* OTRProtocolManager.h */,
|
||||
633105231A16D1A300C17BAE /* OTRProtocolManager.m */,
|
||||
6331052E1A16D1A300C17BAE /* OTRSettingsManager.h */,
|
||||
6331052F1A16D1A300C17BAE /* OTRSettingsManager.m */,
|
||||
D9DE95F322DA86AD00E76C7A /* OTRTorManager.swift */,
|
||||
633105301A16D1A300C17BAE /* OTRTorManager.h */,
|
||||
633105311A16D1A300C17BAE /* OTRTorManager.m */,
|
||||
633AF2F81A7C3DBB0030A3FF /* OTRAudioSessionManager.h */,
|
||||
|
@ -1563,6 +1559,7 @@
|
|||
D9EC47841EFA043B00C39B25 /* [Carthage] Copy Frameworks */,
|
||||
D92F96D821BA1E7A0056EA35 /* LicensePlist */,
|
||||
42829843B1DFA068A70F83E8 /* [CP] Copy Pods Resources */,
|
||||
2D0230D0CF74A4A7D7BA77AB /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -1584,6 +1581,7 @@
|
|||
6396AFB11A169D54009F3E6C /* Resources */,
|
||||
D9BE0B531EFAFED800BDF8D8 /* [Carthage] Copy Frameworks */,
|
||||
3CDE4234E348F4E767DA1980 /* [CP] Copy Pods Resources */,
|
||||
142353818BBDB61EA63263C1 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -1795,6 +1793,30 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
142353818BBDB61EA63263C1 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests-frameworks.sh",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/Tor.framework",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/Tor.framework.dSYM",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/93C43FE0-93A2-3408-873F-124872631203.bcsymbolmap",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/3534DE4E-110A-335A-9AFF-D9BBFF6BC8FE.bcsymbolmap",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Tor.framework",
|
||||
"${DWARF_DSYM_FOLDER_PATH}/Tor.framework.dSYM",
|
||||
"${BUILT_PRODUCTS_DIR}/93C43FE0-93A2-3408-873F-124872631203.bcsymbolmap",
|
||||
"${BUILT_PRODUCTS_DIR}/3534DE4E-110A-335A-9AFF-D9BBFF6BC8FE.bcsymbolmap",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ChatSecureCorePods-ChatSecureTests/Pods-ChatSecureCorePods-ChatSecureTests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
26A8ED395C5418B361347335 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
@ -1813,6 +1835,30 @@
|
|||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2D0230D0CF74A4A7D7BA77AB /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure-frameworks.sh",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/Tor.framework",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/Tor.framework.dSYM",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/93C43FE0-93A2-3408-873F-124872631203.bcsymbolmap",
|
||||
"${PODS_ROOT}/Tor/Build/iOS/3534DE4E-110A-335A-9AFF-D9BBFF6BC8FE.bcsymbolmap",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Tor.framework",
|
||||
"${DWARF_DSYM_FOLDER_PATH}/Tor.framework.dSYM",
|
||||
"${BUILT_PRODUCTS_DIR}/93C43FE0-93A2-3408-873F-124872631203.bcsymbolmap",
|
||||
"${BUILT_PRODUCTS_DIR}/3534DE4E-110A-335A-9AFF-D9BBFF6BC8FE.bcsymbolmap",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ChatSecureCorePods-ChatSecure/Pods-ChatSecureCorePods-ChatSecure-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3CDE4234E348F4E767DA1980 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
|
@ -7,12 +7,20 @@
|
|||
//
|
||||
|
||||
@import Foundation;
|
||||
@import CPAProxy;
|
||||
@import Tor;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@interface OTRTorManager : NSObject
|
||||
|
||||
@property (nonatomic, strong) CPAProxyManager *torManager;
|
||||
//@property (nonatomic, strong) CPAProxyManager *torManager;
|
||||
@property (nonatomic, strong, readonly) TORController *torController;
|
||||
|
||||
@property (nonatomic, class, readonly) OTRTorManager *shared;
|
||||
|
||||
@property (nonatomic, class, readonly) NSString *SOCKSHost;
|
||||
@property (nonatomic, class, readonly) uint16_t SOCKSPort;
|
||||
|
||||
+ (instancetype) sharedInstance;
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -7,32 +7,49 @@
|
|||
//
|
||||
|
||||
#import "OTRTorManager.h"
|
||||
|
||||
@import CPAProxy;
|
||||
@import Tor;
|
||||
|
||||
@implementation OTRTorManager
|
||||
|
||||
- (instancetype) init {
|
||||
if (self = [super init]) {
|
||||
// Get resource paths for the torrc and geoip files from the main bundle
|
||||
NSBundle *cpaProxyFrameworkBundle = [NSBundle bundleForClass:[CPAProxyManager class]];
|
||||
NSURL *cpaProxyBundleURL = [cpaProxyFrameworkBundle URLForResource:@"CPAProxy" withExtension:@"bundle"];
|
||||
NSBundle *cpaProxyBundle = [[NSBundle alloc] initWithURL:cpaProxyBundleURL];
|
||||
NSParameterAssert(cpaProxyBundle != nil);
|
||||
|
||||
NSString *torrcPath = [[NSBundle mainBundle] pathForResource:@"torrc" ofType:nil]; // use custom torrc
|
||||
NSString *geoipPath = [cpaProxyBundle pathForResource:@"geoip" ofType:nil];
|
||||
NSString *dataDirectory = [[[[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"com.ChatSecure.Tor"] path];
|
||||
|
||||
// Initialize a CPAProxyManager
|
||||
CPAConfiguration *configuration = [CPAConfiguration configurationWithTorrcPath:torrcPath geoipPath:geoipPath torDataDirectoryPath:dataDirectory];
|
||||
configuration.isolateDestinationAddress = YES;
|
||||
configuration.isolateDestinationPort = YES;
|
||||
self.torManager = [CPAProxyManager proxyWithConfiguration:configuration];
|
||||
// Tor.framework
|
||||
[self setupTorFramework];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) setupTorFramework {
|
||||
NSString *dataDirectory = [[[[[NSFileManager defaultManager] URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"com.ChatSecure.Tor"] path];
|
||||
|
||||
TORConfiguration *configuration = [TORConfiguration new];
|
||||
configuration.cookieAuthentication = @(YES);
|
||||
configuration.dataDirectory = dataDirectory;
|
||||
NSString *SOCKSPort = @(OTRTorManager.SOCKSPort).stringValue;
|
||||
configuration.arguments = @[@"--ignore-missing-torrc",
|
||||
@"--socksport", SOCKSPort,
|
||||
@"--controlport", @"127.0.0.1:49060",];
|
||||
|
||||
TORThread *thread = [[TORThread alloc] initWithConfiguration:configuration];
|
||||
[thread start];
|
||||
|
||||
NSURL *cookieURL = [configuration.dataDirectory URLByAppendingPathComponent:@"control_auth_cookie"];
|
||||
NSData *cookie = [NSData dataWithContentsOfURL:cookieURL];
|
||||
_torController = [[TORController alloc] initWithSocketHost:@"127.0.0.1" port:49060];
|
||||
[_torController authenticateWithData:cookie completion:^(BOOL success, NSError *error) {
|
||||
if (!success)
|
||||
return;
|
||||
|
||||
id circuitObserver = nil;
|
||||
circuitObserver = [_torController addObserverForCircuitEstablished:^(BOOL established) {
|
||||
if (!established)
|
||||
return;
|
||||
NSLog(@"Tor connected");
|
||||
[_torController removeObserver:circuitObserver];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma - mark Singleton Methodd
|
||||
|
||||
+ (instancetype)sharedInstance
|
||||
|
@ -46,4 +63,16 @@
|
|||
return _sharedInstance;
|
||||
}
|
||||
|
||||
+ (OTRTorManager*) shared {
|
||||
return [self sharedInstance];
|
||||
}
|
||||
|
||||
+ (NSString*) SOCKSHost {
|
||||
return @"127.0.0.1";
|
||||
}
|
||||
|
||||
+ (uint16_t) SOCKSPort {
|
||||
return 49050;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -217,9 +217,8 @@ typedef NS_ENUM(NSInteger, XMPPClientState) {
|
|||
// File Transfer
|
||||
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
|
||||
if ([self isKindOfClass:[OTRXMPPTorManager class]]) {
|
||||
CPAProxyManager *tor = [OTRTorManager sharedInstance].torManager;
|
||||
NSString *proxyHost = tor.SOCKSHost;
|
||||
NSUInteger proxyPort = tor.SOCKSPort;
|
||||
NSString *proxyHost = OTRTorManager.SOCKSHost;
|
||||
NSUInteger proxyPort = OTRTorManager.SOCKSPort;
|
||||
NSDictionary *proxyDict = @{
|
||||
(NSString *)kCFStreamPropertySOCKSProxyHost : proxyHost,
|
||||
(NSString *)kCFStreamPropertySOCKSProxyPort : @(proxyPort)
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
@implementation OTRXMPPTorManager
|
||||
|
||||
- (void) connectUserInitiated:(BOOL)userInitiated {
|
||||
if ([OTRTorManager sharedInstance].torManager.isConnected) {
|
||||
if (OTRTorManager.shared.torController.isConnected) {
|
||||
[super connectUserInitiated:userInitiated];
|
||||
} else {
|
||||
NSError * error = [NSError errorWithDomain:OTRXMPPErrorDomain code:OTRXMPPErrorCodeTorError userInfo:@{NSLocalizedDescriptionKey:NSLocalizedString(@"Need to connect to Tor first.", @"")}];
|
||||
|
@ -37,8 +37,8 @@
|
|||
// override
|
||||
- (void) setupStream {
|
||||
[super setupStream];
|
||||
NSString *proxyHost = [OTRTorManager sharedInstance].torManager.SOCKSHost;
|
||||
NSUInteger proxyPort = [OTRTorManager sharedInstance].torManager.SOCKSPort;
|
||||
NSString *proxyHost = OTRTorManager.SOCKSHost;
|
||||
NSUInteger proxyPort = OTRTorManager.SOCKSPort;
|
||||
if ([self.xmppStream isKindOfClass:[ProxyXMPPStream class]]) {
|
||||
ProxyXMPPStream *proxyStream = (ProxyXMPPStream*)self.xmppStream;
|
||||
[proxyStream setProxyHost:proxyHost port:proxyPort version:GCDAsyncSocketSOCKSVersion5];
|
||||
|
|
|
@ -56,19 +56,21 @@
|
|||
|
||||
if (account.accountType == OTRAccountTypeXMPPTor) {
|
||||
//check tor is running
|
||||
if ([OTRTorManager sharedInstance].torManager.status == CPAStatusOpen) {
|
||||
if (OTRTorManager.shared.torController.isConnected) {
|
||||
[self finishRegisteringWithForm:form account:account];
|
||||
} else if ([OTRTorManager sharedInstance].torManager.status == CPAStatusClosed) {
|
||||
[[OTRTorManager sharedInstance].torManager setupWithCompletion:^(NSString *socksHost, NSUInteger socksPort, NSError *error) {
|
||||
|
||||
if (error) {
|
||||
} else {
|
||||
id circuitObserver = nil;
|
||||
circuitObserver = [OTRTorManager.shared.torController addObserverForCircuitEstablished:^(BOOL established) {
|
||||
if (!established) {
|
||||
NSError *error = [NSError errorWithDomain:@"com.tor.error" code:1 userInfo:nil];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
completion(account,error);
|
||||
});
|
||||
} else {
|
||||
[OTRTorManager.shared.torController removeObserver:circuitObserver];
|
||||
[self finishRegisteringWithForm:form account:account];
|
||||
}
|
||||
} progress:progress];
|
||||
}];
|
||||
}
|
||||
} else {
|
||||
[self finishRegisteringWithForm:form account:account];
|
||||
|
|
|
@ -210,19 +210,22 @@
|
|||
|
||||
if (account.accountType == OTRAccountTypeXMPPTor) {
|
||||
//check tor is running
|
||||
if ([OTRTorManager sharedInstance].torManager.status == CPAStatusOpen) {
|
||||
|
||||
if (OTRTorManager.shared.torController.isConnected) {
|
||||
[self finishConnectingWithForm:form account:account];
|
||||
} else if ([OTRTorManager sharedInstance].torManager.status == CPAStatusClosed) {
|
||||
[[OTRTorManager sharedInstance].torManager setupWithCompletion:^(NSString *socksHost, NSUInteger socksPort, NSError *error) {
|
||||
|
||||
if (error) {
|
||||
} else {
|
||||
id circuitObserver = nil;
|
||||
circuitObserver = [OTRTorManager.shared.torController addObserverForCircuitEstablished:^(BOOL established) {
|
||||
if (!established) {
|
||||
NSError *error = [NSError errorWithDomain:@"com.tor.error" code:1 userInfo:nil];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
completion(account,error);
|
||||
});
|
||||
} else {
|
||||
[OTRTorManager.shared.torController removeObserver:circuitObserver];
|
||||
[self finishConnectingWithForm:form account:account];
|
||||
}
|
||||
} progress:progress];
|
||||
}];
|
||||
}
|
||||
} else {
|
||||
[self finishConnectingWithForm:form account:account];
|
||||
|
|
|
@ -344,6 +344,14 @@ name: SQLCipher, nameSpecified:
|
|||
body: Copyright (c) 2008, …
|
||||
version: 4.2.0
|
||||
|
||||
name: Tor, nameSpecified:
|
||||
body: Copyright (c) 2015-2…
|
||||
version: 400.5.1
|
||||
|
||||
name: Tor, nameSpecified:
|
||||
body: Copyright (c) 2015-2…
|
||||
version: 400.5.1
|
||||
|
||||
name: TTTAttributedLabel, nameSpecified:
|
||||
body: Copyright (c) 2011 M…
|
||||
version: 2.0.0
|
||||
|
|
|
@ -51,6 +51,7 @@ TODO: Add long description of the pod here.
|
|||
s.dependency 'ProxyKit/Client', '~> 1.2.0'
|
||||
s.dependency 'GCDWebServer', '~> 3.4'
|
||||
s.dependency 'CPAProxy'
|
||||
s.dependency 'Tor'
|
||||
s.dependency 'XMPPFramework/Swift'
|
||||
|
||||
s.dependency 'ChatSecure-Push-iOS'
|
||||
|
|
1
Podfile
1
Podfile
|
@ -52,6 +52,7 @@ abstract_target 'ChatSecureCorePods' do
|
|||
pod 'ProxyKit/Client', '~> 1.2.0'
|
||||
pod 'GCDWebServer', '~> 3.4'
|
||||
pod 'CPAProxy', :path => 'Submodules/CPAProxy/CPAProxy.podspec'
|
||||
pod 'Tor', :podspec => 'Submodules/Tor_framework/Tor.podspec'
|
||||
pod 'XMPPFramework/Swift', :path => 'Submodules/XMPPFramework/XMPPFramework.podspec'
|
||||
|
||||
pod 'ChatSecure-Push-iOS', :path => 'Submodules/ChatSecure-Push-iOS/ChatSecure-Push-iOS.podspec'
|
||||
|
|
10
Podfile.lock
10
Podfile.lock
|
@ -63,6 +63,7 @@ PODS:
|
|||
- SAMKeychain (~> 1.5)
|
||||
- SignalProtocolObjC
|
||||
- SQLCipher (~> 4.2.0)
|
||||
- Tor
|
||||
- TTTAttributedLabel (~> 2.0)
|
||||
- TUSafariActivity (~> 1.0)
|
||||
- XLForm (~> 4.0.0)
|
||||
|
@ -174,6 +175,7 @@ PODS:
|
|||
- SQLCipher/common (4.2.0)
|
||||
- SQLCipher/standard (4.2.0):
|
||||
- SQLCipher/common
|
||||
- Tor (400.5.1)
|
||||
- TTTAttributedLabel (2.0.0)
|
||||
- TUSafariActivity (1.0.4)
|
||||
- XLForm (4.0.1)
|
||||
|
@ -283,6 +285,7 @@ DEPENDENCIES:
|
|||
- QRCodeReaderViewController (~> 4.0)
|
||||
- SignalProtocolObjC (from `Submodules/SignalProtocol-ObjC/SignalProtocolObjC.podspec`)
|
||||
- SQLCipher (~> 4.2)
|
||||
- Tor (from `Submodules/Tor_framework/Tor.podspec`)
|
||||
- TUSafariActivity (~> 1.0)
|
||||
- XMPPFramework/Swift (from `Submodules/XMPPFramework/XMPPFramework.podspec`)
|
||||
- YapDatabase/SQLCipher (from `Submodules/YapDatabase/YapDatabase.podspec`)
|
||||
|
@ -350,6 +353,8 @@ EXTERNAL SOURCES:
|
|||
:git: https://github.com/gmertk/ParkedTextField.git
|
||||
SignalProtocolObjC:
|
||||
:path: Submodules/SignalProtocol-ObjC/SignalProtocolObjC.podspec
|
||||
Tor:
|
||||
:podspec: Submodules/Tor_framework/Tor.podspec
|
||||
XMPPFramework:
|
||||
:path: Submodules/XMPPFramework/XMPPFramework.podspec
|
||||
YapDatabase:
|
||||
|
@ -373,7 +378,7 @@ SPEC CHECKSUMS:
|
|||
BBlock: c56d7f72597ffe1634fcdc73836c5c0fed3271be
|
||||
BButton: ab0f2ed3b998ae73c5188b57d270d81e4a1eeb27
|
||||
ChatSecure-Push-iOS: ed51f98bc019be9e2d859604677a21a4ee68422e
|
||||
ChatSecureCore: ae0bc3f0fa3d811121d7ec103e1b827aeb344d96
|
||||
ChatSecureCore: c9a76fc1a5e1f0546e45f740d31cdc60de5e2a1f
|
||||
CocoaAsyncSocket: eafaa68a7e0ec99ead0a7b35015e0bf25d2c8987
|
||||
CocoaLumberjack: 2f44e60eb91c176d471fdba43b9e3eae6a721947
|
||||
CPAProxy: b1b33221b6ad297169cb813b6bbefd2a69ea9aad
|
||||
|
@ -407,6 +412,7 @@ SPEC CHECKSUMS:
|
|||
SignalProtocolC: 051512e9f3abfeb4120c5e9673af9ae0ee370070
|
||||
SignalProtocolObjC: b992ed29c3b7b453510ff0102ed16ef143f7efd2
|
||||
SQLCipher: 0187a2180ac288ea686b670b7141da62cd013b16
|
||||
Tor: 0dc8a8b0384133645b97faa589220d58432ec593
|
||||
TTTAttributedLabel: 8cffe8e127e4e82ff3af1e5386d4cd0ad000b656
|
||||
TUSafariActivity: afc55a00965377939107ce4fdc7f951f62454546
|
||||
XLForm: b8d47a9a00fb6166981cb40de7169d70d611e9be
|
||||
|
@ -415,6 +421,6 @@ SPEC CHECKSUMS:
|
|||
YapTaskQueue: f3b23875bead71a7ee57b65637ce9c0e98b68c34
|
||||
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
|
||||
|
||||
PODFILE CHECKSUM: b141f51290d05663f08b633a34ffb15eee02707b
|
||||
PODFILE CHECKSUM: e37c7446a07a8cba3c312b14db6732f79e95c63f
|
||||
|
||||
COCOAPODS: 1.7.4
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 40e90e97d2f01fe0fc2ebac00e2caeca941c9f75
|
Loading…
Reference in New Issue