pub mod ping;
pub mod psa_generate_key;
pub mod psa_import_key;
pub mod psa_export_public_key;
pub mod psa_export_key;
pub mod psa_destroy_key;
pub mod psa_sign_hash;
pub mod psa_verify_hash;
pub mod psa_hash_compute;
pub mod psa_hash_compare;
pub mod psa_asymmetric_encrypt;
pub mod psa_asymmetric_decrypt;
pub mod psa_aead_encrypt;
pub mod psa_aead_decrypt;
pub mod list_opcodes;
pub mod list_providers;
pub mod list_authenticators;
pub mod list_keys;
pub mod delete_client;
pub mod list_clients;
pub mod psa_generate_random;
pub mod psa_raw_key_agreement;
pub use psa_crypto::types::algorithm as psa_algorithm;
pub use psa_crypto::types::key as psa_key_attributes;
use crate::requests::{request::RequestBody, response::ResponseBody, BodyType, Opcode, Result};
#[derive(Debug)]
pub enum NativeOperation {
ListProviders(list_providers::Operation),
ListOpcodes(list_opcodes::Operation),
ListAuthenticators(list_authenticators::Operation),
ListKeys(list_keys::Operation),
ListClients(list_clients::Operation),
DeleteClient(delete_client::Operation),
Ping(ping::Operation),
PsaGenerateKey(psa_generate_key::Operation),
PsaImportKey(psa_import_key::Operation),
PsaExportPublicKey(psa_export_public_key::Operation),
PsaExportKey(psa_export_key::Operation),
PsaDestroyKey(psa_destroy_key::Operation),
PsaSignHash(psa_sign_hash::Operation),
PsaVerifyHash(psa_verify_hash::Operation),
PsaHashCompute(psa_hash_compute::Operation),
PsaHashCompare(psa_hash_compare::Operation),
PsaAsymmetricEncrypt(psa_asymmetric_encrypt::Operation),
PsaAsymmetricDecrypt(psa_asymmetric_decrypt::Operation),
PsaAeadEncrypt(psa_aead_encrypt::Operation),
PsaAeadDecrypt(psa_aead_decrypt::Operation),
PsaGenerateRandom(psa_generate_random::Operation),
PsaRawKeyAgreement(psa_raw_key_agreement::Operation),
}
impl NativeOperation {
pub fn opcode(&self) -> Opcode {
match self {
NativeOperation::Ping(_) => Opcode::Ping,
NativeOperation::PsaGenerateKey(_) => Opcode::PsaGenerateKey,
NativeOperation::PsaDestroyKey(_) => Opcode::PsaDestroyKey,
NativeOperation::PsaSignHash(_) => Opcode::PsaSignHash,
NativeOperation::PsaVerifyHash(_) => Opcode::PsaVerifyHash,
NativeOperation::PsaHashCompute(_) => Opcode::PsaHashCompute,
NativeOperation::PsaHashCompare(_) => Opcode::PsaHashCompare,
NativeOperation::PsaImportKey(_) => Opcode::PsaImportKey,
NativeOperation::PsaExportPublicKey(_) => Opcode::PsaExportPublicKey,
NativeOperation::PsaExportKey(_) => Opcode::PsaExportKey,
NativeOperation::ListOpcodes(_) => Opcode::ListOpcodes,
NativeOperation::ListProviders(_) => Opcode::ListProviders,
NativeOperation::ListAuthenticators(_) => Opcode::ListAuthenticators,
NativeOperation::ListKeys(_) => Opcode::ListKeys,
NativeOperation::ListClients(_) => Opcode::ListClients,
NativeOperation::DeleteClient(_) => Opcode::DeleteClient,
NativeOperation::PsaAsymmetricEncrypt(_) => Opcode::PsaAsymmetricEncrypt,
NativeOperation::PsaAsymmetricDecrypt(_) => Opcode::PsaAsymmetricDecrypt,
NativeOperation::PsaAeadEncrypt(_) => Opcode::PsaAeadEncrypt,
NativeOperation::PsaAeadDecrypt(_) => Opcode::PsaAeadDecrypt,
NativeOperation::PsaGenerateRandom(_) => Opcode::PsaGenerateRandom,
NativeOperation::PsaRawKeyAgreement(_) => Opcode::PsaRawKeyAgreement,
}
}
}
#[derive(Debug)]
pub enum NativeResult {
ListProviders(list_providers::Result),
ListOpcodes(list_opcodes::Result),
ListAuthenticators(list_authenticators::Result),
ListKeys(list_keys::Result),
ListClients(list_clients::Result),
DeleteClient(delete_client::Result),
Ping(ping::Result),
PsaGenerateKey(psa_generate_key::Result),
PsaImportKey(psa_import_key::Result),
PsaExportPublicKey(psa_export_public_key::Result),
PsaExportKey(psa_export_key::Result),
PsaDestroyKey(psa_destroy_key::Result),
PsaSignHash(psa_sign_hash::Result),
PsaHashCompute(psa_hash_compute::Result),
PsaHashCompare(psa_hash_compare::Result),
PsaVerifyHash(psa_verify_hash::Result),
PsaAsymmetricEncrypt(psa_asymmetric_encrypt::Result),
PsaAsymmetricDecrypt(psa_asymmetric_decrypt::Result),
PsaAeadEncrypt(psa_aead_encrypt::Result),
PsaAeadDecrypt(psa_aead_decrypt::Result),
PsaGenerateRandom(psa_generate_random::Result),
PsaRawKeyAgreement(psa_raw_key_agreement::Result),
}
impl NativeResult {
pub fn opcode(&self) -> Opcode {
match self {
NativeResult::Ping(_) => Opcode::Ping,
NativeResult::PsaGenerateKey(_) => Opcode::PsaGenerateKey,
NativeResult::PsaDestroyKey(_) => Opcode::PsaDestroyKey,
NativeResult::PsaSignHash(_) => Opcode::PsaSignHash,
NativeResult::PsaVerifyHash(_) => Opcode::PsaVerifyHash,
NativeResult::PsaImportKey(_) => Opcode::PsaImportKey,
NativeResult::PsaHashCompute(_) => Opcode::PsaHashCompute,
NativeResult::PsaHashCompare(_) => Opcode::PsaHashCompare,
NativeResult::PsaExportPublicKey(_) => Opcode::PsaExportPublicKey,
NativeResult::PsaExportKey(_) => Opcode::PsaExportKey,
NativeResult::ListOpcodes(_) => Opcode::ListOpcodes,
NativeResult::ListProviders(_) => Opcode::ListProviders,
NativeResult::ListAuthenticators(_) => Opcode::ListAuthenticators,
NativeResult::ListKeys(_) => Opcode::ListKeys,
NativeResult::ListClients(_) => Opcode::ListClients,
NativeResult::DeleteClient(_) => Opcode::DeleteClient,
NativeResult::PsaAsymmetricEncrypt(_) => Opcode::PsaAsymmetricEncrypt,
NativeResult::PsaAsymmetricDecrypt(_) => Opcode::PsaAsymmetricDecrypt,
NativeResult::PsaAeadEncrypt(_) => Opcode::PsaAeadEncrypt,
NativeResult::PsaAeadDecrypt(_) => Opcode::PsaAeadDecrypt,
NativeResult::PsaGenerateRandom(_) => Opcode::PsaGenerateRandom,
NativeResult::PsaRawKeyAgreement(_) => Opcode::PsaRawKeyAgreement,
}
}
}
pub trait Convert {
fn body_type(&self) -> BodyType;
fn body_to_operation(&self, body: RequestBody, opcode: Opcode) -> Result<NativeOperation>;
fn operation_to_body(&self, operation: NativeOperation) -> Result<RequestBody>;
fn body_to_result(&self, body: ResponseBody, opcode: Opcode) -> Result<NativeResult>;
fn result_to_body(&self, result: NativeResult) -> Result<ResponseBody>;
}
impl From<list_providers::Operation> for NativeOperation {
fn from(op: list_providers::Operation) -> Self {
NativeOperation::ListProviders(op)
}
}
impl From<list_opcodes::Operation> for NativeOperation {
fn from(op: list_opcodes::Operation) -> Self {
NativeOperation::ListOpcodes(op)
}
}
impl From<list_authenticators::Operation> for NativeOperation {
fn from(op: list_authenticators::Operation) -> Self {
NativeOperation::ListAuthenticators(op)
}
}
impl From<list_keys::Operation> for NativeOperation {
fn from(op: list_keys::Operation) -> Self {
NativeOperation::ListKeys(op)
}
}
impl From<list_clients::Operation> for NativeOperation {
fn from(op: list_clients::Operation) -> Self {
NativeOperation::ListClients(op)
}
}
impl From<delete_client::Operation> for NativeOperation {
fn from(op: delete_client::Operation) -> Self {
NativeOperation::DeleteClient(op)
}
}
impl From<ping::Operation> for NativeOperation {
fn from(op: ping::Operation) -> Self {
NativeOperation::Ping(op)
}
}
impl From<psa_generate_key::Operation> for NativeOperation {
fn from(op: psa_generate_key::Operation) -> Self {
NativeOperation::PsaGenerateKey(op)
}
}
impl From<psa_import_key::Operation> for NativeOperation {
fn from(op: psa_import_key::Operation) -> Self {
NativeOperation::PsaImportKey(op)
}
}
impl From<psa_export_public_key::Operation> for NativeOperation {
fn from(op: psa_export_public_key::Operation) -> Self {
NativeOperation::PsaExportPublicKey(op)
}
}
impl From<psa_export_key::Operation> for NativeOperation {
fn from(op: psa_export_key::Operation) -> Self {
NativeOperation::PsaExportKey(op)
}
}
impl From<psa_destroy_key::Operation> for NativeOperation {
fn from(op: psa_destroy_key::Operation) -> Self {
NativeOperation::PsaDestroyKey(op)
}
}
impl From<psa_sign_hash::Operation> for NativeOperation {
fn from(op: psa_sign_hash::Operation) -> Self {
NativeOperation::PsaSignHash(op)
}
}
impl From<psa_verify_hash::Operation> for NativeOperation {
fn from(op: psa_verify_hash::Operation) -> Self {
NativeOperation::PsaVerifyHash(op)
}
}
impl From<psa_asymmetric_encrypt::Operation> for NativeOperation {
fn from(op: psa_asymmetric_encrypt::Operation) -> Self {
NativeOperation::PsaAsymmetricEncrypt(op)
}
}
impl From<psa_asymmetric_decrypt::Operation> for NativeOperation {
fn from(op: psa_asymmetric_decrypt::Operation) -> Self {
NativeOperation::PsaAsymmetricDecrypt(op)
}
}
impl From<psa_aead_encrypt::Operation> for NativeOperation {
fn from(op: psa_aead_encrypt::Operation) -> Self {
NativeOperation::PsaAeadEncrypt(op)
}
}
impl From<psa_aead_decrypt::Operation> for NativeOperation {
fn from(op: psa_aead_decrypt::Operation) -> Self {
NativeOperation::PsaAeadDecrypt(op)
}
}
impl From<psa_generate_random::Operation> for NativeOperation {
fn from(op: psa_generate_random::Operation) -> Self {
NativeOperation::PsaGenerateRandom(op)
}
}
impl From<psa_hash_compute::Operation> for NativeOperation {
fn from(op: psa_hash_compute::Operation) -> Self {
NativeOperation::PsaHashCompute(op)
}
}
impl From<psa_hash_compare::Operation> for NativeOperation {
fn from(op: psa_hash_compare::Operation) -> Self {
NativeOperation::PsaHashCompare(op)
}
}
impl From<psa_raw_key_agreement::Operation> for NativeOperation {
fn from(op: psa_raw_key_agreement::Operation) -> Self {
NativeOperation::PsaRawKeyAgreement(op)
}
}
impl From<list_providers::Result> for NativeResult {
fn from(op: list_providers::Result) -> Self {
NativeResult::ListProviders(op)
}
}
impl From<list_opcodes::Result> for NativeResult {
fn from(op: list_opcodes::Result) -> Self {
NativeResult::ListOpcodes(op)
}
}
impl From<list_authenticators::Result> for NativeResult {
fn from(op: list_authenticators::Result) -> Self {
NativeResult::ListAuthenticators(op)
}
}
impl From<list_keys::Result> for NativeResult {
fn from(op: list_keys::Result) -> Self {
NativeResult::ListKeys(op)
}
}
impl From<list_clients::Result> for NativeResult {
fn from(op: list_clients::Result) -> Self {
NativeResult::ListClients(op)
}
}
impl From<delete_client::Result> for NativeResult {
fn from(op: delete_client::Result) -> Self {
NativeResult::DeleteClient(op)
}
}
impl From<ping::Result> for NativeResult {
fn from(op: ping::Result) -> Self {
NativeResult::Ping(op)
}
}
impl From<psa_generate_key::Result> for NativeResult {
fn from(op: psa_generate_key::Result) -> Self {
NativeResult::PsaGenerateKey(op)
}
}
impl From<psa_import_key::Result> for NativeResult {
fn from(op: psa_import_key::Result) -> Self {
NativeResult::PsaImportKey(op)
}
}
impl From<psa_export_public_key::Result> for NativeResult {
fn from(op: psa_export_public_key::Result) -> Self {
NativeResult::PsaExportPublicKey(op)
}
}
impl From<psa_export_key::Result> for NativeResult {
fn from(op: psa_export_key::Result) -> Self {
NativeResult::PsaExportKey(op)
}
}
impl From<psa_destroy_key::Result> for NativeResult {
fn from(op: psa_destroy_key::Result) -> Self {
NativeResult::PsaDestroyKey(op)
}
}
impl From<psa_sign_hash::Result> for NativeResult {
fn from(op: psa_sign_hash::Result) -> Self {
NativeResult::PsaSignHash(op)
}
}
impl From<psa_verify_hash::Result> for NativeResult {
fn from(op: psa_verify_hash::Result) -> Self {
NativeResult::PsaVerifyHash(op)
}
}
impl From<psa_hash_compute::Result> for NativeResult {
fn from(op: psa_hash_compute::Result) -> Self {
NativeResult::PsaHashCompute(op)
}
}
impl From<psa_hash_compare::Result> for NativeResult {
fn from(op: psa_hash_compare::Result) -> Self {
NativeResult::PsaHashCompare(op)
}
}
impl From<psa_asymmetric_encrypt::Result> for NativeResult {
fn from(op: psa_asymmetric_encrypt::Result) -> Self {
NativeResult::PsaAsymmetricEncrypt(op)
}
}
impl From<psa_asymmetric_decrypt::Result> for NativeResult {
fn from(op: psa_asymmetric_decrypt::Result) -> Self {
NativeResult::PsaAsymmetricDecrypt(op)
}
}
impl From<psa_aead_encrypt::Result> for NativeResult {
fn from(op: psa_aead_encrypt::Result) -> Self {
NativeResult::PsaAeadEncrypt(op)
}
}
impl From<psa_aead_decrypt::Result> for NativeResult {
fn from(op: psa_aead_decrypt::Result) -> Self {
NativeResult::PsaAeadDecrypt(op)
}
}
impl From<psa_generate_random::Result> for NativeResult {
fn from(op: psa_generate_random::Result) -> Self {
NativeResult::PsaGenerateRandom(op)
}
}
impl From<psa_raw_key_agreement::Result> for NativeResult {
fn from(op: psa_raw_key_agreement::Result) -> Self {
NativeResult::PsaRawKeyAgreement(op)
}
}