feat: ecsign support sha256 digest
This commit is contained in:
@@ -40,11 +40,13 @@ func parseGenerateSecureEnclaveP256KeyPairRequest() -> GenerateSecureEnclaveP256
|
|||||||
struct ComputeP256EcSignRequest {
|
struct ComputeP256EcSignRequest {
|
||||||
var dataRepresentationBase64: String
|
var dataRepresentationBase64: String
|
||||||
var messageBase64: String
|
var messageBase64: String
|
||||||
|
var messageType: String
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseComputeP256EcSignRequest() -> ComputeP256EcSignRequest? {
|
func parseComputeP256EcSignRequest() -> ComputeP256EcSignRequest? {
|
||||||
var dataRepresentationBase64Opt: String?
|
var dataRepresentationBase64Opt: String?
|
||||||
var messageBase64Opt: String?
|
var messageBase64Opt: String?
|
||||||
|
var messageTypeOpt: String?
|
||||||
let len = CommandLine.arguments.count;
|
let len = CommandLine.arguments.count;
|
||||||
if CommandLine.arguments.count > 2 {
|
if CommandLine.arguments.count > 2 {
|
||||||
var i = 2
|
var i = 2
|
||||||
@@ -56,6 +58,9 @@ func parseComputeP256EcSignRequest() -> ComputeP256EcSignRequest? {
|
|||||||
} else if (k == "--message-base64") {
|
} else if (k == "--message-base64") {
|
||||||
messageBase64Opt = CommandLine.arguments[i + 1]
|
messageBase64Opt = CommandLine.arguments[i + 1]
|
||||||
i += 2
|
i += 2
|
||||||
|
} else if (k == "--message-type") {
|
||||||
|
messageTypeOpt = CommandLine.arguments[i + 1]
|
||||||
|
i += 2;
|
||||||
} else {
|
} else {
|
||||||
i += 1
|
i += 1
|
||||||
}
|
}
|
||||||
@@ -71,7 +76,8 @@ func parseComputeP256EcSignRequest() -> ComputeP256EcSignRequest? {
|
|||||||
}
|
}
|
||||||
return ComputeP256EcSignRequest(
|
return ComputeP256EcSignRequest(
|
||||||
dataRepresentationBase64: dataRepresentationBase64,
|
dataRepresentationBase64: dataRepresentationBase64,
|
||||||
messageBase64: messageBase64
|
messageBase64: messageBase64,
|
||||||
|
messageType: messageTypeOpt ?? "raw"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,6 +85,7 @@ func parseExternalSignRequest() -> ComputeP256EcSignRequest? {
|
|||||||
var algOpt: String?
|
var algOpt: String?
|
||||||
var dataRepresentationBase64Opt: String?
|
var dataRepresentationBase64Opt: String?
|
||||||
var messageBase64Opt: String?
|
var messageBase64Opt: String?
|
||||||
|
var messageTypeOpt: String?
|
||||||
let len = CommandLine.arguments.count;
|
let len = CommandLine.arguments.count;
|
||||||
if CommandLine.arguments.count > 2 {
|
if CommandLine.arguments.count > 2 {
|
||||||
var i = 2
|
var i = 2
|
||||||
@@ -93,6 +100,9 @@ func parseExternalSignRequest() -> ComputeP256EcSignRequest? {
|
|||||||
} else if (k == "--alg") {
|
} else if (k == "--alg") {
|
||||||
algOpt = CommandLine.arguments[i + 1]
|
algOpt = CommandLine.arguments[i + 1]
|
||||||
i += 2
|
i += 2
|
||||||
|
} else if (k == "--message-type") {
|
||||||
|
messageTypeOpt = CommandLine.arguments[i + 1]
|
||||||
|
i += 2;
|
||||||
} else {
|
} else {
|
||||||
i += 1
|
i += 1
|
||||||
}
|
}
|
||||||
@@ -116,7 +126,8 @@ func parseExternalSignRequest() -> ComputeP256EcSignRequest? {
|
|||||||
}
|
}
|
||||||
return ComputeP256EcSignRequest(
|
return ComputeP256EcSignRequest(
|
||||||
dataRepresentationBase64: dataRepresentationBase64,
|
dataRepresentationBase64: dataRepresentationBase64,
|
||||||
messageBase64: messageBase64
|
messageBase64: messageBase64,
|
||||||
|
messageType: messageTypeOpt ?? "raw"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,8 +411,16 @@ func computeSecureEnclaveP256Ecsign(request: ComputeP256EcSignRequest) -> Comput
|
|||||||
authenticationContext: context
|
authenticationContext: context
|
||||||
)
|
)
|
||||||
|
|
||||||
let digest = SHA256.hash(data: contentData)
|
let signature: P256.Signing.ECDSASignature
|
||||||
let signature = try p.signature(for: digest)
|
if (request.messageType == "raw") {
|
||||||
|
let digest = SHA256.hash(data: contentData)
|
||||||
|
signature = try p.signature(for: digest)
|
||||||
|
} else if (request.messageType == "sha256") {
|
||||||
|
signature = try p.signature(for: contentData)
|
||||||
|
} else {
|
||||||
|
exitError("not supported message type: \(request.messageType)")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
return ComputeSecureEnclaveP256EcsignResponse(
|
return ComputeSecureEnclaveP256EcsignResponse(
|
||||||
success: true,
|
success: true,
|
||||||
@@ -539,7 +558,7 @@ if (command == "help" || command == "-h" || command == "--help") {
|
|||||||
print("generate_p256_ecdh_keypair --control-flag <> - generate Secure Enclave P256 EC DH key pair")
|
print("generate_p256_ecdh_keypair --control-flag <> - generate Secure Enclave P256 EC DH key pair")
|
||||||
print("recover_p256_ecsign_public_key --private-key <> - recover Secure Enclave P256 EC sign key pair")
|
print("recover_p256_ecsign_public_key --private-key <> - recover Secure Enclave P256 EC sign key pair")
|
||||||
print("recover_p256_ecdh_public_key --private-key <> - recover Secure Enclave P256 EC DH key pair")
|
print("recover_p256_ecdh_public_key --private-key <> - recover Secure Enclave P256 EC DH key pair")
|
||||||
print("compute_p256_ecsign --private-key <> --message-base64 <> - compure Secure Enclave P256 EC sign")
|
print("compute_p256_ecsign --private-key <> --message-base64 <> [--message-type] - compure Secure Enclave P256 EC sign")
|
||||||
print("compute_p256_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave P256 EC DH")
|
print("compute_p256_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave P256 EC DH")
|
||||||
print("external_spec - external specification")
|
print("external_spec - external specification")
|
||||||
print("external_public_key --parameter <> - external public key")
|
print("external_public_key --parameter <> - external public key")
|
||||||
|
|||||||
Reference in New Issue
Block a user