我正在研究ECDSA算法,从API中获取签名,在常量文件中有一个本地公钥.
下面是我的代码,当我试图运行这个并验证签名,然后我在这个链接中得到错误
let publicKey = try P384.Signing.PublicKey.init(derRepresentation: privateKeyPemBytes)
我从catch块收到"incorrectParameterSize"这个错误.有谁知道这个加密算法并能帮我吗?
func verifySignature(signedData: Data, signature: Data, publicKey: String) -> Bool {
var result = false
do {
if #available(iOS 14.0, *) {
let decodedData = Data(base64Encoded: publicKey)
let publicKeyPemBytes = [UInt8](decodedData!)
let publicKey = try P384.Signing.PublicKey.init(derRepresentation: privateKeyPemBytes)
let hash = SHA256.hash(data: signedData)
let signing384 = try P384.Signing.ECDSASignature(derRepresentation: signature)
if publicKey.isValidSignature(signing384, for: hash) {
result = true
}
} else {
// Fallback on earlier versions
}
} catch {
print("\(error)")
}
return result
}