cryptography 45.0.2__tar.gz → 45.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cryptography-45.0.2 → cryptography-45.0.3}/CHANGELOG.rst +28 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/PKG-INFO +2 -2
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/test-vectors.rst +5 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/decrepit/ciphers.rst +1 -1
- {cryptography-45.0.2 → cryptography-45.0.3}/pyproject.toml +2 -2
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/__about__.py +1 -1
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/decrepit/ciphers/algorithms.py +5 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-crypto/src/pbkdf1.rs +35 -1
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/pkcs8.rs +41 -7
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/common.rs +15 -5
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/oid.rs +3 -2
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/cipher_registry.rs +3 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/pkcs12.rs +7 -7
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/types.rs +2 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_serialization.py +30 -2
- {cryptography-45.0.2 → cryptography-45.0.3}/.gitattributes +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/.gitignore +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/CONTRIBUTING.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/Cargo.lock +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/LICENSE +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/LICENSE.APACHE +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/LICENSE.BSD +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/README.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/Makefile +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/_ext/cryptography-docs.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/_ext/linkcode_res.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/_static/.keep +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/api-stability.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/changelog.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/community.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/conf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/c-bindings.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/aes-192-gcm-siv/generate_aes192gcmsiv.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/aes-192-gcm-siv/verify-aes192gcmsiv/src/main.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/aes-192-gcm-siv.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/arc4/generate_arc4.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/arc4/verify_arc4.go +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/arc4.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/cast5/generate_cast5.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/cast5/verify_cast5.go +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/cast5.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/chacha20/generate_chacha20_overflow.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/chacha20/verify_chacha20_overflow.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/chacha20.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/hkdf/generate_hkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/hkdf/verify_hkdf.go +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/hkdf.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/idea/generate_idea.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/idea/verify_idea.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/idea.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rc2/genrc2.go +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rc2/go.mod +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rc2/rc2/rc2.go +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rc2.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rsa-oaep-sha2/VerifyRSAOAEPSHA2.java +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rsa-oaep-sha2/generate_rsa_oaep_sha2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rsa-oaep-sha2.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/secp256k1/generate_secp256k1.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/secp256k1/verify_secp256k1.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/secp256k1.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/seed/generate_seed.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/seed/verify_seed.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/seed.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/getting-started.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/reviewing-patches.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/development/submitting-patches.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/doing-a-release.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/exceptions.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/faq.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/fernet.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/glossary.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/decrepit/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/aead.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/cloudhsm.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/dh.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/dsa.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/ec.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/ed25519.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/ed448.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/rsa.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/serialization.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/utils.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/x25519.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/asymmetric/x448.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/constant-time.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/cryptographic-hashes.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/key-derivation-functions.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/keywrap.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/mac/cmac.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/mac/hmac.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/mac/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/mac/poly1305.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/padding.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/symmetric-encryption.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/hazmat/primitives/twofactor.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/installation.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/limitations.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/make.bat +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/openssl.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/random-numbers.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/security.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/spelling_wordlist.txt +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/certificate-transparency.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/index.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/ocsp.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/reference.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/tutorial.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/docs/x509/verification.rst +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/noxfile.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/release.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/build_openssl.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/asn1.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/bignum.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/bio.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/crypto.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/cryptography.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/dh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/dsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/ec.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/engine.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/err.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/evp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/nid.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/objects.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/opensslv.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/pem.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/rand.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/rsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/ssl.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/x509.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/x509_vfy.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/x509name.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/openssl/x509v3.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/_cffi_src/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/exceptions.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/fernet.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/_oid.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/backends/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/backends/openssl/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/backends/openssl/backend.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/__init__.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/_openssl.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/asn1.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/exceptions.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/ocsp.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/aead.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/cmac.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/dh.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/dsa.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/ec.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/ed25519.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/keys.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/pkcs12.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/pkcs7.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/test_support.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/_rust/x509.pyi +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/openssl/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/openssl/_conditional.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/bindings/openssl/binding.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/decrepit/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/decrepit/ciphers/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/_asymmetric.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/_cipheralgorithm.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/_serialization.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/dh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/dsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/ec.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/ed25519.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/ed448.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/padding.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/rsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/types.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/x25519.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/asymmetric/x448.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/ciphers/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/ciphers/aead.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/ciphers/algorithms.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/ciphers/base.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/ciphers/modes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/cmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/constant_time.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/hashes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/hmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/argon2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/concatkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/hkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/kbkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/pbkdf2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/scrypt.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/kdf/x963kdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/keywrap.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/padding.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/poly1305.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/serialization/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/serialization/base.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/serialization/pkcs12.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/serialization/pkcs7.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/serialization/ssh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/twofactor/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/twofactor/hotp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/hazmat/primitives/twofactor/totp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/py.typed +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/base.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/certificate_transparency.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/extensions.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/general_name.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/name.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/ocsp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/oid.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/cryptography/x509/verification.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/build.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-cffi/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-cffi/build.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-cffi/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-crypto/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-crypto/src/encoding.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-crypto/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-crypto/src/pkcs12.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-keepalive/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-keepalive/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/build.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/dsa.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/ec.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/rsa.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-key-parsing/src/spki.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/build.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/aead.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/cmac.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/fips.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/hmac.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-openssl/src/poly1305.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/certificate.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/crl.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/csr.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/extensions.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/name.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/ocsp_req.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/ocsp_resp.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/pkcs12.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/pkcs7.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509/src/pkcs8.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/Cargo.toml +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/certificate.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/ops.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/policy/extension.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/policy/mod.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/trust_store.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/cryptography-x509-verification/src/types.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/asn1.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/aead.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/ciphers.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/cmac.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/dh.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/dsa.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/ec.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/ed25519.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/ed448.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/hashes.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/hmac.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/kdf.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/keys.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/mod.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/poly1305.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/rsa.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/utils.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/x25519.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/backend/x448.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/buf.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/error.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/exceptions.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/lib.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/oid.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/padding.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/pkcs7.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/test_support.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/utils.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/certificate.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/common.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/crl.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/csr.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/extensions.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/mod.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/ocsp.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/ocsp_req.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/ocsp_resp.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/sct.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/sign.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/verify/extension_policy.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/verify/mod.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/src/rust/src/x509/verify/policy.rs +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_aead.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_ec_load.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_fernet.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_hashes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_hmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/bench/test_x509.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/conftest.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/deprecated_module.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/doubles.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/backends/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/backends/test_openssl.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/bindings/test_openssl.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/decrepit/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/decrepit/test_3des.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/decrepit/test_algorithms.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/decrepit/test_arc4.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/decrepit/test_rc2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/fixtures_dh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/fixtures_dsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/fixtures_ec.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/fixtures_rsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_aead.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_aes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_aes_gcm.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_argon2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_asym_utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_block.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_camellia.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_chacha20.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_ciphers.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_cmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_concatkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_constant_time.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_dh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_dsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_ec.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_ed25519.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_ed448.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hash_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hashes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hkdf_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_hmac_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_kbkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_kbkdf_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_keywrap.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_padding.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_pbkdf2hmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_pbkdf2hmac_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_pkcs12.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_pkcs7.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_poly1305.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_rsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_scrypt.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_sm4.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_ssh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_x25519.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_x448.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_x963_vectors.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_x963kdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/test_xofhash.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/twofactor/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/twofactor/test_hotp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/twofactor/test_totp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/primitives/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/hazmat/test_oid.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/test_cryptography_utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/test_fernet.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/test_meta.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/test_utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/test_warnings.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_aes.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_chacha20poly1305.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_cmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_dsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_ecdh.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_ecdsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_eddsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_hkdf.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_hmac.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_keywrap.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_pbkdf2.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_rsa.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_x25519.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/test_x448.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/wycheproof/utils.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_name.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_ocsp.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_x509.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_x509_crlbuilder.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_x509_ext.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/test_x509_revokedcertbuilder.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/verification/__init__.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/verification/test_limbo.py +0 -0
- {cryptography-45.0.2 → cryptography-45.0.3}/tests/x509/verification/test_verification.py +0 -0
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
.. _v45-0-3:
|
|
5
|
+
|
|
6
|
+
45.0.3 - 2025-05-25
|
|
7
|
+
~~~~~~~~~~~~~~~~~~~
|
|
8
|
+
|
|
9
|
+
* Fixed decrypting PKCS#8 files encrypted with long salts (this impacts keys
|
|
10
|
+
encrypted by Bouncy Castle).
|
|
11
|
+
* Fixed decrypting PKCS#8 files encrypted with DES-CBC-MD5. While wildly
|
|
12
|
+
insecure, this remains prevalent.
|
|
13
|
+
|
|
4
14
|
.. _v45-0-2:
|
|
5
15
|
|
|
6
16
|
45.0.2 - 2025-05-17
|
|
@@ -37,6 +47,24 @@ Changelog
|
|
|
37
47
|
provided (previously no exception was raised), and raises a ``TypeError`` if
|
|
38
48
|
the key is encrypted but no password is provided (previously a ``ValueError``
|
|
39
49
|
was raised).
|
|
50
|
+
* Added ``__copy__`` to the
|
|
51
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`,
|
|
52
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`,
|
|
53
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PublicKey`,
|
|
54
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ed25519.Ed25519PrivateKey`,
|
|
55
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PublicKey`,
|
|
56
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.ed448.Ed448PrivateKey`,
|
|
57
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PublicKey`,
|
|
58
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.x25519.X25519PrivateKey`,
|
|
59
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PublicKey`,
|
|
60
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.x448.X448PrivateKey`,
|
|
61
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`,
|
|
62
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`,
|
|
63
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`,
|
|
64
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`,
|
|
65
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`, and
|
|
66
|
+
:class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey`
|
|
67
|
+
abstract base classes.
|
|
40
68
|
* We significantly refactored how private key loading (
|
|
41
69
|
:func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`
|
|
42
70
|
and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cryptography
|
|
3
|
-
Version: 45.0.
|
|
3
|
+
Version: 45.0.3
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: Natural Language :: English
|
|
@@ -26,7 +26,7 @@ Requires-Dist: cffi>=1.14 ; platform_python_implementation != 'PyPy'
|
|
|
26
26
|
Requires-Dist: bcrypt>=3.1.5 ; extra == 'ssh'
|
|
27
27
|
Requires-Dist: nox>=2024.4.15 ; extra == 'nox'
|
|
28
28
|
Requires-Dist: nox[uv]>=2024.3.2 ; python_full_version >= '3.8' and extra == 'nox'
|
|
29
|
-
Requires-Dist: cryptography-vectors==45.0.
|
|
29
|
+
Requires-Dist: cryptography-vectors==45.0.3 ; extra == 'test'
|
|
30
30
|
Requires-Dist: pytest>=7.4.0 ; extra == 'test'
|
|
31
31
|
Requires-Dist: pytest-benchmark>=4.0 ; extra == 'test'
|
|
32
32
|
Requires-Dist: pytest-cov>=2.10.1 ; extra == 'test'
|
|
@@ -285,6 +285,11 @@ Custom asymmetric vectors
|
|
|
285
285
|
RSA key in an encrypted PEM with a malformed IV (not valid hex).
|
|
286
286
|
* ``asymmetric/Traditional_OpenSSL_Serialization/key1-short-iv.pem`` - An
|
|
287
287
|
RSA key in an encrypted PEM with an IV that's too short (less than 8 bytes).
|
|
288
|
+
* ``asymmetric/PKCS8/rsa-pbewithmd5anddescbc.pem`` - A PKCS8 encoded RSA key
|
|
289
|
+
encrypted using the ``pbeWithMD5AndDES-CBC`` algorithm with the password
|
|
290
|
+
``hunter2``.
|
|
291
|
+
* ``asymmetric/PKCS8/rsa-pbe-3des-long-salt.pem`` - A PKCS8 encoded RSA key
|
|
292
|
+
encrypted with a 20 byte salt with the password ``password``.
|
|
288
293
|
|
|
289
294
|
Key exchange
|
|
290
295
|
~~~~~~~~~~~~
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
Decrepit Symmetric algorithms
|
|
5
5
|
=============================
|
|
6
6
|
|
|
7
|
-
.. module:: cryptography.hazmat.decrepit.ciphers
|
|
7
|
+
.. module:: cryptography.hazmat.decrepit.ciphers.algorithms
|
|
8
8
|
|
|
9
9
|
This module contains decrepit symmetric encryption algorithms. These
|
|
10
10
|
are algorithms that should not be used unless necessary for backwards
|
|
@@ -15,7 +15,7 @@ build-backend = "maturin"
|
|
|
15
15
|
|
|
16
16
|
[project]
|
|
17
17
|
name = "cryptography"
|
|
18
|
-
version = "45.0.
|
|
18
|
+
version = "45.0.3"
|
|
19
19
|
authors = [
|
|
20
20
|
{ name = "The Python Cryptographic Authority and individual contributors", email = "cryptography-dev@python.org" },
|
|
21
21
|
]
|
|
@@ -65,7 +65,7 @@ ssh = ["bcrypt >=3.1.5"]
|
|
|
65
65
|
# All the following are used for our own testing.
|
|
66
66
|
nox = ["nox >=2024.04.15", "nox[uv] >=2024.03.02; python_version >= '3.8'"]
|
|
67
67
|
test = [
|
|
68
|
-
"cryptography_vectors==45.0.
|
|
68
|
+
"cryptography_vectors==45.0.3",
|
|
69
69
|
"pytest >=7.4.0",
|
|
70
70
|
"pytest-benchmark >=4.0",
|
|
71
71
|
"pytest-cov >=2.10.1",
|
|
@@ -30,9 +30,37 @@ pub fn openssl_kdf(
|
|
|
30
30
|
Ok(key)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/// PBKDF1 as defined in RFC 2898 for PKCS#5 v1.5 PBE algorithms
|
|
34
|
+
pub fn pbkdf1(
|
|
35
|
+
hash_alg: openssl::hash::MessageDigest,
|
|
36
|
+
password: &[u8],
|
|
37
|
+
salt: [u8; 8],
|
|
38
|
+
iterations: u64,
|
|
39
|
+
length: usize,
|
|
40
|
+
) -> Result<Vec<u8>, openssl::error::ErrorStack> {
|
|
41
|
+
if length > hash_alg.size() || iterations == 0 {
|
|
42
|
+
return Err(openssl::error::ErrorStack::get());
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let mut h = openssl::hash::Hasher::new(hash_alg)?;
|
|
46
|
+
h.update(password)?;
|
|
47
|
+
h.update(&salt)?;
|
|
48
|
+
let mut t = h.finish()?;
|
|
49
|
+
|
|
50
|
+
// Apply hash function for specified iterations
|
|
51
|
+
for _ in 1..iterations {
|
|
52
|
+
let mut h = openssl::hash::Hasher::new(hash_alg)?;
|
|
53
|
+
h.update(&t)?;
|
|
54
|
+
t = h.finish()?;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Return the first `length` bytes
|
|
58
|
+
Ok(t[..length].to_vec())
|
|
59
|
+
}
|
|
60
|
+
|
|
33
61
|
#[cfg(test)]
|
|
34
62
|
mod tests {
|
|
35
|
-
use super::openssl_kdf;
|
|
63
|
+
use super::{openssl_kdf, pbkdf1};
|
|
36
64
|
|
|
37
65
|
#[test]
|
|
38
66
|
fn test_openssl_kdf() {
|
|
@@ -98,4 +126,10 @@ mod tests {
|
|
|
98
126
|
assert_eq!(key, expected);
|
|
99
127
|
}
|
|
100
128
|
}
|
|
129
|
+
|
|
130
|
+
#[test]
|
|
131
|
+
fn test_pbkdf1() {
|
|
132
|
+
assert!(pbkdf1(openssl::hash::MessageDigest::md5(), b"abc", [0; 8], 1, 20).is_err());
|
|
133
|
+
assert!(pbkdf1(openssl::hash::MessageDigest::md5(), b"abc", [0; 8], 0, 8).is_err());
|
|
134
|
+
}
|
|
101
135
|
}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
// 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
|
3
3
|
// for complete details.
|
|
4
4
|
|
|
5
|
-
use cryptography_x509::common::{
|
|
5
|
+
use cryptography_x509::common::{
|
|
6
|
+
AlgorithmIdentifier, AlgorithmParameters, PbeParams, Pkcs12PbeParams,
|
|
7
|
+
};
|
|
6
8
|
use cryptography_x509::csr::Attributes;
|
|
7
9
|
use cryptography_x509::pkcs8::EncryptedPrivateKeyInfo;
|
|
8
10
|
|
|
@@ -122,19 +124,19 @@ pub fn parse_private_key(
|
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
|
|
125
|
-
fn
|
|
127
|
+
fn pkcs12_pbe_decrypt(
|
|
126
128
|
data: &[u8],
|
|
127
129
|
password: &[u8],
|
|
128
130
|
cipher: openssl::symm::Cipher,
|
|
129
131
|
hash: openssl::hash::MessageDigest,
|
|
130
|
-
params: &
|
|
132
|
+
params: &Pkcs12PbeParams<'_>,
|
|
131
133
|
) -> KeyParsingResult<Vec<u8>> {
|
|
132
134
|
let Ok(password) = std::str::from_utf8(password) else {
|
|
133
135
|
return Err(KeyParsingError::IncorrectPassword);
|
|
134
136
|
};
|
|
135
137
|
let key = cryptography_crypto::pkcs12::kdf(
|
|
136
138
|
password,
|
|
137
|
-
|
|
139
|
+
params.salt,
|
|
138
140
|
cryptography_crypto::pkcs12::KDF_ENCRYPTION_KEY_ID,
|
|
139
141
|
params.iterations,
|
|
140
142
|
cipher.key_len(),
|
|
@@ -142,7 +144,7 @@ fn pbes1_decrypt(
|
|
|
142
144
|
)?;
|
|
143
145
|
let iv = cryptography_crypto::pkcs12::kdf(
|
|
144
146
|
password,
|
|
145
|
-
|
|
147
|
+
params.salt,
|
|
146
148
|
cryptography_crypto::pkcs12::KDF_IV_ID,
|
|
147
149
|
params.iterations,
|
|
148
150
|
cipher.block_size(),
|
|
@@ -153,6 +155,31 @@ fn pbes1_decrypt(
|
|
|
153
155
|
.map_err(|_| KeyParsingError::IncorrectPassword)
|
|
154
156
|
}
|
|
155
157
|
|
|
158
|
+
fn pkcs5_pbe_decrypt(
|
|
159
|
+
data: &[u8],
|
|
160
|
+
password: &[u8],
|
|
161
|
+
cipher: openssl::symm::Cipher,
|
|
162
|
+
hash: openssl::hash::MessageDigest,
|
|
163
|
+
params: &PbeParams,
|
|
164
|
+
) -> KeyParsingResult<Vec<u8>> {
|
|
165
|
+
// PKCS#5 v1.5 uses PBKDF1 with iteration count
|
|
166
|
+
// For PKCS#5 PBE, we need key + IV length
|
|
167
|
+
let key_iv_len = cipher.key_len() + cipher.iv_len().unwrap();
|
|
168
|
+
let key_iv = cryptography_crypto::pbkdf1::pbkdf1(
|
|
169
|
+
hash,
|
|
170
|
+
password,
|
|
171
|
+
params.salt,
|
|
172
|
+
params.iterations,
|
|
173
|
+
key_iv_len,
|
|
174
|
+
)?;
|
|
175
|
+
|
|
176
|
+
let key = &key_iv[..cipher.key_len()];
|
|
177
|
+
let iv = &key_iv[cipher.key_len()..];
|
|
178
|
+
|
|
179
|
+
openssl::symm::decrypt(cipher, key, Some(iv), data)
|
|
180
|
+
.map_err(|_| KeyParsingError::IncorrectPassword)
|
|
181
|
+
}
|
|
182
|
+
|
|
156
183
|
pub fn parse_encrypted_private_key(
|
|
157
184
|
data: &[u8],
|
|
158
185
|
password: Option<&[u8]>,
|
|
@@ -164,7 +191,14 @@ pub fn parse_encrypted_private_key(
|
|
|
164
191
|
};
|
|
165
192
|
|
|
166
193
|
let plaintext = match epki.encryption_algorithm.params {
|
|
167
|
-
AlgorithmParameters::
|
|
194
|
+
AlgorithmParameters::PbeWithMd5AndDesCbc(params) => pkcs5_pbe_decrypt(
|
|
195
|
+
epki.encrypted_data,
|
|
196
|
+
password,
|
|
197
|
+
openssl::symm::Cipher::des_cbc(),
|
|
198
|
+
openssl::hash::MessageDigest::md5(),
|
|
199
|
+
¶ms,
|
|
200
|
+
)?,
|
|
201
|
+
AlgorithmParameters::PbeWithShaAnd3KeyTripleDesCbc(params) => pkcs12_pbe_decrypt(
|
|
168
202
|
epki.encrypted_data,
|
|
169
203
|
password,
|
|
170
204
|
openssl::symm::Cipher::des_ede3_cbc(),
|
|
@@ -172,7 +206,7 @@ pub fn parse_encrypted_private_key(
|
|
|
172
206
|
¶ms,
|
|
173
207
|
)?,
|
|
174
208
|
#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC2"))]
|
|
175
|
-
AlgorithmParameters::
|
|
209
|
+
AlgorithmParameters::PbeWithShaAnd40BitRc2Cbc(params) => pkcs12_pbe_decrypt(
|
|
176
210
|
epki.encrypted_data,
|
|
177
211
|
password,
|
|
178
212
|
openssl::symm::Cipher::rc2_40_cbc(),
|
|
@@ -165,10 +165,12 @@ pub enum AlgorithmParameters<'a> {
|
|
|
165
165
|
#[defined_by(oid::RC2_CBC)]
|
|
166
166
|
Rc2Cbc(Rc2CbcParams),
|
|
167
167
|
|
|
168
|
-
#[defined_by(oid::
|
|
169
|
-
|
|
170
|
-
#[defined_by(oid::
|
|
171
|
-
|
|
168
|
+
#[defined_by(oid::PBE_WITH_MD5_AND_DES_CBC)]
|
|
169
|
+
PbeWithMd5AndDesCbc(PbeParams),
|
|
170
|
+
#[defined_by(oid::PBE_WITH_SHA_AND_3KEY_TRIPLEDES_CBC)]
|
|
171
|
+
PbeWithShaAnd3KeyTripleDesCbc(Pkcs12PbeParams<'a>),
|
|
172
|
+
#[defined_by(oid::PBE_WITH_SHA_AND_40_BIT_RC2_CBC)]
|
|
173
|
+
PbeWithShaAnd40BitRc2Cbc(Pkcs12PbeParams<'a>),
|
|
172
174
|
|
|
173
175
|
#[default]
|
|
174
176
|
Other(asn1::ObjectIdentifier, Option<asn1::Tlv<'a>>),
|
|
@@ -529,12 +531,20 @@ pub struct ScryptParams<'a> {
|
|
|
529
531
|
pub key_length: Option<u32>,
|
|
530
532
|
}
|
|
531
533
|
|
|
534
|
+
// RFC 8018 Appendix A.3
|
|
532
535
|
#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)]
|
|
533
|
-
pub struct
|
|
536
|
+
pub struct PbeParams {
|
|
534
537
|
pub salt: [u8; 8],
|
|
535
538
|
pub iterations: u64,
|
|
536
539
|
}
|
|
537
540
|
|
|
541
|
+
// From RFC 7202 Appendix C
|
|
542
|
+
#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)]
|
|
543
|
+
pub struct Pkcs12PbeParams<'a> {
|
|
544
|
+
pub salt: &'a [u8],
|
|
545
|
+
pub iterations: u64,
|
|
546
|
+
}
|
|
547
|
+
|
|
538
548
|
#[derive(asn1::Asn1Read, asn1::Asn1Write, PartialEq, Eq, Hash, Clone, Debug)]
|
|
539
549
|
pub struct Rc2CbcParams {
|
|
540
550
|
pub version: Option<u32>,
|
|
@@ -152,11 +152,12 @@ pub const EKU_CERTIFICATE_TRANSPARENCY_OID: asn1::ObjectIdentifier =
|
|
|
152
152
|
|
|
153
153
|
pub const PBES2_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 13);
|
|
154
154
|
pub const PBKDF2_OID: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 12);
|
|
155
|
+
pub const PBE_WITH_MD5_AND_DES_CBC: asn1::ObjectIdentifier = asn1::oid!(1, 2, 840, 113549, 1, 5, 3);
|
|
155
156
|
pub const SCRYPT_OID: asn1::ObjectIdentifier = asn1::oid!(1, 3, 6, 1, 4, 1, 11591, 4, 11);
|
|
156
157
|
|
|
157
|
-
pub const
|
|
158
|
+
pub const PBE_WITH_SHA_AND_3KEY_TRIPLEDES_CBC: asn1::ObjectIdentifier =
|
|
158
159
|
asn1::oid!(1, 2, 840, 113549, 1, 12, 1, 3);
|
|
159
|
-
pub const
|
|
160
|
+
pub const PBE_WITH_SHA_AND_40_BIT_RC2_CBC: asn1::ObjectIdentifier =
|
|
160
161
|
asn1::oid!(1, 2, 840, 113549, 1, 12, 1, 6);
|
|
161
162
|
|
|
162
163
|
pub const AES_128_CBC_OID: asn1::ObjectIdentifier = asn1::oid!(2, 16, 840, 1, 101, 3, 4, 1, 2);
|
|
@@ -123,6 +123,7 @@ fn get_cipher_registry(
|
|
|
123
123
|
let aes128 = types::AES128.get(py)?;
|
|
124
124
|
let aes256 = types::AES256.get(py)?;
|
|
125
125
|
let triple_des = types::TRIPLE_DES.get(py)?;
|
|
126
|
+
let des = types::DES.get(py)?;
|
|
126
127
|
#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_CAMELLIA"))]
|
|
127
128
|
let camellia = types::CAMELLIA.get(py)?;
|
|
128
129
|
#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_BF"))]
|
|
@@ -306,6 +307,8 @@ fn get_cipher_registry(
|
|
|
306
307
|
#[cfg(not(CRYPTOGRAPHY_OSSLCONF = "OPENSSL_NO_RC4"))]
|
|
307
308
|
m.add(&arc4, none_type.as_any(), None, Cipher::rc4())?;
|
|
308
309
|
|
|
310
|
+
m.add(&des, &cbc, Some(64), Cipher::des_cbc())?;
|
|
311
|
+
|
|
309
312
|
if let Some(rc2_cbc) = Cipher::from_nid(openssl::nid::Nid::RC2_CBC) {
|
|
310
313
|
m.add(&rc2, &cbc, Some(128), rc2_cbc)?;
|
|
311
314
|
}
|
|
@@ -112,14 +112,14 @@ pub(crate) fn symmetric_encrypt(
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
enum EncryptionAlgorithm {
|
|
115
|
-
|
|
115
|
+
PBESHA1And3KeyTripleDESCBC,
|
|
116
116
|
PBESv2SHA256AndAES256CBC,
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
impl EncryptionAlgorithm {
|
|
120
120
|
fn salt_length(&self) -> usize {
|
|
121
121
|
match self {
|
|
122
|
-
EncryptionAlgorithm::
|
|
122
|
+
EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => 8,
|
|
123
123
|
EncryptionAlgorithm::PBESv2SHA256AndAES256CBC => 16,
|
|
124
124
|
}
|
|
125
125
|
}
|
|
@@ -131,11 +131,11 @@ impl EncryptionAlgorithm {
|
|
|
131
131
|
iv: &'a [u8],
|
|
132
132
|
) -> cryptography_x509::common::AlgorithmIdentifier<'a> {
|
|
133
133
|
match self {
|
|
134
|
-
EncryptionAlgorithm::
|
|
134
|
+
EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => {
|
|
135
135
|
cryptography_x509::common::AlgorithmIdentifier {
|
|
136
136
|
oid: asn1::DefinedByMarker::marker(),
|
|
137
|
-
params: cryptography_x509::common::AlgorithmParameters::
|
|
138
|
-
salt
|
|
137
|
+
params: cryptography_x509::common::AlgorithmParameters::PbeWithShaAnd3KeyTripleDesCbc(cryptography_x509::common::Pkcs12PbeParams{
|
|
138
|
+
salt,
|
|
139
139
|
iterations: cipher_kdf_iter,
|
|
140
140
|
}),
|
|
141
141
|
}
|
|
@@ -189,7 +189,7 @@ impl EncryptionAlgorithm {
|
|
|
189
189
|
data: &[u8],
|
|
190
190
|
) -> CryptographyResult<Vec<u8>> {
|
|
191
191
|
match self {
|
|
192
|
-
EncryptionAlgorithm::
|
|
192
|
+
EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC => {
|
|
193
193
|
let key = cryptography_crypto::pkcs12::kdf(
|
|
194
194
|
password,
|
|
195
195
|
salt,
|
|
@@ -341,7 +341,7 @@ fn decode_encryption_algorithm<'a>(
|
|
|
341
341
|
let key_cert_alg =
|
|
342
342
|
encryption_algorithm.getattr(pyo3::intern!(py, "_key_cert_algorithm"))?;
|
|
343
343
|
let cipher = if key_cert_alg.is(&types::PBES_PBESV1SHA1AND3KEYTRIPLEDESCBC.get(py)?) {
|
|
344
|
-
EncryptionAlgorithm::
|
|
344
|
+
EncryptionAlgorithm::PBESHA1And3KeyTripleDESCBC
|
|
345
345
|
} else if key_cert_alg.is(&types::PBES_PBESV2SHA256ANDAES256CBC.get(py)?) {
|
|
346
346
|
EncryptionAlgorithm::PBESv2SHA256AndAES256CBC
|
|
347
347
|
} else {
|
|
@@ -515,6 +515,8 @@ pub static TRIPLE_DES: LazyPyImport = LazyPyImport::new(
|
|
|
515
515
|
"cryptography.hazmat.decrepit.ciphers.algorithms",
|
|
516
516
|
&["TripleDES"],
|
|
517
517
|
);
|
|
518
|
+
pub static DES: LazyPyImport =
|
|
519
|
+
LazyPyImport::new("cryptography.hazmat.decrepit.ciphers.algorithms", &["_DES"]);
|
|
518
520
|
pub static AES: LazyPyImport = LazyPyImport::new(
|
|
519
521
|
"cryptography.hazmat.primitives.ciphers.algorithms",
|
|
520
522
|
&["AES"],
|
|
@@ -11,7 +11,7 @@ import textwrap
|
|
|
11
11
|
import pytest
|
|
12
12
|
|
|
13
13
|
from cryptography.hazmat.bindings._rust import openssl as rust_openssl
|
|
14
|
-
from cryptography.hazmat.decrepit.ciphers.algorithms import RC2
|
|
14
|
+
from cryptography.hazmat.decrepit.ciphers.algorithms import _DES, RC2
|
|
15
15
|
from cryptography.hazmat.primitives.asymmetric import (
|
|
16
16
|
dsa,
|
|
17
17
|
ec,
|
|
@@ -22,7 +22,7 @@ from cryptography.hazmat.primitives.asymmetric import (
|
|
|
22
22
|
x25519,
|
|
23
23
|
)
|
|
24
24
|
from cryptography.hazmat.primitives.ciphers import modes
|
|
25
|
-
from cryptography.hazmat.primitives.hashes import SHA1
|
|
25
|
+
from cryptography.hazmat.primitives.hashes import MD5, SHA1
|
|
26
26
|
from cryptography.hazmat.primitives.serialization import (
|
|
27
27
|
BestAvailableEncryption,
|
|
28
28
|
Encoding,
|
|
@@ -463,6 +463,20 @@ class TestDERSerialization:
|
|
|
463
463
|
with pytest.raises(ValueError):
|
|
464
464
|
load_pem_private_key(data, password=b"password")
|
|
465
465
|
|
|
466
|
+
@pytest.mark.skip_fips(reason="3DES unsupported in FIPS")
|
|
467
|
+
def test_load_pkcs8_pbes_long_salt(self):
|
|
468
|
+
data = load_vectors_from_file(
|
|
469
|
+
os.path.join("asymmetric", "PKCS8", "rsa-pbe-3des-long-salt.pem"),
|
|
470
|
+
lambda f: f.read(),
|
|
471
|
+
mode="rb",
|
|
472
|
+
)
|
|
473
|
+
key = load_pem_private_key(
|
|
474
|
+
data, password=b"password", unsafe_skip_rsa_key_validation=True
|
|
475
|
+
)
|
|
476
|
+
assert isinstance(key, rsa.RSAPrivateKey)
|
|
477
|
+
assert key.key_size == 4096
|
|
478
|
+
assert key.private_numbers().public_numbers.e == 65537
|
|
479
|
+
|
|
466
480
|
@pytest.mark.parametrize(
|
|
467
481
|
"filename",
|
|
468
482
|
[
|
|
@@ -559,6 +573,20 @@ class TestDERSerialization:
|
|
|
559
573
|
)
|
|
560
574
|
assert isinstance(key, ed25519.Ed25519PrivateKey)
|
|
561
575
|
|
|
576
|
+
@pytest.mark.supported(
|
|
577
|
+
only_if=lambda backend: backend.hash_supported(MD5())
|
|
578
|
+
and backend.cipher_supported(_DES(), modes.CBC(b"\x00" * 8)),
|
|
579
|
+
skip_message="Does not support DES MD5",
|
|
580
|
+
)
|
|
581
|
+
def test_load_pkcs8_pbe_with_md5_and_des_cbc(self):
|
|
582
|
+
key = load_vectors_from_file(
|
|
583
|
+
os.path.join("asymmetric", "PKCS8", "rsa-pbewithmd5anddescbc.pem"),
|
|
584
|
+
lambda f: load_pem_private_key(f.read(), password=b"hunter2"),
|
|
585
|
+
mode="rb",
|
|
586
|
+
)
|
|
587
|
+
assert isinstance(key, rsa.RSAPrivateKey)
|
|
588
|
+
assert key.key_size == 2048
|
|
589
|
+
|
|
562
590
|
|
|
563
591
|
class TestPEMSerialization:
|
|
564
592
|
@pytest.mark.parametrize(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/aes-192-gcm-siv.rst
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/arc4/generate_arc4.py
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/arc4/verify_arc4.go
RENAMED
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/cast5/generate_cast5.py
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/cast5/verify_cast5.go
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/hkdf/generate_hkdf.py
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/hkdf/verify_hkdf.go
RENAMED
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/idea/generate_idea.py
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/idea/verify_idea.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/rsa-oaep-sha2.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/seed/generate_seed.py
RENAMED
|
File without changes
|
{cryptography-45.0.2 → cryptography-45.0.3}/docs/development/custom-vectors/seed/verify_seed.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|