feat: v1.10.10, se-ecdh and se-ecsign
This commit is contained in:
@@ -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)")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user