From c4fba7e774ee46870a5957c1505852206caae051 Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Wed, 15 Feb 2023 12:07:04 +0900 Subject: [PATCH 1/3] pbkdf2: make public PBKDF2 Ident values --- pbkdf2/src/lib.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pbkdf2/src/lib.rs b/pbkdf2/src/lib.rs index 1151fdfd..b3cbb3de 100644 --- a/pbkdf2/src/lib.rs +++ b/pbkdf2/src/lib.rs @@ -95,7 +95,10 @@ pub use password_hash; mod simple; #[cfg(feature = "simple")] -pub use crate::simple::{Algorithm, Params, Pbkdf2}; +pub use crate::simple::{Algorithm, Params, Pbkdf2, PBKDF2_SHA256, PBKDF2_SHA512}; + +#[cfg(all(feature = "simple", feature = "sha1"))] +pub use crate::simple::PBKDF2_SHA1; #[cfg(feature = "parallel")] use rayon::prelude::*; From 0772bed631e116cdc8411f232094ee6847dbaafa Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Thu, 16 Feb 2023 09:56:31 +0900 Subject: [PATCH 2/3] pbkdf2: Added _IDENT as a suffix to each Ident variable --- pbkdf2/src/lib.rs | 4 ++-- pbkdf2/src/simple.rs | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pbkdf2/src/lib.rs b/pbkdf2/src/lib.rs index b3cbb3de..c01109cb 100644 --- a/pbkdf2/src/lib.rs +++ b/pbkdf2/src/lib.rs @@ -95,10 +95,10 @@ pub use password_hash; mod simple; #[cfg(feature = "simple")] -pub use crate::simple::{Algorithm, Params, Pbkdf2, PBKDF2_SHA256, PBKDF2_SHA512}; +pub use crate::simple::{Algorithm, Params, Pbkdf2, PBKDF2_SHA256_IDENT, PBKDF2_SHA512_IDENT}; #[cfg(all(feature = "simple", feature = "sha1"))] -pub use crate::simple::PBKDF2_SHA1; +pub use crate::simple::PBKDF2_SHA1_IDENT; #[cfg(feature = "parallel")] use rayon::prelude::*; diff --git a/pbkdf2/src/simple.rs b/pbkdf2/src/simple.rs index 624bba56..e9086e49 100644 --- a/pbkdf2/src/simple.rs +++ b/pbkdf2/src/simple.rs @@ -13,13 +13,13 @@ use sha1::Sha1; /// PBKDF2 (SHA-1) #[cfg(feature = "sha1")] -pub const PBKDF2_SHA1: Ident = Ident::new_unwrap("pbkdf2"); +pub const PBKDF2_SHA1_IDENT: Ident = Ident::new_unwrap("pbkdf2"); /// PBKDF2 (SHA-256) -pub const PBKDF2_SHA256: Ident = Ident::new_unwrap("pbkdf2-sha256"); +pub const PBKDF2_SHA256_IDENT: Ident = Ident::new_unwrap("pbkdf2-sha256"); /// PBKDF2 (SHA-512) -pub const PBKDF2_SHA512: Ident = Ident::new_unwrap("pbkdf2-sha512"); +pub const PBKDF2_SHA512_IDENT: Ident = Ident::new_unwrap("pbkdf2-sha512"); /// PBKDF2 type for use with [`PasswordHasher`]. #[derive(Copy, Clone, Debug, Eq, PartialEq)] @@ -37,7 +37,7 @@ impl PasswordHasher for Pbkdf2 { params: Params, salt: impl Into>, ) -> Result> { - let algorithm = Algorithm::try_from(alg_id.unwrap_or(PBKDF2_SHA256))?; + let algorithm = Algorithm::try_from(alg_id.unwrap_or(PBKDF2_SHA256_IDENT))?; // Versions unsupported if version.is_some() { @@ -99,9 +99,9 @@ impl Algorithm { pub fn ident(&self) -> Ident<'static> { match self { #[cfg(feature = "sha1")] - Algorithm::Pbkdf2Sha1 => PBKDF2_SHA1, - Algorithm::Pbkdf2Sha256 => PBKDF2_SHA256, - Algorithm::Pbkdf2Sha512 => PBKDF2_SHA512, + Algorithm::Pbkdf2Sha1 => PBKDF2_SHA1_IDENT, + Algorithm::Pbkdf2Sha256 => PBKDF2_SHA256_IDENT, + Algorithm::Pbkdf2Sha512 => PBKDF2_SHA512_IDENT, } } @@ -143,9 +143,9 @@ impl<'a> TryFrom> for Algorithm { fn try_from(ident: Ident<'a>) -> Result { match ident { #[cfg(feature = "sha1")] - PBKDF2_SHA1 => Ok(Algorithm::Pbkdf2Sha1), - PBKDF2_SHA256 => Ok(Algorithm::Pbkdf2Sha256), - PBKDF2_SHA512 => Ok(Algorithm::Pbkdf2Sha512), + PBKDF2_SHA1_IDENT => Ok(Algorithm::Pbkdf2Sha1), + PBKDF2_SHA256_IDENT => Ok(Algorithm::Pbkdf2Sha256), + PBKDF2_SHA512_IDENT => Ok(Algorithm::Pbkdf2Sha512), _ => Err(Error::Algorithm), } } From 2e0717a5a0693532e4c1ff5eedbe83864e83d831 Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Sat, 18 Feb 2023 02:17:49 +0900 Subject: [PATCH 3/3] pbkdf2: move Ident constants to an intrinsic constant of `Algorithm` --- pbkdf2/src/lib.rs | 5 +---- pbkdf2/src/simple.rs | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/pbkdf2/src/lib.rs b/pbkdf2/src/lib.rs index c01109cb..1151fdfd 100644 --- a/pbkdf2/src/lib.rs +++ b/pbkdf2/src/lib.rs @@ -95,10 +95,7 @@ pub use password_hash; mod simple; #[cfg(feature = "simple")] -pub use crate::simple::{Algorithm, Params, Pbkdf2, PBKDF2_SHA256_IDENT, PBKDF2_SHA512_IDENT}; - -#[cfg(all(feature = "simple", feature = "sha1"))] -pub use crate::simple::PBKDF2_SHA1_IDENT; +pub use crate::simple::{Algorithm, Params, Pbkdf2}; #[cfg(feature = "parallel")] use rayon::prelude::*; diff --git a/pbkdf2/src/simple.rs b/pbkdf2/src/simple.rs index e9086e49..5e5b4112 100644 --- a/pbkdf2/src/simple.rs +++ b/pbkdf2/src/simple.rs @@ -11,16 +11,6 @@ use sha2::{Sha256, Sha512}; #[cfg(feature = "sha1")] use sha1::Sha1; -/// PBKDF2 (SHA-1) -#[cfg(feature = "sha1")] -pub const PBKDF2_SHA1_IDENT: Ident = Ident::new_unwrap("pbkdf2"); - -/// PBKDF2 (SHA-256) -pub const PBKDF2_SHA256_IDENT: Ident = Ident::new_unwrap("pbkdf2-sha256"); - -/// PBKDF2 (SHA-512) -pub const PBKDF2_SHA512_IDENT: Ident = Ident::new_unwrap("pbkdf2-sha512"); - /// PBKDF2 type for use with [`PasswordHasher`]. #[derive(Copy, Clone, Debug, Eq, PartialEq)] #[cfg_attr(docsrs, doc(cfg(feature = "simple")))] @@ -37,7 +27,7 @@ impl PasswordHasher for Pbkdf2 { params: Params, salt: impl Into>, ) -> Result> { - let algorithm = Algorithm::try_from(alg_id.unwrap_or(PBKDF2_SHA256_IDENT))?; + let algorithm = Algorithm::try_from(alg_id.unwrap_or(Algorithm::PBKDF2_SHA256_IDENT))?; // Versions unsupported if version.is_some() { @@ -90,6 +80,16 @@ pub enum Algorithm { } impl Algorithm { + /// PBKDF2 (SHA-1) algorithm identifier + #[cfg(feature = "sha1")] + pub const PBKDF2_SHA1_IDENT: Ident<'static> = Ident::new_unwrap("pbkdf2"); + + /// PBKDF2 (SHA-256) algorithm identifier + pub const PBKDF2_SHA256_IDENT: Ident<'static> = Ident::new_unwrap("pbkdf2-sha256"); + + /// PBKDF2 (SHA-512) algorithm identifier + pub const PBKDF2_SHA512_IDENT: Ident<'static> = Ident::new_unwrap("pbkdf2-sha512"); + /// Parse an [`Algorithm`] from the provided string. pub fn new(id: impl AsRef) -> Result { id.as_ref().parse() @@ -99,9 +99,9 @@ impl Algorithm { pub fn ident(&self) -> Ident<'static> { match self { #[cfg(feature = "sha1")] - Algorithm::Pbkdf2Sha1 => PBKDF2_SHA1_IDENT, - Algorithm::Pbkdf2Sha256 => PBKDF2_SHA256_IDENT, - Algorithm::Pbkdf2Sha512 => PBKDF2_SHA512_IDENT, + Algorithm::Pbkdf2Sha1 => Self::PBKDF2_SHA1_IDENT, + Algorithm::Pbkdf2Sha256 => Self::PBKDF2_SHA256_IDENT, + Algorithm::Pbkdf2Sha512 => Self::PBKDF2_SHA512_IDENT, } } @@ -143,9 +143,9 @@ impl<'a> TryFrom> for Algorithm { fn try_from(ident: Ident<'a>) -> Result { match ident { #[cfg(feature = "sha1")] - PBKDF2_SHA1_IDENT => Ok(Algorithm::Pbkdf2Sha1), - PBKDF2_SHA256_IDENT => Ok(Algorithm::Pbkdf2Sha256), - PBKDF2_SHA512_IDENT => Ok(Algorithm::Pbkdf2Sha512), + Self::PBKDF2_SHA1_IDENT => Ok(Algorithm::Pbkdf2Sha1), + Self::PBKDF2_SHA256_IDENT => Ok(Algorithm::Pbkdf2Sha256), + Self::PBKDF2_SHA512_IDENT => Ok(Algorithm::Pbkdf2Sha512), _ => Err(Error::Algorithm), } }