ó
T:´Nc           @   s£   d  Z  d Z d d l Z d d l Z d d l Z d d l Te j d k  rU d „  Z n e Z d e j f d „  ƒ  YZ	 d	 e j f d
 „  ƒ  YZ
 d „  Z d „  Z d S(   s&   Self-testing for PyCrypto hash moduless   $Id$iÿÿÿÿN(   t   *i  c          K   s
   |  j  ƒ  S(   N(   t   copy(   t   kwargs(    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   dict&   s    t   HashSelfTestc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sD   t  j j |  ƒ | |  _ t | ƒ |  _ t | ƒ |  _ | |  _ d  S(   N(   t   unittestt   TestCaset   __init__t   hashmodt   bt   expectedt   inputt   description(   t   selfR   R   R
   R   (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR   .   s
    	c         C   s   |  j  S(   N(   R   (   R   (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   shortDescription5   s    c         C   s  |  j  j ƒ  } | j |  j ƒ t j | j ƒ  ƒ } | j ƒ  } |  j  j |  j ƒ } | j ƒ  } t j | j ƒ  ƒ } |  j |  j	 | ƒ t
 j d d k rÅ |  j |  j	 | ƒ |  j |  j	 | ƒ n2 |  j |  j	 j ƒ  | ƒ |  j |  j	 j ƒ  | ƒ |  j |  j	 | ƒ d  S(   Ni    i   (   R   t   newt   updateR   t   binasciit   b2a_hext   digestt	   hexdigestt   assertEqualR
   t   syst   version_infot   decode(   R   t   ht   out1t   out2t   out3t   out4(    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   runTest8   s    (   t   __name__t
   __module__R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR   ,   s   		t   MACSelfTestc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sJ   t  j j |  ƒ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(	   R   R   R   R   t   expected_dictR   t   keyt   hashmodsR   (   R   R   R   R"   R   R#   R$   (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR   P   s    					c         C   s   |  j  S(   N(   R   (   R   (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR   Y   s    c         C   sÂ  x»|  j  j ƒ  D]ª} |  j | } t j t |  j ƒ ƒ } t j t |  j ƒ ƒ } t d j |  j  | j	 ƒ  ƒ ƒ } |  j
 j | d | ƒ} | j | ƒ t j | j ƒ  ƒ } | j ƒ  } |  j
 j | | | ƒ } | j ƒ  }	 t j | j ƒ  ƒ }
 | j ƒ  } | j t d ƒ ƒ t j | j ƒ  ƒ } |  j | | ƒ t j d d k rn|  j | | ƒ |  j | |	 ƒ n, |  j | j ƒ  | ƒ |  j | j ƒ  |	 ƒ |  j | |
 ƒ |  j | | ƒ q Wd  S(   Nt    t	   digestmods   blah blah blahi    i   (   R"   t   keysR$   R   t   a2b_hexR	   R#   R   t   joint   splitR   R   R   R   R   R   R   R   R   R   R   (   R   t   hashnameR   R#   t   dataR
   R   R   R   R   R   t   h2t   out5(    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR   \   s.    "(   R   R    R   R   R   (    (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyR!   N   s   			c   
      C   s    g  } x“ t  t | ƒ ƒ D] } | | } t | ƒ d k  rV | \ } } t | ƒ } n | \ } } } d | | d | f }	 | j t |  |	 | | ƒ ƒ q W| S(   Ni   s
   %s #%d: %si   (   t   ranget   lent   reprt   appendR   (
   t   modulet   module_namet	   test_datat   testst   it   rowR
   R   R   t   name(    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   make_hash_tests   s    
 c      	   C   s|   g  } xo t  t | ƒ ƒ D][ } | | } | \ } } }	 }
 d | | d |
 f } | j t |  | |	 | | | ƒ ƒ q W| S(   Ns
   %s #%d: %si   (   R/   R0   R2   R!   (   R3   R4   R5   R$   R6   R7   R8   R#   R,   t   resultsR   R9   (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   make_mac_testsŒ   s    
&(   t   __doc__t   __revision__R   R   R   t   Crypto.Util.py3compatt
   hexversionR   R   R   R!   R:   R<   (    (    (    s?   /usr/lib/python2.7/dist-packages/Crypto/SelfTest/Hash/common.pyt   <module>   s   
"1	