SSLPinningManager

安装

Swift Package Manager

  1. 文件 > Swift Packages > 添加 Package 依赖
  2. 添加 https://github.com/InstaRobot/SSLPinningManager.git

或者

更新 Package.swift 中的 dependencies

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
        )
    }
}

将您的自定义委托添加到 URLSession

let session = URLSession(configuration: .default, delegate: PinningSessionDelegate(), delegateQueue: nil)