use super::{ClientError, ClientResult, PollClient};
use crate::{
api::{reply, request},
types::{CertId, Location, Message},
};
pub trait CertificateClient: PollClient {
fn delete_certificate(
&mut self,
id: CertId,
) -> ClientResult<'_, reply::DeleteCertificate, Self> {
self.request(request::DeleteCertificate { id })
}
fn read_certificate(&mut self, id: CertId) -> ClientResult<'_, reply::ReadCertificate, Self> {
self.request(request::ReadCertificate { id })
}
fn write_certificate(
&mut self,
location: Location,
der: &[u8],
) -> ClientResult<'_, reply::WriteCertificate, Self> {
let der = Message::try_from(der).map_err(|_| ClientError::DataTooLarge)?;
self.request(request::WriteCertificate { location, der })
}
}