From 1ed43fd1b5c115b0ee3578f74668e40bc73b5338 Mon Sep 17 00:00:00 2001 From: Paul Kehrer Date: Wed, 10 Jul 2024 11:02:00 -0500 Subject: [PATCH] move hashes, hmac, and kdf to declarative (#11244) * move hashes, hmac, and kdf to declarative * libre fix * unneeded pub --- src/rust/src/backend/hashes.rs | 13 +++++-------- src/rust/src/backend/hmac.rs | 13 +++++-------- src/rust/src/backend/kdf.rs | 16 ++++++---------- src/rust/src/backend/mod.rs | 3 --- src/rust/src/lib.rs | 6 ++++++ 5 files changed, 22 insertions(+), 29 deletions(-) diff --git a/src/rust/src/backend/hashes.rs b/src/rust/src/backend/hashes.rs index 4b33e024fc27..4226b4b7dbb9 100644 --- a/src/rust/src/backend/hashes.rs +++ b/src/rust/src/backend/hashes.rs @@ -2,7 +2,7 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use pyo3::types::{PyAnyMethods, PyModuleMethods}; +use pyo3::types::PyAnyMethods; use pyo3::IntoPy; use std::borrow::Cow; @@ -138,11 +138,8 @@ impl Hash { } } -pub(crate) fn create_module( - py: pyo3::Python<'_>, -) -> pyo3::PyResult> { - let m = pyo3::types::PyModule::new_bound(py, "hashes")?; - m.add_class::()?; - - Ok(m) +#[pyo3::pymodule] +pub(crate) mod hashes { + #[pymodule_export] + use super::Hash; } diff --git a/src/rust/src/backend/hmac.rs b/src/rust/src/backend/hmac.rs index 4488753b91e0..d70d499565a4 100644 --- a/src/rust/src/backend/hmac.rs +++ b/src/rust/src/backend/hmac.rs @@ -6,7 +6,7 @@ use crate::backend::hashes::{already_finalized_error, message_digest_from_algori use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::exceptions; -use pyo3::types::{PyBytesMethods, PyModuleMethods}; +use pyo3::types::PyBytesMethods; #[pyo3::pyclass( module = "cryptography.hazmat.bindings._rust.openssl.hmac", @@ -106,11 +106,8 @@ impl Hmac { } } -pub(crate) fn create_module( - py: pyo3::Python<'_>, -) -> pyo3::PyResult> { - let m = pyo3::types::PyModule::new_bound(py, "hmac")?; - m.add_class::()?; - - Ok(m) +#[pyo3::pymodule] +pub(crate) mod hmac { + #[pymodule_export] + use super::Hmac; } diff --git a/src/rust/src/backend/kdf.rs b/src/rust/src/backend/kdf.rs index d8c3858a6331..8c6a151a17d0 100644 --- a/src/rust/src/backend/kdf.rs +++ b/src/rust/src/backend/kdf.rs @@ -5,7 +5,6 @@ use crate::backend::hashes; use crate::buf::CffiBuf; use crate::error::CryptographyResult; -use pyo3::types::PyModuleMethods; #[pyo3::pyfunction] pub(crate) fn derive_pbkdf2_hmac<'p>( @@ -49,14 +48,11 @@ fn derive_scrypt<'p>( })?) } -pub(crate) fn create_module( - py: pyo3::Python<'_>, -) -> pyo3::PyResult> { - let m = pyo3::types::PyModule::new_bound(py, "kdf")?; - - m.add_function(pyo3::wrap_pyfunction_bound!(derive_pbkdf2_hmac, &m)?)?; +#[pyo3::pymodule] +pub(crate) mod kdf { + #[pymodule_export] + use super::derive_pbkdf2_hmac; #[cfg(not(CRYPTOGRAPHY_IS_LIBRESSL))] - m.add_function(pyo3::wrap_pyfunction_bound!(derive_scrypt, &m)?)?; - - Ok(m) + #[pymodule_export] + use super::derive_scrypt; } diff --git a/src/rust/src/backend/mod.rs b/src/rust/src/backend/mod.rs index 5a035ed2c8be..ea1e5f07f72b 100644 --- a/src/rust/src/backend/mod.rs +++ b/src/rust/src/backend/mod.rs @@ -43,9 +43,6 @@ pub(crate) fn add_to_module(module: &pyo3::Bound<'_, pyo3::types::PyModule>) -> module.add_submodule(&poly1305::create_module(module.py())?)?; - module.add_submodule(&hashes::create_module(module.py())?)?; - module.add_submodule(&hmac::create_module(module.py())?)?; - module.add_submodule(&kdf::create_module(module.py())?)?; module.add_submodule(&rsa::create_module(module.py())?)?; Ok(()) diff --git a/src/rust/src/lib.rs b/src/rust/src/lib.rs index a3f24fac429a..e40331887ef2 100644 --- a/src/rust/src/lib.rs +++ b/src/rust/src/lib.rs @@ -148,6 +148,12 @@ mod _rust { #[pymodule_export] use super::super::{is_fips_enabled, openssl_version, openssl_version_text}; #[pymodule_export] + use crate::backend::hashes::hashes; + #[pymodule_export] + use crate::backend::hmac::hmac; + #[pymodule_export] + use crate::backend::kdf::kdf; + #[pymodule_export] use crate::backend::keys::keys; #[pymodule_export] use crate::error::{capture_error_stack, raise_openssl_error, OpenSSLError};