I using code below to create signature from privatekey generated to verify text "Hello" with Java ( using Keyfactory ) and ECDSA algothrim but I don't verify
func getPrivateKey() -> SecKey {
let privateKeyData = self.privateKeyHexaString.hexadecimal!
print("privateKeyData \(privateKeyData)")
let secKeyByPrivateKey = SecKeyCreateWithData(privateKeyData as! CFData, [
kSecAttrKeyTypeEC: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrTokenID: kSecAttrTokenIDSecureEnclave,
kSecAttrKeyClass: kSecAttrKeyClassPrivate
] as CFDictionary, nil)
guard let secKeyByPrivateKey: SecKey = secKeyByPrivateKey else
{
return SecKey.self as! SecKey
}
return secKeyByPrivateKey
}
func createSignature() -> String{ let seckey = getPrivateKey() let data = "Hello".data(using: .utf8) let dataHash = getStringHash("Hello").data(using: .utf8)! guard let signedData = SecKeyCreateSignature(seckey, SecKeyAlgorithm.ecdsaSignatureMessageX962SHA256, data as! CFData, nil) as Data? else { return "" }
print(signedData.base64EncodedString())
return signedData.base64EncodedString()
}
With IOS > 14 I can use P256.Signing but with IOS < 14 I can't verify