Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-cryptography for openSUSE:Factory checked in at 2025-05-13 20:12:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-cryptography (Old) and /work/SRC/openSUSE:Factory/.python-cryptography.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-cryptography" Tue May 13 20:12:01 2025 rev:101 rq:1276716 version:44.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-cryptography/python-cryptography.changes 2025-03-25 22:08:12.140187696 +0100 +++ /work/SRC/openSUSE:Factory/.python-cryptography.new.30101/python-cryptography.changes 2025-05-13 20:12:05.411509313 +0200 @@ -1,0 +2,6 @@ +Wed May 7 15:45:10 UTC 2025 - Nico Krapp <nico.kr...@suse.com> + +- Update to 44.0.3 + * Fixed compilation when using LibreSSL 4.1.0. + +------------------------------------------------------------------- Old: ---- cryptography-44.0.2.tar.gz New: ---- cryptography-44.0.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-cryptography.spec ++++++ --- /var/tmp/diff_new_pack.489Zyw/_old 2025-05-13 20:12:07.715606017 +0200 +++ /var/tmp/diff_new_pack.489Zyw/_new 2025-05-13 20:12:07.731606688 +0200 @@ -28,7 +28,7 @@ %{?sle15_python_module_pythons} Name: python-cryptography%{psuffix} # ALWAYS KEEP IN SYNC WITH python-cryptography-vectors! -Version: 44.0.2 +Version: 44.0.3 Release: 0 Summary: Python library which exposes cryptographic recipes and primitives License: Apache-2.0 OR BSD-3-Clause ++++++ cryptography-44.0.2.tar.gz -> cryptography-44.0.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/CHANGELOG.rst new/cryptography-44.0.3/CHANGELOG.rst --- old/cryptography-44.0.2/CHANGELOG.rst 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/CHANGELOG.rst 2025-05-02 21:28:28.000000000 +0200 @@ -1,6 +1,13 @@ Changelog ========= +.. _v44-0-3: + +44.0.3 - 2025-05-02 +~~~~~~~~~~~~~~~~~~~ + +* Fixed compilation when using LibreSSL 4.1.0. + .. _v44-0-2: 44.0.2 - 2025-03-01 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/Cargo.lock new/cryptography-44.0.3/Cargo.lock --- old/cryptography-44.0.2/Cargo.lock 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/Cargo.lock 2025-05-02 21:28:28.000000000 +0200 @@ -215,9 +215,9 @@ [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "e145e1651e858e820e4860f7b9c5e169bc1d8ce1c86043be79fa7b7634821847" dependencies = [ "cc", "libc", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/Cargo.toml new/cryptography-44.0.3/Cargo.toml --- old/cryptography-44.0.2/Cargo.toml 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/Cargo.toml 2025-05-02 21:28:28.000000000 +0200 @@ -21,6 +21,8 @@ [workspace.dependencies] asn1 = { version = "0.20.0", default-features = false } pyo3 = { version = "0.23.5", features = ["abi3"] } +openssl = "0.10.72" +openssl-sys = "0.9.108" [profile.release] overflow-checks = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/PKG-INFO new/cryptography-44.0.3/PKG-INFO --- old/cryptography-44.0.2/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/cryptography-44.0.3/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.3 Name: cryptography -Version: 44.0.2 +Version: 44.0.3 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License @@ -28,7 +28,7 @@ Requires-Dist: bcrypt >=3.1.5 ; extra == 'ssh' Requires-Dist: nox >=2024.4.15 ; extra == 'nox' Requires-Dist: nox[uv] >=2024.3.2 ; python_version >= '3.8' and extra == 'nox' -Requires-Dist: cryptography-vectors ==44.0.2 ; extra == 'test' +Requires-Dist: cryptography-vectors ==44.0.3 ; extra == 'test' Requires-Dist: pytest >=7.4.0 ; extra == 'test' Requires-Dist: pytest-benchmark >=4.0 ; extra == 'test' Requires-Dist: pytest-cov >=2.10.1 ; extra == 'test' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/pyproject.toml new/cryptography-44.0.3/pyproject.toml --- old/cryptography-44.0.2/pyproject.toml 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/pyproject.toml 2025-05-02 21:28:28.000000000 +0200 @@ -14,7 +14,7 @@ [project] name = "cryptography" -version = "44.0.2" +version = "44.0.3" authors = [ {name = "The Python Cryptographic Authority and individual contributors", email = "cryptography-...@python.org"} ] @@ -65,7 +65,7 @@ # All the following are used for our own testing. nox = ["nox >=2024.04.15", "nox[uv] >=2024.03.02; python_version >= '3.8'"] test = [ - "cryptography_vectors==44.0.2", + "cryptography_vectors==44.0.3", "pytest >=7.4.0", "pytest-benchmark >=4.0", "pytest-cov >=2.10.1", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/cryptography/__about__.py new/cryptography-44.0.3/src/cryptography/__about__.py --- old/cryptography-44.0.2/src/cryptography/__about__.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/cryptography/__about__.py 2025-05-02 21:28:28.000000000 +0200 @@ -10,7 +10,7 @@ "__version__", ] -__version__ = "44.0.2" +__version__ = "44.0.3" __author__ = "The Python Cryptographic Authority and individual contributors" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/cryptography/hazmat/backends/openssl/backend.py new/cryptography-44.0.3/src/cryptography/hazmat/backends/openssl/backend.py --- old/cryptography-44.0.2/src/cryptography/hazmat/backends/openssl/backend.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/cryptography/hazmat/backends/openssl/backend.py 2025-05-02 21:28:28.000000000 +0200 @@ -169,14 +169,17 @@ if isinstance(padding, PKCS1v15): return True elif isinstance(padding, PSS) and isinstance(padding._mgf, MGF1): - # SHA1 is permissible in MGF1 in FIPS even when SHA1 is blocked - # as signature algorithm. - if self._fips_enabled and isinstance( - padding._mgf._algorithm, hashes.SHA1 + # FIPS 186-4 only allows salt length == digest length for PSS + # It is technically acceptable to set an explicit salt length + # equal to the digest length and this will incorrectly fail, but + # since we don't do that in the tests and this method is + # private, we'll ignore that until we need to do otherwise. + if ( + self._fips_enabled + and padding._salt_length != PSS.DIGEST_LENGTH ): - return True - else: - return self.hash_supported(padding._mgf._algorithm) + return False + return self.hash_supported(padding._mgf._algorithm) elif isinstance(padding, OAEP) and isinstance(padding._mgf, MGF1): return self._oaep_hash_supported( padding._mgf._algorithm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-cffi/build.rs new/cryptography-44.0.3/src/rust/cryptography-cffi/build.rs --- old/cryptography-44.0.2/src/rust/cryptography-cffi/build.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-cffi/build.rs 2025-05-02 21:28:28.000000000 +0200 @@ -71,7 +71,7 @@ // This is because we don't want a potentially random build path to end up in the binary because // CFFI generated code uses the __FILE__ macro in its debug messages. if let Some(out_dir_str) = Path::new(&out_dir).to_str() { - build.flag_if_supported(format!("-fmacro-prefix-map={}=.", out_dir_str).as_str()); + build.flag_if_supported(format!("-fmacro-prefix-map={out_dir_str}").as_str()); } for python_include in env::split_paths(&python_includes) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-keepalive/src/lib.rs new/cryptography-44.0.3/src/rust/cryptography-keepalive/src/lib.rs --- old/cryptography-44.0.2/src/rust/cryptography-keepalive/src/lib.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-keepalive/src/lib.rs 2025-05-02 21:28:28.000000000 +0200 @@ -4,10 +4,11 @@ #![deny(rust_2018_idioms, clippy::undocumented_unsafe_blocks)] -use pyo3::pybacked::{PyBackedBytes, PyBackedStr}; use std::cell::UnsafeCell; use std::ops::Deref; +use pyo3::pybacked::{PyBackedBytes, PyBackedStr}; + pub struct KeepAlive<T: StableDeref> { values: UnsafeCell<Vec<T>>, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-openssl/src/aead.rs new/cryptography-44.0.3/src/rust/cryptography-openssl/src/aead.rs --- old/cryptography-44.0.2/src/rust/cryptography-openssl/src/aead.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-openssl/src/aead.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,9 +2,10 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use crate::{cvt, cvt_p, OpenSSLResult}; use foreign_types_shared::{ForeignType, ForeignTypeRef}; +use crate::{cvt, cvt_p, OpenSSLResult}; + pub enum AeadType { ChaCha20Poly1305, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-openssl/src/fips.rs new/cryptography-44.0.3/src/rust/cryptography-openssl/src/fips.rs --- old/cryptography-44.0.2/src/rust/cryptography-openssl/src/fips.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-openssl/src/fips.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,14 +2,15 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -#[cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)] -use crate::{cvt, OpenSSLResult}; #[cfg(all( CRYPTOGRAPHY_OPENSSL_300_OR_GREATER, not(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL)) ))] use std::ptr; +#[cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)] +use crate::{cvt, OpenSSLResult}; + pub fn is_enabled() -> bool { cfg_if::cfg_if! { if #[cfg(any(CRYPTOGRAPHY_IS_LIBRESSL, CRYPTOGRAPHY_IS_BORINGSSL))] { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509/src/certificate.rs new/cryptography-44.0.3/src/rust/cryptography-x509/src/certificate.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509/src/certificate.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509/src/certificate.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,12 +2,9 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use crate::common; -use crate::extensions; -use crate::extensions::DuplicateExtensionsError; -use crate::extensions::Extensions; -use crate::name; +use crate::extensions::{DuplicateExtensionsError, Extensions}; use crate::name::NameReadable; +use crate::{common, extensions, name}; #[derive(asn1::Asn1Read, asn1::Asn1Write, Hash, PartialEq, Eq, Clone)] pub struct Certificate<'a> { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509/src/csr.rs new/cryptography-44.0.3/src/rust/cryptography-x509/src/csr.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509/src/csr.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509/src/csr.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,10 +2,7 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use crate::common; -use crate::extensions; -use crate::name; -use crate::oid; +use crate::{common, extensions, name, oid}; #[derive(asn1::Asn1Read, asn1::Asn1Write)] pub struct Csr<'a> { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509/src/extensions.rs new/cryptography-44.0.3/src/rust/cryptography-x509/src/extensions.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509/src/extensions.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509/src/extensions.rs 2025-05-02 21:28:28.000000000 +0200 @@ -4,10 +4,8 @@ use std::collections::HashSet; -use crate::common; use crate::common::Asn1Operation; -use crate::crl; -use crate::name; +use crate::{common, crl, name}; pub struct DuplicateExtensionsError(pub asn1::ObjectIdentifier); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509/src/pkcs12.rs new/cryptography-44.0.3/src/rust/cryptography-x509/src/pkcs12.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509/src/pkcs12.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509/src/pkcs12.rs 2025-05-02 21:28:28.000000000 +0200 @@ -55,7 +55,7 @@ #[derive(asn1::Asn1DefinedByWrite)] pub enum BagValue<'a> { #[defined_by(CERT_BAG_OID)] - CertBag(CertBag<'a>), + CertBag(Box<CertBag<'a>>), #[defined_by(KEY_BAG_OID)] KeyBag(asn1::Tlv<'a>), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/lib.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/lib.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/lib.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/lib.rs 2025-05-02 21:28:28.000000000 +0200 @@ -16,21 +16,19 @@ use std::vec; use asn1::ObjectIdentifier; -use cryptography_x509::extensions::{DuplicateExtensionsError, Extensions}; -use cryptography_x509::{ - common::Asn1Read, - extensions::{NameConstraints, SubjectAlternativeName}, - name::GeneralName, - oid::{NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID}, +use cryptography_x509::common::Asn1Read; +use cryptography_x509::extensions::{ + DuplicateExtensionsError, Extensions, NameConstraints, SubjectAlternativeName, }; +use cryptography_x509::name::GeneralName; +use cryptography_x509::oid::{NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID}; use types::{RFC822Constraint, RFC822Name}; use crate::certificate::cert_is_self_issued; use crate::ops::{CryptoOps, VerificationCertificate}; use crate::policy::Policy; use crate::trust_store::Store; -use crate::types::DNSName; -use crate::types::{DNSConstraint, IPAddress, IPConstraint}; +use crate::types::{DNSConstraint, DNSName, IPAddress, IPConstraint}; use crate::ApplyNameConstraintStatus::{Applied, Skipped}; pub enum ValidationErrorKind<'chain, B: CryptoOps> { @@ -175,12 +173,10 @@ ) { (Some(pattern), Some(name)) => Ok(Applied(pattern.matches(&name))), (_, None) => Err(ValidationError::new(ValidationErrorKind::Other(format!( - "unsatisfiable IP name constraint: malformed SAN {:?}", - name, + "unsatisfiable IP name constraint: malformed SAN {name:?}", )))), (None, _) => Err(ValidationError::new(ValidationErrorKind::Other(format!( - "malformed IP name constraints: {:?}", - pattern + "malformed IP name constraints: {pattern:?}", )))), } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/ops.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/ops.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/ops.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/ops.rs 2025-05-02 21:28:28.000000000 +0200 @@ -90,9 +90,10 @@ #[cfg(test)] pub(crate) mod tests { + use cryptography_x509::certificate::Certificate; + use super::VerificationCertificate; use crate::certificate::tests::PublicKeyErrorOps; - use cryptography_x509::certificate::Certificate; pub(crate) fn v1_cert_pem() -> pem::Pem { pem::parse( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/policy/extension.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/policy/extension.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/policy/extension.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/policy/extension.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,19 +2,17 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use cryptography_x509::certificate::Certificate; +use cryptography_x509::extensions::{Extension, Extensions}; use cryptography_x509::oid::{ AUTHORITY_INFORMATION_ACCESS_OID, AUTHORITY_KEY_IDENTIFIER_OID, BASIC_CONSTRAINTS_OID, EXTENDED_KEY_USAGE_OID, KEY_USAGE_OID, NAME_CONSTRAINTS_OID, SUBJECT_ALTERNATIVE_NAME_OID, SUBJECT_KEY_IDENTIFIER_OID, }; -use cryptography_x509::{ - certificate::Certificate, - extensions::{Extension, Extensions}, -}; -use crate::{ - ops::CryptoOps, policy::Policy, ValidationError, ValidationErrorKind, ValidationResult, -}; +use crate::ops::CryptoOps; +use crate::policy::Policy; +use crate::{ValidationError, ValidationErrorKind, ValidationResult}; pub(crate) struct ExtensionPolicy<B: CryptoOps> { pub(crate) authority_information_access: ExtensionValidator<B>, @@ -266,17 +264,13 @@ } pub(crate) mod ee { - use cryptography_x509::{ - certificate::Certificate, - extensions::{ - BasicConstraints, ExtendedKeyUsage, Extension, KeyUsage, SubjectAlternativeName, - }, + use cryptography_x509::certificate::Certificate; + use cryptography_x509::extensions::{ + BasicConstraints, ExtendedKeyUsage, Extension, KeyUsage, SubjectAlternativeName, }; - use crate::{ - ops::CryptoOps, - policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}, - }; + use crate::ops::CryptoOps; + use crate::policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}; pub(crate) fn basic_constraints<'chain, B: CryptoOps>( _policy: &Policy<'_, B>, @@ -379,20 +373,16 @@ } pub(crate) mod ca { - use cryptography_x509::{ - certificate::Certificate, - common::Asn1Read, - extensions::{ - AuthorityKeyIdentifier, BasicConstraints, ExtendedKeyUsage, Extension, KeyUsage, - NameConstraints, - }, - oid::EKU_ANY_KEY_USAGE_OID, + use cryptography_x509::certificate::Certificate; + use cryptography_x509::common::Asn1Read; + use cryptography_x509::extensions::{ + AuthorityKeyIdentifier, BasicConstraints, ExtendedKeyUsage, Extension, KeyUsage, + NameConstraints, }; + use cryptography_x509::oid::EKU_ANY_KEY_USAGE_OID; - use crate::{ - ops::CryptoOps, - policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}, - }; + use crate::ops::CryptoOps; + use crate::policy::{Policy, ValidationError, ValidationErrorKind, ValidationResult}; pub(crate) fn authority_key_identifier<'chain, B: CryptoOps>( _policy: &Policy<'_, B>, @@ -529,16 +519,12 @@ } pub(crate) mod common { - use cryptography_x509::{ - certificate::Certificate, - common::Asn1Read, - extensions::{Extension, SequenceOfAccessDescriptions}, - }; + use cryptography_x509::certificate::Certificate; + use cryptography_x509::common::Asn1Read; + use cryptography_x509::extensions::{Extension, SequenceOfAccessDescriptions}; - use crate::{ - ops::CryptoOps, - policy::{Policy, ValidationResult}, - }; + use crate::ops::CryptoOps; + use crate::policy::{Policy, ValidationResult}; pub(crate) fn authority_information_access<'chain, B: CryptoOps>( _policy: &Policy<'_, B>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/policy/mod.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/policy/mod.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/policy/mod.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/policy/mod.rs 2025-05-02 21:28:28.000000000 +0200 @@ -601,10 +601,8 @@ use asn1::{DateTime, SequenceOfWriter}; use cryptography_x509::common::Time; - use cryptography_x509::{ - extensions::SubjectAlternativeName, - name::{GeneralName, UnvalidatedIA5String}, - }; + use cryptography_x509::extensions::SubjectAlternativeName; + use cryptography_x509::name::{GeneralName, UnvalidatedIA5String}; use super::{ permits_validity_date, ECDSA_SHA256, ECDSA_SHA384, ECDSA_SHA512, RSASSA_PKCS1V15_SHA256, @@ -612,13 +610,11 @@ RSASSA_PSS_SHA512, WEBPKI_PERMITTED_SIGNATURE_ALGORITHMS, }; use crate::certificate::tests::PublicKeyErrorOps; - use crate::{ - policy::{ - Subject, SPKI_RSA, SPKI_SECP256R1, SPKI_SECP384R1, SPKI_SECP521R1, - WEBPKI_PERMITTED_SPKI_ALGORITHMS, - }, - types::{DNSName, IPAddress}, + use crate::policy::{ + Subject, SPKI_RSA, SPKI_SECP256R1, SPKI_SECP384R1, SPKI_SECP521R1, + WEBPKI_PERMITTED_SPKI_ALGORITHMS, }; + use crate::types::{DNSName, IPAddress}; #[test] fn test_webpki_permitted_spki_algorithms_canonical_encodings() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/trust_store.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/trust_store.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/trust_store.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/trust_store.rs 2025-05-02 21:28:28.000000000 +0200 @@ -6,8 +6,7 @@ use cryptography_x509::name::Name; -use crate::CryptoOps; -use crate::VerificationCertificate; +use crate::{CryptoOps, VerificationCertificate}; /// A `Store` represents the core state needed for X.509 path validation. pub struct Store<'a, B: CryptoOps> { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/types.rs new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/types.rs --- old/cryptography-44.0.2/src/rust/cryptography-x509-verification/src/types.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/cryptography-x509-verification/src/types.rs 2025-05-02 21:28:28.000000000 +0200 @@ -400,9 +400,8 @@ #[cfg(test)] mod tests { - use crate::types::{DNSConstraint, DNSName, DNSPattern, IPAddress, IPConstraint, RFC822Name}; - use super::RFC822Constraint; + use crate::types::{DNSConstraint, DNSName, DNSPattern, IPAddress, IPConstraint, RFC822Name}; #[test] fn test_dnsname_debug_trait() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/asn1.rs new/cryptography-44.0.3/src/rust/src/asn1.rs --- old/cryptography-44.0.2/src/rust/src/asn1.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/asn1.rs 2025-05-02 21:28:28.000000000 +0200 @@ -4,8 +4,7 @@ use cryptography_x509::common::{DssSignature, SubjectPublicKeyInfo}; use pyo3::pybacked::PyBackedBytes; -use pyo3::types::IntoPyDict; -use pyo3::types::PyAnyMethods; +use pyo3::types::{IntoPyDict, PyAnyMethods}; use pyo3::IntoPyObject; use crate::error::{CryptographyError, CryptographyResult}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/aead.rs new/cryptography-44.0.3/src/rust/src/backend/aead.rs --- old/cryptography-44.0.2/src/rust/src/backend/aead.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/aead.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,10 +2,11 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::{PyAnyMethods, PyListMethods}; + use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::{exceptions, types}; -use pyo3::types::{PyAnyMethods, PyListMethods}; fn check_length(data: &[u8]) -> CryptographyResult<()> { if data.len() > (i32::MAX as usize) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/ciphers.rs new/cryptography-44.0.3/src/rust/src/backend/ciphers.rs --- old/cryptography-44.0.2/src/rust/src/backend/ciphers.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/ciphers.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,13 +2,13 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::PyAnyMethods; +use pyo3::IntoPyObject; + use crate::backend::cipher_registry; use crate::buf::{CffiBuf, CffiMutBuf}; use crate::error::{CryptographyError, CryptographyResult}; -use crate::exceptions; -use crate::types; -use pyo3::types::PyAnyMethods; -use pyo3::IntoPyObject; +use crate::{exceptions, types}; pub(crate) struct CipherContext { ctx: openssl::cipher_ctx::CipherCtx, @@ -495,16 +495,14 @@ if tag.len() < min_tag_length { return Err(CryptographyError::from( pyo3::exceptions::PyValueError::new_err(format!( - "Authentication tag must be {} bytes or longer.", - min_tag_length + "Authentication tag must be {min_tag_length} bytes or longer.", )), )); } else if tag.len() > 16 { return Err(CryptographyError::from( - pyo3::exceptions::PyValueError::new_err(format!( - "Authentication tag cannot be more than {} bytes.", - 16 - )), + pyo3::exceptions::PyValueError::new_err( + "Authentication tag cannot be more than 16 bytes.", + ), )); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/cmac.rs new/cryptography-44.0.3/src/rust/src/backend/cmac.rs --- old/cryptography-44.0.2/src/rust/src/backend/cmac.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/cmac.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,11 +2,12 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::{PyAnyMethods, PyBytesMethods}; + use crate::backend::cipher_registry; use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::{exceptions, types}; -use pyo3::types::{PyAnyMethods, PyBytesMethods}; #[pyo3::pyclass( module = "cryptography.hazmat.bindings._rust.openssl.cmac", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/dh.rs new/cryptography-44.0.3/src/rust/src/backend/dh.rs --- old/cryptography-44.0.2/src/rust/src/backend/dh.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/dh.rs 2025-05-02 21:28:28.000000000 +0200 @@ -3,12 +3,12 @@ // for complete details. use cryptography_x509::common; +use pyo3::types::PyAnyMethods; use crate::asn1::encode_der_data; use crate::backend::utils; use crate::error::{CryptographyError, CryptographyResult}; use crate::{types, x509}; -use pyo3::types::PyAnyMethods; const MIN_MODULUS_SIZE: u32 = 512; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/dsa.rs new/cryptography-44.0.3/src/rust/src/backend/dsa.rs --- old/cryptography-44.0.2/src/rust/src/backend/dsa.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/dsa.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,11 +2,12 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::PyAnyMethods; + use crate::backend::utils; use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::{error, exceptions}; -use pyo3::types::PyAnyMethods; #[pyo3::pyclass( frozen, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/hashes.rs new/cryptography-44.0.3/src/rust/src/backend/hashes.rs --- old/cryptography-44.0.2/src/rust/src/backend/hashes.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/hashes.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,9 +2,10 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use pyo3::types::PyAnyMethods; use std::borrow::Cow; +use pyo3::types::PyAnyMethods; + use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::{exceptions, types}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/hmac.rs new/cryptography-44.0.3/src/rust/src/backend/hmac.rs --- old/cryptography-44.0.2/src/rust/src/backend/hmac.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/hmac.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,11 +2,12 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::PyBytesMethods; + use crate::backend::hashes::message_digest_from_algorithm; use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::exceptions; -use pyo3::types::PyBytesMethods; #[pyo3::pyclass( module = "cryptography.hazmat.bindings._rust.openssl.hmac", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/poly1305.rs new/cryptography-44.0.3/src/rust/src/backend/poly1305.rs --- old/cryptography-44.0.2/src/rust/src/backend/poly1305.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/poly1305.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,10 +2,11 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::PyBytesMethods; + use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::exceptions; -use pyo3::types::PyBytesMethods; #[cfg(any(CRYPTOGRAPHY_IS_BORINGSSL, CRYPTOGRAPHY_IS_LIBRESSL))] struct Poly1305Boring { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/rsa.rs new/cryptography-44.0.3/src/rust/src/backend/rsa.rs --- old/cryptography-44.0.2/src/rust/src/backend/rsa.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/rsa.rs 2025-05-02 21:28:28.000000000 +0200 @@ -5,11 +5,12 @@ use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; +use pyo3::types::PyAnyMethods; + use crate::backend::{hashes, utils}; use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::{exceptions, types}; -use pyo3::types::PyAnyMethods; #[pyo3::pyclass( frozen, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/backend/utils.rs new/cryptography-44.0.3/src/rust/src/backend/utils.rs --- old/cryptography-44.0.2/src/rust/src/backend/utils.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/backend/utils.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,10 +2,11 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use pyo3::types::{PyAnyMethods, PyBytesMethods}; + use crate::backend::hashes::Hash; use crate::error::{CryptographyError, CryptographyResult}; use crate::{error, types}; -use pyo3::types::{PyAnyMethods, PyBytesMethods}; pub(crate) fn py_int_to_bn( py: pyo3::Python<'_>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/buf.rs new/cryptography-44.0.3/src/rust/src/buf.rs --- old/cryptography-44.0.2/src/rust/src/buf.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/buf.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,11 +2,12 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use crate::types; -use pyo3::types::IntoPyDict; -use pyo3::types::PyAnyMethods; use std::slice; +use pyo3::types::{IntoPyDict, PyAnyMethods}; + +use crate::types; + pub(crate) struct CffiBuf<'p> { pyobj: pyo3::Bound<'p, pyo3::PyAny>, _bufobj: pyo3::Bound<'p, pyo3::PyAny>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/error.rs new/cryptography-44.0.3/src/rust/src/error.rs --- old/cryptography-44.0.2/src/rust/src/error.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/error.rs 2025-05-02 21:28:28.000000000 +0200 @@ -116,7 +116,7 @@ "Could not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm, or it may be an unsupported key type (e.g. EC curves with explicit parameters). Details: {asn1_error}", ) } - CryptographyError::Py(py_error) => write!(f, "{}", py_error), + CryptographyError::Py(py_error) => write!(f, "{py_error}"), CryptographyError::OpenSSL(error_stack) => { write!( f, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/lib.rs new/cryptography-44.0.3/src/rust/src/lib.rs --- old/cryptography-44.0.2/src/rust/src/lib.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/lib.rs 2025-05-02 21:28:28.000000000 +0200 @@ -6,11 +6,13 @@ #![allow(unknown_lints, non_local_definitions, clippy::result_large_err)] #[cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)] -use crate::error::CryptographyResult; +use std::env; + #[cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)] use openssl::provider; + #[cfg(CRYPTOGRAPHY_OPENSSL_300_OR_GREATER)] -use std::env; +use crate::error::CryptographyResult; mod asn1; mod backend; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/oid.rs new/cryptography-44.0.3/src/rust/src/oid.rs --- old/cryptography-44.0.2/src/rust/src/oid.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/oid.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,12 +2,14 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use crate::error::CryptographyResult; -use crate::types; -use pyo3::types::PyAnyMethods; use std::collections::hash_map::DefaultHasher; use std::hash::{Hash, Hasher}; +use pyo3::types::PyAnyMethods; + +use crate::error::CryptographyResult; +use crate::types; + #[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust")] pub(crate) struct ObjectIdentifier { pub(crate) oid: asn1::ObjectIdentifier, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/pkcs12.rs new/cryptography-44.0.3/src/rust/src/pkcs12.rs --- old/cryptography-44.0.2/src/rust/src/pkcs12.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/pkcs12.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,17 +2,19 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use std::collections::hash_map::DefaultHasher; +use std::hash::{Hash, Hasher}; + +use cryptography_x509::common::Utf8StoredBMPString; +use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; +use pyo3::IntoPyObject; + use crate::backend::{ciphers, hashes, hmac, kdf, keys}; use crate::buf::CffiBuf; use crate::error::{CryptographyError, CryptographyResult}; use crate::padding::PKCS7PaddingContext; use crate::x509::certificate::Certificate; use crate::{types, x509}; -use cryptography_x509::common::Utf8StoredBMPString; -use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; -use pyo3::IntoPyObject; -use std::collections::hash_map::DefaultHasher; -use std::hash::{Hash, Hasher}; #[pyo3::pyclass(frozen)] struct PKCS12Certificate { @@ -386,14 +388,14 @@ ) -> CryptographyResult<cryptography_x509::pkcs12::SafeBag<'a>> { Ok(cryptography_x509::pkcs12::SafeBag { _bag_id: asn1::DefinedByMarker::marker(), - bag_value: asn1::Explicit::new(cryptography_x509::pkcs12::BagValue::CertBag( + bag_value: asn1::Explicit::new(cryptography_x509::pkcs12::BagValue::CertBag(Box::new( cryptography_x509::pkcs12::CertBag { _cert_id: asn1::DefinedByMarker::marker(), cert_value: asn1::Explicit::new(cryptography_x509::pkcs12::CertType::X509( asn1::OctetStringEncoded::new(cert.raw.borrow_dependent().clone()), )), }, - )), + ))), attributes: pkcs12_attributes(friendly_name, local_key_id)?, }) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/pkcs7.rs new/cryptography-44.0.3/src/rust/src/pkcs7.rs --- old/cryptography-44.0.2/src/rust/src/pkcs7.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/pkcs7.rs 2025-05-02 21:28:28.000000000 +0200 @@ -686,7 +686,7 @@ let nid_string = nid.map_or("empty".to_string(), |n| n.as_raw().to_string()); return Err(CryptographyError::from( exceptions::UnsupportedAlgorithm::new_err(( - format!("Only basic signed structures are currently supported. NID for this data was {}", nid_string), + format!("Only basic signed structures are currently supported. NID for this data was {nid_string}"), exceptions::Reasons::UNSUPPORTED_SERIALIZATION, )), )); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/test_support.rs new/cryptography-44.0.3/src/rust/src/test_support.rs --- old/cryptography-44.0.2/src/rust/src/test_support.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/test_support.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,6 +2,13 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. +use asn1::SimpleAsn1Readable; +use cryptography_x509::certificate::Certificate; +use cryptography_x509::common::Time; +use cryptography_x509::name::Name; +#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] +use pyo3::prelude::PyAnyMethods; + #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] use crate::buf::CffiBuf; use crate::error::CryptographyResult; @@ -9,12 +16,6 @@ use crate::types; #[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] use crate::x509::certificate::Certificate as PyCertificate; -use asn1::SimpleAsn1Readable; -use cryptography_x509::certificate::Certificate; -use cryptography_x509::common::Time; -use cryptography_x509::name::Name; -#[cfg(not(CRYPTOGRAPHY_IS_BORINGSSL))] -use pyo3::prelude::PyAnyMethods; #[pyo3::pyclass(frozen, module = "cryptography.hazmat.bindings._rust.test_support")] struct TestCertificate { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/certificate.rs new/cryptography-44.0.3/src/rust/src/x509/certificate.rs --- old/cryptography-44.0.2/src/rust/src/x509/certificate.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/certificate.rs 2025-05-02 21:28:28.000000000 +0200 @@ -6,16 +6,15 @@ use std::hash::{Hash, Hasher}; use cryptography_x509::certificate::Certificate as RawCertificate; -use cryptography_x509::common::Asn1Read; -use cryptography_x509::common::{AlgorithmParameters, Asn1ReadableOrWritable}; +use cryptography_x509::common::{AlgorithmParameters, Asn1Read, Asn1ReadableOrWritable}; use cryptography_x509::extensions::{ Admission, Admissions, AuthorityKeyIdentifier, BasicConstraints, DisplayText, DistributionPoint, DistributionPointName, DuplicateExtensionsError, ExtendedKeyUsage, - IssuerAlternativeName, KeyUsage, MSCertificateTemplate, NameConstraints, NamingAuthority, - PolicyConstraints, PolicyInformation, PolicyQualifierInfo, ProfessionInfo, Qualifier, - RawExtensions, SequenceOfAccessDescriptions, SequenceOfSubtrees, UserNotice, + Extension, IssuerAlternativeName, KeyUsage, MSCertificateTemplate, NameConstraints, + NamingAuthority, PolicyConstraints, PolicyInformation, PolicyQualifierInfo, ProfessionInfo, + Qualifier, RawExtensions, SequenceOfAccessDescriptions, SequenceOfSubtrees, + SubjectAlternativeName, UserNotice, }; -use cryptography_x509::extensions::{Extension, SubjectAlternativeName}; use cryptography_x509::{common, oid}; use cryptography_x509_verification::ops::CryptoOps; use pyo3::types::{PyAnyMethods, PyListMethods}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/common.rs new/cryptography-44.0.3/src/rust/src/x509/common.rs --- old/cryptography-44.0.2/src/rust/src/x509/common.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/common.rs 2025-05-02 21:28:28.000000000 +0200 @@ -7,8 +7,7 @@ AccessDescription, DuplicateExtensionsError, Extension, Extensions, RawExtensions, }; use cryptography_x509::name::{GeneralName, Name, NameReadable, OtherName, UnvalidatedIA5String}; -use pyo3::types::IntoPyDict; -use pyo3::types::{PyAnyMethods, PyListMethods}; +use pyo3::types::{IntoPyDict, PyAnyMethods, PyListMethods}; use crate::asn1::{oid_to_py_oid, py_oid_to_oid}; use crate::error::{CryptographyError, CryptographyResult}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/crl.rs new/cryptography-44.0.3/src/rust/src/x509/crl.rs --- old/cryptography-44.0.2/src/rust/src/x509/crl.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/crl.rs 2025-05-02 21:28:28.000000000 +0200 @@ -4,15 +4,13 @@ use std::sync::Arc; -use cryptography_x509::extensions::{Extension, IssuerAlternativeName}; -use cryptography_x509::{ - common::{self, Asn1Read}, - crl::{ - self, CertificateRevocationList as RawCertificateRevocationList, - RevokedCertificate as RawRevokedCertificate, - }, - name, oid, +use cryptography_x509::common::{self, Asn1Read}; +use cryptography_x509::crl::{ + self, CertificateRevocationList as RawCertificateRevocationList, + RevokedCertificate as RawRevokedCertificate, }; +use cryptography_x509::extensions::{Extension, IssuerAlternativeName}; +use cryptography_x509::{name, oid}; use pyo3::types::{PyAnyMethods, PyListMethods, PySliceMethods}; use crate::asn1::{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/csr.rs new/cryptography-44.0.3/src/rust/src/x509/csr.rs --- old/cryptography-44.0.2/src/rust/src/x509/csr.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/csr.rs 2025-05-02 21:28:28.000000000 +0200 @@ -13,7 +13,8 @@ use crate::asn1::{encode_der_data, oid_to_py_oid, py_oid_to_oid}; use crate::backend::keys; use crate::error::{CryptographyError, CryptographyResult}; -use crate::x509::{certificate, common::cstr_from_literal, sign}; +use crate::x509::common::cstr_from_literal; +use crate::x509::{certificate, sign}; use crate::{exceptions, types, x509}; self_cell::self_cell!( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/extensions.rs new/cryptography-44.0.3/src/rust/src/x509/extensions.rs --- old/cryptography-44.0.2/src/rust/src/x509/extensions.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/extensions.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,14 +2,15 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use cryptography_x509::{common::Asn1Write, crl, extensions, oid}; +use cryptography_x509::common::Asn1Write; +use cryptography_x509::{crl, extensions, oid}; +use pyo3::pybacked::PyBackedStr; +use pyo3::types::PyAnyMethods; use crate::asn1::{py_oid_to_oid, py_uint_to_big_endian_bytes}; use crate::error::{CryptographyError, CryptographyResult}; use crate::x509::{certificate, sct}; use crate::{types, x509}; -use pyo3::pybacked::PyBackedStr; -use pyo3::types::PyAnyMethods; fn encode_general_subtrees<'a>( py: pyo3::Python<'_>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/ocsp_req.rs new/cryptography-44.0.3/src/rust/src/x509/ocsp_req.rs --- old/cryptography-44.0.2/src/rust/src/x509/ocsp_req.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/ocsp_req.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,11 +2,8 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use cryptography_x509::{ - common, - ocsp_req::{self, OCSPRequest as RawOCSPRequest}, - oid, -}; +use cryptography_x509::ocsp_req::{self, OCSPRequest as RawOCSPRequest}; +use cryptography_x509::{common, oid}; use pyo3::types::{PyAnyMethods, PyListMethods}; use crate::asn1::{big_byte_slice_to_py_int, oid_to_py_oid, py_uint_to_big_endian_bytes}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/ocsp_resp.rs new/cryptography-44.0.3/src/rust/src/x509/ocsp_resp.rs --- old/cryptography-44.0.2/src/rust/src/x509/ocsp_resp.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/ocsp_resp.rs 2025-05-02 21:28:28.000000000 +0200 @@ -4,12 +4,10 @@ use std::sync::Arc; -use cryptography_x509::ocsp_resp::SingleResponse; -use cryptography_x509::{ - common, - ocsp_resp::{self, OCSPResponse as RawOCSPResponse, SingleResponse as RawSingleResponse}, - oid, +use cryptography_x509::ocsp_resp::{ + self, OCSPResponse as RawOCSPResponse, SingleResponse, SingleResponse as RawSingleResponse, }; +use cryptography_x509::{common, oid}; use pyo3::types::{PyAnyMethods, PyBytesMethods, PyListMethods}; use crate::asn1::{big_byte_slice_to_py_int, oid_to_py_oid}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/src/rust/src/x509/verify.rs new/cryptography-44.0.3/src/rust/src/x509/verify.rs --- old/cryptography-44.0.2/src/rust/src/x509/verify.rs 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/src/rust/src/x509/verify.rs 2025-05-02 21:28:28.000000000 +0200 @@ -2,17 +2,16 @@ // 2.0, and the BSD License. See the LICENSE file in the root of this repository // for complete details. -use cryptography_x509::{ - certificate::Certificate, extensions::SubjectAlternativeName, oid::SUBJECT_ALTERNATIVE_NAME_OID, -}; -use cryptography_x509_verification::{ - ops::{CryptoOps, VerificationCertificate}, - policy::{Policy, Subject}, - trust_store::Store, - types::{DNSName, IPAddress}, -}; +use cryptography_x509::certificate::Certificate; +use cryptography_x509::extensions::SubjectAlternativeName; +use cryptography_x509::oid::SUBJECT_ALTERNATIVE_NAME_OID; +use cryptography_x509_verification::ops::{CryptoOps, VerificationCertificate}; +use cryptography_x509_verification::policy::{Policy, Subject}; +use cryptography_x509_verification::trust_store::Store; +use cryptography_x509_verification::types::{DNSName, IPAddress}; use pyo3::types::{PyAnyMethods, PyListMethods}; +use super::parse_general_names; use crate::backend::keys; use crate::error::{CryptographyError, CryptographyResult}; use crate::types; @@ -20,8 +19,6 @@ use crate::x509::common::{datetime_now, datetime_to_py, py_to_datetime}; use crate::x509::sign; -use super::parse_general_names; - pub(crate) struct PyCryptoOps {} impl CryptoOps for PyCryptoOps { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/hazmat/backends/test_openssl.py new/cryptography-44.0.3/tests/hazmat/backends/test_openssl.py --- old/cryptography-44.0.2/tests/hazmat/backends/test_openssl.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/hazmat/backends/test_openssl.py 2025-05-02 21:28:28.000000000 +0200 @@ -126,7 +126,10 @@ def test_rsa_padding_supported_pss(self): assert ( backend.rsa_padding_supported( - padding.PSS(mgf=padding.MGF1(hashes.SHA1()), salt_length=0) + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.DIGEST_LENGTH, + ) ) is True ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/hazmat/primitives/test_rsa.py new/cryptography-44.0.3/tests/hazmat/primitives/test_rsa.py --- old/cryptography-44.0.2/tests/hazmat/primitives/test_rsa.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/hazmat/primitives/test_rsa.py 2025-05-02 21:28:28.000000000 +0200 @@ -530,11 +530,20 @@ hashes.SHA1(), ) + @pytest.mark.supported( + only_if=lambda backend: backend.rsa_padding_supported( + padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), + salt_length=padding.PSS.MAX_LENGTH, + ) + ), + skip_message="Does not support PSS with these parameters.", + ) @pytest.mark.parametrize( "hash_alg", [hashes.SHA224(), hashes.SHA256(), hashes.SHA384(), hashes.SHA512()], ) - def test_pss_signing_sha2(self, rsa_key_2048, hash_alg, backend): + def test_pss_sha2_max_length(self, rsa_key_2048, hash_alg, backend): _skip_pss_hash_algorithm_unsupported(backend, hash_alg) private_key = rsa_key_2048 public_key = private_key.public_key() @@ -1067,7 +1076,7 @@ salt_length=padding.PSS.AUTO, ) ), - skip_message="Does not support PSS.", + skip_message="Does not support PSS with these parameters.", ) def test_pss_verify_auto_salt_length( self, rsa_key_2048: rsa.RSAPrivateKey, backend @@ -1207,7 +1216,7 @@ public_key = private_key.public_key() pss_padding = padding.PSS( mgf=padding.MGF1(algorithm=hashes.SHA256()), - salt_length=padding.PSS.MAX_LENGTH, + salt_length=padding.PSS.DIGEST_LENGTH, ) signature = private_key.sign(b"sign me", pss_padding, hashes.SHA256()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/wycheproof/test_rsa.py new/cryptography-44.0.3/tests/wycheproof/test_rsa.py --- old/cryptography-44.0.2/tests/wycheproof/test_rsa.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/wycheproof/test_rsa.py 2025-05-02 21:28:28.000000000 +0200 @@ -138,18 +138,7 @@ ) def test_rsa_pss_signature(backend, wycheproof): digest = _DIGESTS[wycheproof.testgroup["sha"]] - if backend._fips_enabled and isinstance(digest, hashes.SHA1): - pytest.skip("Invalid params for FIPS. SHA1 is disallowed") - - key = wycheproof.cache_value_to_group( - "cached_key", - lambda: serialization.load_der_public_key( - binascii.unhexlify(wycheproof.testgroup["keyDer"]), - ), - ) - assert isinstance(key, rsa.RSAPublicKey) mgf_digest = _DIGESTS[wycheproof.testgroup["mgfSha"]] - if digest is None or mgf_digest is None: pytest.skip( "PSS with digest={} and MGF digest={} not supported".format( @@ -157,6 +146,23 @@ wycheproof.testgroup["mgfSha"], ) ) + if backend._fips_enabled and ( + isinstance(digest, hashes.SHA1) + or isinstance(mgf_digest, hashes.SHA1) + # FIPS 186-4 only allows salt length == digest length for PSS + or wycheproof.testgroup["sLen"] != mgf_digest.digest_size + # inner MGF1 hash must match outer hash + or wycheproof.testgroup["sha"] != wycheproof.testgroup["mgfSha"] + ): + pytest.skip("Invalid params for FIPS") + + key = wycheproof.cache_value_to_group( + "cached_key", + lambda: serialization.load_der_public_key( + binascii.unhexlify(wycheproof.testgroup["keyDer"]), + ), + ) + assert isinstance(key, rsa.RSAPublicKey) if wycheproof.valid or wycheproof.acceptable: key.verify( @@ -202,6 +208,11 @@ "rsa_oaep_misc_test.json", ) def test_rsa_oaep_encryption(backend, wycheproof): + if backend._fips_enabled and wycheproof.has_flag("SmallIntegerCiphertext"): + pytest.skip( + "Small integer ciphertexts are rejected in OpenSSL 3.5 FIPS" + ) + digest = _DIGESTS[wycheproof.testgroup["sha"]] mgf_digest = _DIGESTS[wycheproof.testgroup["mgfSha"]] assert digest is not None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/wycheproof/test_x25519.py new/cryptography-44.0.3/tests/wycheproof/test_x25519.py --- old/cryptography-44.0.2/tests/wycheproof/test_x25519.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/wycheproof/test_x25519.py 2025-05-02 21:28:28.000000000 +0200 @@ -20,10 +20,8 @@ ) @wycheproof_tests("x25519_test.json") def test_x25519(backend, wycheproof): - assert set(wycheproof.testgroup.items()) == { - ("curve", "curve25519"), - ("type", "XdhComp"), - } + assert wycheproof.testgroup["curve"] == "curve25519" + assert wycheproof.testgroup["type"] == "XdhComp" private_key = X25519PrivateKey.from_private_bytes( binascii.unhexlify(wycheproof.testcase["private"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/wycheproof/test_x448.py new/cryptography-44.0.3/tests/wycheproof/test_x448.py --- old/cryptography-44.0.2/tests/wycheproof/test_x448.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/wycheproof/test_x448.py 2025-05-02 21:28:28.000000000 +0200 @@ -20,10 +20,8 @@ ) @wycheproof_tests("x448_test.json") def test_x448(backend, wycheproof): - assert set(wycheproof.testgroup.items()) == { - ("curve", "curve448"), - ("type", "XdhComp"), - } + assert wycheproof.testgroup["curve"] == "curve448" + assert wycheproof.testgroup["type"] == "XdhComp" private_key = X448PrivateKey.from_private_bytes( binascii.unhexlify(wycheproof.testcase["private"]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/cryptography-44.0.2/tests/x509/test_x509.py new/cryptography-44.0.3/tests/x509/test_x509.py --- old/cryptography-44.0.2/tests/x509/test_x509.py 2025-03-02 00:53:51.000000000 +0100 +++ new/cryptography-44.0.3/tests/x509/test_x509.py 2025-05-02 21:28:28.000000000 +0200 @@ -852,7 +852,7 @@ assert isinstance(pss, padding.PSS) assert isinstance(pss._mgf, padding.MGF1) assert isinstance(pss._mgf._algorithm, hashes.SHA256) - assert pss._salt_length == 222 + assert pss._salt_length == 32 assert isinstance(cert.signature_hash_algorithm, hashes.SHA256) pub_key.verify( cert.signature, @@ -2855,6 +2855,11 @@ computed_len, backend, ): + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len + ) + if not backend.rsa_padding_supported(pss): + pytest.skip("PSS padding with these parameters not supported") builder = ( x509.CertificateBuilder() .subject_name( @@ -2868,9 +2873,6 @@ .not_valid_before(datetime.datetime(2020, 1, 1)) .not_valid_after(datetime.datetime(2038, 1, 1)) ) - pss = padding.PSS( - mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len - ) cert = builder.sign(rsa_key_2048, hashes.SHA256(), rsa_padding=pss) assert isinstance(cert.signature_algorithm_parameters, padding.PSS) assert cert.signature_algorithm_parameters._salt_length == computed_len @@ -5286,6 +5288,12 @@ computed_len, backend, ): + pss = padding.PSS( + mgf=padding.MGF1(hashes.SHA256()), salt_length=padding_len + ) + if not backend.rsa_padding_supported(pss): + pytest.skip("PSS padding with these parameters not supported") + builder = x509.CertificateSigningRequestBuilder().subject_name( x509.Name([x509.NameAttribute(NameOID.COUNTRY_NAME, "US")]) ) ++++++ no-pytest_benchmark.patch ++++++ --- /var/tmp/diff_new_pack.489Zyw/_old 2025-05-13 20:12:08.883655040 +0200 +++ /var/tmp/diff_new_pack.489Zyw/_new 2025-05-13 20:12:08.915656383 +0200 @@ -1,10 +1,10 @@ -Index: cryptography-44.0.2/pyproject.toml +Index: cryptography-44.0.3/pyproject.toml =================================================================== ---- cryptography-44.0.2.orig/pyproject.toml -+++ cryptography-44.0.2/pyproject.toml +--- cryptography-44.0.3.orig/pyproject.toml ++++ cryptography-44.0.3/pyproject.toml @@ -67,8 +67,6 @@ nox = ["nox >=2024.04.15", "nox[uv] >=20 test = [ - "cryptography_vectors==44.0.2", + "cryptography_vectors==44.0.3", "pytest >=7.4.0", - "pytest-benchmark >=4.0", - "pytest-cov >=2.10.1", @@ -54,10 +54,10 @@ [tool.ruff] line-length = 79 -Index: cryptography-44.0.2/tests/bench/test_aead.py +Index: cryptography-44.0.3/tests/bench/test_aead.py =================================================================== ---- cryptography-44.0.2.orig/tests/bench/test_aead.py -+++ cryptography-44.0.2/tests/bench/test_aead.py +--- cryptography-44.0.3.orig/tests/bench/test_aead.py ++++ cryptography-44.0.3/tests/bench/test_aead.py @@ -26,84 +26,84 @@ def _aead_supported(cls): not _aead_supported(ChaCha20Poly1305), reason="Requires OpenSSL with ChaCha20Poly1305 support", @@ -163,10 +163,10 @@ ct = aes.encrypt(b"\x00" * 12, b"hello world plaintext", None) - benchmark(aes.decrypt, b"\x00" * 12, ct, None) + aes.decrypt(b"\x00" * 12, ct, None) -Index: cryptography-44.0.2/tests/bench/test_ec_load.py +Index: cryptography-44.0.3/tests/bench/test_ec_load.py =================================================================== ---- cryptography-44.0.2.orig/tests/bench/test_ec_load.py -+++ cryptography-44.0.2/tests/bench/test_ec_load.py +--- cryptography-44.0.3.orig/tests/bench/test_ec_load.py ++++ cryptography-44.0.3/tests/bench/test_ec_load.py @@ -5,9 +5,9 @@ from ..hazmat.primitives.fixtures_ec import EC_KEY_SECP256R1 @@ -181,10 +181,10 @@ - benchmark(EC_KEY_SECP256R1.private_key) +def test_load_ec_private_numbers(): + EC_KEY_SECP256R1.private_key() -Index: cryptography-44.0.2/tests/bench/test_hashes.py +Index: cryptography-44.0.3/tests/bench/test_hashes.py =================================================================== ---- cryptography-44.0.2.orig/tests/bench/test_hashes.py -+++ cryptography-44.0.2/tests/bench/test_hashes.py +--- cryptography-44.0.3.orig/tests/bench/test_hashes.py ++++ cryptography-44.0.3/tests/bench/test_hashes.py @@ -5,10 +5,10 @@ from cryptography.hazmat.primitives import hashes @@ -198,10 +198,10 @@ - benchmark(bench) + bench() -Index: cryptography-44.0.2/tests/bench/test_hmac.py +Index: cryptography-44.0.3/tests/bench/test_hmac.py =================================================================== ---- cryptography-44.0.2.orig/tests/bench/test_hmac.py -+++ cryptography-44.0.2/tests/bench/test_hmac.py +--- cryptography-44.0.3.orig/tests/bench/test_hmac.py ++++ cryptography-44.0.3/tests/bench/test_hmac.py @@ -5,10 +5,10 @@ from cryptography.hazmat.primitives import hashes, hmac @@ -215,10 +215,10 @@ - benchmark(bench) + bench() -Index: cryptography-44.0.2/tests/bench/test_x509.py +Index: cryptography-44.0.3/tests/bench/test_x509.py =================================================================== ---- cryptography-44.0.2.orig/tests/bench/test_x509.py -+++ cryptography-44.0.2/tests/bench/test_x509.py +--- cryptography-44.0.3.orig/tests/bench/test_x509.py ++++ cryptography-44.0.3/tests/bench/test_x509.py @@ -13,40 +13,40 @@ from cryptography import x509 from ..utils import load_vectors_from_file ++++++ vendor.tar.zst ++++++ ++++ 548092 lines of diff (skipped)