Проверьте сертификат подписи с rootCA в iOS - PullRequest
0 голосов
/ 04 января 2019

У меня есть два сертификата:

signature.der и root.der

signature.der могут иногда меняться и больше не действительны в этом случае, я загружаю новый из бэкэнда.

Теперь, когда я загружаю новый, мне нужно проверить, действителен ли он с root.der CA, и я не могу этого сделать.

SecTrustEvaluate всегда возвращает неопределенноедаже если я отредактирую signature.der и сделаю его недействительным вручную.

Это то, что у меня так далеко от перспективы кода:

func isPublicCertificateValid(publicKeyData: Data, rootKeyData: Data) -> Bool {
    guard let publicKeyCert = SecCertificateCreateWithData(nil, publicKeyData as CFData) else { return false }
    guard let rootCert = SecCertificateCreateWithData(nil, rootKeyData as CFData) else { return false }

    let policy = SecPolicyCreateBasicX509()
    var trust: SecTrust?

    var status: OSStatus = SecTrustCreateWithCertificates([rootCert, publicKeyCert] as CFTypeRef, policy, &trust)

    var trustResult: SecTrustResultType = SecTrustResultType(rawValue: 0)!

    SecTrustSetAnchorCertificates(trust!, [rootCert, publicKeyCert] as CFArray)
    SecTrustSetAnchorCertificatesOnly(trust!, false)

    if status == noErr {
        status = SecTrustEvaluate(trust!, &trustResult)
    }

    switch status {
    case noErr:
        return true
    default:
        return false
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...