3 œไL]>ใ@svddlmZmZmZddlZddlZddlmZddlm Z m Z m Z ddl m Z ejejƒGdd„deƒƒZejejƒGdd „d eƒƒZejejƒGd d „d eƒƒZejeƒGd d „d eƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZejeƒGd d!„d!eƒƒZejeƒGd"d#„d#eƒƒZ ejeƒejeƒGd$d%„d%eƒƒƒZ!ejeƒejeƒGd&d'„d'eƒƒƒZ"ejeƒGd(d)„d)eƒƒZ#ejeƒGd*d+„d+eƒƒZ$ejeƒGd,d-„d-eƒƒZ%dS).้)ฺabsolute_importฺdivisionฺprint_functionN)ฺutils)ฺAlreadyFinalizedฺUnsupportedAlgorithmฺ_Reasons)ฺ HashBackendc@s(eZdZejdd„ƒZejdd„ƒZdS)ฺ HashAlgorithmcCsdS)zH A string naming this algorithm (e.g. "sha256", "md5"). Nฉ)ฺselfr r ๚O/tmp/pip-install-wfra5znf/cryptography/cryptography/hazmat/primitives/hashes.pyฺnameszHashAlgorithm.namecCsdS)z< The size of the resulting digest in bytes. Nr )r r r r ฺ digest_sizeszHashAlgorithm.digest_sizeN)ฺ__name__ฺ __module__ฺ __qualname__ฺabcฺabstractpropertyrrr r r r r sr c@sDeZdZejdd„ƒZejdd„ƒZejdd„ƒZejdd„ƒZ d S) ฺ HashContextcCsdS)zD A HashAlgorithm that will be used by this context. Nr )r r r r ฺ algorithm#szHashContext.algorithmcCsdS)z@ Processes the provided bytes through the hash. Nr )r ฺdatar r r ฺupdate)szHashContext.updatecCsdS)zR Finalizes the hash context and returns the hash digest as bytes. Nr )r r r r ฺfinalize/szHashContext.finalizecCsdS)zM Return a HashContext that is a copy of the current context. Nr )r r r r ฺcopy5szHashContext.copyN) rrrrrrฺabstractmethodrrrr r r r r!src@seZdZdZdS)ฺExtendableOutputFunctionz7 An interface for extendable output functions. N)rrrฺ__doc__r r r r r<src@s8eZdZd dd„ZejdƒZdd„Zdd„Zd d „Z dS) ฺHashNcCsXt|tƒstdtjƒ‚t|tƒs(tdƒ‚||_||_|dkrN|jj |j ƒ|_ n||_ dS)Nz.Backend object does not implement HashBackend.z*Expected instance of hashes.HashAlgorithm.) ฺ isinstancer rrZBACKEND_MISSING_INTERFACEr ฺ TypeErrorฺ _algorithmฺ_backendZcreate_hash_ctxrฺ_ctx)r rฺbackendฺctxr r r ฺ__init__Es  z Hash.__init__r!cCs.|jdkrtdƒ‚tjd|ƒ|jj|ƒdS)NzContext was already finalized.r)r#rrZ_check_bytesliker)r rr r r rYs  z Hash.updatecCs*|jdkrtdƒ‚t|j|j|jjƒdS)NzContext was already finalized.)r$r%)r#rrrr"r)r r r r r_s z Hash.copycCs&|jdkrtdƒ‚|jjƒ}d|_|S)NzContext was already finalized.)r#rr)r ฺdigestr r r rfs   z Hash.finalize)N) rrrr&rฺread_only_propertyrrrrr r r r rCs   rc@seZdZdZdZdZdS)ฺSHA1ฺsha1้้@N)rrrrrฺ block_sizer r r r r)nsr)c@seZdZdZdZdZdS)ฺ SHA512_224z sha512-224้้€N)rrrrrr-r r r r r.usr.c@seZdZdZdZdZdS)ฺ SHA512_256z sha512-256้ r0N)rrrrrr-r r r r r1|sr1c@seZdZdZdZdZdS)ฺSHA224ฺsha224r/r,N)rrrrrr-r r r r r3ƒsr3c@seZdZdZdZdZdS)ฺSHA256ฺsha256r2r,N)rrrrrr-r r r r r5Šsr5c@seZdZdZdZdZdS)ฺSHA384ฺsha384้0r0N)rrrrrr-r r r r r7‘sr7c@seZdZdZdZdZdS)ฺSHA512ฺsha512r,r0N)rrrrrr-r r r r r:˜sr:c@seZdZdZdZdS)ฺSHA3_224zsha3-224r/N)rrrrrr r r r r<Ÿsr<c@seZdZdZdZdS)ฺSHA3_256zsha3-256r2N)rrrrrr r r r r=ฅsr=c@seZdZdZdZdS)ฺSHA3_384zsha3-384r9N)rrrrrr r r r r>ซsr>c@seZdZdZdZdS)ฺSHA3_512zsha3-512r,N)rrrrrr r r r r?ฑsr?c@s"eZdZdZdd„ZejdƒZdS)ฺSHAKE128Zshake128cCs.t|tjƒstdƒ‚|dkr$tdƒ‚||_dS)Nzdigest_size must be an integer้z&digest_size must be a positive integer)rฺsixฺ integer_typesr ฺ ValueErrorฺ _digest_size)r rr r r r&ผs  zSHAKE128.__init__rEN)rrrrr&rr(rr r r r r@ทs r@c@s"eZdZdZdd„ZejdƒZdS)ฺSHAKE256Zshake256cCs.t|tjƒstdƒ‚|dkr$tdƒ‚||_dS)Nzdigest_size must be an integerrAz&digest_size must be a positive integer)rrBrCr rDrE)r rr r r r&อs  zSHAKE256.__init__rEN)rrrrr&rr(rr r r r rFศs rFc@seZdZdZdZdZdS)ฺMD5ฺmd5้r,N)rrrrrr-r r r r rGูsrGc@s.eZdZdZdZdZdZdd„Zej dƒZ dS) ฺBLAKE2bฺblake2br,rAr0cCs|dkrtdƒ‚||_dS)Nr,zDigest size must be 64)rDrE)r rr r r r&็szBLAKE2b.__init__rEN) rrrrฺ_max_digest_sizeฺ_min_digest_sizer-r&rr(rr r r r rJเs rJc@s.eZdZdZdZdZdZdd„Zej dƒZ dS) ฺBLAKE2sฺblake2sr,r2rAcCs|dkrtdƒ‚||_dS)Nr2zDigest size must be 32)rDrE)r rr r r r&๘szBLAKE2s.__init__rEN) rrrrr-rLrMr&rr(rr r r r rN๑s rN)&ฺ __future__rrrrrBZ cryptographyrZcryptography.exceptionsrrrZ'cryptography.hazmat.backends.interfacesr ฺ add_metaclassฺABCMetaฺobjectr rrZregister_interfacerr)r.r1r3r5r7r:r<r=r>r?r@rFrGrJrNr r r r ฺs^  *