Я использую закрепление сертификата. Но теперь необходимо изменить положение на закрепление ключа * publi c. Я взял проект у кого-то еще. Я могу реализовать публичные c закрепления клавиш, используя Trustkit . Но если я собираюсь использовать TrustKit, мне придется изменить много реализаций. Я добавил код для закрепления сертификата.
Я хотел использовать .pinPublicKeys вместо .pinCertificates. Но в этой реализации я должен добавить сертификат в сборку, чего я стараюсь избегать. Я просто хочу использовать ключ publi c ha sh. Для .pinPublicKey я должен добавить [secKey]. Я не смог найти решения для преобразования ключа publi c ha sh в SecKey. Пожалуйста, помогите с этой проблемой.
class Client {
static let shared = Client()
var manager:SessionManager?
init() {
let certificates: [SecCertificate] = getCertificates()
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"app.###.com": .pinCertificates(
certificates: certificates,//ServerTrustPolicy.certificates(),
validateCertificateChain: true,
validateHost: true
)
]
manager = Alamofire.SessionManager(
configuration: URLSessionConfiguration.default,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
}
private func getCertificates() -> [SecCertificate] {
let url = Bundle.main.url(forResource: "certificate", withExtension: "der")!
let localCertificate = try! Data(contentsOf: url) as CFData
guard let certificate = SecCertificateCreateWithData(nil, localCertificate)
else { return [] }
return [certificate]
}
}