secrecy: impl DebugSecret for arrays
@@ -114,6 +114,22 @@ pub trait DebugSecret {
}
}
+/// Implement `Zeroize` on arrays of types that impl `Zeroize`
+macro_rules! impl_debug_secret_for_array {
+ ($($size:expr),+) => {
+ $(
+ impl<T: Debug> DebugSecret for [T; $size] {}
+ )+
+ };
+}
+
+// TODO(tarcieri): const generics
+impl_debug_secret_for_array!(
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64
+);
+
/// Marker trait for secrets which can be serialized directly by `serde`.
/// Since this provides a non-explicit exfiltration path for secrets,
/// types must explicitly opt into this.
