From 1e69678d53189aa60a29f514d443a69f09e704fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sun, 22 Oct 2017 11:11:11 +0200 Subject: [PATCH 1/5] Move to ios/ --- .gitignore | 26 +++-- android/java-sources.txt | 10 -- apidoc/Https.yml | 49 +++++---- build.py | 10 +- documentation/changelog.md | 9 ++ example/Resources/app.js | 37 +++---- .../Classes/AppceleratorHttpsModuleAssets.m | 0 {iphone => ios}/README.md | 0 .../project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin 0 -> 43620 bytes .../UserInterfaceState.xcuserstate | Bin 0 -> 11923 bytes .../xcschemes/appcelerator.https.xcscheme | 99 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 0 .../xcschemes/appcelerator.https.xcscheme | 99 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 +++++ .../appcelerator.https/AppceleratorHttps.h | 0 .../AppceleratorHttpsModule.h | 0 .../AppceleratorHttpsModule.m | 0 .../AppceleratorHttpsModuleAssets.h | 0 .../AppceleratorHttpsModuleAssets.m | 0 .../AppceleratorHttpsUtils.h | 0 .../AppceleratorHttpsUtils.m | 0 .../appcelerator.https/PinnedURL.h | 0 .../appcelerator.https/PinnedURL.m | 0 .../appcelerator.https/PublicKey.h | 0 .../appcelerator.https/PublicKey.m | 0 .../appcelerator.https/SecurityManager.h | 0 .../appcelerator.https/SecurityManager.m | 0 .../appcelerator.https/X509Certificate.h | 0 .../appcelerator.https/X509Certificate.m | 0 ...09CertificatePinningSecurityManagerProxy.h | 0 ...09CertificatePinningSecurityManagerProxy.m | 0 .../appcelerator.https-Prefix.pch | 0 .../project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../UserInterfaceState.xcuserstate | Bin .../xcschemes/appcelerator.https.xcscheme | 0 .../xcschemes/xcschememanagement.plist | 27 +++++ .../appcelerator.https-Prefix.pch | 0 .../appcelerator.https/appcelerator_https.h | 0 .../appcelerator.https/appcelerator_https.m | 0 .../appcelerator.httpsTests-Info.plist | 0 .../appcelerator_httpsTests.m | 0 .../en.lproj/InfoPlist.strings | 0 .../*.prod.ace.appcelerator.com-1.cer | Bin .../*.prod.ace.appcelerator.com-2.cer | Bin .../AbstractBaseTest.h | 0 .../AbstractBaseTest.m | 0 .../appcelerator.httpsTests/PinnedURLTests.m | 0 .../appcelerator.httpsTests/PublicKeyTests.m | 0 .../SecurityManagerTests.m | 0 .../X509CertificateTests.m | 0 .../appcelerator.httpsTests-Info.plist | 0 .../en.lproj/InfoPlist.strings | 0 .../appcelerator.httpsTests/random-org.der | Bin .../appcelerator.httpsTests/random-org2.der | Bin {iphone => ios}/build.py | 0 {iphone => ios}/manifest | 0 ios/metadata.json | 1 + {iphone => ios}/module.xcconfig | 0 {iphone => ios}/timodule.xml | 0 {iphone => ios}/titanium.xcconfig | 0 63 files changed, 323 insertions(+), 71 deletions(-) delete mode 100644 android/java-sources.txt rename {iphone => ios}/Classes/AppceleratorHttpsModuleAssets.m (100%) rename {iphone => ios}/README.md (100%) rename {iphone => ios}/appcelerator.https.xcodeproj/project.pbxproj (100%) rename {iphone => ios}/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hans.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hknoechel.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/appcelerator.https.xcscheme rename {iphone/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad => ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad}/xcschemes/xcschememanagement.plist (100%) create mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme create mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist rename {iphone => ios}/appcelerator.https/AppceleratorHttps.h (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsModule.h (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsModule.m (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsModuleAssets.h (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsModuleAssets.m (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsUtils.h (100%) rename {iphone => ios}/appcelerator.https/AppceleratorHttpsUtils.m (100%) rename {iphone => ios}/appcelerator.https/PinnedURL.h (100%) rename {iphone => ios}/appcelerator.https/PinnedURL.m (100%) rename {iphone => ios}/appcelerator.https/PublicKey.h (100%) rename {iphone => ios}/appcelerator.https/PublicKey.m (100%) rename {iphone => ios}/appcelerator.https/SecurityManager.h (100%) rename {iphone => ios}/appcelerator.https/SecurityManager.m (100%) rename {iphone => ios}/appcelerator.https/X509Certificate.h (100%) rename {iphone => ios}/appcelerator.https/X509Certificate.m (100%) rename {iphone => ios}/appcelerator.https/X509CertificatePinningSecurityManagerProxy.h (100%) rename {iphone => ios}/appcelerator.https/X509CertificatePinningSecurityManagerProxy.m (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https-Prefix.pch (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https.xcodeproj/project.pbxproj (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/matt.xcuserdatad/UserInterfaceState.xcuserstate (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/appcelerator.https.xcscheme (100%) create mode 100644 ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist rename {iphone => ios}/appcelerator.https/appcelerator.https/appcelerator.https-Prefix.pch (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https/appcelerator_https.h (100%) rename {iphone => ios}/appcelerator.https/appcelerator.https/appcelerator_https.m (100%) rename {iphone => ios}/appcelerator.https/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist (100%) rename {iphone => ios}/appcelerator.https/appcelerator.httpsTests/appcelerator_httpsTests.m (100%) rename {iphone => ios}/appcelerator.https/appcelerator.httpsTests/en.lproj/InfoPlist.strings (100%) rename {iphone => ios}/appcelerator.httpsTests/*.prod.ace.appcelerator.com-1.cer (100%) rename {iphone => ios}/appcelerator.httpsTests/*.prod.ace.appcelerator.com-2.cer (100%) rename {iphone => ios}/appcelerator.httpsTests/AbstractBaseTest.h (100%) rename {iphone => ios}/appcelerator.httpsTests/AbstractBaseTest.m (100%) rename {iphone => ios}/appcelerator.httpsTests/PinnedURLTests.m (100%) rename {iphone => ios}/appcelerator.httpsTests/PublicKeyTests.m (100%) rename {iphone => ios}/appcelerator.httpsTests/SecurityManagerTests.m (100%) rename {iphone => ios}/appcelerator.httpsTests/X509CertificateTests.m (100%) rename {iphone => ios}/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist (100%) rename {iphone => ios}/appcelerator.httpsTests/en.lproj/InfoPlist.strings (100%) rename {iphone => ios}/appcelerator.httpsTests/random-org.der (100%) rename {iphone => ios}/appcelerator.httpsTests/random-org2.der (100%) rename {iphone => ios}/build.py (100%) rename {iphone => ios}/manifest (100%) create mode 100644 ios/metadata.json rename {iphone => ios}/module.xcconfig (100%) rename {iphone => ios}/timodule.xml (100%) rename {iphone => ios}/titanium.xcconfig (100%) diff --git a/.gitignore b/.gitignore index 902988e..5765502 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,21 @@ -# We ignore the android/build.properties file becuase the user is +# We ignore the android/build.properties file because the user is # expected copy android/build.properties.example to # android/build.properties and modify it for their development # environment. android/build.properties - # Titanium module build artifacts -iphone/appcelerator.https-iphone-*.zip -iphone/build -iphone/metadata.json +ios/appcelerator.https-iphone-*.zip +ios/build +ios/metadata.json android/dist android/libs # These eight are symlinks -iphone/LICENSE -iphone/assets -iphone/documentation -iphone/example +ios/LICENSE +ios/assets +ios/documentation +ios/example android/LICENSE android/assets android/documentation @@ -25,14 +24,13 @@ android/example example/build/ example/modules/ - - # User-specific Xcode settings. -iphone/appcelerator.https.xcodeproj/xcuserdata -iphone/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata +ios/appcelerator.https.xcodeproj/xcuserdata +ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata # Emacs backup files *~ -# OS X +# macOS .DS_Store +/android/java-sources.txt diff --git a/android/java-sources.txt b/android/java-sources.txt deleted file mode 100644 index 32b8e28..0000000 --- a/android/java-sources.txt +++ /dev/null @@ -1,10 +0,0 @@ -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/src/appcelerator/https/HttpsModule.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/src/appcelerator/https/PinningSecurityManager.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/src/appcelerator/https/PinningTrustManager.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/java/appcelerator/https/HttpsBootstrap.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/android/support/compat/R.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/android/support/design/R.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/android/support/v7/appcompat/R.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/android/support/v7/cardview/R.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/appcelerator/https/R.java" -"/Users/hknoechel/Documents/appcelerator_modules/appcelerator.https/android/build/generated/r/ti/modules/titanium/ui/R.java" \ No newline at end of file diff --git a/apidoc/Https.yml b/apidoc/Https.yml index a8ea3f6..885dd60 100644 --- a/apidoc/Https.yml +++ b/apidoc/Https.yml @@ -1,7 +1,7 @@ name: Modules.Https summary: Prevents a man-in-the-middle attack when used with the `Titanium.Network.HTTPClient` class. description: | -

Note: This feature requires a Pro, Team, or Enterprise subscription.

+

Note: This feature requires a Pro or Enterprise subscription.

Use the HTTPS module to create a Security Manager for `Titanium.Network.HTTPClient` that authenticates a set of HTTPS servers by pinning an HTTPS server's URL to its @@ -65,12 +65,10 @@ description: | For example: - var securityManager = https.createX509CertificatePinningSecurityManager([ - { - url: 'https://www.yourorg.com', - serverCertificate: 'yourorg.der' - } - ]); + var securityManager = https.createX509CertificatePinningSecurityManager([{ + url: 'https://www.yourorg.com', + serverCertificate: 'yourorg.der' + }]); After the security manager is created, create an `HTTPClient` object and set the [securityManager](Titanium.Network.HTTPClient.securityManager) property to the security manager @@ -93,6 +91,18 @@ description: | httpClient.open('GET', 'https://yourorg.com'); httpClient.send(); + + ### Wildcard Support + + Additionally to the above API, you can also pass wildcard-certificates to your + security-manager. Example: + + var securityManager = https.createX509CertificatePinningSecurityManager([{ + url: '*.example.com', + serverCertificate: 'example.der' + }]); + + ### Error Responses If the authentication fails, a security exception is thrown. The HTTP client's `onerror` callback will be passed an error object with the `code` key set to `-1` and the `message` key @@ -144,28 +154,23 @@ examples: `Resources` directory or `app/assets/` directory for Alloy projects. // Require in the module - var https = require('appcelerator.https'), - securityManager, - httpClient; + var https = require('appcelerator.https'); // Use the module to create a Security Manager that authenticates the specified URLs - securityManager = https.createX509CertificatePinningSecurityManager([ - { - url: 'https://dashboard.appcelerator.com', - serverCertificate: 'dashboard.appcelerator.com.der' - }, - { - url: 'https://www.wellsfargo.com', - serverCertificate: 'wellsfargo.der' - } - ]); + var securityManager = https.createX509CertificatePinningSecurityManager([{ + url: 'https://dashboard.appcelerator.com', + serverCertificate: 'dashboard.appcelerator.com.der' + }, { + url: 'https://www.wellsfargo.com', + serverCertificate: 'wellsfargo.der' + }]); // Create an HTTP client the same way you always have // but pass in the optional Security Manager that was created previously. - httpClient = Ti.Network.createHTTPClient({ + var httpClient = Ti.Network.createHTTPClient({ onload: function(e) { Ti.API.info('Received text: ' + this.responseText); - }, + }, onerror: function(e) { Ti.API.error(e.error); }, diff --git a/build.py b/build.py index 14b559f..7679ac0 100755 --- a/build.py +++ b/build.py @@ -62,9 +62,9 @@ def main(args): if cmd == 'build': packages = [] - if os.path.exists('iphone'): - create_module('iphone', 'appc ti build -p ios') - packages.append('iphone') + if os.path.exists('ios'): + create_module('ios', 'appc ti build -p ios') + packages.append('ios') if os.path.exists('android'): create_module('android', 'appc ti build -p android') @@ -74,8 +74,8 @@ def main(args): fork('.', packages_cmd, False) elif cmd == 'clean': - if os.path.exists('iphone'): - clean_build_module('iphone') + if os.path.exists('ios'): + clean_build_module('ios') if os.path.exists('android'): clean_ant_module('android') diff --git a/documentation/changelog.md b/documentation/changelog.md index 6a722cd..033b711 100644 --- a/documentation/changelog.md +++ b/documentation/changelog.md @@ -1,5 +1,14 @@ # Change Log
+
+v2.1.0 [MOD-2347] Expose "trustChainIndex" to select different certificates than the leaf
+
+v2.0.2 iOS: Fix module crash on Titanium SDK 6.x
+
+v2.0.1 [MOD-2293] iOS: Fix support for wildcard entries
+
+v2.0.0 Update Android module built against Titanium SDK 6, V8 5.1.281.59.
+
 v1.1.3 [TIMOB-19729] Rebuilding binary for Android 23 SDK. No changes to code.
 
 v1.1.2 [TIMOB-18129] Parity in handling Man In the Middle Attack
diff --git a/example/Resources/app.js b/example/Resources/app.js
index f868205..e750980 100644
--- a/example/Resources/app.js
+++ b/example/Resources/app.js
@@ -1,8 +1,5 @@
 /**
  * This is an example of how to use the appcelerator.https module.
- *
- * Author: Matt Langston
- * Created: 2014.04.29
  */
 
 var https = require('appcelerator.https');
@@ -10,17 +7,17 @@ var https = require('appcelerator.https');
 /*
  * Create a Security Manager for Titanium.Network.HTTPClient that
  * authenticates a currated set of HTTPS servers. It does this by
- * "pinning" an HTTPS server's DNS name to the public key contained in
+ * 'pinning' an HTTPS server's DNS name to the public key contained in
  * the X509 certificate it uses for TLS communication. The public key
  * is embedded in an app by adding this X509 certificate to the app's
  * Resources directory.
  *
- * With such a "pin" in place, the security manager will guarantee
+ * With such a 'pin' in place, the security manager will guarantee
  * that all HTTPClient connections to this HTTPS server are to a
  * server that holds the private key corresponding to the public key
  * embedded in the app, therefore authenticating the server.
  *
- * This is what prevents "Man-in-the-Middle" attack.
+ * This is what prevents 'Man-in-the-Middle' attack.
  *
  * This example pins two URLs.
  *
@@ -42,16 +39,16 @@ var https = require('appcelerator.https');
  * The X.509 certificate files can have any name and extension you
  * wish, but they must be in the standard DER binary format.
  */
-var securityManager = https.createX509CertificatePinningSecurityManager([
-	{
-		url: "https://www.americanexpress.com",
-		serverCertificate: "wellsfargo.cer"
-	},
-	{
-		url: "https://www.wellsfargo.com",
-		serverCertificate: "wellsfargo.cer"
-	}
-]);
+var securityManager = https.createX509CertificatePinningSecurityManager([{
+	url: 'https://www.americanexpress.com',
+	serverCertificate: 'wellsfargo.cer'
+},
+{
+	url: 'https://www.wellsfargo.com',
+  serverCertificate: 'wellsfargo.cer',
+	// Optional: Pass the trust-chain index to select a certificate different to the leaf
+	// trustChainIndex: 1
+}]);
 
 
 var win = Titanium.UI.createWindow({
@@ -111,7 +108,7 @@ win.open();
 /*
  * Create an HTTP client the same way you always have, but pass in an
  * (optional) Security Manager. In this example, we pass in the
- * "Certificate Pinning Security Manager " that I configured above.
+ * 'Certificate Pinning Security Manager ' that I configured above.
  */
 
 function getXHR(url) {
@@ -131,9 +128,9 @@ function getXHR(url) {
 	return xhr;
 }
 
-var wf = "https://www.wellsfargo.com";
-var amex = "https://www.americanexpress.com";
-var appc = "https://dashboard.appcelerator.com";
+var wf = 'https://www.wellsfargo.com';
+var amex = 'https://www.americanexpress.com';
+var appc = 'https://dashboard.appcelerator.com';
 
 button1.addEventListener('click',function(e){
 	var xhr = getXHR(wf);
diff --git a/iphone/Classes/AppceleratorHttpsModuleAssets.m b/ios/Classes/AppceleratorHttpsModuleAssets.m
similarity index 100%
rename from iphone/Classes/AppceleratorHttpsModuleAssets.m
rename to ios/Classes/AppceleratorHttpsModuleAssets.m
diff --git a/iphone/README.md b/ios/README.md
similarity index 100%
rename from iphone/README.md
rename to ios/README.md
diff --git a/iphone/appcelerator.https.xcodeproj/project.pbxproj b/ios/appcelerator.https.xcodeproj/project.pbxproj
similarity index 100%
rename from iphone/appcelerator.https.xcodeproj/project.pbxproj
rename to ios/appcelerator.https.xcodeproj/project.pbxproj
diff --git a/iphone/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from iphone/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to ios/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hans.xcuserdatad/UserInterfaceState.xcuserstate b/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hans.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000000000000000000000000000000000000..134a6afd4ddbab697a0cc25e8876f88f7ce6662f
GIT binary patch
literal 43620
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

literal 0
HcmV?d00001

diff --git a/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hknoechel.xcuserdatad/UserInterfaceState.xcuserstate b/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hknoechel.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000000000000000000000000000000000000..218ff3f62065105cbad922990c2d4c9e7f8baaa7
GIT binary patch
literal 11923
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
X=QCaof<^=l>EI9DFMfu9XT17
+
+   
+      
+         
+            
+            
+         
+      
+   
+   
+      
+         
+            
+            
+         
+      
+      
+         
+         
+      
+      
+      
+   
+   
+      
+         
+         
+      
+      
+      
+   
+   
+      
+         
+         
+      
+   
+   
+   
+   
+   
+
diff --git a/iphone/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist
rename to ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist
diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme
new file mode 100644
index 0000000..8d48a94
--- /dev/null
+++ b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme
@@ -0,0 +1,99 @@
+
+
+   
+      
+         
+            
+            
+         
+      
+   
+   
+      
+         
+            
+            
+         
+      
+      
+         
+         
+      
+      
+      
+   
+   
+      
+         
+         
+      
+      
+      
+   
+   
+      
+         
+         
+      
+   
+   
+   
+   
+   
+
diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..5c698ef
--- /dev/null
+++ b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,27 @@
+
+
+
+
+	SchemeUserState
+	
+		appcelerator.https.xcscheme
+		
+			orderHint
+			0
+		
+	
+	SuppressBuildableAutocreation
+	
+		C9078D03192E4E1400B7BDDE
+		
+			primary
+			
+		
+		C9078D13192E4E1400B7BDDE
+		
+			primary
+			
+		
+	
+
+
diff --git a/iphone/appcelerator.https/AppceleratorHttps.h b/ios/appcelerator.https/AppceleratorHttps.h
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttps.h
rename to ios/appcelerator.https/AppceleratorHttps.h
diff --git a/iphone/appcelerator.https/AppceleratorHttpsModule.h b/ios/appcelerator.https/AppceleratorHttpsModule.h
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsModule.h
rename to ios/appcelerator.https/AppceleratorHttpsModule.h
diff --git a/iphone/appcelerator.https/AppceleratorHttpsModule.m b/ios/appcelerator.https/AppceleratorHttpsModule.m
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsModule.m
rename to ios/appcelerator.https/AppceleratorHttpsModule.m
diff --git a/iphone/appcelerator.https/AppceleratorHttpsModuleAssets.h b/ios/appcelerator.https/AppceleratorHttpsModuleAssets.h
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsModuleAssets.h
rename to ios/appcelerator.https/AppceleratorHttpsModuleAssets.h
diff --git a/iphone/appcelerator.https/AppceleratorHttpsModuleAssets.m b/ios/appcelerator.https/AppceleratorHttpsModuleAssets.m
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsModuleAssets.m
rename to ios/appcelerator.https/AppceleratorHttpsModuleAssets.m
diff --git a/iphone/appcelerator.https/AppceleratorHttpsUtils.h b/ios/appcelerator.https/AppceleratorHttpsUtils.h
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsUtils.h
rename to ios/appcelerator.https/AppceleratorHttpsUtils.h
diff --git a/iphone/appcelerator.https/AppceleratorHttpsUtils.m b/ios/appcelerator.https/AppceleratorHttpsUtils.m
similarity index 100%
rename from iphone/appcelerator.https/AppceleratorHttpsUtils.m
rename to ios/appcelerator.https/AppceleratorHttpsUtils.m
diff --git a/iphone/appcelerator.https/PinnedURL.h b/ios/appcelerator.https/PinnedURL.h
similarity index 100%
rename from iphone/appcelerator.https/PinnedURL.h
rename to ios/appcelerator.https/PinnedURL.h
diff --git a/iphone/appcelerator.https/PinnedURL.m b/ios/appcelerator.https/PinnedURL.m
similarity index 100%
rename from iphone/appcelerator.https/PinnedURL.m
rename to ios/appcelerator.https/PinnedURL.m
diff --git a/iphone/appcelerator.https/PublicKey.h b/ios/appcelerator.https/PublicKey.h
similarity index 100%
rename from iphone/appcelerator.https/PublicKey.h
rename to ios/appcelerator.https/PublicKey.h
diff --git a/iphone/appcelerator.https/PublicKey.m b/ios/appcelerator.https/PublicKey.m
similarity index 100%
rename from iphone/appcelerator.https/PublicKey.m
rename to ios/appcelerator.https/PublicKey.m
diff --git a/iphone/appcelerator.https/SecurityManager.h b/ios/appcelerator.https/SecurityManager.h
similarity index 100%
rename from iphone/appcelerator.https/SecurityManager.h
rename to ios/appcelerator.https/SecurityManager.h
diff --git a/iphone/appcelerator.https/SecurityManager.m b/ios/appcelerator.https/SecurityManager.m
similarity index 100%
rename from iphone/appcelerator.https/SecurityManager.m
rename to ios/appcelerator.https/SecurityManager.m
diff --git a/iphone/appcelerator.https/X509Certificate.h b/ios/appcelerator.https/X509Certificate.h
similarity index 100%
rename from iphone/appcelerator.https/X509Certificate.h
rename to ios/appcelerator.https/X509Certificate.h
diff --git a/iphone/appcelerator.https/X509Certificate.m b/ios/appcelerator.https/X509Certificate.m
similarity index 100%
rename from iphone/appcelerator.https/X509Certificate.m
rename to ios/appcelerator.https/X509Certificate.m
diff --git a/iphone/appcelerator.https/X509CertificatePinningSecurityManagerProxy.h b/ios/appcelerator.https/X509CertificatePinningSecurityManagerProxy.h
similarity index 100%
rename from iphone/appcelerator.https/X509CertificatePinningSecurityManagerProxy.h
rename to ios/appcelerator.https/X509CertificatePinningSecurityManagerProxy.h
diff --git a/iphone/appcelerator.https/X509CertificatePinningSecurityManagerProxy.m b/ios/appcelerator.https/X509CertificatePinningSecurityManagerProxy.m
similarity index 100%
rename from iphone/appcelerator.https/X509CertificatePinningSecurityManagerProxy.m
rename to ios/appcelerator.https/X509CertificatePinningSecurityManagerProxy.m
diff --git a/iphone/appcelerator.https/appcelerator.https-Prefix.pch b/ios/appcelerator.https/appcelerator.https-Prefix.pch
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https-Prefix.pch
rename to ios/appcelerator.https/appcelerator.https-Prefix.pch
diff --git a/iphone/appcelerator.https/appcelerator.https.xcodeproj/project.pbxproj b/ios/appcelerator.https/appcelerator.https.xcodeproj/project.pbxproj
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https.xcodeproj/project.pbxproj
rename to ios/appcelerator.https/appcelerator.https.xcodeproj/project.pbxproj
diff --git a/iphone/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
rename to ios/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/contents.xcworkspacedata
diff --git a/iphone/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/matt.xcuserdatad/UserInterfaceState.xcuserstate b/ios/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/matt.xcuserdatad/UserInterfaceState.xcuserstate
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/matt.xcuserdatad/UserInterfaceState.xcuserstate
rename to ios/appcelerator.https/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/matt.xcuserdatad/UserInterfaceState.xcuserstate
diff --git a/iphone/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/appcelerator.https.xcscheme b/ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/appcelerator.https.xcscheme
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/appcelerator.https.xcscheme
rename to ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/appcelerator.https.xcscheme
diff --git a/ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..5c698ef
--- /dev/null
+++ b/ios/appcelerator.https/appcelerator.https.xcodeproj/xcuserdata/matt.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,27 @@
+
+
+
+
+	SchemeUserState
+	
+		appcelerator.https.xcscheme
+		
+			orderHint
+			0
+		
+	
+	SuppressBuildableAutocreation
+	
+		C9078D03192E4E1400B7BDDE
+		
+			primary
+			
+		
+		C9078D13192E4E1400B7BDDE
+		
+			primary
+			
+		
+	
+
+
diff --git a/iphone/appcelerator.https/appcelerator.https/appcelerator.https-Prefix.pch b/ios/appcelerator.https/appcelerator.https/appcelerator.https-Prefix.pch
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https/appcelerator.https-Prefix.pch
rename to ios/appcelerator.https/appcelerator.https/appcelerator.https-Prefix.pch
diff --git a/iphone/appcelerator.https/appcelerator.https/appcelerator_https.h b/ios/appcelerator.https/appcelerator.https/appcelerator_https.h
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https/appcelerator_https.h
rename to ios/appcelerator.https/appcelerator.https/appcelerator_https.h
diff --git a/iphone/appcelerator.https/appcelerator.https/appcelerator_https.m b/ios/appcelerator.https/appcelerator.https/appcelerator_https.m
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.https/appcelerator_https.m
rename to ios/appcelerator.https/appcelerator.https/appcelerator_https.m
diff --git a/iphone/appcelerator.https/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist b/ios/appcelerator.https/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
rename to ios/appcelerator.https/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
diff --git a/iphone/appcelerator.https/appcelerator.httpsTests/appcelerator_httpsTests.m b/ios/appcelerator.https/appcelerator.httpsTests/appcelerator_httpsTests.m
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.httpsTests/appcelerator_httpsTests.m
rename to ios/appcelerator.https/appcelerator.httpsTests/appcelerator_httpsTests.m
diff --git a/iphone/appcelerator.https/appcelerator.httpsTests/en.lproj/InfoPlist.strings b/ios/appcelerator.https/appcelerator.httpsTests/en.lproj/InfoPlist.strings
similarity index 100%
rename from iphone/appcelerator.https/appcelerator.httpsTests/en.lproj/InfoPlist.strings
rename to ios/appcelerator.https/appcelerator.httpsTests/en.lproj/InfoPlist.strings
diff --git a/iphone/appcelerator.httpsTests/*.prod.ace.appcelerator.com-1.cer b/ios/appcelerator.httpsTests/*.prod.ace.appcelerator.com-1.cer
similarity index 100%
rename from iphone/appcelerator.httpsTests/*.prod.ace.appcelerator.com-1.cer
rename to ios/appcelerator.httpsTests/*.prod.ace.appcelerator.com-1.cer
diff --git a/iphone/appcelerator.httpsTests/*.prod.ace.appcelerator.com-2.cer b/ios/appcelerator.httpsTests/*.prod.ace.appcelerator.com-2.cer
similarity index 100%
rename from iphone/appcelerator.httpsTests/*.prod.ace.appcelerator.com-2.cer
rename to ios/appcelerator.httpsTests/*.prod.ace.appcelerator.com-2.cer
diff --git a/iphone/appcelerator.httpsTests/AbstractBaseTest.h b/ios/appcelerator.httpsTests/AbstractBaseTest.h
similarity index 100%
rename from iphone/appcelerator.httpsTests/AbstractBaseTest.h
rename to ios/appcelerator.httpsTests/AbstractBaseTest.h
diff --git a/iphone/appcelerator.httpsTests/AbstractBaseTest.m b/ios/appcelerator.httpsTests/AbstractBaseTest.m
similarity index 100%
rename from iphone/appcelerator.httpsTests/AbstractBaseTest.m
rename to ios/appcelerator.httpsTests/AbstractBaseTest.m
diff --git a/iphone/appcelerator.httpsTests/PinnedURLTests.m b/ios/appcelerator.httpsTests/PinnedURLTests.m
similarity index 100%
rename from iphone/appcelerator.httpsTests/PinnedURLTests.m
rename to ios/appcelerator.httpsTests/PinnedURLTests.m
diff --git a/iphone/appcelerator.httpsTests/PublicKeyTests.m b/ios/appcelerator.httpsTests/PublicKeyTests.m
similarity index 100%
rename from iphone/appcelerator.httpsTests/PublicKeyTests.m
rename to ios/appcelerator.httpsTests/PublicKeyTests.m
diff --git a/iphone/appcelerator.httpsTests/SecurityManagerTests.m b/ios/appcelerator.httpsTests/SecurityManagerTests.m
similarity index 100%
rename from iphone/appcelerator.httpsTests/SecurityManagerTests.m
rename to ios/appcelerator.httpsTests/SecurityManagerTests.m
diff --git a/iphone/appcelerator.httpsTests/X509CertificateTests.m b/ios/appcelerator.httpsTests/X509CertificateTests.m
similarity index 100%
rename from iphone/appcelerator.httpsTests/X509CertificateTests.m
rename to ios/appcelerator.httpsTests/X509CertificateTests.m
diff --git a/iphone/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist b/ios/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
similarity index 100%
rename from iphone/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
rename to ios/appcelerator.httpsTests/appcelerator.httpsTests-Info.plist
diff --git a/iphone/appcelerator.httpsTests/en.lproj/InfoPlist.strings b/ios/appcelerator.httpsTests/en.lproj/InfoPlist.strings
similarity index 100%
rename from iphone/appcelerator.httpsTests/en.lproj/InfoPlist.strings
rename to ios/appcelerator.httpsTests/en.lproj/InfoPlist.strings
diff --git a/iphone/appcelerator.httpsTests/random-org.der b/ios/appcelerator.httpsTests/random-org.der
similarity index 100%
rename from iphone/appcelerator.httpsTests/random-org.der
rename to ios/appcelerator.httpsTests/random-org.der
diff --git a/iphone/appcelerator.httpsTests/random-org2.der b/ios/appcelerator.httpsTests/random-org2.der
similarity index 100%
rename from iphone/appcelerator.httpsTests/random-org2.der
rename to ios/appcelerator.httpsTests/random-org2.der
diff --git a/iphone/build.py b/ios/build.py
similarity index 100%
rename from iphone/build.py
rename to ios/build.py
diff --git a/iphone/manifest b/ios/manifest
similarity index 100%
rename from iphone/manifest
rename to ios/manifest
diff --git a/ios/metadata.json b/ios/metadata.json
new file mode 100644
index 0000000..43a62e5
--- /dev/null
+++ b/ios/metadata.json
@@ -0,0 +1 @@
+{"exports":[]}
\ No newline at end of file
diff --git a/iphone/module.xcconfig b/ios/module.xcconfig
similarity index 100%
rename from iphone/module.xcconfig
rename to ios/module.xcconfig
diff --git a/iphone/timodule.xml b/ios/timodule.xml
similarity index 100%
rename from iphone/timodule.xml
rename to ios/timodule.xml
diff --git a/iphone/titanium.xcconfig b/ios/titanium.xcconfig
similarity index 100%
rename from iphone/titanium.xcconfig
rename to ios/titanium.xcconfig

From c4dddeba9e5eeadff94b53483dca219eec4bf318 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= 
Date: Sun, 22 Oct 2017 11:15:51 +0200
Subject: [PATCH 2/5] Add Jenkinsfile

---
 Jenkinsfile | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 Jenkinsfile

diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..dbfa9ea
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,8 @@
+@Library('pipeline-library') _
+
+buildModule {
+	// defaults:
+	//nodeVersion = '6.11.4' // Must have version set up on Jenkins master before it can be changed
+	//sdkVersion = '6.2.2.GA'
+	//androidAPILevel = '25' // if changed, must install on build nodes
+}

From 6a6d4a67065856d36fd3d89a2bf77b39b99fcd43 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= 
Date: Sun, 22 Oct 2017 11:17:01 +0200
Subject: [PATCH 3/5] Update .gitignore

---
 .gitignore | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5765502..501281c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,8 +25,8 @@ example/build/
 example/modules/
 
 # User-specific Xcode settings.
-ios/appcelerator.https.xcodeproj/xcuserdata
-ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata
+ios/appcelerator.https.xcodeproj/xcuserdata/*
+ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/*
 
 # Emacs backup files
 *~

From c18fa014aa37dafb013ae93c066a36c0c87251e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= 
Date: Sun, 22 Oct 2017 11:17:37 +0200
Subject: [PATCH 4/5] Remove user-data

---
 .../xcschemes/appcelerator.https.xcscheme     | 99 -------------------
 .../xcschemes/xcschememanagement.plist        | 27 -----
 .../xcschemes/appcelerator.https.xcscheme     | 99 -------------------
 .../xcschemes/xcschememanagement.plist        | 27 -----
 4 files changed, 252 deletions(-)
 delete mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/appcelerator.https.xcscheme
 delete mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist
 delete mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme
 delete mode 100644 ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist

diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/appcelerator.https.xcscheme b/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/appcelerator.https.xcscheme
deleted file mode 100644
index cf581ec..0000000
--- a/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/appcelerator.https.xcscheme
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-   
-      
-         
-            
-            
-         
-      
-   
-   
-      
-         
-            
-            
-         
-      
-      
-         
-         
-      
-      
-      
-   
-   
-      
-         
-         
-      
-      
-      
-   
-   
-      
-         
-         
-      
-   
-   
-   
-   
-   
-
diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist
deleted file mode 100644
index 5c698ef..0000000
--- a/ios/appcelerator.https.xcodeproj/xcuserdata/hans.xcuserdatad/xcschemes/xcschememanagement.plist
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-	SchemeUserState
-	
-		appcelerator.https.xcscheme
-		
-			orderHint
-			0
-		
-	
-	SuppressBuildableAutocreation
-	
-		C9078D03192E4E1400B7BDDE
-		
-			primary
-			
-		
-		C9078D13192E4E1400B7BDDE
-		
-			primary
-			
-		
-	
-
-
diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme
deleted file mode 100644
index 8d48a94..0000000
--- a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/appcelerator.https.xcscheme
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-   
-      
-         
-            
-            
-         
-      
-   
-   
-      
-         
-            
-            
-         
-      
-      
-         
-         
-      
-      
-      
-   
-   
-      
-         
-         
-      
-      
-      
-   
-   
-      
-         
-         
-      
-   
-   
-   
-   
-   
-
diff --git a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist
deleted file mode 100644
index 5c698ef..0000000
--- a/ios/appcelerator.https.xcodeproj/xcuserdata/hknoechel.xcuserdatad/xcschemes/xcschememanagement.plist
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-	SchemeUserState
-	
-		appcelerator.https.xcscheme
-		
-			orderHint
-			0
-		
-	
-	SuppressBuildableAutocreation
-	
-		C9078D03192E4E1400B7BDDE
-		
-			primary
-			
-		
-		C9078D13192E4E1400B7BDDE
-		
-			primary
-			
-		
-	
-
-

From ae8df9715714fc43208a53c2aec1232fbf624cbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= 
Date: Sun, 22 Oct 2017 11:41:59 +0200
Subject: [PATCH 5/5] Update to latest Xcode settings

---
 .../project.pbxproj                           |  14 +++++++++++++-
 .../UserInterfaceState.xcuserstate            | Bin 11923 -> 31487 bytes
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/ios/appcelerator.https.xcodeproj/project.pbxproj b/ios/appcelerator.https.xcodeproj/project.pbxproj
index 9803839..838c812 100644
--- a/ios/appcelerator.https.xcodeproj/project.pbxproj
+++ b/ios/appcelerator.https.xcodeproj/project.pbxproj
@@ -259,7 +259,7 @@
 		C9078CFC192E4E1400B7BDDE /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0830;
+				LastUpgradeCheck = 0910;
 				ORGANIZATIONNAME = Appcelerator;
 			};
 			buildConfigurationList = C9078CFF192E4E1400B7BDDE /* Build configuration list for PBXProject "appcelerator.https" */;
@@ -354,14 +354,20 @@
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
 				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = NO;
 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
@@ -399,14 +405,20 @@
 				CLANG_CXX_LIBRARY = "libc++";
 				CLANG_ENABLE_MODULES = YES;
 				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
 				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
 				CLANG_WARN_CONSTANT_CONVERSION = YES;
 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
 				CLANG_WARN_EMPTY_BODY = YES;
 				CLANG_WARN_ENUM_CONVERSION = YES;
 				CLANG_WARN_INFINITE_RECURSION = YES;
 				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = NO;
 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
 				CLANG_WARN_UNREACHABLE_CODE = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
diff --git a/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hknoechel.xcuserdatad/UserInterfaceState.xcuserstate b/ios/appcelerator.https.xcodeproj/project.xcworkspace/xcuserdata/hknoechel.xcuserdatad/UserInterfaceState.xcuserstate
index 218ff3f62065105cbad922990c2d4c9e7f8baaa7..e8345495c6242bca269b7959e157f9d2e2183d99 100644
GIT binary patch
literal 31487
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

delta 7374
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