diff --git a/src/transport.rs b/src/transport.rs index 9571fdf..505e55a 100644 --- a/src/transport.rs +++ b/src/transport.rs @@ -177,6 +177,20 @@ impl SendState<'_, S> { } } +impl zeroize::Zeroize for SendState<'_, S> { + fn zeroize(&mut self) { + self.counter.zeroize(); + } +} + +impl Drop for SendState<'_, S> { + fn drop(&mut self) { + zeroize::Zeroize::zeroize(self); + } +} + +impl zeroize::ZeroizeOnDrop for SendState<'_, S> {} + pub struct RecvState<'a, S: NekoSec> { transport: &'a AeadTransport, counter: u64, @@ -200,6 +214,20 @@ impl RecvState<'_, S> { } } +impl zeroize::Zeroize for RecvState<'_, S> { + fn zeroize(&mut self) { + self.counter.zeroize(); + } +} + +impl Drop for RecvState<'_, S> { + fn drop(&mut self) { + zeroize::Zeroize::zeroize(self); + } +} + +impl zeroize::ZeroizeOnDrop for RecvState<'_, S> {} + #[cfg(test)] mod tests { use wharrgarbl_neko::{Neko128, Neko256};