Как проверить файл (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)")

0 ответов

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