@@ -20,7 +20,7 @@ use rand_core::CryptoRng;
20
20
use rand_core:: RngCore ;
21
21
22
22
#[ cfg( feature = "zeroize" ) ]
23
- use zeroize:: Zeroize ;
23
+ use zeroize:: { Zeroize , ZeroizeOnDrop } ;
24
24
25
25
/// A Diffie-Hellman public key
26
26
///
@@ -70,8 +70,7 @@ impl AsRef<[u8]> for PublicKey {
70
70
/// are no serialization methods defined. This means that [`EphemeralSecret`]s can only be
71
71
/// generated from fresh randomness where the compiler statically checks that the resulting
72
72
/// secret is used at most once.
73
- #[ cfg_attr( feature = "zeroize" , derive( Zeroize ) ) ]
74
- #[ cfg_attr( feature = "zeroize" , zeroize( drop) ) ]
73
+ #[ cfg_attr( feature = "zeroize" , derive( Zeroize , ZeroizeOnDrop ) ) ]
75
74
pub struct EphemeralSecret ( pub ( crate ) [ u8 ; 32 ] ) ;
76
75
77
76
impl EphemeralSecret {
@@ -131,8 +130,7 @@ impl<'a> From<&'a EphemeralSecret> for PublicKey {
131
130
/// secret keys are never reused, which can have very serious security
132
131
/// implications for many protocols.
133
132
#[ cfg( feature = "reusable_secrets" ) ]
134
- #[ cfg_attr( feature = "zeroize" , derive( Zeroize ) ) ]
135
- #[ cfg_attr( feature = "zeroize" , zeroize( drop) ) ]
133
+ #[ cfg_attr( feature = "zeroize" , derive( Zeroize , ZeroizeOnDrop ) ) ]
136
134
#[ derive( Clone ) ]
137
135
pub struct ReusableSecret ( pub ( crate ) [ u8 ; 32 ] ) ;
138
136
@@ -192,8 +190,7 @@ impl<'a> From<&'a ReusableSecret> for PublicKey {
192
190
/// implications for many protocols.
193
191
#[ cfg( feature = "static_secrets" ) ]
194
192
#[ cfg_attr( feature = "serde" , derive( serde:: Serialize , serde:: Deserialize ) ) ]
195
- #[ cfg_attr( feature = "zeroize" , derive( Zeroize ) ) ]
196
- #[ cfg_attr( feature = "zeroize" , zeroize( drop) ) ]
193
+ #[ cfg_attr( feature = "zeroize" , derive( Zeroize , ZeroizeOnDrop ) ) ]
197
194
#[ derive( Clone ) ]
198
195
pub struct StaticSecret ( [ u8 ; 32 ] ) ;
199
196
@@ -270,8 +267,7 @@ impl AsRef<[u8]> for StaticSecret {
270
267
///
271
268
/// Each party computes this using their [`EphemeralSecret`] or [`StaticSecret`] and their
272
269
/// counterparty's [`PublicKey`].
273
- #[ cfg_attr( feature = "zeroize" , derive( Zeroize ) ) ]
274
- #[ cfg_attr( feature = "zeroize" , zeroize( drop) ) ]
270
+ #[ cfg_attr( feature = "zeroize" , derive( Zeroize , ZeroizeOnDrop ) ) ]
275
271
pub struct SharedSecret ( pub ( crate ) MontgomeryPoint ) ;
276
272
277
273
impl SharedSecret {
0 commit comments