@@ -20,7 +20,7 @@ use rand_core::CryptoRng;
2020use rand_core:: RngCore ;
2121
2222#[ cfg( feature = "zeroize" ) ]
23- use zeroize:: Zeroize ;
23+ use zeroize:: { Zeroize , ZeroizeOnDrop } ;
2424
2525/// A Diffie-Hellman public key
2626///
@@ -70,8 +70,7 @@ impl AsRef<[u8]> for PublicKey {
7070/// are no serialization methods defined. This means that [`EphemeralSecret`]s can only be
7171/// generated from fresh randomness where the compiler statically checks that the resulting
7272/// 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 ) ) ]
7574pub struct EphemeralSecret ( pub ( crate ) [ u8 ; 32 ] ) ;
7675
7776impl EphemeralSecret {
@@ -131,8 +130,7 @@ impl<'a> From<&'a EphemeralSecret> for PublicKey {
131130/// secret keys are never reused, which can have very serious security
132131/// implications for many protocols.
133132#[ 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 ) ) ]
136134#[ derive( Clone ) ]
137135pub struct ReusableSecret ( pub ( crate ) [ u8 ; 32 ] ) ;
138136
@@ -192,8 +190,7 @@ impl<'a> From<&'a ReusableSecret> for PublicKey {
192190/// implications for many protocols.
193191#[ cfg( feature = "static_secrets" ) ]
194192#[ 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 ) ) ]
197194#[ derive( Clone ) ]
198195pub struct StaticSecret ( [ u8 ; 32 ] ) ;
199196
@@ -270,8 +267,7 @@ impl AsRef<[u8]> for StaticSecret {
270267///
271268/// Each party computes this using their [`EphemeralSecret`] or [`StaticSecret`] and their
272269/// 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 ) ) ]
275271pub struct SharedSecret ( pub ( crate ) MontgomeryPoint ) ;
276272
277273impl SharedSecret {
0 commit comments