0

I am using 'Alamofire', '~> 5.4' for request & response. I need to add SSL certificate pinning. But it shows bellow error..

 failure(Alamofire.AFError.sessionDeinitialized)

Here is my Code :

static func callingAp(){
    
    let cirfitcate = pinnedCertificates()
    let evaluators: [String: ServerTrustEvaluating] = [
        "mydomain.com": PinnedCertificatesTrustEvaluator(certificates: cirfitcate),
    ]
    let serverTrustManager = ServerTrustManager(evaluators: evaluators)
    let session = Session(serverTrustManager: serverTrustManager)
    let parameters: [String: Any] = [:]
    let headers: HTTPHeaders = [:]
    
    session.request("myapi", method: .post, parameters:parameters,headers: headers).responseJSON { response in
        if let data = response.data {
            do{
               // let loginResponse = try JSONDecoder().decode(LoginResponseModel.self, from: data)
                
            }catch let err{
                print("err 01 -->",err.localizedDescription)
            }
        }else{
            print("err 02-->",response)
        }
    }
    
}

static func pinnedCertificates() -> [SecCertificate] {
    var certificates: [SecCertificate] = []
    if let pinnedCertificateURL = Bundle.main.url(forResource: "digicert_high_assurance_ev_root_ca", withExtension: "cer") {
        do {
            let pinnedCertificateData: CFData = try Data(contentsOf: pinnedCertificateURL) as CFData
            if let pinnedCertificate: SecCertificate = SecCertificateCreateWithData(nil, pinnedCertificateData) {
                certificates.append(pinnedCertificate)
            }
        } catch {
            print("certicate exception--")
        }
    }
    return certificates
}

Without certificate pinning, it is working fine. What is wrong with my code? Please help me...

Enamul Haque
  • 4,789
  • 1
  • 37
  • 50

0 Answers0