Dim*_*ira 2 pinning ios swift public-key-pinning
我需要从证书中获取公钥
我已经找到了一种在 iOS 12+ 和 iOS 10.3+ 上执行此操作的方法,但是如何在 iOS 10.0+ 上执行此操作?
func publicKey(for certificate: SecCertificate) -> SecKey? {
if #available(iOS 12.0, *) {
return SecCertificateCopyKey(certificate)
} else if #available(iOS 10.3, *) {
return SecCertificateCopyPublicKey(certificate)
} else {
// ???
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了解决方案
func publicKey(for certificate: SecCertificate) -> SecKey? {
if #available(iOS 12.0, *) {
return SecCertificateCopyKey(certificate)
} else if #available(iOS 10.3, *) {
return SecCertificateCopyPublicKey(certificate)
} else {
var possibleTrust: SecTrust?
SecTrustCreateWithCertificates(certificate, SecPolicyCreateBasicX509(), &possibleTrust)
guard let trust = possibleTrust else { return nil }
var result: SecTrustResultType = .unspecified
SecTrustEvaluate(trust, &result)
return SecTrustCopyPublicKey(trust)
}
}
Run Code Online (Sandbox Code Playgroud)
在这里找到:https : //github.com/daltoniam/Starscream/blob/a2ed45c0b2f996cb8c335c4f270ecc68c3bd4c0f/Sources/Starscream/SSLSecurity.swift#L214
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |