mirror of https://github.com/ctz/rustls
introduce and expose BorrowedPayload
Co-authored-by: Jorge Aparicio <jorge.aparicio@ferrous-systems.com>
This commit is contained in:
parent
ef41a6dbd6
commit
e6dede5f5f
|
@ -5,6 +5,7 @@ use std::error::Error as StdError;
|
|||
|
||||
use crate::enums::{ContentType, ProtocolVersion};
|
||||
use crate::error::Error;
|
||||
pub use crate::msgs::base::BorrowedPayload;
|
||||
use crate::msgs::codec;
|
||||
pub use crate::msgs::message::{BorrowedPlainMessage, OpaqueMessage, PlainMessage};
|
||||
use crate::suites::ConnectionTrafficSecrets;
|
||||
|
|
|
@ -4,10 +4,13 @@ use crate::msgs::codec::{Codec, Reader};
|
|||
|
||||
use alloc::vec::Vec;
|
||||
use core::fmt;
|
||||
use core::ops::{Deref, DerefMut};
|
||||
|
||||
use pki_types::CertificateDer;
|
||||
use zeroize::Zeroize;
|
||||
|
||||
use super::codec::ReaderMut;
|
||||
|
||||
/// An externally length'd payload
|
||||
#[derive(Clone, Eq, PartialEq)]
|
||||
pub struct Payload(pub Vec<u8>);
|
||||
|
@ -36,6 +39,30 @@ impl Payload {
|
|||
}
|
||||
}
|
||||
|
||||
/// Non-owning version of [`Payload`]
|
||||
pub struct BorrowedPayload<'a>(&'a mut [u8]);
|
||||
|
||||
impl Deref for BorrowedPayload<'_> {
|
||||
type Target = [u8];
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> DerefMut for BorrowedPayload<'a> {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> BorrowedPayload<'a> {
|
||||
#[allow(dead_code)] // TODO(@cpu): remove in "introduce and expose BorrowedOpaqueMessage"
|
||||
pub(crate) fn read(r: &mut ReaderMut<'a>) -> Self {
|
||||
Self(r.rest())
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Codec for CertificateDer<'a> {
|
||||
fn encode(&self, bytes: &mut Vec<u8>) {
|
||||
codec::u24(self.as_ref().len() as u32).encode(bytes);
|
||||
|
|
Loading…
Reference in New Issue