Выполните проверку подлинности NSURLAuthenticationMethodClientCertificate с помощью crt и pem

Мне нужно реализовать проверку подлинности на iOS 14, мне дали crt и закрытый ключ в виде файла pem.

Я знаю, как создать SecKey а также SecCertificate из этого, но для вызова мне нужен SecIdentity:

public init(identity: SecIdentity, certificates certArray: [Any]?, persistence: URLCredential.Persistence)

Как этого добиться?

Я также попытался создать .p12 из этих двух файлов, затем импортируйте их через SecPKCS12Importчтобы получить оттуда удостоверения личности и сертификат, но это все равно не работает. Есть ли что-то особенное, что я должен учитывать при попытке сделать

      URLCredential(identity: ..., certificates: [myCertificate], persistence: .none)

Вот как я получаю сертификат и удостоверение, которые отправляю на сервер:

          var certificateRef: SecCertificate? = nil

    var items : CFArray?

    let securityError: OSStatus = SecPKCS12Import(decodedData, [kSecImportExportPassphrase as NSString : psswd] as CFDictionary, &items)

    let theArray: CFArray = items!
    if securityError == noErr && CFArrayGetCount(theArray) > 0 {
        let newArray = theArray as [AnyObject] as NSArray
        let dictionary = newArray.object(at: 0)
        let secIdentity = (dictionary as AnyObject)[kSecImportItemIdentity as String] as! SecIdentity
        let securityError = SecIdentityCopyCertificate(secIdentity , &certificateRef)
        if securityError != noErr {
            certificateRef = nil
        }
        return secIdentity
    }

0 ответов

Другие вопросы по тегам