Skip to content

Commit

Permalink
Remove use of derive in blake2
Browse files Browse the repository at this point in the history
Enables using zeroize with a distinct name, enables cleanly working around msrv
requirements.
  • Loading branch information
kayabaNerve committed Nov 12, 2023
1 parent 2db62e9 commit bef6591
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 58 deletions.
49 changes: 0 additions & 49 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions blake2/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ categories = ["cryptography", "no-std"]

[dependencies]
digest = { version = "0.10.7", features = ["mac"] }
zeroize = { version = "1", default-features = false, features = ["derive"], optional = true }
zeroize_crate = { package = "zeroize", version = "1", default-features = false, optional = true }

[dev-dependencies]
digest = { version = "0.10.7", features = ["dev"] }
hex-literal = "0.2.2"

[features]
default = ["std"]
std = ["digest/std", "zeroize?/std"]
std = ["digest/std", "zeroize_crate?/std"]
reset = [] # Enable reset functionality
simd = []
simd_opt = ["simd"]
simd_asm = ["simd_opt"]
size_opt = [] # Optimize for code size. Removes some `inline(always)`
zeroize = ["dep:zeroize"] # Implement Zeroize for Digest implementors
zeroize = ["zeroize_crate"] # Implement Zeroize for Digest implementors
2 changes: 1 addition & 1 deletion blake2/src/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ macro_rules! blake2_impl {
}

#[cfg(feature = "zeroize")]
impl zeroize::Zeroize for $name {
impl zeroize_crate::Zeroize for $name {
fn zeroize(&mut self) {
self.h.zeroize();
self.t.zeroize();
Expand Down
15 changes: 10 additions & 5 deletions blake2/src/simd/simdty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,13 @@

#![allow(dead_code, non_camel_case_types)]

#[cfg(feature = "zeroize")]
use zeroize::Zeroize;

use crate::as_bytes::Safe;

#[cfg(feature = "simd")]
macro_rules! decl_simd {
($($decl:item)*) => {
$(
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "zeroize", derive(Zeroize))]
#[repr(simd)]
$decl
)*
Expand All @@ -29,7 +25,6 @@ macro_rules! decl_simd {
($($decl:item)*) => {
$(
#[derive(Clone, Copy, Debug)]
#[cfg_attr(feature = "zeroize", derive(Zeroize))]
#[repr(C)]
$decl
)*
Expand All @@ -55,6 +50,16 @@ decl_simd! {
pub T, pub T, pub T, pub T);
}

#[cfg(feature = "zeroize")]
impl<T: zeroize_crate::Zeroize> zeroize_crate::Zeroize for Simd4<T> {
fn zeroize(&mut self) {
self.0.zeroize();
self.1.zeroize();
self.2.zeroize();
self.3.zeroize();
}
}

pub type u64x2 = Simd2<u64>;

pub type u32x4 = Simd4<u32>;
Expand Down

0 comments on commit bef6591

Please sign in to comment.