summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadREST
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2024-10-14 15:28:50 +0200
committerBug Magnet <marco.nikic@mullvad.net>2024-10-14 15:28:52 +0200
commit2cdf896f101e0179dca78146d2ccd935e4591135 (patch)
treed09853d96987d04617f9be1c05bd8d1701517e13 /ios/MullvadREST
parent12ccbe386fc41f0bca6b047434cbd9483953cc8d (diff)
downloadmullvadvpn-2cdf896f101e0179dca78146d2ccd935e4591135.tar.xz
mullvadvpn-2cdf896f101e0179dca78146d2ccd935e4591135.zip
Check AddressCache as well when overriding hostname for SSL validation
Diffstat (limited to 'ios/MullvadREST')
-rw-r--r--ios/MullvadREST/ApiHandlers/RESTURLSession.swift6
-rw-r--r--ios/MullvadREST/ApiHandlers/SSLPinningURLSessionDelegate.swift5
-rw-r--r--ios/MullvadREST/Transport/ProxyConfigurationTransportProvider.swift2
3 files changed, 9 insertions, 4 deletions
diff --git a/ios/MullvadREST/ApiHandlers/RESTURLSession.swift b/ios/MullvadREST/ApiHandlers/RESTURLSession.swift
index 99bafcee3c..a1c6431df4 100644
--- a/ios/MullvadREST/ApiHandlers/RESTURLSession.swift
+++ b/ios/MullvadREST/ApiHandlers/RESTURLSession.swift
@@ -7,9 +7,10 @@
//
import Foundation
+import Network
extension REST {
- public static func makeURLSession() -> URLSession {
+ public static func makeURLSession(addressCache: AddressCache) -> URLSession {
let certificatePath = Bundle(for: SSLPinningURLSessionDelegate.self)
.path(forResource: "le_root_cert", ofType: "cer")!
let data = FileManager.default.contents(atPath: certificatePath)!
@@ -17,7 +18,8 @@ extension REST {
let sessionDelegate = SSLPinningURLSessionDelegate(
sslHostname: defaultAPIHostname,
- trustedRootCertificates: [secCertificate]
+ trustedRootCertificates: [secCertificate],
+ addressCache: addressCache
)
let sessionConfiguration = URLSessionConfiguration.ephemeral
diff --git a/ios/MullvadREST/ApiHandlers/SSLPinningURLSessionDelegate.swift b/ios/MullvadREST/ApiHandlers/SSLPinningURLSessionDelegate.swift
index 2d0d1ca406..a5fd867770 100644
--- a/ios/MullvadREST/ApiHandlers/SSLPinningURLSessionDelegate.swift
+++ b/ios/MullvadREST/ApiHandlers/SSLPinningURLSessionDelegate.swift
@@ -14,12 +14,14 @@ import Security
final class SSLPinningURLSessionDelegate: NSObject, URLSessionDelegate {
private let sslHostname: String
private let trustedRootCertificates: [SecCertificate]
+ private let addressCache: REST.AddressCache
private let logger = Logger(label: "SSLPinningURLSessionDelegate")
- init(sslHostname: String, trustedRootCertificates: [SecCertificate]) {
+ init(sslHostname: String, trustedRootCertificates: [SecCertificate], addressCache: REST.AddressCache) {
self.sslHostname = sslHostname
self.trustedRootCertificates = trustedRootCertificates
+ self.addressCache = addressCache
}
// MARK: - URLSessionDelegate
@@ -40,6 +42,7 @@ final class SSLPinningURLSessionDelegate: NSObject, URLSessionDelegate {
"\(IPv4Address.loopback)",
"\(IPv6Address.loopback)",
"\(REST.defaultAPIEndpoint.ip)",
+ "\(addressCache.getCurrentEndpoint().ip)",
]
if overridenHostnames.contains(hostName) {
hostName = sslHostname
diff --git a/ios/MullvadREST/Transport/ProxyConfigurationTransportProvider.swift b/ios/MullvadREST/Transport/ProxyConfigurationTransportProvider.swift
index b17a9bd043..6d20fa1440 100644
--- a/ios/MullvadREST/Transport/ProxyConfigurationTransportProvider.swift
+++ b/ios/MullvadREST/Transport/ProxyConfigurationTransportProvider.swift
@@ -27,7 +27,7 @@ public class ProxyConfigurationTransportProvider {
}
public func makeTransport(with configuration: PersistentProxyConfiguration) throws -> RESTTransport {
- let urlSession = REST.makeURLSession()
+ let urlSession = REST.makeURLSession(addressCache: addressCache)
switch configuration {
case .direct:
return URLSessionTransport(urlSession: urlSession)