Source code for pyflocker.ciphers.backends.cryptography_.asymmetric
from__future__importannotationsimporttypingfromtypingimportTYPE_CHECKINGfromcryptography.hazmat.primitives.asymmetricimportpaddingaspadding_fromcryptography.hazmat.primitives.asymmetric.ecimportECDH,ECDSAfrompyflocker.ciphers.backendsimportasymmetricfrom.importHashifTYPE_CHECKING:# pragma: no coverfrompyflocker.ciphersimportbase
[docs]defget_OAEP(padding:base.BaseAsymmetricPadding)->padding_.OAEP:"""Construct a pyca/cryptography specific OAEP object. Args: padding (OAEP): An OAEP object. Returns: OAEP object: An OAEP encryptor/decryptor object depending on the key, from the cryptography backend. """ifnotisinstance(padding,asymmetric.OAEP):# pragma: no covermsg="padding must be an instance of OAEP."raiseTypeError(msg)ifnotisinstance(padding.mgf,asymmetric.MGF1):msg="MGF must be an instance of MGF1."raiseTypeError(msg)returnpadding_.OAEP(mgf=padding_.MGF1(Hash._get_hash_algorithm(padding.mgf.hashfunc),),algorithm=Hash._get_hash_algorithm(padding.hashfunc),label=padding.label,)
[docs]defget_PSS(padding:base.BaseAsymmetricPadding)->padding_.PSS:"""Construct a pyca/cryptography specific PSS object. Args: padding (PSS): A PSS object. Returns: PSS object: An PSS signer/verifier object, depending on the key. """ifnotisinstance(padding,asymmetric.PSS):# pragma: no covermsg="padding must be an instance of PSS."raiseTypeError(msg)ifnotisinstance(padding.mgf,asymmetric.MGF1):msg="MGF must be an instance of MGF1."raiseTypeError(msg)returnpadding_.PSS(mgf=padding_.MGF1(Hash._get_hash_algorithm(padding.mgf.hashfunc)),salt_length=padding_.PSS.MAX_LENGTHifpadding.salt_lengthisNoneelsepadding.salt_length,)
[docs]defget_ECDH(algorithm:base.BaseEllepticCurveExchangeAlgorithm)->ECDH:"""Return an ECDH object for key exchange. Args: algorithm: The algorithm to use. Returns: ECDH key exchange object. """ifnotisinstance(algorithm,asymmetric.ECDH):# pragma: no covermsg="algorithm must be an instance of ECDH"raiseTypeError(msg)returnECDH()
[docs]defget_ECDSA(algorithm:base.BaseEllepticCurveSignatureAlgorithm,)->type[ECDSA]:"""Return an ECDSA callable for signing/verification. The object is not constructed until the key is signing/verifying. Args: algorithm: The algorithm to use. Returns: Signer/Verifier callable. """ifnotisinstance(algorithm,asymmetric.ECDSA):# pragma: no covermsg="algorithm must be an instance of ECDSA"raiseTypeError(msg)returnECDSA