pub struct EncryptionPlugin { /* private fields */ }Expand description
A plugin that provides end-to-end encryption for messages.
This plugin uses AES-256-GCM to encrypt message payloads before they are published and decrypt them after they are received, ensuring message confidentiality.
Implementations§
Trait Implementations§
Source§impl Plugin for EncryptionPlugin
impl Plugin for EncryptionPlugin
Source§fn on_publish<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_topic: &'life1 str,
payload: &'life2 mut Vec<u8>,
headers: &'life3 mut HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn on_publish<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_topic: &'life1 str,
payload: &'life2 mut Vec<u8>,
headers: &'life3 mut HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Encrypts the message payload using AES-256-GCM before publishing.
It generates a random nonce for each message, encrypts the payload, and then
adds X-Encryption: aes256-gcm and X-Nonce headers to the message.
Source§fn on_message_received<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_topic: &'life1 str,
payload: &'life2 mut Vec<u8>,
headers: &'life3 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn on_message_received<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
_topic: &'life1 str,
payload: &'life2 mut Vec<u8>,
headers: &'life3 HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Decrypts the message payload if it has the appropriate encryption headers.
It looks for the X-Encryption: aes256-gcm and X-Nonce headers to
correctly decrypt the payload.
Source§fn on_init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_broker: &'life1 Broker,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn on_init<'life0, 'life1, 'async_trait>(
&'life0 mut self,
_broker: &'life1 Broker,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called when the plugin is initialized. Read more
Source§fn on_before_recieved<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
topic: &'life1 str,
_payload: &'life2 mut Vec<u8>,
_headers: &'life3 mut HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<String, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn on_before_recieved<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
topic: &'life1 str,
_payload: &'life2 mut Vec<u8>,
_headers: &'life3 mut HashMap<String, String>,
) -> Pin<Box<dyn Future<Output = Result<String, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Called before a message is received by the broker. Read more
Auto Trait Implementations§
impl Freeze for EncryptionPlugin
impl RefUnwindSafe for EncryptionPlugin
impl Send for EncryptionPlugin
impl Sync for EncryptionPlugin
impl Unpin for EncryptionPlugin
impl UnsafeUnpin for EncryptionPlugin
impl UnwindSafe for EncryptionPlugin
Blanket Implementations§
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