ó
^ęWc           @   sÓ  y) e  e Z d    Z d   Z d   Z Wn, e k
 rW e Z e Z e Z d   Z n Xd d l	 Z	 d Z
 d. Z d0 Z d   Z d   Z d   Z d e d  Z e d e d d e  Z d   Z d e d  Z e e  Z e e e e g 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!   Z" d"   Z# d#   Z$ e Z% d$ Z& d%   Z' d&   Z( d' d(  Z) d d l* Z* d) d*  Z+ d+   Z, d,   Z- d S(1   c         C   s   d j  d   |  D  S(   s(   Convert array of integers to byte stringt    c         s   s   |  ] } t  |  Vq d  S(   N(   t   chr(   t   .0t   x(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>   s    (   t   join(   t   b(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   asbytes   s    c         C   s   d j  |   S(   s%   Convert array of bytes to byte stringR    (   R   (   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   joinbytes   s    c         C   s   t  |  | d  | d ?d @S(   s   Return i'th bit of bytestring hi   i   (   t   ord(   t   ht   i(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   bit   s    c         C   s   |  | d | d ?d @S(   Ni   i   (    (   R	   R
   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyR      s    i˙˙˙˙Ni   i   i˙   i   iü   l	   íSë9i@eMó^¨w|o c         C   s   t  j |   j   S(   N(   t   hashlibt   sha512t   digest(   t   m(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   H#   s    c         C   sM   | d k r d St  |  | d |  d | } | d @rI | |  | } n  | S(   Ni    i   i   (   t   expmod(   R   t   eR   t   t(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyR   &   s     
 c         C   s   t  |  t d t  S(   Ni   (   R   t   q(   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   inv.   s    iż$ţ˙iBŰ i   i   c         C   s   |  |  d t  t |  |  d  } t | t d d t  } | | | t d k rg | t t } n  | d d k r t | } n  | S(   Ni   i   i   i    i   (   R   t   dR   R   t   I(   t   yt   xxR   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   xrecover4   s    $  i   c         C   sô   |  \ } } } } | \ } } } }	 | | | | t  }
 | | | | t  } | d |	 t  } | d | t  } | | t  } | |
 t  } | |
 t  } | | t  } | | t  } | | t  } | | t  } | | t  } | | | | f S(   Ni   (   R   (   t   pt1t   pt2t   X1t   Y1t   Z1t   T1t   X2t   Y2t   Z2t   T2t   At   Bt   Ct   Dt   Et   Ft   GR   t   X3t   Y3t   Z3t   T3(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   xpt_addR   s    c         C   sŐ   |  \ } } } } | | } | | } d | | } | t  } | | t  }	 |	 |	 | | t  }
 | | t  } | | t  } | | t  } |
 | t  } | | t  } | | t  } |
 | t  } | | | | f S(   Ni   (   R   (   t   ptR   R   R   t   _R%   R&   R'   R(   t   JR)   R+   R*   R   R,   R-   R.   R/   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt
   xpt_doublec   s    

c         C   s$   |  \ } } | | d | | t  f S(   Ni   (   R   (   R1   R   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   pt_xformt   s    c         C   s8   |  \ } } } } | t  |  t | t  |  t f S(   N(   R   R   (   R1   R   R   t   zR2   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt
   pt_unxformx   s    c         C   sJ   | d k r t  d  St t |  | d ?  } | d @rF t | |   S| S(   Ni    i   (   i    i   (   R5   R4   t   xpt_multR0   (   R1   t   nR2   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyR8   |   s     
c         C   s   t  t t |   |   S(   N(   R7   R8   R5   (   R1   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt
   scalarmult   s    c         C   s   g  t  t  D] } |  | ?d @^ q } g  t  t d  D]; } t g  t  d  D] } | | d | | >^ qN  ^ q8 } t |  S(   Ni   i   (   t   rangeR   t   sumR   (   R   R
   t   bitst   jR   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   encodeint   s    'Oc         C   sŚ   |  d } |  d } g  t  t d  D] } | | ?d @^ q% | d @g } g  t  t d  D]; } t g  t  d  D] } | | d | | >^ qq  ^ q[ } t |  S(   Ni    i   i   (   R;   R   R<   R   (   t   PR   R   R
   R=   R>   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   encodepoint   s    

6Oc            sZ   t  |     d t d t   f d   t d t d  D  } t t |  } t |  S(   Ni   c         3   s&   |  ] } d  | t    |  Vq d S(   i   N(   R   (   R   R
   (   R	   (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>   s    i   (   R   R   R<   R;   R:   R&   RA   (   t   skt   aR%   (    (   R	   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   publickey   s    5c            s0   t  |     t   f d   t d t  D  S(   Nc         3   s&   |  ] } d  | t    |  Vq d S(   i   N(   R   (   R   R
   (   R	   (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>   s    i   (   R   R<   R;   R   (   R   (    (   R	   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   Hint   s    c   	         sÎ   t  |    d t d t   f d   t d t d  D  } t g  t t d t d  D] }   | ^ q\  } t | |   } t t |  } | t t |  | |   | t	 } t |  t
 |  S(   Ni   c         3   s&   |  ] } d  | t    |  Vq d S(   i   N(   R   (   R   R
   (   R	   (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>   s    i   i   i   (   R   R   R<   R;   R   RE   R:   R&   RA   t   lR?   (	   R   RB   t   pkRC   R
   t   intert   rt   Rt   S(    (   R	   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   signature   s    54&c         C   sG   |  d } |  d } | | | | d t  | | | | t d k S(   Ni    i   (   R   R   (   R@   R   R   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   isoncurveĽ   s    

c            s#   t    f d   t d t  D  S(   Nc         3   s&   |  ] } d  | t    |  Vq d S(   i   N(   R   (   R   R
   (   t   s(    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>Ť   s    i    (   R<   R;   R   (   RN   (    (   RN   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt	   decodeintŞ   s    c            s   t    f d   t d t d  D  } t |  } | d @t   t d  k r_ t | } n  | | g } t |  s t d   n  | S(   Nc         3   s&   |  ] } d  | t    |  Vq d S(   i   N(   R   (   R   R
   (   RN   (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pys	   <genexpr>Ž   s    i    i   s#   decoding point that is not on curve(   R<   R;   R   R   R   R   RM   t	   Exception(   RN   R   R   R@   (    (   RN   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   decodepoint­   s    )  c   	      C   sĺ   t  |   t d k r% t d   n  t  |  t d k rJ t d   n  t |  d t d ! } t |  } t |  t d t d ! } t t |  | |  } t t |  } t	 t
 t |  t t | |     } | | k S(   Ni   s   signature length is wrongi   s   public-key length is wrongi    (   t   lenR   RP   RQ   RO   RE   RA   R:   R&   R7   R0   R5   (	   RN   R   RG   RJ   R%   RK   R	   t   v1t   v2(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt
   checkvalidľ   s      *im c         C   sr   |  \ } } | \ } } | \ } } d | | | | d | }	 d | | | | d | }
 |	 t  |
 t  f S(   Ni   i   (   R@   (   R9   R   R   t   xnt   znt   xmt   zmt   xdt   zdR   R6   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   addŇ   s    c         C   s^   |  \ } } | d | d d } d | | | d t  | | | d } | t | t f S(   Ni   i   (   R%   R@   (   R9   RV   RW   R   R6   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   doubleÚ   s    *i	   c            sW   | d f  t         f d       |   \ \ } } } | t |  t S(   Ni   c            sn   |  d k r   f S  |  d  \ } } |  d @rR t  | |   t |  f St |  t  | |   f S(   Ni   i   (   R\   R]   (   R   t   pmt   pm1(   t   ft   onet   two(    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyR`   ć   s     

(   R]   R   R@   (   R9   t   baseR   R6   R2   (    (   R`   Ra   Rb   si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt
   curve25519ŕ   s
    i    c         C   sC   |  p t  j d t  }  |  d M}  |  d d >M}  |  d d	 >O}  |  S(
   Ni    i   i   i   i   i@   iř˙˙˙iř   iř   (   t   randomt   randintR@   (   R9   (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   genkeyń   s
    
c          C   sn   d d  l  }  t t j t t t   j d  } |  j d  } t |  } t | | |  } t	 | | |  S(   Ni˙˙˙˙s   utf-8i    (
   t   ost   strRe   Rf   R   t   encodet   urandomRD   RL   RU   (   Rh   t   msgRB   RG   t   sig(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   dsa_test  s    %c          C   s:   t    }  t    } t |  t |   t | t |    k S(   N(   Rg   Rd   (   t   sk1t   sk2(    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   dh_test
  s    		l                                      l   í˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙l                                    l   íSë9i@eMó^¨w|o                (.   t   unicodet   Falset   PY3R   R   R   t	   NameErrort   Truet   bytesR   R   R   RF   R   R   R   R   R   R   t   Byt   BxR&   R0   R4   R5   R7   R8   R:   R?   RA   RD   RE   RL   RM   RO   RQ   RU   R@   R%   R\   R]   Rd   Re   Rg   Rn   Rq   (    (    (    si   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/wheel/wheel/signatures/djbec.pyt   <module>	   s^   																						
			