
tmDc        @   @   sN  d  Z  d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d	   Z	 d
   Z
 d   Z d   Z d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL g@ Z dM   Z dN   Z dO S(P   s:   Implements SHA-256 (see FIPS 180-2: Secure Hash Standard).c         C   s   |  | ?|  d | >d @BS(   Ni    l    (    (   t   nt   shift(    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   rotate   s    c         C   s   |  | @|  | @AS(   N(    (   t   xt   yt   z(    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   choice   s    c         C   s   |  | @|  | @A| | @AS(   N(    (   R   R   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   majority	   s    c         C   s'   t  |  d  t  |  d  At  |  d  AS(   Ni   i   i   (   R   (   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   Sigma0   s    c         C   s'   t  |  d  t  |  d  At  |  d  AS(   Ni   i   i   (   R   (   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   Sigma1   s    c         C   s"   t  |  d  t  |  d  A|  d ?AS(   Ni   i   i   (   R   (   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   sigma0   s    c         C   s"   t  |  d  t  |  d  A|  d ?AS(   Ni   i   i
   (   R   (   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   sigma1   s    c         C   s   |  d S(   Ni   i   i   (    (   R    (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   byte   s    c         C   s   |  d S(   Ni   i    l        (    (   R    (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   word   s    c         C   s   t  t |    S(   N(   t   chrR   (   R    (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   ch   s    c         C   sD   t  |  d  d >t  |  d  d >Bt  |  d  d >Bt  |  d  BS(   Ni    i   i   i   i   i   i   (   t   ord(   t   s(    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   toword!   s    c         C   s4   t  |  d ? t  |  d ? t  |  d ? t  |   S(   Ni   i   i   (   R   (   t   w(    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   tochars$   s    i/BiD7ql   {k l   [kS i[V9iYl   $ l   ^8V l   *0 i[i1$i}Uit]rl   1 l   7 l   tq7 l   i6I l   G|_ iƝi̡$io,-itJiܩ\iڈvl   RQ|0 l   mFcP l   '` l   ~ l    l   GO+ iQcig))i
'i8!.im,Mi8SiTs
ei
jvl   .I l   ,$ l   hE l   Kf4P l   p l   Q l   h%# l   $2- l   5h ipjiil7iLwH'i4i9iJNiOʜ[io.hitiocxl   x	 l    l   }! l   lH l   #} l   x c         C   sY   t  |   d } |  d 7}  |  d t  |   d d 7}  |  t | d ? t |  7}  |  S(   Ni   s   t    i@   i    (   t   lenR   (   t   messaget   l(    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   pad8   s
    
c         C   s4  t  |   }  d d d d d d d d g } xt d	 t |   d
  D]} |  | | d
 !} g  } t d	 d
 d  D] } | t | | | d ! qq ~ } xb t d d
  D]Q } | i t t | | d  | | d t | | d  | | d   q W| \ } }	 }
 } } } } } x t d
  D] } | t |  t	 | | |  t
 | | | } t |  t | |	 |
  } | | | t | |  |
 |	 | t | |  f \ } } } } } }
 }	 } q(Wg  } t | | |	 |
 | | | | | g  D] \ } } | t | |  q~ } qC Wd i t t |   S(   Nig	jl   .v irn<l   :uJ iRQl   h
6 iكi[i    i@   i   i   i   i   i   t    (   R   t   rangeR   R   t   appendR   R   R
   R	   R   t   KR   R   t   zipt   joint   mapR   (   R   t   Ht   it   blockt   _[1]t   jt   wordst   tt   at   bt   ct   dt   et   ft   gt   ht   T1t   T2t   _[2]R   R   (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pyt   hash?   s&     > 	F 0NVN(   t   __doc__R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R3   (    (    (    s-   /home/ping/web/passpet/darcs/server/sha256.pys   <module>   s<   													
