我在 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
(文档) 返回SecCertificate
,而 SecTrustCopyCertificateChain
(文档) 返回CFArray
。如何在我提供的用法中正确更新它?
CFArray
确实是[SecCertificate]
。谢谢! - TruMan1