use crate::{
Chunk, Encoding, Error, ProtocolState, Result, SealedEnvelope,
};
#[doc(hidden)]
pub async fn encrypt_server_channel(
server: &mut ProtocolState,
payload: &[u8],
broadcast: bool,
) -> Result<SealedEnvelope> {
match server {
ProtocolState::Transport(transport) => {
let chunks = Chunk::split(payload, transport)?;
let envelope = SealedEnvelope {
encoding: Encoding::Blob,
chunks,
broadcast,
};
Ok(envelope)
}
_ => Err(Error::NotTransportState),
}
}
#[doc(hidden)]
pub async fn decrypt_server_channel(
server: &mut ProtocolState,
envelope: SealedEnvelope,
) -> Result<(Encoding, Vec<u8>)> {
match server {
ProtocolState::Transport(transport) => {
let contents = Chunk::join(envelope.chunks, transport)?;
Ok((envelope.encoding, contents))
}
_ => Err(Error::NotTransportState),
}
}