WebSocket Public Key Pinning.
This commit is contained in:
parent
54dae0639c
commit
8435a800d4
|
@ -83,7 +83,7 @@ EXTERNAL SOURCES:
|
||||||
|
|
||||||
CHECKOUT OPTIONS:
|
CHECKOUT OPTIONS:
|
||||||
JSQMessagesViewController:
|
JSQMessagesViewController:
|
||||||
:commit: 7c2cec63f9e05ac7859df786e6ca31af2f0dc583
|
:commit: 82482a1fc560fb4f716babbe49a20cf9c0bc7fc3
|
||||||
:git: https://github.com/dtsbourg/JSQMessagesViewController
|
:git: https://github.com/dtsbourg/JSQMessagesViewController
|
||||||
SocketRocket:
|
SocketRocket:
|
||||||
:commit: d0585af165
|
:commit: d0585af165
|
||||||
|
|
2
Pods
2
Pods
|
@ -1 +1 @@
|
||||||
Subproject commit bc9ebd5dc7fb4100c78e5bb4dda15cfcc3b6734a
|
Subproject commit 0b6f683fbd2c3947a73ddb619ca4fe5ef4e6edcd
|
|
@ -392,6 +392,8 @@
|
||||||
B6B096951A1D25ED008BFAA6 /* NSURLSessionDataTask+StatusCode.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B096601A1D25ED008BFAA6 /* NSURLSessionDataTask+StatusCode.m */; };
|
B6B096951A1D25ED008BFAA6 /* NSURLSessionDataTask+StatusCode.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B096601A1D25ED008BFAA6 /* NSURLSessionDataTask+StatusCode.m */; };
|
||||||
B6B1013C196D213F007E3930 /* SignalKeyingStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */; };
|
B6B1013C196D213F007E3930 /* SignalKeyingStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */; };
|
||||||
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
B6B9ECFC198B31BA00C620D3 /* PushManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B6B9ECFB198B31BA00C620D3 /* PushManager.m */; };
|
||||||
|
B6C6AE551A305ED1006BAF8F /* redphone.cer in Resources */ = {isa = PBXBuildFile; fileRef = B6C6AE531A305ED1006BAF8F /* redphone.cer */; };
|
||||||
|
B6C6AE561A305ED1006BAF8F /* textsecure.cer in Resources */ = {isa = PBXBuildFile; fileRef = B6C6AE541A305ED1006BAF8F /* textsecure.cer */; };
|
||||||
B6C93C4E199567AD00EDF894 /* DebugLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C93C4D199567AD00EDF894 /* DebugLogger.m */; };
|
B6C93C4E199567AD00EDF894 /* DebugLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = B6C93C4D199567AD00EDF894 /* DebugLogger.m */; };
|
||||||
B6CBF53F1A254BD1000D4184 /* ContactDetailCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CBF53E1A254BD1000D4184 /* ContactDetailCell.m */; };
|
B6CBF53F1A254BD1000D4184 /* ContactDetailCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CBF53E1A254BD1000D4184 /* ContactDetailCell.m */; };
|
||||||
B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; };
|
B90418E6183E9DD40038554A /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = B90418E5183E9DD40038554A /* DateUtil.m */; };
|
||||||
|
@ -444,7 +446,6 @@
|
||||||
E1370BF018A0689000826894 /* AppIcon60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FA18A05734001A532A /* AppIcon60x60@2x.png */; };
|
E1370BF018A0689000826894 /* AppIcon60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FA18A05734001A532A /* AppIcon60x60@2x.png */; };
|
||||||
E1370BF118A0689000826894 /* AppIcon76x76.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FB18A05734001A532A /* AppIcon76x76.png */; };
|
E1370BF118A0689000826894 /* AppIcon76x76.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FB18A05734001A532A /* AppIcon76x76.png */; };
|
||||||
E1370BF218A0689000826894 /* AppIcon76x76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FC18A05734001A532A /* AppIcon76x76@2x.png */; };
|
E1370BF218A0689000826894 /* AppIcon76x76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = E18AB3FC18A05734001A532A /* AppIcon76x76@2x.png */; };
|
||||||
E1370BF618A068A600826894 /* whisperReal.cer in Resources */ = {isa = PBXBuildFile; fileRef = E1C407C117F0C246007BEE65 /* whisperReal.cer */; };
|
|
||||||
E14874F818A06951002CC4F3 /* ContactTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76EB053A18170B33006006FC /* ContactTableViewCell.xib */; };
|
E14874F818A06951002CC4F3 /* ContactTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76EB053A18170B33006006FC /* ContactTableViewCell.xib */; };
|
||||||
E14874F918A06951002CC4F3 /* CountryCodeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B97CBFB018861023008E0DE9 /* CountryCodeTableViewCell.xib */; };
|
E14874F918A06951002CC4F3 /* CountryCodeTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = B97CBFB018861023008E0DE9 /* CountryCodeTableViewCell.xib */; };
|
||||||
E148750018A06966002CC4F3 /* CallAudioManagerDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76EB051D18170B33006006FC /* CallAudioManagerDemo.xib */; };
|
E148750018A06966002CC4F3 /* CallAudioManagerDemo.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76EB051D18170B33006006FC /* CallAudioManagerDemo.xib */; };
|
||||||
|
@ -1040,6 +1041,8 @@
|
||||||
B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalKeyingStorage.m; sourceTree = "<group>"; };
|
B6B1013B196D213F007E3930 /* SignalKeyingStorage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignalKeyingStorage.m; sourceTree = "<group>"; };
|
||||||
B6B9ECFA198B31BA00C620D3 /* PushManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushManager.h; sourceTree = "<group>"; };
|
B6B9ECFA198B31BA00C620D3 /* PushManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushManager.h; sourceTree = "<group>"; };
|
||||||
B6B9ECFB198B31BA00C620D3 /* PushManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushManager.m; sourceTree = "<group>"; };
|
B6B9ECFB198B31BA00C620D3 /* PushManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushManager.m; sourceTree = "<group>"; };
|
||||||
|
B6C6AE531A305ED1006BAF8F /* redphone.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = redphone.cer; sourceTree = "<group>"; };
|
||||||
|
B6C6AE541A305ED1006BAF8F /* textsecure.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = textsecure.cer; sourceTree = "<group>"; };
|
||||||
B6C93C4C199567AD00EDF894 /* DebugLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugLogger.h; sourceTree = "<group>"; };
|
B6C93C4C199567AD00EDF894 /* DebugLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugLogger.h; sourceTree = "<group>"; };
|
||||||
B6C93C4D199567AD00EDF894 /* DebugLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugLogger.m; sourceTree = "<group>"; };
|
B6C93C4D199567AD00EDF894 /* DebugLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DebugLogger.m; sourceTree = "<group>"; };
|
||||||
B6CBF53D1A254BD1000D4184 /* ContactDetailCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ContactDetailCell.h; path = "Signal/src/view controllers/ContactDetailCell.h"; sourceTree = SOURCE_ROOT; };
|
B6CBF53D1A254BD1000D4184 /* ContactDetailCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ContactDetailCell.h; path = "Signal/src/view controllers/ContactDetailCell.h"; sourceTree = SOURCE_ROOT; };
|
||||||
|
@ -1145,7 +1148,6 @@
|
||||||
E197B62618BBF63B00F073E5 /* SoundBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoundBoard.m; sourceTree = "<group>"; };
|
E197B62618BBF63B00F073E5 /* SoundBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoundBoard.m; sourceTree = "<group>"; };
|
||||||
E1A0AD8B16E13FDD0071E604 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
|
E1A0AD8B16E13FDD0071E604 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
|
||||||
E1B3DC731885EFA100B7F794 /* NotificationManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationManifest.h; sourceTree = "<group>"; };
|
E1B3DC731885EFA100B7F794 /* NotificationManifest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotificationManifest.h; sourceTree = "<group>"; };
|
||||||
E1C407C117F0C246007BEE65 /* whisperReal.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = whisperReal.cer; sourceTree = "<group>"; };
|
|
||||||
E1CD329418BCFF9900B1A496 /* SoundInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundInstance.h; sourceTree = "<group>"; };
|
E1CD329418BCFF9900B1A496 /* SoundInstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SoundInstance.h; sourceTree = "<group>"; };
|
||||||
E1CD329518BCFF9900B1A496 /* SoundInstance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoundInstance.m; sourceTree = "<group>"; };
|
E1CD329518BCFF9900B1A496 /* SoundInstance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoundInstance.m; sourceTree = "<group>"; };
|
||||||
FC15B7BE1A1F80F200F59801 /* defaultConctact_light@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "defaultConctact_light@2x.png"; sourceTree = "<group>"; };
|
FC15B7BE1A1F80F200F59801 /* defaultConctact_light@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "defaultConctact_light@2x.png"; sourceTree = "<group>"; };
|
||||||
|
@ -2403,6 +2405,15 @@
|
||||||
name = Translations;
|
name = Translations;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
B6C6AE521A305ED1006BAF8F /* Certificates */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
B6C6AE531A305ED1006BAF8F /* redphone.cer */,
|
||||||
|
B6C6AE541A305ED1006BAF8F /* textsecure.cer */,
|
||||||
|
);
|
||||||
|
path = Certificates;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
BF8C3D8119CE3B6A008F644C /* call */ = {
|
BF8C3D8119CE3B6A008F644C /* call */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -2478,6 +2489,7 @@
|
||||||
D221A094169C9E5E00537ABF /* Supporting Files */ = {
|
D221A094169C9E5E00537ABF /* Supporting Files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
B6C6AE521A305ED1006BAF8F /* Certificates */,
|
||||||
B6B6C3C419193F5B00C0B76B /* Translations */,
|
B6B6C3C419193F5B00C0B76B /* Translations */,
|
||||||
E18AB40618A05754001A532A /* AudioFiles */,
|
E18AB40618A05754001A532A /* AudioFiles */,
|
||||||
E18AB3F318A05734001A532A /* Icons */,
|
E18AB3F318A05734001A532A /* Icons */,
|
||||||
|
@ -2486,7 +2498,6 @@
|
||||||
D221A095169C9E5E00537ABF /* Signal-Info.plist */,
|
D221A095169C9E5E00537ABF /* Signal-Info.plist */,
|
||||||
D221A09B169C9E5E00537ABF /* Signal-Prefix.pch */,
|
D221A09B169C9E5E00537ABF /* Signal-Prefix.pch */,
|
||||||
B661C211198EE2EA00548CA1 /* iOSVersions.h */,
|
B661C211198EE2EA00548CA1 /* iOSVersions.h */,
|
||||||
E1C407C117F0C246007BEE65 /* whisperReal.cer */,
|
|
||||||
);
|
);
|
||||||
name = "Supporting Files";
|
name = "Supporting Files";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -2717,6 +2728,7 @@
|
||||||
ORGANIZATIONNAME = "Open Whisper Systems";
|
ORGANIZATIONNAME = "Open Whisper Systems";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
D221A088169C9E5E00537ABF = {
|
D221A088169C9E5E00537ABF = {
|
||||||
|
DevelopmentTeam = U68MSDN6DR;
|
||||||
SystemCapabilities = {
|
SystemCapabilities = {
|
||||||
com.apple.DataProtection = {
|
com.apple.DataProtection = {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
|
@ -2846,6 +2858,7 @@
|
||||||
B633C59D1A1D190B0059AC12 /* endcall@2x.png in Resources */,
|
B633C59D1A1D190B0059AC12 /* endcall@2x.png in Resources */,
|
||||||
B633C5B41A1D190B0059AC12 /* keypad@2x.png in Resources */,
|
B633C5B41A1D190B0059AC12 /* keypad@2x.png in Resources */,
|
||||||
B633C5DA1A1D190B0059AC12 /* settings_dark@2x.png in Resources */,
|
B633C5DA1A1D190B0059AC12 /* settings_dark@2x.png in Resources */,
|
||||||
|
B6C6AE561A305ED1006BAF8F /* textsecure.cer in Resources */,
|
||||||
FCA52AEC1A2B676C00CCADFA /* message_error@2x.png in Resources */,
|
FCA52AEC1A2B676C00CCADFA /* message_error@2x.png in Resources */,
|
||||||
E14874F818A06951002CC4F3 /* ContactTableViewCell.xib in Resources */,
|
E14874F818A06951002CC4F3 /* ContactTableViewCell.xib in Resources */,
|
||||||
B633C5BC1A1D190B0059AC12 /* message_bubble@2x.png in Resources */,
|
B633C5BC1A1D190B0059AC12 /* message_bubble@2x.png in Resources */,
|
||||||
|
@ -2892,6 +2905,7 @@
|
||||||
B67EBF5D19194AC60084CCFD /* Settings.bundle in Resources */,
|
B67EBF5D19194AC60084CCFD /* Settings.bundle in Resources */,
|
||||||
E1370BE418A0686C00826894 /* outring.mp3 in Resources */,
|
E1370BE418A0686C00826894 /* outring.mp3 in Resources */,
|
||||||
B633C5841A1D190B0059AC12 /* backspace@2x.png in Resources */,
|
B633C5841A1D190B0059AC12 /* backspace@2x.png in Resources */,
|
||||||
|
B6C6AE551A305ED1006BAF8F /* redphone.cer in Resources */,
|
||||||
B633C5B71A1D190B0059AC12 /* logo_intro@2x.png in Resources */,
|
B633C5B71A1D190B0059AC12 /* logo_intro@2x.png in Resources */,
|
||||||
E1370BE518A0686C00826894 /* r.caf in Resources */,
|
E1370BE518A0686C00826894 /* r.caf in Resources */,
|
||||||
B633C5981A1D190B0059AC12 /* delete_history@2x.png in Resources */,
|
B633C5981A1D190B0059AC12 /* delete_history@2x.png in Resources */,
|
||||||
|
@ -2906,7 +2920,6 @@
|
||||||
E148751418A06AFD002CC4F3 /* HelveticaNeueLTStd-Lt.otf in Resources */,
|
E148751418A06AFD002CC4F3 /* HelveticaNeueLTStd-Lt.otf in Resources */,
|
||||||
E148751518A06AFD002CC4F3 /* HelveticaNeueLTStd-Md.otf in Resources */,
|
E148751518A06AFD002CC4F3 /* HelveticaNeueLTStd-Md.otf in Resources */,
|
||||||
FC3BD97B1A2CD385005B96BB /* call_dotted@2x.png in Resources */,
|
FC3BD97B1A2CD385005B96BB /* call_dotted@2x.png in Resources */,
|
||||||
E1370BF618A068A600826894 /* whisperReal.cer in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
Binary file not shown.
|
@ -38,7 +38,7 @@
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>2.0</string>
|
<string>2.0.1</string>
|
||||||
<key>LOGS_EMAIL</key>
|
<key>LOGS_EMAIL</key>
|
||||||
<string>support@whispersystems.org</string>
|
<string>support@whispersystems.org</string>
|
||||||
<key>LOGS_URL</key>
|
<key>LOGS_URL</key>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6250" systemVersion="14C68k" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="kts-vO-ui1">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6254" systemVersion="14B25" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6244"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6247"/>
|
||||||
<capability name="Alignment constraints with different attributes" minToolsVersion="5.1"/>
|
<capability name="Alignment constraints with different attributes" minToolsVersion="5.1"/>
|
||||||
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -35,6 +35,9 @@
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
</prototypes>
|
</prototypes>
|
||||||
<sections/>
|
<sections/>
|
||||||
|
<variation key="heightClass=regular-widthClass=compact" misplaced="YES">
|
||||||
|
<rect key="frame" x="0.0" y="-44" width="410" height="844"/>
|
||||||
|
</variation>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="dataSource" destination="MY2-bB-USa" id="kop-Y6-6DR"/>
|
<outlet property="dataSource" destination="MY2-bB-USa" id="kop-Y6-6DR"/>
|
||||||
<outlet property="delegate" destination="MY2-bB-USa" id="vmj-PA-2Od"/>
|
<outlet property="delegate" destination="MY2-bB-USa" id="vmj-PA-2Od"/>
|
||||||
|
@ -2419,7 +2422,8 @@ Licensed under the GPLv3</string>
|
||||||
<exclude reference="yPj-mV-IsZ"/>
|
<exclude reference="yPj-mV-IsZ"/>
|
||||||
</mask>
|
</mask>
|
||||||
</variation>
|
</variation>
|
||||||
<variation key="heightClass=regular-widthClass=compact">
|
<variation key="heightClass=regular-widthClass=compact" misplaced="YES">
|
||||||
|
<rect key="frame" x="15" y="30" width="36" height="21"/>
|
||||||
<mask key="constraints">
|
<mask key="constraints">
|
||||||
<include reference="s6d-wF-wNd"/>
|
<include reference="s6d-wF-wNd"/>
|
||||||
<include reference="yPj-mV-IsZ"/>
|
<include reference="yPj-mV-IsZ"/>
|
||||||
|
@ -2571,7 +2575,8 @@ Licensed under the GPLv3</string>
|
||||||
<exclude reference="huD-gF-Wt1"/>
|
<exclude reference="huD-gF-Wt1"/>
|
||||||
</mask>
|
</mask>
|
||||||
</variation>
|
</variation>
|
||||||
<variation key="heightClass=regular-widthClass=compact">
|
<variation key="heightClass=regular-widthClass=compact" misplaced="YES">
|
||||||
|
<rect key="frame" x="15" y="29" width="83" height="21"/>
|
||||||
<mask key="constraints">
|
<mask key="constraints">
|
||||||
<include reference="KcQ-uK-I5A"/>
|
<include reference="KcQ-uK-I5A"/>
|
||||||
<include reference="huD-gF-Wt1"/>
|
<include reference="huD-gF-Wt1"/>
|
||||||
|
@ -2904,7 +2909,8 @@ Licensed under the GPLv3</string>
|
||||||
<exclude reference="ZIm-Uq-bM8"/>
|
<exclude reference="ZIm-Uq-bM8"/>
|
||||||
</mask>
|
</mask>
|
||||||
</variation>
|
</variation>
|
||||||
<variation key="heightClass=regular-widthClass=compact">
|
<variation key="heightClass=regular-widthClass=compact" misplaced="YES">
|
||||||
|
<rect key="frame" x="0.0" y="20" width="400" height="100"/>
|
||||||
<mask key="subviews">
|
<mask key="subviews">
|
||||||
<include reference="gbm-B5-gCc"/>
|
<include reference="gbm-B5-gCc"/>
|
||||||
<include reference="Ul8-NY-i4c"/>
|
<include reference="Ul8-NY-i4c"/>
|
||||||
|
@ -2958,6 +2964,9 @@ Licensed under the GPLv3</string>
|
||||||
</tableViewCellContentView>
|
</tableViewCellContentView>
|
||||||
</tableViewCell>
|
</tableViewCell>
|
||||||
</prototypes>
|
</prototypes>
|
||||||
|
<variation key="heightClass=regular-widthClass=compact" misplaced="YES">
|
||||||
|
<rect key="frame" x="0.0" y="128" width="400" height="672"/>
|
||||||
|
</variation>
|
||||||
<connections>
|
<connections>
|
||||||
<outlet property="dataSource" destination="bDi-2Q-XOC" id="VPO-ms-bH1"/>
|
<outlet property="dataSource" destination="bDi-2Q-XOC" id="VPO-ms-bH1"/>
|
||||||
<outlet property="delegate" destination="bDi-2Q-XOC" id="rKM-jX-C39"/>
|
<outlet property="delegate" destination="bDi-2Q-XOC" id="rKM-jX-C39"/>
|
||||||
|
@ -3040,6 +3049,6 @@ Licensed under the GPLv3</string>
|
||||||
<image name="signals_tab.png" width="24" height="24"/>
|
<image name="signals_tab.png" width="24" height="24"/>
|
||||||
</resources>
|
</resources>
|
||||||
<inferredMetricsTieBreakers>
|
<inferredMetricsTieBreakers>
|
||||||
<segue reference="qCk-gl-KCX"/>
|
<segue reference="QK8-XK-Wd3"/>
|
||||||
</inferredMetricsTieBreakers>
|
</inferredMetricsTieBreakers>
|
||||||
</document>
|
</document>
|
||||||
|
|
|
@ -54,7 +54,7 @@ static unsigned char DH3K_PRIME[]={
|
||||||
andMasterServerHostName:@"master.whispersystems.org"
|
andMasterServerHostName:@"master.whispersystems.org"
|
||||||
andDefaultRelayName:@"relay"
|
andDefaultRelayName:@"relay"
|
||||||
andRelayServerHostNameSuffix:@"whispersystems.org"
|
andRelayServerHostNameSuffix:@"whispersystems.org"
|
||||||
andCertificate:[Certificate certificateFromResourcePath:@"whisperReal" ofType:@"cer"]
|
andCertificate:[Certificate certificateFromResourcePath:@"redphone" ofType:@"cer"]
|
||||||
andCurrentRegionCodeForPhoneNumbers:[(NSLocale*)NSLocale.currentLocale objectForKey:NSLocaleCountryCode]
|
andCurrentRegionCodeForPhoneNumbers:[(NSLocale*)NSLocale.currentLocale objectForKey:NSLocaleCountryCode]
|
||||||
andSupportedKeyAgreementProtocols:[self supportedKeyAgreementProtocols]
|
andSupportedKeyAgreementProtocols:[self supportedKeyAgreementProtocols]
|
||||||
andPhoneManager:[PhoneManager phoneManagerWithErrorHandler:errorNoter]
|
andPhoneManager:[PhoneManager phoneManagerWithErrorHandler:errorNoter]
|
||||||
|
@ -78,7 +78,7 @@ static unsigned char DH3K_PRIME[]={
|
||||||
andMasterServerHostName:@"master.whispersystems.org"
|
andMasterServerHostName:@"master.whispersystems.org"
|
||||||
andDefaultRelayName:@"relay"
|
andDefaultRelayName:@"relay"
|
||||||
andRelayServerHostNameSuffix:@"whispersystems.org"
|
andRelayServerHostNameSuffix:@"whispersystems.org"
|
||||||
andCertificate:[Certificate certificateFromResourcePath:@"whisperReal" ofType:@"cer"]
|
andCertificate:[Certificate certificateFromResourcePath:@"redphone" ofType:@"cer"]
|
||||||
andCurrentRegionCodeForPhoneNumbers:@"US"
|
andCurrentRegionCodeForPhoneNumbers:@"US"
|
||||||
andSupportedKeyAgreementProtocols:keyAgreementProtocols
|
andSupportedKeyAgreementProtocols:keyAgreementProtocols
|
||||||
andPhoneManager:nil
|
andPhoneManager:nil
|
||||||
|
|
|
@ -38,7 +38,7 @@ MacrosSingletonImplemention
|
||||||
self.operationManager = [[AFHTTPSessionManager alloc] initWithBaseURL:endPointURL sessionConfiguration:sessionConf];
|
self.operationManager = [[AFHTTPSessionManager alloc] initWithBaseURL:endPointURL sessionConfiguration:sessionConf];
|
||||||
self.operationManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
|
self.operationManager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
|
||||||
self.operationManager.securityPolicy.allowInvalidCertificates = YES;
|
self.operationManager.securityPolicy.allowInvalidCertificates = YES;
|
||||||
NSString *certPath = [NSBundle.mainBundle pathForResource:@"whisperReal" ofType:@"cer"];
|
NSString *certPath = [NSBundle.mainBundle pathForResource:@"redphone" ofType:@"cer"];
|
||||||
NSData *certData = [NSData dataWithContentsOfFile:certPath];
|
NSData *certData = [NSData dataWithContentsOfFile:certPath];
|
||||||
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)(certData));
|
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)(certData));
|
||||||
self.operationManager.securityPolicy.pinnedCertificates = @[(__bridge_transfer NSData *)SecCertificateCopyData(cert)];
|
self.operationManager.securityPolicy.pinnedCertificates = @[(__bridge_transfer NSData *)SecCertificateCopyData(cert)];
|
||||||
|
|
|
@ -39,9 +39,9 @@
|
||||||
if (self = [super init]) {
|
if (self = [super init]) {
|
||||||
NSURLSessionConfiguration *sessionConf = NSURLSessionConfiguration.ephemeralSessionConfiguration;
|
NSURLSessionConfiguration *sessionConf = NSURLSessionConfiguration.ephemeralSessionConfiguration;
|
||||||
self.operationManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[[NSURL alloc] initWithString:textSecureServerURL] sessionConfiguration:sessionConf];
|
self.operationManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[[NSURL alloc] initWithString:textSecureServerURL] sessionConfiguration:sessionConf];
|
||||||
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; //TODO: pinging cert
|
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
|
||||||
policy.allowInvalidCertificates = YES;
|
policy.allowInvalidCertificates = YES;
|
||||||
NSString *certPath = [NSBundle.mainBundle pathForResource:@"whisperReal" ofType:@"cer"];
|
NSString *certPath = [NSBundle.mainBundle pathForResource:@"textsecure" ofType:@"cer"];
|
||||||
NSData *certData = [NSData dataWithContentsOfFile:certPath];
|
NSData *certData = [NSData dataWithContentsOfFile:certPath];
|
||||||
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)(certData));
|
SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)(certData));
|
||||||
policy.pinnedCertificates = @[(__bridge_transfer NSData *)SecCertificateCopyData(cert)];
|
policy.pinnedCertificates = @[(__bridge_transfer NSData *)SecCertificateCopyData(cert)];
|
||||||
|
|
|
@ -81,10 +81,19 @@ NSString * const SocketConnectingNotification = @"SocketConnectingNotification";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NSString *webSocketConnect = [textSecureWebSocketAPI stringByAppendingString:[[self sharedManager] webSocketAuthenticationString]];
|
NSString* webSocketConnect = [textSecureWebSocketAPI stringByAppendingString:[[self sharedManager] webSocketAuthenticationString]];
|
||||||
NSURL *webSocketConnectURL = [NSURL URLWithString:webSocketConnect];
|
NSURL* webSocketConnectURL = [NSURL URLWithString:webSocketConnect];
|
||||||
socket = [[SRWebSocket alloc] initWithURL:webSocketConnectURL];
|
NSMutableURLRequest* request = [[NSMutableURLRequest alloc] initWithURL:webSocketConnectURL];
|
||||||
socket.delegate = [self sharedManager];
|
NSString* cerPath = [[NSBundle mainBundle] pathForResource:@"textsecure" ofType:@"cer"];
|
||||||
|
NSData* certData = [[NSData alloc] initWithContentsOfFile:cerPath];
|
||||||
|
CFDataRef certDataRef = (__bridge CFDataRef)certData;
|
||||||
|
SecCertificateRef certRef = SecCertificateCreateWithData(NULL, certDataRef);
|
||||||
|
id certificate = (__bridge id)certRef;
|
||||||
|
[request setSR_SSLPinnedCertificates:@[ certificate ]];
|
||||||
|
|
||||||
|
socket = [[SRWebSocket alloc] initWithURLRequest:request];
|
||||||
|
socket.delegate = [self sharedManager];
|
||||||
|
|
||||||
[socket open];
|
[socket open];
|
||||||
[[self sharedManager] setWebsocket:socket];
|
[[self sharedManager] setWebsocket:socket];
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
|
|
||||||
@interface NSData (Base64)
|
@interface NSData (Base64)
|
||||||
|
|
||||||
+ (NSData *)dataFromBase64String:(NSString *)aString;
|
+ (NSData*)dataFromBase64StringNoPadding:(NSString*)aString;
|
||||||
|
+ (NSData*)dataFromBase64String:(NSString*)aString;
|
||||||
|
|
||||||
- (NSString *)base64EncodedString;
|
- (NSString*)base64EncodedString;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -4,6 +4,19 @@
|
||||||
|
|
||||||
@implementation NSData (Base64)
|
@implementation NSData (Base64)
|
||||||
|
|
||||||
|
+ (NSData*)dataFromBase64StringNoPadding:(NSString*)aString{
|
||||||
|
int padding = aString.length%4;
|
||||||
|
|
||||||
|
NSMutableString *strResult = [aString mutableCopy];
|
||||||
|
if (padding != 0) {
|
||||||
|
int charsToAdd = 4 - padding;
|
||||||
|
for (int i = 0; i < charsToAdd; i++) {
|
||||||
|
[strResult appendString:@"="];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [self dataFromBase64String:strResult];
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// dataFromBase64String:
|
// dataFromBase64String:
|
||||||
//
|
//
|
||||||
|
@ -15,18 +28,9 @@
|
||||||
//
|
//
|
||||||
// returns the NSData representation of the base64 string
|
// returns the NSData representation of the base64 string
|
||||||
//
|
//
|
||||||
|
|
||||||
+ (NSData *)dataFromBase64String:(NSString *)aString {
|
+ (NSData *)dataFromBase64String:(NSString *)aString {
|
||||||
int padding = aString.length%4;
|
return [[NSData alloc] initWithBase64EncodedString:aString options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
||||||
|
|
||||||
NSMutableString *strResult = [aString mutableCopy];
|
|
||||||
if (padding != 0) {
|
|
||||||
int charsToAdd = 4 - padding;
|
|
||||||
for (int i = 0; i < charsToAdd; i++) {
|
|
||||||
[strResult appendString:@"="];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return [[NSData alloc] initWithBase64EncodedString:strResult options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSData *identityKey = [NSData dataFromBase64String:identityKeyString];
|
NSData *identityKey = [NSData dataFromBase64StringNoPadding:identityKeyString];
|
||||||
|
|
||||||
for (NSDictionary *deviceDict in devicesArray) {
|
for (NSDictionary *deviceDict in devicesArray) {
|
||||||
NSNumber *registrationIdString = [deviceDict objectForKey:@"registrationId"];
|
NSNumber *registrationIdString = [deviceDict objectForKey:@"registrationId"];
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
} else{
|
} else{
|
||||||
prekeyId = [[preKey objectForKey:@"keyId"] intValue];
|
prekeyId = [[preKey objectForKey:@"keyId"] intValue];
|
||||||
NSString *preKeyPublicString = [preKey objectForKey:@"publicKey"];
|
NSString *preKeyPublicString = [preKey objectForKey:@"publicKey"];
|
||||||
preKeyPublic = [NSData dataFromBase64String:preKeyPublicString];
|
preKeyPublic = [NSData dataFromBase64StringNoPadding:preKeyPublicString];
|
||||||
}
|
}
|
||||||
|
|
||||||
NSDictionary *signedPrekey = [deviceDict objectForKey:@"signedPreKey"];
|
NSDictionary *signedPrekey = [deviceDict objectForKey:@"signedPreKey"];
|
||||||
|
@ -71,8 +71,8 @@
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSData *signedPrekeyPublic = [NSData dataFromBase64String:signedPublicKeyString];
|
NSData *signedPrekeyPublic = [NSData dataFromBase64StringNoPadding:signedPublicKeyString];
|
||||||
NSData *signedPreKeySignature = [NSData dataFromBase64String:signedSignatureString];
|
NSData *signedPreKeySignature = [NSData dataFromBase64StringNoPadding:signedSignatureString];
|
||||||
|
|
||||||
if (!(signedPrekeyPublic && signedPreKeySignature)) {
|
if (!(signedPrekeyPublic && signedPreKeySignature)) {
|
||||||
DDLogError(@"Failed to parse signed keying material");
|
DDLogError(@"Failed to parse signed keying material");
|
||||||
|
|
|
@ -93,12 +93,6 @@ typedef enum : NSUInteger {
|
||||||
|
|
||||||
self.senderId = ME_MESSAGE_IDENTIFIER
|
self.senderId = ME_MESSAGE_IDENTIFIER
|
||||||
self.senderDisplayName = ME_MESSAGE_IDENTIFIER
|
self.senderDisplayName = ME_MESSAGE_IDENTIFIER
|
||||||
|
|
||||||
if (!isGroupConversation)
|
|
||||||
{
|
|
||||||
[self initializeObservers];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)didPressBack{
|
- (void)didPressBack{
|
||||||
|
@ -112,12 +106,6 @@ typedef enum : NSUInteger {
|
||||||
[super didReceiveMemoryWarning];
|
[super didReceiveMemoryWarning];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)dealloc
|
|
||||||
{
|
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
|
|
||||||
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Initiliazers
|
#pragma mark - Initiliazers
|
||||||
|
|
||||||
-(void)initializeNavigationBar
|
-(void)initializeNavigationBar
|
||||||
|
@ -164,31 +152,6 @@ typedef enum : NSUInteger {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)initializeObservers
|
|
||||||
{
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
||||||
selector:@selector(keyboardWillShow:)
|
|
||||||
name:UIKeyboardWillShowNotification
|
|
||||||
object:nil];
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
||||||
selector:@selector(keyboardWillHide:)
|
|
||||||
name:UIKeyboardWillHideNotification
|
|
||||||
object:nil];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Keyboard Handlers
|
|
||||||
|
|
||||||
-(void)keyboardWillShow:(id)sender
|
|
||||||
{
|
|
||||||
[self.inputToolbar.contentView setRightBarButtonItem:[JSQMessagesToolbarButtonFactory defaultSendButtonItem]];
|
|
||||||
}
|
|
||||||
|
|
||||||
-(void)keyboardWillHide:(id)sender
|
|
||||||
{
|
|
||||||
[self.inputToolbar.contentView setRightBarButtonItem:[JSQMessagesToolbarButtonFactory signalCallButtonItem]];
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - Fingerprints
|
#pragma mark - Fingerprints
|
||||||
|
|
||||||
-(void)showFingerprint
|
-(void)showFingerprint
|
||||||
|
@ -236,11 +199,7 @@ typedef enum : NSUInteger {
|
||||||
senderDisplayName:(NSString *)senderDisplayName
|
senderDisplayName:(NSString *)senderDisplayName
|
||||||
date:(NSDate *)date
|
date:(NSDate *)date
|
||||||
{
|
{
|
||||||
if ([button.titleLabel.text isEqualToString:@"Call"])
|
if (text.length > 0) {
|
||||||
{
|
|
||||||
NSLog(@"Let's call !");
|
|
||||||
|
|
||||||
} else if (text.length > 0) {
|
|
||||||
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
[JSQSystemSoundPlayer jsq_playMessageSentSound];
|
||||||
|
|
||||||
TSOutgoingMessage *message = [[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] inThread:self.thread messageBody:text attachements:nil];
|
TSOutgoingMessage *message = [[TSOutgoingMessage alloc] initWithTimestamp:[NSDate ows_millisecondTimeStamp] inThread:self.thread messageBody:text attachements:nil];
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
#define TEST_SERVER_HOST @"master.whispersystems.org"
|
#define TEST_SERVER_HOST @"master.whispersystems.org"
|
||||||
#define TEST_SERVER_PORT 31337
|
#define TEST_SERVER_PORT 31337
|
||||||
#define TEST_SERVER_CERT_PATH @"whisperReal"
|
#define TEST_SERVER_CERT_PATH @"redphone"
|
||||||
#define TEST_SERVER_CERT_TYPE @"cer"
|
#define TEST_SERVER_CERT_TYPE @"cer"
|
||||||
|
|
||||||
#define TEST_SERVER_INCORRECT_HOST_TO_SAME_IP @"96.126.120.52"
|
#define TEST_SERVER_INCORRECT_HOST_TO_SAME_IP @"96.126.120.52"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
@implementation SecureEndPointTest
|
@implementation SecureEndPointTest
|
||||||
|
|
||||||
-(void) testCert {
|
-(void) testCert {
|
||||||
Certificate* r = [Certificate certificateFromResourcePath:@"whisperReal"
|
Certificate* r = [Certificate certificateFromResourcePath:@"redphone"
|
||||||
ofType:@"cer"];
|
ofType:@"cer"];
|
||||||
test(r != nil);
|
test(r != nil);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,9 @@
|
||||||
inThread:self.thread
|
inThread:self.thread
|
||||||
messageBody:body
|
messageBody:body
|
||||||
attachements:nil];
|
attachements:nil];
|
||||||
[newMessage save];
|
[[TSStorageManager sharedManager].newDatabaseConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
|
||||||
|
[newMessage saveWithTransaction:transaction];
|
||||||
|
}];
|
||||||
|
|
||||||
TSIncomingMessage *fetchedMessage = [TSIncomingMessage fetchObjectWithUniqueID:[TSInteraction stringFromTimeStamp:timestamp]];
|
TSIncomingMessage *fetchedMessage = [TSIncomingMessage fetchObjectWithUniqueID:[TSInteraction stringFromTimeStamp:timestamp]];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue