【发布时间】:2021-09-03 04:03:47
【问题描述】:
我在 iOS 15 SDK 中收到了弃用警告,但建议的替换不是一对一的替换。这是我用于评估 SSL 信任链的内容:
func valid(_ trust: SecTrust, forHost host: String) -> Bool {
guard valid(trust, for: [SecPolicyCreateSSL(true, nil)]),
valid(trust, for: [SecPolicyCreateSSL(true, host as CFString)]) else {
return false
}
let serverCertificatesData = Set(
(0..<SecTrustGetCertificateCount(trust))
.compactMap { SecTrustGetCertificateAtIndex(trust, $0) }
.map { SecCertificateCopyData($0) as Data }
)
let pinnedCertificatesData = Set(
certificates.map { SecCertificateCopyData($0) as Data }
)
return !serverCertificatesData.isDisjoint(with: pinnedCertificatesData)
}
我在 Xcode 13 beta 中收到的警告是:
'SecTrustGetCertificateAtIndex' was deprecated in iOS 15.0: renamed to 'SecTrustCopyCertificateChain(_:)'.
Use 'SecTrustCopyCertificateChain(_:)' instead.
但是,SecTrustGetCertificateAtIndex (docs) 返回 SecCertificate,其中 SecTrustCopyCertificateChain (docs) 返回 CFArray。如何在我提供的用法中正确更新?
【问题讨论】: