Current File : //usr/lib/python2.7/site-packages/pip/utils/hashes.pyc |
�
>�P_c @@ s� d d l m Z d d l Z d d l m Z m Z m Z d d l m Z d d l m
Z
m Z m Z d Z
d d d g Z d e f d
� � YZ d e f d � � YZ d S(
i ( t absolute_importN( t HashMismatcht HashMissingt InstallationError( t read_chunks( t iteritemst iterkeyst
itervaluest sha256t sha384t sha512t Hashesc B@ sP e Z d Z d d � Z d � Z d � Z d � Z d � Z d � Z d � Z
RS( sa A wrapper that builds multiple hashes at once and checks them against
known-good values
c C@ s | d k r i n | | _ d S( so
:param hashes: A dict of algorithm names pointing to lists of allowed
hex digests
N( t Nonet _allowed( t selft hashes( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt __init__ s c C@ s i } x� t | j � D]o } y? | d k rG t j | d t �| | <n t j | � | | <Wq t t f k
r� t d | � � q Xq Wx2 | D]* } x! t | � D] } | j | � q� Wq� Wx7 t
| � D]) \ } } | j � | j | k r� d Sq� W| j | � d S( s� Check good hashes against ones built from iterable of chunks of
data.
Raise HashMismatch if none match.
t md5t usedforsecuritys Unknown hash name: %sN(
R R
t hashlibt newt Falset
ValueErrort TypeErrorR R t updateR t hexdigestt _raise( R t chunkst gotst hash_namet chunkt hasht got( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt check_against_chunks s
c C@ s t | j | � � d S( N( R R
( R R ( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyR : s c C@ s | j t | � � S( sa Check good hashes against a file-like object
Raise HashMismatch if none match.
( R! R ( R t file( ( s4 /usr/lib/python2.7/site-packages/pip/utils/hashes.pyt check_against_file= s c C@ s) t | d � � } | j | � SWd QXd S( Nt rb( t openR# ( R t pathR"