- File > Swift Packages > Add Package Dependency
- Add
https://github.com/InstaRobot/SSLPinningManager.git
OR
Update dependencies
in Package.swift
dependencies: [
.package(url: "https://github.com/InstaRobot/SSLPinningManager.git", .upToNextMajor(from: "1.0.0"))
]
import SSLPinningManager
final class PinningSessionDelegate: NSObject {
let sslPinningManager: SSLPinningManager
override init() {
sslPinningManager = SSLPinningManager(
pinnedKeyHashes: [
"< sha256 hash from certificate >"
]
)
}
}
extension PinningSessionDelegate: URLSessionTaskDelegate {
func urlSession(
_: URLSession,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
) {
sslPinningManager.validate(
challenge: challenge,
completionHandler: completionHandler
)
}
}
Add your custom delegate to URLSession
let session = URLSession(configuration: .default, delegate: PinningSessionDelegate(), delegateQueue: nil)