pub struct Message {
pub id: Uuid,
pub version: ProtocolVersion,
pub msg_type: MessageType,
pub payload: Vec<u8>,
pub timestamp: u64,
pub signature: Option<Vec<u8>>,
pub headers: HashMap<String, String>,
pub sender_key_hash: Option<Vec<u8>>,
pub sequence: u64,
pub ttl: Option<u64>,
}
Expand description
Protocol message structure.
Fields§
§id: Uuid
Unique message identifier
version: ProtocolVersion
Protocol version
msg_type: MessageType
Message type
payload: Vec<u8>
Message payload
timestamp: u64
Message timestamp (Unix timestamp in milliseconds)
signature: Option<Vec<u8>>
Message signature (ML-DSA)
headers: HashMap<String, String>
Message headers for metadata
sender_key_hash: Option<Vec<u8>>
Sender’s public key hash for verification
sequence: u64
Message sequence number for ordering
ttl: Option<u64>
Time-to-live for message expiration
Implementations§
Source§impl Message
impl Message
Sourcepub fn new(msg_type: MessageType, payload: Vec<u8>) -> Self
pub fn new(msg_type: MessageType, payload: Vec<u8>) -> Self
Create a new message
Sourcepub fn new_with_version(
version: ProtocolVersion,
msg_type: MessageType,
payload: Vec<u8>,
) -> Self
pub fn new_with_version( version: ProtocolVersion, msg_type: MessageType, payload: Vec<u8>, ) -> Self
Create a new message with version
Sourcepub fn with_sequence(self, sequence: u64) -> Self
pub fn with_sequence(self, sequence: u64) -> Self
Set message sequence number
Sourcepub fn with_header(self, key: String, value: String) -> Self
pub fn with_header(self, key: String, value: String) -> Self
Add header to message
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Check if message has expired
Sourcepub fn sign(&mut self, keypair: &MlDsaKeyPair) -> Result<(), MessageError>
pub fn sign(&mut self, keypair: &MlDsaKeyPair) -> Result<(), MessageError>
Sign message with ML-DSA
Sourcepub fn verify(&self, public_key: &MlDsaPublicKey) -> Result<bool, MessageError>
pub fn verify(&self, public_key: &MlDsaPublicKey) -> Result<bool, MessageError>
Verify message signature with ML-DSA
Sourcepub fn from_bytes(data: &[u8]) -> Result<Self, MessageError>
pub fn from_bytes(data: &[u8]) -> Result<Self, MessageError>
Deserialize message from bytes
Sourcepub fn validate(&self) -> Result<(), MessageError>
pub fn validate(&self) -> Result<(), MessageError>
Validate message structure and content
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Message
impl<'de> Deserialize<'de> for Message
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Message
impl RefUnwindSafe for Message
impl Send for Message
impl Sync for Message
impl Unpin for Message
impl UnwindSafe for Message
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more