Convert src/backend/cmac.rs to new pyo3 APIs (#10702)

This commit is contained in:
Alex Gaynor 2024-04-04 20:17:00 -04:00 committed by GitHub
parent 98e6fd4072
commit 166d21a8c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 10 additions and 7 deletions

View file

@ -7,7 +7,7 @@ use crate::backend::hashes::already_finalized_error;
use crate::buf::CffiBuf;
use crate::error::{CryptographyError, CryptographyResult};
use crate::{exceptions, types};
use pyo3::prelude::PyAnyMethods;
use pyo3::prelude::{PyAnyMethods, PyBytesMethods, PyModuleMethods};
#[pyo3::prelude::pyclass(
module = "cryptography.hazmat.bindings._rust.openssl.cmac",
@ -74,14 +74,15 @@ impl Cmac {
fn finalize<'p>(
&mut self,
py: pyo3::Python<'p>,
) -> CryptographyResult<&'p pyo3::types::PyBytes> {
) -> CryptographyResult<pyo3::Bound<'p, pyo3::types::PyBytes>> {
let data = self.get_mut_ctx()?.finish()?;
self.ctx = None;
Ok(pyo3::types::PyBytes::new(py, &data))
Ok(pyo3::types::PyBytes::new_bound(py, &data))
}
fn verify(&mut self, py: pyo3::Python<'_>, signature: &[u8]) -> CryptographyResult<()> {
let actual = self.finalize(py)?.as_bytes();
let actual = self.finalize(py)?;
let actual = actual.as_bytes();
if actual.len() != signature.len() || !openssl::memcmp::eq(actual, signature) {
return Err(CryptographyError::from(
exceptions::InvalidSignature::new_err("Signature did not match digest."),
@ -98,8 +99,10 @@ impl Cmac {
}
}
pub(crate) fn create_module(py: pyo3::Python<'_>) -> pyo3::PyResult<&pyo3::prelude::PyModule> {
let m = pyo3::prelude::PyModule::new(py, "cmac")?;
pub(crate) fn create_module(
py: pyo3::Python<'_>,
) -> pyo3::PyResult<pyo3::Bound<'_, pyo3::prelude::PyModule>> {
let m = pyo3::prelude::PyModule::new_bound(py, "cmac")?;
m.add_class::<Cmac>()?;

View file

@ -26,7 +26,7 @@ pub(crate) mod x448;
pub(crate) fn add_to_module(module: &pyo3::prelude::PyModule) -> pyo3::PyResult<()> {
module.add_submodule(aead::create_module(module.py())?.into_gil_ref())?;
module.add_submodule(ciphers::create_module(module.py())?.into_gil_ref())?;
module.add_submodule(cmac::create_module(module.py())?)?;
module.add_submodule(cmac::create_module(module.py())?.into_gil_ref())?;
module.add_submodule(dh::create_module(module.py())?.into_gil_ref())?;
module.add_submodule(dsa::create_module(module.py())?)?;
module.add_submodule(ec::create_module(module.py())?)?;