gpt4 book ai didi

ios - 替换 iOS 15 中已弃用的 `SecTrustGetCertificateAtIndex`?

转载 作者:行者123 更新时间:2023-12-04 14:55:51 33 4
gpt4 key购买 nike

我在 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 .如何在我提供的用法中正确更新?

最佳答案

iOS 14.5 => iOS 15 SDK Diff表示唯一的添加是这些( 自 Xcode 13 Beta 1 )

SecBase.h
Added errSecInvalidCRLAuthority
Added errSecInvalidTupleCredentials
Added errSecCertificateDuplicateExtension

SecTrust.h
Added SecTrustCopyCertificateChain()
他们没有向 SecCertificate 添加任何新的兄弟类型.正如您已经注意到的,它返回一个 CFArray .
func SecTrustCopyCertificateChain(_ trust: SecTrust) -> CFArray?
所以对于这部分代码 -
let serverCertificatesData = Set(
(0..<SecTrustGetCertificateCount(trust))
.compactMap { SecTrustGetCertificateAtIndex(trust, $0) }
.map { SecCertificateCopyData($0) as Data }
)
看来值得一试 SecTrustCopyCertificateChain可能会返回 CFArraySecCertificate实例?不幸的是,我现在无法调试它。
也许尝试这样的事情 -
if let certificates = SecTrustCopyCertificateChain(trust) as? [SecCertificate] {
let serverCertificatesData = Set(
certificates.map { SecCertificateCopyData($0) as Data }
)
}

关于ios - 替换 iOS 15 中已弃用的 `SecTrustGetCertificateAtIndex`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68034788/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com