pglddlZddlZddlmZddlmZGddejZGddejZGd d ejZ Gd d eZ Gd deZ GddeZ GddeZ GddeZGddeZGddeZGddeZGddeZGddeZGdd eZGd!d"eZGd#d$ee ZGd%d&ee ZGd'd(eZGd)d*eZGd+d,eZGd-d.eZdS)/N)utils)AlreadyFinalizedceZdZejdefdZejdefdZejde j efdZ dS) HashAlgorithmreturncdS)zH A string naming this algorithm (e.g. "sha256", "md5"). Nselfs G/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/hashes.pynamezHashAlgorithm.namecdS)z< The size of the resulting digest in bytes. Nr r s r digest_sizezHashAlgorithm.digest_sizerrcdS)z The internal block size of the hash function, or None if the hash function does not use blocks internally (e.g. SHA3). Nr r s r block_sizezHashAlgorithm.block_sizerrN) __name__ __module__ __qualname__abcabstractpropertystrr intrtypingOptionalrr rr rrs c      S      FOC0      rr) metaclassceZdZejdefdZejdeddfdZ ejdefdZ ejddZ dS) HashContextrcdS)zD A HashAlgorithm that will be used by this context. Nr r s r algorithmzHashContext.algorithm$rrdataNcdS)z@ Processes the provided bytes through the hash. Nr r r"s r updatezHashContext.update*rrcdS)zR Finalizes the hash context and returns the hash digest as bytes. Nr r s r finalizezHashContext.finalize0rrcdS)zM Return a HashContext that is a copy of the current context. Nr r s r copyzHashContext.copy6rr)rr) rrrrrrr!abstractmethodbytesr%r'r)r rr rr#s =      5 T      %           rrceZdZdZdS)ExtendableOutputFunctionz7 An interface for extendable output functions. N)rrr__doc__r rr r-r-=srr-ceZdZUejeed< ddedejdejdfdZ e defd Z d e ddfd Z dd Zde fd ZdS)Hash_ctxNr!backendctxrct|tstd||_|'ddlm}||j|_dS||_dS)Nz*Expected instance of hashes.HashAlgorithm.r)r2) isinstancer TypeError _algorithm,cryptography.hazmat.backends.openssl.backendr2create_hash_ctxr!r1)r r!r2r3ossls r __init__z Hash.__init__Fsx )]33 JHII I# ;      ,,T^<eZdZdZdZdefdZedefdZdS)SHAKE128shake128Nrct|tstd|dkrtd||_dSNzdigest_size must be an integerz&digest_size must be a positive integerr5rr6 ValueError _digest_sizer rs r r;zSHAKE128.__init__I+s++ ><== = ??EFF F'rrc|jSr=rur s r rzSHAKE128.digest_size   r rrrr rrr;rFrr rr rnrn` DJ(C((((!S!!!X!!!rrnc>eZdZdZdZdefdZedefdZdS)SHAKE256shake256Nrct|tstd|dkrtd||_dSrqrsrvs r r;zSHAKE256.__init__rwrrc|jSr=ryr s r rzSHAKE256.digest_sizerzrr{r rr r~r~r|rr~ceZdZdZdZdZdS)MD5md5rKNrLr rr rr DKJJJrrcFeZdZdZdZdZdZdefdZe defdZ d S) BLAKE2bblake2brKrrrPrc>|dkrtd||_dS)NrKzDigest size must be 64rtrurvs r r;zBLAKE2b.__init__* "  566 6'rrc|jSr=ryr s r rzBLAKE2b.digest_sizerzrN) rrrr _max_digest_size_min_digest_sizerrr;rFrr rr rrsl DJ(C((((!S!!!X!!!rrcFeZdZdZdZdZdZdefdZe defdZ d S) BLAKE2sblake2srKrTrrrc>|dkrtd||_dS)NrTzDigest size must be 32rrvs r r;zBLAKE2s.__init__rrrc|jSr=ryr s r rzBLAKE2s.digest_sizerzrN) rrrr rrrrr;rFrr rr rrsl DJ(C((((!S!!!X!!!rrceZdZdZdZdZdS)SM3sm3rTrKNrLr rr rrrrr)rr cryptographyrcryptography.exceptionsrABCMetarrr-r0rHrNrSrVrZr]rbrerhrjrlrnr~rrrrr rr rs        ck    *     CK    4 *****;***Z=   ] ] ] ] } } } } !!!!!}6!!!$!!!!!}6!!!$- !!!!!m!!!$!!!!!m!!!$-r