1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use core::fmt::Debug; use crate::error::Error; #[cfg(feature = "alloc")] use alloc::vec::Vec; /// Trait impl'd by concrete types that represent digital signatures pub trait Signature: AsRef<[u8]> + Debug + Sized { /// Parse a signature from its byte representation fn from_bytes<B: AsRef<[u8]>>(bytes: B) -> Result<Self, Error>; /// Borrow this signature as serialized bytes #[inline] fn as_slice(&self) -> &[u8] { self.as_ref() } /// Convert this signature into a byte vector #[cfg(feature = "alloc")] #[inline] fn into_vec(self) -> Vec<u8> { self.as_slice().into() } }