Upgrading cryptography 0.4 to 0.5
Breaking0.4 → 0.5.4Breaking1Deprecated7New9Changed2Fixed2
BreakingUpgrade verdict
1 breaking change.
In plain terms
- The GCM encryption mode now rejects shortened authentication tags unless you explicitly ask for them.
- Deprecates the concrete RSAPrivateKey class in favor of backend specific providers of the RSAPrivateKey interface.
- Deprecates the concrete RSAPublicKey in favor of backend specific providers of the RSAPublicKey interface.
- Deprecates encrypt_rsa, decrypt_rsa, create_rsa_signature_ctx and create_rsa_verification_ctx on RSABackend.
Must act Top 4 of 5 that need code or config changes
What you must change
Breaking1
GCM no longer allows tag truncation by default; pass min_tag_length to preserve old behavior.
cryptography.hazmat.primitives.ciphers.modes.GCMmin_tag_lengthDeprecations to plan for
Deprecated4
Deprecates the concrete RSAPrivateKey class in favor of backend specific providers of the RSAPrivateKey interface.
RSAPrivateKeycryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKeyDSAPrivateKeycryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKeyDSAParameterscryptography.hazmat.primitives.asymmetric.dsa.DSAParametersDeprecates the concrete RSAPublicKey in favor of backend specific providers of the RSAPublicKey interface.
RSAPublicKeycryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKeyDSAPublicKeycryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKeyDeprecates encrypt_rsa, decrypt_rsa, create_rsa_signature_ctx and create_rsa_verification_ctx on RSABackend.
encrypt_rsadecrypt_rsacreate_rsa_signature_ctxcreate_rsa_verification_ctxRSABackendDeprecates create_dsa_signature_ctx and create_dsa_verification_ctx on DSABackend.
create_dsa_signature_ctxcreate_dsa_verification_ctxDSABackendAPI changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- added:
class EllipticCurveBackend(object) - added:
class PKCS8SerializationBackend(object) - added:
method DSABackend.generate_dsa_private_key_and_parameters(key_size) - added:
method DSABackend.load_dsa_parameter_numbers(numbers) - added:
method DSABackend.load_dsa_private_numbers(numbers) - added:
method DSABackend.load_dsa_public_numbers(numbers) - added:
method EllipticCurveBackend.elliptic_curve_private_key_from_numbers(numbers) - added:
method EllipticCurveBackend.elliptic_curve_public_key_from_numbers(numbers) - added:
method EllipticCurveBackend.elliptic_curve_signature_algorithm_supported(signature_algorithm, curve) - added:
method EllipticCurveBackend.elliptic_curve_supported(curve) - added:
method EllipticCurveBackend.generate_elliptic_curve_private_key(curve) - added:
method PKCS8SerializationBackend.load_pkcs8_pem_private_key(data, password) - added:
method RSABackend.generate_rsa_parameters_supported(public_exponent, key_size) - added:
method RSABackend.load_rsa_private_numbers(numbers) - added:
method RSABackend.load_rsa_public_numbers(numbers) - added:
method RSABackend.rsa_padding_supported(padding)
- added:
method MultiBackend.decrypt_rsa(private_key, ciphertext, padding) - added:
method MultiBackend.elliptic_curve_private_key_from_numbers(numbers) - added:
method MultiBackend.elliptic_curve_public_key_from_numbers(numbers) - added:
method MultiBackend.elliptic_curve_signature_algorithm_supported(signature_algorithm, curve) - added:
method MultiBackend.elliptic_curve_supported(curve) - added:
method MultiBackend.encrypt_rsa(public_key, plaintext, padding) - added:
method MultiBackend.generate_dsa_private_key_and_parameters(key_size) - added:
method MultiBackend.generate_elliptic_curve_private_key(curve) - added:
method MultiBackend.generate_rsa_parameters_supported(public_exponent, key_size) - added:
method MultiBackend.load_pkcs8_pem_private_key(data, password) - added:
method MultiBackend.load_rsa_private_numbers(numbers) - added:
method MultiBackend.load_rsa_public_numbers(numbers) - added:
method MultiBackend.load_traditional_openssl_pem_private_key(data, password) - added:
method MultiBackend.mgf1_hash_supported(algorithm) - added:
method MultiBackend.rsa_padding_supported(padding)
- added:
method Backend.elliptic_curve_private_key_from_numbers(numbers) - added:
method Backend.elliptic_curve_public_key_from_numbers(numbers) - added:
method Backend.elliptic_curve_signature_algorithm_supported(signature_algorithm, curve) - added:
method Backend.elliptic_curve_supported(curve) - added:
method Backend.generate_dsa_private_key_and_parameters(key_size) - added:
method Backend.generate_elliptic_curve_private_key(curve) - added:
method Backend.generate_rsa_parameters_supported(public_exponent, key_size) - added:
method Backend.load_dsa_parameter_numbers(numbers) - added:
method Backend.load_dsa_private_numbers(numbers) - added:
method Backend.load_dsa_public_numbers(numbers) - added:
method Backend.load_pkcs8_pem_private_key(data, password) - added:
method Backend.load_rsa_private_numbers(numbers) - added:
method Backend.load_rsa_public_numbers(numbers) - added:
method Backend.load_traditional_openssl_pem_private_key(data, password) - added:
method Backend.rsa_padding_supported(padding)
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
variable CONDITIONAL_NAMES - added:
variable CUSTOMIZATIONS - added:
variable FUNCTIONS - added:
variable INCLUDES - added:
variable MACROS - added:
variable TYPES
- added:
class DSAParameterNumbers(object) - added:
class DSAPrivateNumbers(object) - added:
class DSAPublicNumbers(object) - added:
constructor DSAParameterNumbers(p, q, g) - added:
constructor DSAPrivateNumbers(x, public_numbers) - added:
constructor DSAPublicNumbers(y, parameter_numbers) - added:
function generate_parameters(key_size, backend) - added:
function generate_private_key(key_size, backend) - added:
method DSAParameterNumbers.parameters(backend) - added:
method DSAPrivateNumbers.private_key(backend) - added:
method DSAPublicNumbers.public_key(backend) - added:
property DSAParameterNumbers.g - added:
property DSAParameterNumbers.p - added:
property DSAParameterNumbers.q - added:
property DSAPrivateNumbers.public_numbers - added:
property DSAPrivateNumbers.x - added:
property DSAPublicNumbers.parameter_numbers - added:
property DSAPublicNumbers.y
- added:
class ECDSA(object) - added:
class EllipticCurvePrivateNumbers(object) - added:
class EllipticCurvePublicNumbers(object) - added:
class SECP192R1(object) - added:
class SECP224R1(object) - added:
class SECP256R1(object) - added:
class SECP384R1(object) - added:
class SECP521R1(object) - added:
class SECT163K1(object) - added:
class SECT163R2(object) - added:
class SECT233K1(object) - added:
class SECT233R1(object) - added:
class SECT283K1(object) - added:
class SECT283R1(object) - added:
class SECT409K1(object) - added:
class SECT409R1(object) - added:
class SECT571K1(object) - added:
class SECT571R1(object) - added:
constructor ECDSA(algorithm) - added:
constructor EllipticCurvePrivateNumbers(private_value, public_numbers) - added:
constructor EllipticCurvePublicNumbers(x, y, curve) - added:
function generate_private_key(curve, backend) - added:
method EllipticCurvePrivateNumbers.private_key(backend) - added:
method EllipticCurvePublicNumbers.public_key(backend) - added:
property ECDSA.algorithm - added:
property EllipticCurvePrivateNumbers.private_value - added:
property EllipticCurvePrivateNumbers.public_numbers - added:
property EllipticCurvePublicNumbers.curve - added:
property EllipticCurvePublicNumbers.x - added:
property EllipticCurvePublicNumbers.y - added:
property SECP192R1.key_size - added:
property SECP192R1.name - added:
property SECP224R1.key_size - added:
property SECP224R1.name - added:
property SECP256R1.key_size - added:
property SECP256R1.name - added:
property SECP384R1.key_size - added:
property SECP384R1.name - added:
property SECP521R1.key_size - added:
property SECP521R1.name - added:
property SECT163K1.key_size - added:
property SECT163K1.name - added:
property SECT163R2.key_size - added:
property SECT163R2.name - added:
property SECT233K1.key_size - added:
property SECT233K1.name - added:
property SECT233R1.key_size - added:
property SECT233R1.name - added:
property SECT283K1.key_size - added:
property SECT283K1.name - added:
property SECT283R1.key_size - added:
property SECT283R1.name - added:
property SECT409K1.key_size - added:
property SECT409K1.name - added:
property SECT409R1.key_size - added:
property SECT409R1.name - added:
property SECT571K1.key_size - added:
property SECT571K1.name - added:
property SECT571R1.key_size - added:
property SECT571R1.name
- added:
class RSAPrivateNumbers(object) - added:
class RSAPublicNumbers(object) - added:
constructor RSAPrivateNumbers(p, q, d, dmp1, dmq1, iqmp, public_numbers) - added:
constructor RSAPublicNumbers(e, n) - added:
function generate_private_key(public_exponent, key_size, backend) - added:
method RSAPrivateNumbers.private_key(backend) - added:
method RSAPublicNumbers.public_key(backend) - added:
property RSAPrivateNumbers.d - added:
property RSAPrivateNumbers.dmp1 - added:
property RSAPrivateNumbers.dmq1 - added:
property RSAPrivateNumbers.iqmp - added:
property RSAPrivateNumbers.p - added:
property RSAPrivateNumbers.public_numbers - added:
property RSAPrivateNumbers.q - added:
property RSAPublicNumbers.e - added:
property RSAPublicNumbers.n
- removed:
method CBC.validate_for_algorithm(algorithm) - removed:
method CFB.validate_for_algorithm(algorithm) - removed:
method OFB.validate_for_algorithm(algorithm) - changed:
constructor GCM(initialization_vector, tag=…) → constructor GCM(initialization_vector, tag=…, min_tag_length=…) - added:
class CFB8(object) - added:
constructor CFB8(initialization_vector) - added:
field CBC.validate_for_algorithm - added:
field CFB.validate_for_algorithm - added:
field CFB8.name - added:
field CFB8.validate_for_algorithm - added:
field OFB.validate_for_algorithm
- removed:
method DSAParameters.g() - removed:
method DSAParameters.generator() - removed:
method DSAParameters.modulus() - removed:
method DSAParameters.p() - removed:
method DSAParameters.q() - removed:
method DSAParameters.subgroup_order() - removed:
method DSAPrivateKey.x() - removed:
method DSAPrivateKey.y() - removed:
method DSAPublicKey.y() - removed:
method RSAPrivateKey.d() - removed:
method RSAPrivateKey.dmp1() - removed:
method RSAPrivateKey.dmq1() - removed:
method RSAPrivateKey.e() - removed:
method RSAPrivateKey.iqmp() - removed:
method RSAPrivateKey.modulus() - removed:
method RSAPrivateKey.n() - removed:
method RSAPrivateKey.p() - removed:
method RSAPrivateKey.private_exponent() - removed:
method RSAPrivateKey.public_exponent() - removed:
method RSAPrivateKey.q() - removed:
method RSAPublicKey.e() - removed:
method RSAPublicKey.modulus() - removed:
method RSAPublicKey.n() - removed:
method RSAPublicKey.public_exponent() - changed:
method RSAPrivateKey.signer(padding, algorithm, backend) → method RSAPrivateKey.signer(padding, algorithm) - changed:
method RSAPublicKey.verifier(signature, padding, algorithm, backend) → method RSAPublicKey.verifier(signature, padding, algorithm) - added:
class DSAParametersWithNumbers(DSAParameters) - added:
class DSAPrivateKeyWithNumbers(DSAPrivateKey) - added:
class DSAPublicKeyWithNumbers(DSAPublicKey) - added:
class EllipticCurve(object) - added:
class EllipticCurvePrivateKey(object) - added:
class EllipticCurvePublicKey(object) - added:
class EllipticCurveSignatureAlgorithm(object) - added:
class RSAPrivateKeyWithNumbers(RSAPrivateKey) - added:
class RSAPublicKeyWithNumbers(RSAPublicKey) - added:
method DSAParameters.generate_private_key() - added:
method DSAParametersWithNumbers.parameter_numbers() - added:
method DSAPrivateKeyWithNumbers.private_numbers() - added:
method DSAPublicKeyWithNumbers.public_numbers() - added:
method EllipticCurve.key_size() - added:
method EllipticCurve.name() - added:
method EllipticCurvePrivateKey.curve() - added:
method EllipticCurvePrivateKey.public_key() - added:
method EllipticCurvePrivateKey.signer(signature_algorithm) - added:
method EllipticCurvePublicKey.curve() - added:
method EllipticCurvePublicKey.verifier(signature, signature_algorithm) - added:
method EllipticCurveSignatureAlgorithm.algorithm() - added:
method RSAPrivateKey.decrypt(ciphertext, padding) - added:
method RSAPrivateKeyWithNumbers.private_numbers() - added:
method RSAPublicKey.encrypt(plaintext, padding) - added:
method RSAPublicKeyWithNumbers.public_numbers()
- added:
class HKDFExpand(object) - added:
constructor HKDFExpand(algorithm, length, info, backend) - added:
method HKDFExpand.derive(key_material) - added:
method HKDFExpand.verify(key_material, expected_key)
- added:
function load_pem_pkcs8_private_key(data, password, backend) - added:
function load_pem_traditional_openssl_private_key(data, password, backend)
- added:
variable DeprecatedIn05