ó
æ¨[Qc           @@  sô   d  d l  m Z y d  d l Z e j ƒ  Wn e k
 r= n Xd  d l Z d  d l m Z d  d l m	 Z	 d  d l
 m Z m Z m Z m Z m Z m Z d „  Z d d „ Z e d „ Z d d e d	 „ Z e d
 k rð d  d l Z e j ƒ  n  d S(   i    (   t   absolute_importN(   t   pack(   t   common(   t
   is_integert   bt   bytet   get_word_alignmentt	   ZERO_BYTEt
   EMPTY_BYTEc         C@  s   t  t j |  ƒ d ƒ S(   Ni   (   t   intt   binasciit   hexlify(   t	   raw_bytes(    (    sc   /home/tom/ab/x64lucid-deps/install/lib/python2.7/site-packages/rsa-3.1.1-py2.7.egg/rsa/transform.pyt	   bytes2int'   s    c         C@  s  t  |  ƒ s" t d |  j ƒ ‚ n  |  d k  rA t d |  ƒ ‚ n  |  d k r_ d } t g } n t j |  ƒ } g  } | r® | d k r® | | k r® t d | | f ƒ ‚ q® n  x4 |  d k rä | j d t	 |  d @ƒ ƒ |  d L}  q± W| r| d k r| | t } n t
 } | t
 j | ƒ S(   Ns-   You must pass an integer for 'number', not %si    s#   Negative numbers cannot be used: %ii   s0   Needed %i bytes for number, but block size is %iiÿ   i   (   R   t	   TypeErrort	   __class__t
   ValueErrorR   R   t	   byte_sizet   OverflowErrort   insertR   R   t   join(   t   numbert
   block_sizet   needed_bytesR   t   padding(    (    sc   /home/tom/ab/x64lucid-deps/install/lib/python2.7/site-packages/rsa-3.1.1-py2.7.egg/rsa/transform.pyt
   _int2bytes6   s*    c         C@  s?   d } | d } x( |  D]  } | | k r6 | d 7} q Pq W| S(   Ni    i   (    (   R   t   needlet   leadingt   _bytet   x(    (    sc   /home/tom/ab/x64lucid-deps/install/lib/python2.7/site-packages/rsa-3.1.1-py2.7.egg/rsa/transform.pyt   bytes_leadingv   s    
c         C@  s€  |  d k  r t  d |  ƒ ‚ n  | r: | r: t  d ƒ ‚ n  |  d @t d ƒ } |  } t | ƒ \ } } } }	 d |	 }
 x1 | d k r© t |
 | | @ƒ | } | | L} qy Wt | ƒ } |  d k rË t } n  | | } t | ƒ } | r4| d k r4| r| | k rt d | | f ƒ ‚ n  | j | t ƒ } nH | r|| d k r|| | } | r|| | } | j | | t ƒ } q|n  | S(   Ni    s&   Number must be an unsigned integer: %ds/   You can either fill or pad chunks, but not bothi   t    s   >%ss-   Need %d bytes for number, but fill size is %d(	   R   R   R   R   R   R   t   lenR   t   rjust(   R   t	   fill_sizet
   chunk_sizet   overflowR   t   numt	   word_bitst   _t   max_uintt	   pack_typet   pack_formatt   zero_leadingt   lengtht	   remaindert   padding_size(    (    sc   /home/tom/ab/x64lucid-deps/install/lib/python2.7/site-packages/rsa-3.1.1-py2.7.egg/rsa/transform.pyt	   int2bytesŽ   s:    "
	


t   __main__(   t
   __future__R    t   psycot   fullt   ImportErrorR
   t   structR   t   rsaR   t   rsa._compatR   R   R   R   R   R   R   t   NoneR   R   t   FalseR/   t   __name__t   doctestt   testmod(    (    (    sc   /home/tom/ab/x64lucid-deps/install/lib/python2.7/site-packages/rsa-3.1.1-py2.7.egg/rsa/transform.pyt   <module>   s    .	@K