Как проверить файл (sample.bin) с помощью файла открытого ключа и подписи (sample.sig) в iOS Swift 5
Я новичок в разработке под iOS. Я хочу проверить загруженные с сервера файлы с помощью подписи и открытого ключа. Я не уверен, как получить открытый ключ через файл. В настоящее время это необработанный формат. Сообщите мне, как решить эту проблему.
Список предметов:
- sample.bin - двоичный файл
- sample.sig - файл подписи
- Открытый ключ
Когда я выполняю приведенный ниже код в iOS. Я получил ошибку ниже
Не удалось создать открытый ключ EC из данных
Открытый ключ
-----BEGIN PUBLIC KEY-----
FMkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQPcee6PiXtljd8iAa5E+LOvrF
6fS0yJrwYRfhumir9fCfhW6HAA5Ouway1y7ZrMtaTiMcMAAnHsg==
-----END PUBLIC KEY-----
iOS Swift 5:
let rawPublicKey = "FMkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQPcee6PiXtljd8iAa5E+LOvrF
6fS0yJrwYRfhumir9fCfhW6HAA5Ouway1y7ZrMtaTiMcMAAnHsg=="
let publicKey = Data(base64Encoded: rawPublicKey, options: Data.Base64DecodingOptions.ignoreUnknownCharacters)
et attributes = [
kSecAttrKeyType: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrKeyClass: kSecAttrKeyClassPublic,
kSecAttrKeySizeInBits: 2048,
kSecAttrIsPermanent: false
] as CFDictionary
var cfError: Unmanaged<CFError>? = nil
guard let secKey = SecKeyCreateWithData(publicKey as CFData, attributes, &cfError) else {
throw cfError!.takeRetainedValue()
}
guard SecKeyIsAlgorithmSupported(secKey, .verify, .ecdsaSignatureDigestX962SHA256) else {
print("Alogorithm is not supported")
return
}
let binData = try Data(contentsOf: binFileURL.first!)
let sigData = try Data(contentsOf: sigFileURL.first!)
var error : Unmanaged<CFError>? = nil;
let verified = SecKeyVerifySignature(secKey, .ecdsaSignatureDigestX962SHA256, binData as CFData, sigData as CFData, &error)
print("error \(error)")
print("verifed \(verified)")