feat: v1.10.10, se-ecdh and se-ecsign

This commit is contained in:
2024-12-15 12:55:44 +08:00
parent 25b0efd272
commit df6e7eee55
10 changed files with 343 additions and 5 deletions

View File

@@ -81,4 +81,32 @@ func computeSecureEnclaveP256Ecdh(privateKeyDataRepresentation: SRString, epheme
} catch {
return SRString("err:\(error)")
}
}
@_cdecl("compute_secure_enclave_p256_ecsign")
func computeSecureEnclaveP256Ecsign(privateKeyDataRepresentation: SRString, content: SRString) -> SRString {
guard let privateKeyDataRepresentation = Data(
base64Encoded: privateKeyDataRepresentation.toString()
) else {
return SRString("err:private key base64 decode failed")
}
guard let contentData = Data(
base64Encoded: content.toString()
) else {
return SRString("err:content base64 decode failed")
}
do {
let context = LAContext();
let p = try SecureEnclave.P256.Signing.PrivateKey(
dataRepresentation: privateKeyDataRepresentation,
authenticationContext: context
)
let digest = SHA256.hash(data: contentData)
let signature = try p.signature(for: digest)
return SRString("ok:\(signature.derRepresentation.base64EncodedString()))")
} catch {
return SRString("err:\(error)")
}
}