func evaluate()

in httpdns_ios_demo/httpdns_ios_demo/Example/AlamofireExamples/AlamofireHttpsScenario.swift [117:143]


    func evaluate(serverTrust: SecTrust? , host: String? ) -> Bool {
        if serverTrust == nil {
            return false
        }

        // 创建证书校验策略
        var policies = [SecPolicy]()
        if host != nil {
            policies.append(SecPolicyCreateSSL(true, host! as CFString))
        } else {
            policies.append(SecPolicyCreateBasicX509())
        }

        // 绑定校验策略到服务端的证书上
        SecTrustSetPolicies(serverTrust!, policies as CFTypeRef)

        // 评估当前serverTrust是否可信任
        var result: SecTrustResultType = .invalid
        if SecTrustEvaluate(serverTrust!, &result) == errSecSuccess {
            // 官方建议在result = .unspecified 或 .proceed的情况下serverTrust可以被验证通过
            // 详情请参考Apple官方文档
            return result == .unspecified || result == .proceed
        } else {
            // 处理失败的情况
            return false
        }
    }