a oe@sddlmZddlZddlZddlmZgdZGdddejdZ Gdd d ejdZ ej j Z e e Gd d d ejdZGd d d e ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGd d!d!e ZGd"d#d#e eZGd$d%d%e eZGd&d'd'e ZGd(d)d)e ZGd*d+d+e ZGd,d-d-e ZdS).) annotationsN)openssl) HashAlgorithm HashContextHashExtendableOutputFunctionSHA1 SHA512_224 SHA512_256SHA224SHA256SHA384SHA512SHA3_224SHA3_256SHA3_384SHA3_512SHAKE128SHAKE256MD5BLAKE2bBLAKE2sSM3c@sTeZdZeejddddZeejddddZeejddd d Zd S) rstrreturncCsdS)zH A string naming this algorithm (e.g. "sha256", "md5"). NselfrrFC:\Program Files\Certbot\pkgs\cryptography\hazmat\primitives\hashes.pyname&szHashAlgorithm.nameintcCsdS)z< The size of the resulting digest in bytes. Nrrrrr digest_size-szHashAlgorithm.digest_sizeztyping.Optional[int]cCsdS)z The internal block size of the hash function, or None if the hash function does not use blocks internally (e.g. SHA3). Nrrrrr block_size4szHashAlgorithm.block_sizeN) __name__ __module__ __qualname__propertyabcabstractmethodr r"r#rrrrr%sr) metaclassc@sbeZdZeejddddZejddddd Zejddd d Zejddd d Z dS)rrrcCsdS)zD A HashAlgorithm that will be used by this context. Nrrrrr algorithm>szHashContext.algorithmbytesNone)datarcCsdS)z@ Processes the provided bytes through the hash. Nr)rr.rrrupdateEszHashContext.updatecCsdS)zR Finalizes the hash context and returns the hash digest as bytes. NrrrrrfinalizeKszHashContext.finalizecCsdS)zM Return a HashContext that is a copy of the current context. NrrrrrcopyQszHashContext.copyN) r$r%r&r'r(r)r+r/r0r1rrrrr=src@seZdZdZdS)rz7 An interface for extendable output functions. N)r$r%r&__doc__rrrrr\src@seZdZdZdZdZdS)rZsha1@Nr$r%r&r r"r#rrrrrbsrc@seZdZdZdZdZdS)r z sha512-224Nr5rrrrr hsr c@seZdZdZdZdZdS)r z sha512-256 r7Nr5rrrrr nsr c@seZdZdZdZdZdS)r Zsha224r6r4Nr5rrrrr tsr c@seZdZdZdZdZdS)r Zsha256r8r4Nr5rrrrr zsr c@seZdZdZdZdZdS)r Zsha3840r7Nr5rrrrr sr c@seZdZdZdZdZdS)rZsha512r4r7Nr5rrrrrsrc@seZdZdZdZdZdS)rzsha3-224r6Nr5rrrrrsrc@seZdZdZdZdZdS)rzsha3-256r8Nr5rrrrrsrc@seZdZdZdZdZdS)rzsha3-384r9Nr5rrrrrsrc@seZdZdZdZdZdS)rzsha3-512r4Nr5rrrrrsrc@s4eZdZdZdZddddZedddd ZdS) rZshake128Nr!r"cCs,t|tstd|dkr"td||_dSNzdigest_size must be an integerz&digest_size must be a positive integer isinstancer! TypeError ValueError _digest_sizerr"rrr__init__s  zSHAKE128.__init__rcCs|jSNrArrrrr"szSHAKE128.digest_sizer$r%r&r r#rCr'r"rrrrrs  rc@s4eZdZdZdZddddZedddd ZdS) rZshake256Nr!r:cCs,t|tstd|dkr"td||_dSr;r=rBrrrrCs  zSHAKE256.__init__rcCs|jSrDrErrrrr"szSHAKE256.digest_sizerFrrrrrs  rc@seZdZdZdZdZdS)rZmd5r4Nr5rrrrrsrc@s<eZdZdZdZdZdZddddZedd d d Z d S) rZblake2br4r<r7r!r:cCs|dkrtd||_dS)Nr4zDigest size must be 64r@rArBrrrrCszBLAKE2b.__init__rcCs|jSrDrErrrrr"szBLAKE2b.digest_sizeN) r$r%r&r _max_digest_size_min_digest_sizer#rCr'r"rrrrrsrc@s<eZdZdZdZdZdZddddZedd d d Z d S) rZblake2sr4r8r<r!r:cCs|dkrtd||_dS)Nr8zDigest size must be 32rHrBrrrrCszBLAKE2s.__init__rcCs|jSrDrErrrrr"szBLAKE2s.digest_sizeN) r$r%r&r r#rIrJrCr'r"rrrrrsrc@seZdZdZdZdZdS)rZsm3r8r4Nr5rrrrrsr) Z __future__rr(typingZ"cryptography.hazmat.bindings._rustrZ rust_openssl__all__ABCMetarrZhashesrregisterrrr r r r r rrrrrrrrrrrrrrrs4