dashu_int/third_party/
zeroize.rs

1//! Implement zeroize traits.
2
3use zeroize::Zeroize;
4
5use crate::{
6    buffer::Buffer,
7    repr::{Repr, TypedRepr},
8    IBig, UBig,
9};
10
11impl Zeroize for Buffer {
12    fn zeroize(&mut self) {
13        self.as_full_slice().zeroize();
14        self.truncate(0)
15    }
16}
17
18impl Zeroize for Repr {
19    fn zeroize(&mut self) {
20        self.as_full_slice().zeroize();
21        self.clone_from(&Repr::zero());
22    }
23}
24
25impl Zeroize for TypedRepr {
26    #[inline]
27    fn zeroize(&mut self) {
28        if let TypedRepr::Large(buffer) = self {
29            buffer.zeroize()
30        }
31        *self = TypedRepr::Small(0)
32    }
33}
34
35impl Zeroize for UBig {
36    #[inline]
37    fn zeroize(&mut self) {
38        self.0.zeroize()
39    }
40}
41
42impl Zeroize for IBig {
43    #[inline]
44    fn zeroize(&mut self) {
45        self.0.zeroize()
46    }
47}