feat: updates

This commit is contained in:
2025-03-28 23:28:20 +08:00
parent 417e3f6a49
commit 6d3298549e

View File

@@ -1,10 +1,11 @@
use base64::engine::general_purpose::STANDARD; use base64::engine::general_purpose::STANDARD;
use base64::Engine; use base64::Engine;
use rust_util::XResult; use rust_util::XResult;
use swift_secure_enclave_tool_rs::KeyPurpose; use se_tool::KeyPurpose;
use swift_secure_enclave_tool_rs as se_tool;
pub fn is_support_se() -> bool { pub fn is_support_se() -> bool {
swift_secure_enclave_tool_rs::is_secure_enclave_supported().unwrap_or(false) se_tool::is_secure_enclave_supported().unwrap_or(false)
} }
pub fn generate_secure_enclave_p256_keypair( pub fn generate_secure_enclave_p256_keypair(
@@ -12,9 +13,9 @@ pub fn generate_secure_enclave_p256_keypair(
require_bio: bool, require_bio: bool,
) -> XResult<(Vec<u8>, Vec<u8>, String)> { ) -> XResult<(Vec<u8>, Vec<u8>, String)> {
let key_material = if sign { let key_material = if sign {
swift_secure_enclave_tool_rs::generate_keypair(KeyPurpose::Signing, require_bio)? se_tool::generate_keypair(KeyPurpose::Signing, require_bio)?
} else { } else {
swift_secure_enclave_tool_rs::generate_keypair(KeyPurpose::KeyAgreement, require_bio)? se_tool::generate_keypair(KeyPurpose::KeyAgreement, require_bio)?
}; };
Ok(( Ok((
key_material.public_key_point, key_material.public_key_point,
@@ -29,15 +30,9 @@ pub fn recover_secure_enclave_p256_public_key(
) -> XResult<(Vec<u8>, Vec<u8>, String)> { ) -> XResult<(Vec<u8>, Vec<u8>, String)> {
let private_key_representation = STANDARD.decode(private_key)?; let private_key_representation = STANDARD.decode(private_key)?;
let key_material = if sign { let key_material = if sign {
swift_secure_enclave_tool_rs::recover_keypair( se_tool::recover_keypair(KeyPurpose::Signing, &private_key_representation)
KeyPurpose::Signing,
&private_key_representation,
)
} else { } else {
swift_secure_enclave_tool_rs::recover_keypair( se_tool::recover_keypair(KeyPurpose::KeyAgreement, &private_key_representation)
KeyPurpose::KeyAgreement,
&private_key_representation,
)
}?; }?;
Ok(( Ok((
key_material.public_key_point, key_material.public_key_point,
@@ -51,16 +46,13 @@ pub fn secure_enclave_p256_dh(
ephemeral_public_key_bytes: &[u8], ephemeral_public_key_bytes: &[u8],
) -> XResult<Vec<u8>> { ) -> XResult<Vec<u8>> {
let private_key_representation = STANDARD.decode(private_key)?; let private_key_representation = STANDARD.decode(private_key)?;
let shared_secret = swift_secure_enclave_tool_rs::private_key_ecdh( let shared_secret =
&private_key_representation, se_tool::private_key_ecdh(&private_key_representation, ephemeral_public_key_bytes)?;
ephemeral_public_key_bytes,
)?;
Ok(shared_secret) Ok(shared_secret)
} }
pub fn secure_enclave_p256_sign(private_key: &str, content: &[u8]) -> XResult<Vec<u8>> { pub fn secure_enclave_p256_sign(private_key: &str, content: &[u8]) -> XResult<Vec<u8>> {
let private_key_representation = STANDARD.decode(private_key)?; let private_key_representation = STANDARD.decode(private_key)?;
let signature = let signature = se_tool::private_key_sign(&private_key_representation, content)?;
swift_secure_enclave_tool_rs::private_key_sign(&private_key_representation, content)?;
Ok(signature) Ok(signature)
} }