#[cfg(feature = "alloc")]
use alloc::vec::Vec;
use noxtls_core::{Error, Result};
use crate::provider::{
AeadEncryptRequest, AeadEncryptResponse, KeyDecryptRequest, KeyDeriveRequest, KeySignRequest,
PsaCryptoBackend,
};
#[derive(Clone, Debug, Default)]
pub struct FfiPsaBackend;
impl FfiPsaBackend {
pub fn new() -> Self {
Self
}
pub fn has_ffi_shims(&self) -> bool {
cfg!(feature = "mbedtls-psa-ffi")
}
}
impl PsaCryptoBackend for FfiPsaBackend {
fn sign(&self, request: &KeySignRequest<'_>) -> Result<Vec<u8>> {
let _ = request;
Err(Error::UnsupportedFeature(
"psa ffi sign unavailable without linked backend",
))
}
fn decrypt(&self, request: &KeyDecryptRequest<'_>) -> Result<Vec<u8>> {
let _ = request;
Err(Error::UnsupportedFeature(
"psa ffi decrypt unavailable without linked backend",
))
}
fn derive(&self, request: &KeyDeriveRequest<'_>) -> Result<Vec<u8>> {
let _ = request;
Err(Error::UnsupportedFeature(
"psa ffi derive unavailable without linked backend",
))
}
fn random(&self, out: &mut [u8]) -> Result<()> {
let _ = out;
Err(Error::UnsupportedFeature(
"psa ffi random unavailable without linked backend",
))
}
fn sha256(&self, input: &[u8]) -> Result<[u8; 32]> {
let _ = input;
Err(Error::UnsupportedFeature(
"psa ffi sha256 unavailable without linked backend",
))
}
fn aes_gcm_encrypt(&self, request: &AeadEncryptRequest<'_>) -> Result<AeadEncryptResponse> {
let _ = request;
Err(Error::UnsupportedFeature(
"psa ffi aes-gcm unavailable without linked backend",
))
}
}