feat: updates swift se toolv2
This commit is contained in:
@@ -3,3 +3,9 @@
|
|||||||
> Specification: https://openwebstandard.org/rfc1
|
> Specification: https://openwebstandard.org/rfc1
|
||||||
|
|
||||||
Swift Secure Enclave Tool
|
Swift Secure Enclave Tool
|
||||||
|
|
||||||
|
|
||||||
|
Disable PQC algorithms:
|
||||||
|
```shell
|
||||||
|
swiftc -D DISABLE_QPC swift-secure-enclave-tool-v2.swift
|
||||||
|
```
|
||||||
|
|||||||
@@ -410,6 +410,8 @@ func generateSecureEnclaveP256KeyPair(sign: Bool, request: GenerateSecureEnclave
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
func generateSecureEnclaveMlKemKeyPair(keyLen: Int, request: GenerateSecureEnclaveKeyPairRequest) -> GenerateSecureEnclaveMlKemKeyPairResponse? {
|
func generateSecureEnclaveMlKemKeyPair(keyLen: Int, request: GenerateSecureEnclaveKeyPairRequest) -> GenerateSecureEnclaveMlKemKeyPairResponse? {
|
||||||
guard let accessCtrl = getSecAccessControlCreateWithFlags(controlFlag: request.controlFlag) else {
|
guard let accessCtrl = getSecAccessControlCreateWithFlags(controlFlag: request.controlFlag) else {
|
||||||
return nil
|
return nil
|
||||||
@@ -434,6 +436,7 @@ func generateSecureEnclaveMlKemKeyPair(keyLen: Int, request: GenerateSecureEncla
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
func signingPrivateKeyToResponse(_ privateKeyReference: SecureEnclave.P256.Signing.PrivateKey) -> GenerateSecureEnclaveP256KeyPairResponse {
|
func signingPrivateKeyToResponse(_ privateKeyReference: SecureEnclave.P256.Signing.PrivateKey) -> GenerateSecureEnclaveP256KeyPairResponse {
|
||||||
let publicKeyPointBase64 = privateKeyReference.publicKey.x963Representation.base64EncodedString()
|
let publicKeyPointBase64 = privateKeyReference.publicKey.x963Representation.base64EncodedString()
|
||||||
@@ -459,6 +462,8 @@ func keyAgreementPrivateKeyToResponse(_ privateKeyReference: SecureEnclave.P256.
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
func mlKem768PrivateKeyToResponse(_ privateKeyReference: SecureEnclave.MLKEM768.PrivateKey) -> GenerateSecureEnclaveMlKemKeyPairResponse {
|
func mlKem768PrivateKeyToResponse(_ privateKeyReference: SecureEnclave.MLKEM768.PrivateKey) -> GenerateSecureEnclaveMlKemKeyPairResponse {
|
||||||
let publicKeyDerBase64 = privateKeyReference.publicKey.rawRepresentation.base64EncodedString()
|
let publicKeyDerBase64 = privateKeyReference.publicKey.rawRepresentation.base64EncodedString()
|
||||||
let dataRepresentationBase64 = privateKeyReference.dataRepresentation.base64EncodedString()
|
let dataRepresentationBase64 = privateKeyReference.dataRepresentation.base64EncodedString()
|
||||||
@@ -478,6 +483,7 @@ func mlKem1024PrivateKeyToResponse(_ privateKeyReference: SecureEnclave.MLKEM102
|
|||||||
data_representation_base64: dataRepresentationBase64
|
data_representation_base64: dataRepresentationBase64
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
func recoverSecureEnclaveP256PublicKey(request: RecoverSecureEnclavePublicKeyRequest, sign: Bool) -> GenerateSecureEnclaveP256KeyPairResponse? {
|
func recoverSecureEnclaveP256PublicKey(request: RecoverSecureEnclavePublicKeyRequest, sign: Bool) -> GenerateSecureEnclaveP256KeyPairResponse? {
|
||||||
guard let privateKeyDataRepresentation = Data(
|
guard let privateKeyDataRepresentation = Data(
|
||||||
@@ -507,6 +513,8 @@ func recoverSecureEnclaveP256PublicKey(request: RecoverSecureEnclavePublicKeyReq
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
func recoverSecureEnclaveMlKemPublicKey(request: RecoverSecureEnclavePublicKeyRequest, keyLen: Int) -> GenerateSecureEnclaveMlKemKeyPairResponse? {
|
func recoverSecureEnclaveMlKemPublicKey(request: RecoverSecureEnclavePublicKeyRequest, keyLen: Int) -> GenerateSecureEnclaveMlKemKeyPairResponse? {
|
||||||
guard let privateKeyDataRepresentation = Data(
|
guard let privateKeyDataRepresentation = Data(
|
||||||
base64Encoded: request.dataRepresentationBase64
|
base64Encoded: request.dataRepresentationBase64
|
||||||
@@ -537,6 +545,7 @@ func recoverSecureEnclaveMlKemPublicKey(request: RecoverSecureEnclavePublicKeyRe
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
func computeSecureEnclaveP256Ecsign(request: ComputeP256EcSignRequest) -> ComputeSecureEnclaveP256EcsignResponse? {
|
func computeSecureEnclaveP256Ecsign(request: ComputeP256EcSignRequest) -> ComputeSecureEnclaveP256EcsignResponse? {
|
||||||
guard let privateKeyDataRepresentation = Data(
|
guard let privateKeyDataRepresentation = Data(
|
||||||
@@ -630,6 +639,8 @@ func computeSecureEnclaveP256Ecdh(request: ComputeEcdhRequest) -> ComputeSecureE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
func computeSecureEnclaveMlKemEcdh(request: ComputeEcdhRequest, keyLen: Int) -> ComputeSecureEnclaveEcdhResponse? {
|
func computeSecureEnclaveMlKemEcdh(request: ComputeEcdhRequest, keyLen: Int) -> ComputeSecureEnclaveEcdhResponse? {
|
||||||
guard let privateKeyDataRepresentation = Data(
|
guard let privateKeyDataRepresentation = Data(
|
||||||
base64Encoded: request.dataRepresentationBase64
|
base64Encoded: request.dataRepresentationBase64
|
||||||
@@ -676,6 +687,7 @@ func computeSecureEnclaveMlKemEcdh(request: ComputeEcdhRequest, keyLen: Int) ->
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
func externalSpec() -> ExternalSpecResponse {
|
func externalSpec() -> ExternalSpecResponse {
|
||||||
return ExternalSpecResponse(
|
return ExternalSpecResponse(
|
||||||
@@ -706,6 +718,8 @@ if (command == "generate_p256_ecdh_keypair") {
|
|||||||
exitOkWithJson(generateSecureEnclaveP256KeyPair(sign: false, request: request))
|
exitOkWithJson(generateSecureEnclaveP256KeyPair(sign: false, request: request))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
if (command == "generate_mlkem768_ecdh_keypair") {
|
if (command == "generate_mlkem768_ecdh_keypair") {
|
||||||
let request = parseGenerateSecureEnclaveKeyPairRequest()!;
|
let request = parseGenerateSecureEnclaveKeyPairRequest()!;
|
||||||
exitOkWithJson(generateSecureEnclaveMlKemKeyPair(keyLen: 768, request: request))
|
exitOkWithJson(generateSecureEnclaveMlKemKeyPair(keyLen: 768, request: request))
|
||||||
@@ -715,6 +729,7 @@ if (command == "generate_mlkem1024_ecdh_keypair") {
|
|||||||
let request = parseGenerateSecureEnclaveKeyPairRequest()!;
|
let request = parseGenerateSecureEnclaveKeyPairRequest()!;
|
||||||
exitOkWithJson(generateSecureEnclaveMlKemKeyPair(keyLen: 1024, request: request))
|
exitOkWithJson(generateSecureEnclaveMlKemKeyPair(keyLen: 1024, request: request))
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (command == "recover_p256_ecsign_public_key") {
|
if (command == "recover_p256_ecsign_public_key") {
|
||||||
let request = parseRecoverSecureEnclavePublicKeyRequest()!
|
let request = parseRecoverSecureEnclavePublicKeyRequest()!
|
||||||
@@ -728,6 +743,8 @@ if (command == "recover_p256_ecdh_public_key") {
|
|||||||
exitOkWithJson(response)
|
exitOkWithJson(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
if (command == "recover_mlkem768_public_key") {
|
if (command == "recover_mlkem768_public_key") {
|
||||||
let request = parseRecoverSecureEnclavePublicKeyRequest()!
|
let request = parseRecoverSecureEnclavePublicKeyRequest()!
|
||||||
let response = recoverSecureEnclaveMlKemPublicKey(request: request, keyLen: 768)
|
let response = recoverSecureEnclaveMlKemPublicKey(request: request, keyLen: 768)
|
||||||
@@ -739,6 +756,7 @@ if (command == "recover_mlkem1024_public_key") {
|
|||||||
let response = recoverSecureEnclaveMlKemPublicKey(request: request, keyLen: 1024)
|
let response = recoverSecureEnclaveMlKemPublicKey(request: request, keyLen: 1024)
|
||||||
exitOkWithJson(response)
|
exitOkWithJson(response)
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (command == "compute_p256_ecsign") {
|
if (command == "compute_p256_ecsign") {
|
||||||
let request = parseComputeP256EcSignRequest()!;
|
let request = parseComputeP256EcSignRequest()!;
|
||||||
@@ -752,6 +770,8 @@ if (command == "compute_p256_ecdh") {
|
|||||||
exitOkWithJson(response)
|
exitOkWithJson(response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
if (command == "compute_mlkem768_ecdh") {
|
if (command == "compute_mlkem768_ecdh") {
|
||||||
let request = parseComputeEcdhRequest()!;
|
let request = parseComputeEcdhRequest()!;
|
||||||
let response = computeSecureEnclaveMlKemEcdh(request: request, keyLen: 768)
|
let response = computeSecureEnclaveMlKemEcdh(request: request, keyLen: 768)
|
||||||
@@ -763,6 +783,7 @@ if (command == "compute_mlkem1024_ecdh") {
|
|||||||
let response = computeSecureEnclaveMlKemEcdh(request: request, keyLen: 1024)
|
let response = computeSecureEnclaveMlKemEcdh(request: request, keyLen: 1024)
|
||||||
exitOkWithJson(response)
|
exitOkWithJson(response)
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (command == "external_spec") {
|
if (command == "external_spec") {
|
||||||
exitOkWithJson(externalSpec())
|
exitOkWithJson(externalSpec())
|
||||||
@@ -791,16 +812,19 @@ if (command == "help" || command == "-h" || command == "--help") {
|
|||||||
print("is_support_secure_enclave - is Secure Enclave supported")
|
print("is_support_secure_enclave - is Secure Enclave supported")
|
||||||
print("generate_p256_ecsign_keypair --control-flag <> - generate Secure Enclave P256 EC sign key pair")
|
print("generate_p256_ecsign_keypair --control-flag <> - generate Secure Enclave P256 EC sign key pair")
|
||||||
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("generate_mlkem768_ecdh_keypair --control-flag <> - generate Secure Enclave ML-KEM-768 key pair")
|
|
||||||
print("generate_mlkem1024_ecdh_keypair --control-flag <> - generate Secure Enclave ML-KEM-1024 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("recover_mlkem768_public_key --private-key <> - recover Secure Enclave ML-KEM-768 key pair")
|
|
||||||
print("recover_mlkem1024_public_key --private-key <> - recover Secure Enclave ML-KEM-1024 key pair")
|
|
||||||
print("compute_p256_ecsign --private-key <> --message-base64 <> [--message-type <>] - 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")
|
||||||
|
#if DISABLE_QPC
|
||||||
|
#else
|
||||||
|
print("generate_mlkem768_ecdh_keypair --control-flag <> - generate Secure Enclave ML-KEM-768 key pair")
|
||||||
|
print("generate_mlkem1024_ecdh_keypair --control-flag <> - generate Secure Enclave ML-KEM-1024 key pair")
|
||||||
|
print("recover_mlkem768_public_key --private-key <> - recover Secure Enclave ML-KEM-768 key pair")
|
||||||
|
print("recover_mlkem1024_public_key --private-key <> - recover Secure Enclave ML-KEM-1024 key pair")
|
||||||
print("compute_mlkem768_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave ML-KEM-768")
|
print("compute_mlkem768_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave ML-KEM-768")
|
||||||
print("compute_mlkem1024_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave ML-KEM-1024")
|
print("compute_mlkem1024_ecdh --private-key <> --ephemera-public-key <> - compure Secure Enclave ML-KEM-1024")
|
||||||
|
#endif
|
||||||
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")
|
||||||
print("external_sign --parameter <> --alg ES256 --message-base64 <> - external sign")
|
print("external_sign --parameter <> --alg ES256 --message-base64 <> - external sign")
|
||||||
|
|||||||
Reference in New Issue
Block a user