Danger
This is a “Hazardous Materials” module. You should ONLY use it if you’re 100% absolutely sure that you know what you’re doing because this module is full of land mines, dragons, and dinosaurs with laser guns.
Asymmetric Utilities
- cryptography.hazmat.primitives.asymmetric.utils.decode_dss_signature(signature)
Takes in signatures generated by the DSA/ECDSA signers and returns a tuple
(r, s). These signatures are ASN.1 encodedDss-Sig-Valuesequences (as defined in RFC 3279)- Parameters:
signature (bytes) – The signature to decode.
- Returns:
The decoded tuple
(r, s).- Raises:
ValueError – Raised if the signature is malformed.
- cryptography.hazmat.primitives.asymmetric.utils.encode_dss_signature(r, s)
Creates an ASN.1 encoded
Dss-Sig-Value(as defined in RFC 3279) from rawrandsvalues.
- class cryptography.hazmat.primitives.asymmetric.utils.Prehashed(algorithm)
Added in version 1.6.
Prehashedcan be passed as thealgorithmin the RSAsign()andverify()as well as DSAsign()andverify()methods.For elliptic curves it can be passed as the
algorithminECDSAand then used withsign()andverify().- Parameters:
algorithm – An instance of
HashAlgorithm.
>>> import hashlib >>> from cryptography.hazmat.primitives import hashes >>> from cryptography.hazmat.primitives.asymmetric import ( ... padding, rsa, utils ... ) >>> private_key = rsa.generate_private_key( ... public_exponent=65537, ... key_size=2048, ... ) >>> prehashed_msg = hashlib.sha256(b"A message I want to sign").digest() >>> signature = private_key.sign( ... prehashed_msg, ... padding.PSS( ... mgf=padding.MGF1(hashes.SHA256()), ... salt_length=padding.PSS.MAX_LENGTH ... ), ... utils.Prehashed(hashes.SHA256()) ... ) >>> public_key = private_key.public_key() >>> public_key.verify( ... signature, ... prehashed_msg, ... padding.PSS( ... mgf=padding.MGF1(hashes.SHA256()), ... salt_length=padding.PSS.MAX_LENGTH ... ), ... utils.Prehashed(hashes.SHA256()) ... )