U q`@sddlZddlZddlmZddlmZmZmZddlm Z ddl m Z Gdddej dZ Gd d d ej dZGd d d ej dZGd ddeZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGddde ZGdd d e ZGd!d"d"e ZGd#d$d$e ZGd%d&d&e eZGd'd(d(e eZGd)d*d*e ZGd+d,d,e ZGd-d.d.e Z dS)/N)utils)AlreadyFinalizedUnsupportedAlgorithm_Reasons) _get_backend) HashBackendc@sNeZdZejedddZejedddZeje j edddZ dS) HashAlgorithmreturncCsdS)zH A string naming this algorithm (e.g. "sha256", "md5"). Nselfr r L/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/primitives/hashes.pynameszHashAlgorithm.namecCsdS)z< The size of the resulting digest in bytes. Nr r r r r digest_sizeszHashAlgorithm.digest_sizecCsdS)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 r r r block_sizeszHashAlgorithm.block_sizeN) __name__ __module__ __qualname__abcabstractpropertystrrintrtypingOptionalrr r r rrs r) metaclassc@s^eZdZejedddZejeddddZ ejeddd Z ejddd d Z dS) HashContextr cCsdS)zD A HashAlgorithm that will be used by this context. Nr r r r r algorithm(szHashContext.algorithmNdatar cCsdS)z@ Processes the provided bytes through the hash. Nr r rr r rupdate.szHashContext.updatecCsdS)zR Finalizes the hash context and returns the hash digest as bytes. Nr r r r rfinalize4szHashContext.finalizecCsdS)zM Return a HashContext that is a copy of the current context. Nr r r r rcopy:szHashContext.copy) rrrrrrrabstractmethodbytesr!r"r#r r r rr'src@seZdZdZdS)ExtendableOutputFunctionz7 An interface for extendable output functions. N)rrr__doc__r r r rr&Asr&c@sReZdZdedddZedZeddddZ dd d d Z ed d d Z dS)HashN)rcCs`t|}t|tstdtjt|ts0td||_||_ |dkrV|j |j |_ n||_ dS)Nz.Backend object does not implement HashBackend.z*Expected instance of hashes.HashAlgorithm.) r isinstancerrrZBACKEND_MISSING_INTERFACEr TypeError _algorithm_backendZcreate_hash_ctxr_ctx)r rbackendctxr r r__init__Hs  z Hash.__init__r+rcCs.|jdkrtdtd||j|dS)NContext was already finalized.r)r-rrZ_check_bytesliker!r r r rr!]s  z Hash.updater cCs*|jdkrtdt|j|j|jdS)Nr1)r.r/)r-rr(rr,r#r r r rr#cs z Hash.copycCs&|jdkrtd|j}d|_|S)Nr1)r-rr")r digestr r rr"js   z Hash.finalize)NN) rrrrr0rread_only_propertyrr%r!r#r"r r r rr(Gs  r(c@seZdZdZdZdZdS)SHA1sha1@Nrrrrrrr r r rr4rsr4c@seZdZdZdZdZdS) SHA512_224z sha512-224Nr8r r r rr9xsr9c@seZdZdZdZdZdS) SHA512_256z sha512-256 r;Nr8r r r rr<~sr<c@seZdZdZdZdZdS)SHA224sha224r:r7Nr8r r r rr>sr>c@seZdZdZdZdZdS)SHA256sha256r=r7Nr8r r r rr@sr@c@seZdZdZdZdZdS)SHA384sha3840r;Nr8r r r rrBsrBc@seZdZdZdZdZdS)SHA512sha512r7r;Nr8r r r rrEsrEc@seZdZdZdZdZdS)SHA3_224zsha3-224r:Nr8r r r rrGsrGc@seZdZdZdZdZdS)SHA3_256zsha3-256r=Nr8r r r rrHsrHc@seZdZdZdZdZdS)SHA3_384zsha3-384rDNr8r r r rrIsrIc@seZdZdZdZdZdS)SHA3_512zsha3-512r7Nr8r r r rrJsrJc@s,eZdZdZdZedddZedZ dS)SHAKE128Zshake128NrcCs,t|tstd|dkr"td||_dSNzdigest_size must be an integerz&digest_size must be a positive integerr)rr* ValueError _digest_sizer rr r rr0s  zSHAKE128.__init__rQ rrrrrrr0rr3rr r r rrKs rKc@s,eZdZdZdZedddZedZ dS)SHAKE256Zshake256NrLcCs,t|tstd|dkr"td||_dSrMrOrRr r rr0s  zSHAKE256.__init__rQrSr r r rrTs rTc@seZdZdZdZdZdS)MD5md5r7Nr8r r r rrUsrUc@s4eZdZdZdZdZdZedddZe dZ d S) BLAKE2bblake2br7rNr;rLcCs|dkrtd||_dS)Nr7zDigest size must be 64rPrQrRr r rr0szBLAKE2b.__init__rQN) rrrr_max_digest_size_min_digest_sizerrr0rr3rr r r rrXs rXc@s4eZdZdZdZdZdZedddZe dZ d S) BLAKE2sblake2sr7r=rNrLcCs|dkrtd||_dS)Nr=zDigest size must be 32rZrRr r rr0szBLAKE2s.__init__rQN) rrrrrr[r\rr0rr3rr r r rr]s r])!rrZ cryptographyrZcryptography.exceptionsrrrZcryptography.hazmat.backendsrZ'cryptography.hazmat.backends.interfacesrABCMetarrr&r(r4r9r<r>r@rBrErGrHrIrJrKrTrUrXr]r r r rs2   +