{ "id": "173424", "key": "TIMOB-26959", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20950", "name": "Release 9.1.0", "archived": false, "released": true, "releaseDate": "2020-08-25" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2020-08-03T21:04:12.000+0000", "created": "2019-04-01T21:23:39.000+0000", "priority": { "name": "None", "id": "6" }, "labels": [ "HTTPClient", "TLS", "ios", "network" ], "versions": [], "issuelinks": [ { "id": "57478", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "173425", "key": "TIMOB-26960", "fields": { "summary": "Windows: Add TLS 1.3 support", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "57475", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "173416", "key": "TIMOB-26956", "fields": { "summary": "Android: Add TLS 1.3 support", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-08-03T21:04:12.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "*Summary:*\r\nWe should add a new {{TLS_VERSION_1_3}} constant to the {{Ti.Network}} module.\r\n\r\nWe should also make sure TLS 1.3 is enabled by default when doing network communications via:\r\n* {{HTTPClient}}\r\n* Loading images via URLs. (ex: {{ImageView.image}})\r\n* Module verification on app startup for non-production builds via \"ti.verify\".\r\n\r\n*Reasons:*\r\n* For parity when we do the same on Android. See: [TIMOB-26956]\r\n* So that devs can set a TLS version preference via [HTTPClient.tlsVersion|https://docs.appcelerator.com/platform/latest/#!/api/Titanium.Network.HTTPClient-property-tlsVersion].\r\n\r\n*Note:*\r\nApple added TLS 1.3 support to iOS 11.\r\nhttps://developer.apple.com/documentation/security/sslprotocol/ktlsprotocol13?language=objc\r\n", "attachment": [], "flagged": false, "summary": "iOS: Add TLS 1.3 support", "creator": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1196, "state": "closed", "name": "2020 Sprint 11", "startDate": "2020-05-26T15:56:00.000Z", "endDate": "2020-06-05T15:56:00.000Z", "completeDate": "2020-06-08T21:05:50.356Z", "originBoardId": 114 }, { "id": 1198, "state": "closed", "name": "2020 Sprint 12", "startDate": "2020-06-08T21:06:41.849Z", "endDate": "2020-06-19T21:06:00.000Z", "completeDate": "2020-06-19T15:54:38.493Z", "originBoardId": 114 }, { "id": 1199, "state": "closed", "name": "2020 Sprint 13", "startDate": "2020-06-19T16:41:04.099Z", "endDate": "2020-07-02T16:41:00.000Z", "completeDate": "2020-07-02T15:37:12.455Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "447409", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Please note that Android won't have official TLS 1.3 support until Android Q (aka: Android 10.0) is released. Please see:\r\nhttps://developer.android.com/preview/features#tls-1.3\r\n\r\nBut that doesn't mean we can't add it to iOS before Android. If we do this, then we may want to add the constant to Android anyways and have it no-op for TLS 1.3 until Titanium has official Android Q support.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-04-01T21:27:54.000+0000", "updated": "2019-04-01T21:27:54.000+0000" }, { "id": "447413", "author": { "name": "kiguchi", "key": "kota", "displayName": "Kota Iguchi", "active": false, "timeZone": "America/Los_Angeles" }, "body": "This sounds to me we might want to implement new {{tlsVersion}} property onto {{Ti.Network.TCP}} too like below.\r\n\r\n{code}\r\nvar socket = Ti.Network.Socket.createTCP({\r\n host: 'www.example.com',\r\n port: 80,\r\n tlsVersion: Ti.Network.TLS_VERSION_1_3\r\n});\r\n{code}", "updateAuthor": { "name": "kiguchi", "key": "kota", "displayName": "Kota Iguchi", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-04-02T03:23:14.000+0000", "updated": "2019-04-02T03:23:14.000+0000" }, { "id": "447421", "author": { "name": "kiguchi", "key": "kota", "displayName": "Kota Iguchi", "active": false, "timeZone": "America/Los_Angeles" }, "body": "FYI: I'm not sure if it really makes sense but I can see that each platform has API to deal with TLS version on socket/stream.\r\n\r\n- Android: [javax.net.ssl.SSLSocket.setEnabledProtocols|https://developer.android.com/reference/javax/net/ssl/SSLSocket.html#setEnabledProtocols]\r\n- iOS: [NSStreamSocketSecurityLevel on NSStream|https://developer.apple.com/documentation/foundation/nsstreamsocketsecuritylevel?language=objc|]\r\n- Windows: [Windows.Networking.Sockets.StreamSocket.ConnectAsync|https://docs.microsoft.com/en-us/uwp/api/windows.networking.sockets.streamsocket.connectasync#Windows_Networking_Sockets_StreamSocket_ConnectAsync_Windows_Networking_EndpointPair_Windows_Networking_Sockets_SocketProtectionLevel_]\r\n", "updateAuthor": { "name": "kiguchi", "key": "kota", "displayName": "Kota Iguchi", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-04-02T08:13:57.000+0000", "updated": "2019-04-02T08:14:39.000+0000" }, { "id": "450730", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~lchoudhary] We should set up a test of this", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-22T15:51:02.000+0000", "updated": "2019-08-22T15:51:02.000+0000" }, { "id": "451788", "author": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~ssekhri] can you please check this? If it's done, can you please comment? Thanks.", "updateAuthor": { "name": "amukherjee", "key": "amukherjee", "displayName": "Abir Mukherjee", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-02T22:37:16.000+0000", "updated": "2019-10-02T22:37:16.000+0000" }, { "id": "452331", "author": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "body": "any chance on getting this back-ported to 8.3.X ?", "updateAuthor": { "name": "ygbr", "key": "ygbr", "displayName": "Ygor Lemos", "active": true, "timeZone": "America/Sao_Paulo" }, "created": "2019-10-29T14:44:23.000+0000", "updated": "2019-10-29T14:44:23.000+0000" }, { "id": "452336", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~ygbr], I remember our test team doing a quick test on iOS 13 and we got TLS 1.3 for free. At least in a {{WebView}}. We didn't have to make any code changes. Try it with the below URL.\r\nhttps://ssllabs.com/ssltest/viewMyClient.html\r\n\r\nBut we haven't done extensive testing yet. Nor tested it on older iOS versions to see what our options are. The team has been more focused on supporting iOS 13 in general.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-10-29T17:42:49.000+0000", "updated": "2019-10-29T17:42:49.000+0000" }, { "id": "455590", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I tried to test it using Charles. It always uses TLS 1.2. \r\n\r\nIn iOS, if one want to set some minimum TLS version, add following key can be set in tiapp.xml's plist section of iOS. Similar is explained [here|https://stackoverflow.com/questions/37320980/how-to-enable-tls-1-2-1-1-1-0-and-ssl-in-ios-app] -\r\n\r\n{code:java}\r\nNSAppTransportSecurity\r\n\r\n NSExceptionDomains\r\n \r\n your.servers.domain.here\r\n \r\n NSExceptionMinimumTLSVersion\r\n TLSv1.0\r\n \r\n \r\n\r\n{code}\r\n\r\n[~ssekhri] Please verify it. Thanks!\r\n\r\n\r\nTest Case - \r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff'\r\n});\r\n\r\nvar btn = Ti.UI.createButton({\r\n\ttop: 100,\r\n title: 'Load'\r\n});\r\n\r\nbtn.addEventListener('click', function() {\r\n var webView = Ti.UI.createWebView({\r\n \ttop: 150,\r\n \turl: 'https://ssllabs.com/ssltest/viewMyClient.html' //'https://www.google.com'//\r\n });\r\n\r\n win.add(webView);\r\n\r\n\t// const url = 'https://ssllabs.com/ssltest/viewMyClient.html';// \"https://www.google.com\"; //\r\n\t// const client = Ti.Network.createHTTPClient({\r\n\t// onload: function(e) {\r\n\t// console.log(\"success\");\r\n\t// },\r\n\r\n\t// onerror: function(e) {\r\n\t// console.error(e.error);\r\n\t// },\r\n\t// });\r\n\t// client.open(\"GET\", url);\r\n\t// client.send();\r\n});\r\n\r\nwin.add(btn);\r\nwin.open();\r\n{code}\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-05-29T21:37:12.000+0000", "updated": "2020-06-02T00:20:49.000+0000" }, { "id": "455646", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR - https://github.com/appcelerator/titanium_mobile/pull/11754", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-06-04T22:17:45.000+0000", "updated": "2020-06-04T22:17:45.000+0000" }, { "id": "455984", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR Passed.\r\nWaiting for Jenkins build", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-07-01T19:52:52.000+0000", "updated": "2020-07-01T19:52:52.000+0000" }, { "id": "456002", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "merged to master for 9.1.0 target", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2020-07-06T14:59:17.000+0000", "updated": "2020-07-06T14:59:17.000+0000" }, { "id": "456328", "author": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified on:\r\nMac OS: 10.15.4\r\nSDK: 9.1.0.v20200727104531\r\nAppc CLI: 8.1.0-master.7\r\nJDK: 11.0.4\r\nNode: 10.17.0\r\nStudio: 6.0.0.202005141803\r\nXcode: 12.0 beta\r\nDevice: iOS simulator 13.5, 12.2, 11.4", "updateAuthor": { "name": "ssekhri", "key": "ssekhri", "displayName": "Satyam Sekhri", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2020-08-03T21:04:12.000+0000", "updated": "2020-08-03T21:04:12.000+0000" } ], "maxResults": 13, "total": 13, "startAt": 0 } } }