idddlZddlmZmZmZmZmZmZddlm Z m Z m Z ddl m Z er ddlmZddlmZdZgdZGd d ZGd d eZdS) N) TYPE_CHECKINGBinaryIODictIterableListOptional) HashMismatch HashMissingInstallationError) read_chunks)_Hash)NoReturnsha256)rsha384sha512c(eZdZdZddeeeeefddfdZddZ e de fdZ d ed ede fd Zd eeddfd ZdeedfddfdZdeddfdZdeddfdZdeeefde fdZde fdZdede fdZde fdZdS)HasheszaA wrapper that builds multiple hashes at once and checks them against known-good values Nhashesreturncti}|,|D]\}}t|||<||_dS)zo :param hashes: A dict of algorithm names pointing to lists of allowed hex digests N)itemssorted_allowed)selfrallowedalgkeyss O/opt/cloudlinux/venv/lib/python3.11/site-packages/pip/_internal/utils/hashes.py__init__zHashes.__init__sF   #\\^^ , , T%d||  otherct|tstS|sSs|Si}|jD]!\}jvrfd|D|<"t|S)Nc2g|]}|jv|S)r).0vrrs r z"Hashes.__and__..;s*EEEaQ$-2D-D-D-D-D-Dr ) isinstancerNotImplementedrr)rr!newvaluesrs` @r__and__zHashes.__and__+s%(( "! ! K L >//11 F FKC$-''EEEEE6EEECHHc{{r cbtd|jDS)Nc34K|]}t|VdSN)len)r%digestss r z&Hashes.digest_count..@s(FFG3w<<FFFFFFr )sumrr+rs r digest_countzHashes.digest_count>s-FFt}/C/C/E/EFFFFFFr hash_name hex_digestc<||j|gvS)z/Return whether the given hex digest is allowed.)rget)rr6r7s ris_hash_allowedzHashes.is_hash_allowedBsT]..y"====r chunksci}|jD]A} tj|||<#tt f$rt d|wxYw|D].}|D]}||/| D])\}}| |j|vrdS*| |dS)zCheck good hashes against ones built from iterable of chunks of data. Raise HashMismatch if none match. zUnknown hash name: N) rrhashlibr* ValueError TypeErrorr r+updater hexdigest_raise)rr;gotsr6chunkhashgots rcheck_against_chunkszHashes.check_against_chunksFs++-- K KI K")+i"8"8Y * K K K'(Ii(I(IJJJ K # #E  # # E"""" ##jjll  NIs}}$- ":::; Ds 7$ArCr rc,t|j|r/)r rrrCs rrBz Hashes._raise]s4=$///r filecF|t|S)zaCheck good hashes against a file-like object Raise HashMismatch if none match. )rGr )rrJs rcheck_against_filezHashes.check_against_file`s ((T):):;;;r pathct|d5}||cdddS#1swxYwYdS)Nrb)openrL)rrMrJs rcheck_against_pathzHashes.check_against_pathhs $   1**400 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s 377cl|D]\}}|||rdSdS)z3Return whether any of the given hashes are allowed.TF)rr:)rrr6r7s r has_one_ofzHashes.has_one_oflsG%+\\^^   !Iz##Iz:: tt ur c*t|jS)z,Return whether I know any known-good hashes.)boolrr4s r__bool__zHashes.__bool__ssDM"""r cZt|tstS|j|jkSr/)r(rr)r)rr!s r__eq__z Hashes.__eq__ws)%(( "! !}..r c tdtd|jDS)N,c3TK|]#\}}|D]}d||fV$dS):N)join)r%r digest_listdigests rr2z"Hashes.__hash__..sa(["-HHc6]++r )rEr]rrrr4s r__hash__zHashes.__hash__|s\ HH,0M,?,?,A,A     r r/)r!rrr)__name__ __module__ __qualname____doc__rrstrrrr,propertyintr5rUr:rbytesrGrBrrLrQrSrVobjectrXr`r$r rrrs   xS$s)^(<=       &GcGGGXG>>#>$>>>>8E?t.04W -0*0000rvsJJJJJJJJJJJJJJJJQQQQQQQQQQ000000    /.. l l l l l l l l ^;;;;;F;;;;;r