ó
‚¾^Yc           @   s  d  d l  m Z m Z m Z m Z m Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z m Z m Z d  d l m Z d  d l m Z m Z d g Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ  d e f d „  ƒ  YZ! d e f d  „  ƒ  YZ" d! e f d" „  ƒ  YZ# i e ƒ  e j$ j% 6e ƒ  e j& j% 6e ƒ  e j' j% 6e ƒ  e j( j% 6e ƒ  e j) j% 6e ƒ  e j* j% 6e ƒ  e j+ j% 6e ƒ  e j, j% 6e ƒ  e j- j% 6e! ƒ  e j. j% 6e! ƒ  e j/ j% 6e" ƒ  e j0 j% 6e ƒ  e j1 j% 6e ƒ  e j2 j% 6e ƒ  e j3 j% 6e ƒ  e j4 j% 6e ƒ  e j5 j% 6e ƒ  e j6 j% 6e ƒ  e j7 j% 6e ƒ  e j8 j% 6e ƒ  e j9 j% 6e ƒ  e j: j% 6e ƒ  e j; j% 6e ƒ  e j< j% 6e ƒ  e j= j% 6e ƒ  e j> j% 6Z? i e  ƒ  e j@ jA 6e! ƒ  e j/ jA 6e  ƒ  e jB jA 6e! ƒ  e j. jA 6e" ƒ  e j0 jA 6e# ƒ  e jC jA 6ZD d# e f d$ „  ƒ  YZE eE e? eD ƒ ZF d% S(&   iÿÿÿÿ(   t   baset   tagt   univt   chart   useful(   t   eoo(   t   int2octt   oct2intt	   ints2octst   nullt   str2octs(   t   to_bytes(   t   debugt   errort   encodet   AbstractItemEncoderc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   i   c         C   s®   | j  ƒ  \ } } } | | B} | r5 | t j O} n  | d k  rO t | | Bƒ St | d @ƒ } | d L} x, | r— t d | d @Bƒ | } | d L} ql Wt | d Bƒ | Sd  S(   Ni   i   i   i€   (   t   asTupleR   t   tagFormatConstructedR   (   t   selft   tt   isConstructedt   tagClasst	   tagFormatt   tagIdt   vt   s(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt	   encodeTag   s    

	c         C   s¥   | r |  j  r t d ƒ S| d k  r0 t | ƒ St } x( | r` t | d @ƒ | } | d L} q9 Wt | ƒ } | d k r t j d | ƒ ‚ n  t d | Bƒ | Sd  S(   Ni€   iÿ   i   i~   s   Length octets overflow (%d)(   t   supportIndefLenModeR   R	   t   lenR   t   PyAsn1Error(   R   t   lengtht   defModet	   substratet   substrateLen(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   encodeLength#   s    

	c         C   s   t  j d ƒ ‚ d  S(   Ns   Not implemented(   R   R   (   R   t	   encodeFunt   valueR   t   maxChunkSize(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   encodeValue2   s    c         C   s(   | s |  j  r t S| t j | ƒ Sd  S(   N(   R   R	   R   t   endOfOctets(   R   R#   R   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   _encodeEndOfOctets5   s    c         C   s…   |  j  | | | | ƒ \ } } | j ƒ  } | r} | s? t } n  |  j | d | ƒ |  j t | ƒ | ƒ | |  j | | ƒ S| Sd  S(   Niÿÿÿÿ(   R&   t	   getTagSett   TrueR   R"   R   R(   (   R   R#   R$   R   R%   R    R   t   tagSet(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR   ;   s    	>(   t   __name__t
   __module__R   R   R"   R&   R(   R   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR      s   				t   EndOfOctetsEncoderc           B   s   e  Z d  „  Z RS(   c         C   s
   t  d f S(   Ni    (   R	   (   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   M   s    (   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR.   L   s   t   ExplicitlyTaggedItemEncoderc           B   s   e  Z d  „  Z RS(   c         C   si   t  | t j ƒ r7 | j d | j ƒ  d  d d ƒ } n | j d | j ƒ  d  ƒ } | | | | ƒ d f S(   NR+   iÿÿÿÿt   cloneValueFlagi   (   t
   isinstanceR    t   AbstractConstructedAsn1Itemt   cloneR)   (   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   R   s
    (   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR/   Q   s   t   BooleanEncoderc           B   s/   e  Z d  Z e d ƒ Z e d ƒ Z d „  Z RS(   i    i   c         C   s   | r |  j  p |  j d f S(   Ni    (   t   _truet   _false(   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   c   s    (   i   (   i    (   R,   R-   R   R   R5   R6   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR4   ^   s   t   IntegerEncoderc           B   s)   e  Z d  Z e Z e d ƒ Z d „  Z RS(   i    c         C   sK   | d k r/ |  j  r t d f S|  j d f Sn  t t | ƒ d t ƒd f S(   Ni    t   signed(   t   supportCompactZeroR	   t   encodedZeroR   t   intR*   (   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   l   s
    	
(   i    (   R,   R-   R   t   FalseR9   R   R:   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR7   g   s   t   BitStringEncoderc           B   s   e  Z d  „  Z RS(   c   	      C   sñ   t  | ƒ d r+ | d t  | ƒ d >} n | } | sN t  | ƒ | d k r‚ | j ƒ  } t t  | ƒ d t  | ƒ ƒ | d f Sd } t } xV | t  | ƒ k  ræ | } t | | d t  | ƒ ƒ } | | | | | !| | ƒ 7} q‘ W| d f S(   Ni   i    i   (   R   t   asOctetsR   R	   t   min(	   R   R#   R$   R   R%   t   alignedValueR    t   stopt   start(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   x   s    (!(   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR=   w   s   t   OctetStringEncoderc           B   s   e  Z d  „  Z RS(   c         C   s”   | s t  | ƒ | k r) | j ƒ  d f Sd } t } xN t r… | j | | | | !ƒ } | sb Pn  | | | | | ƒ } | | 7} q8 W| d f Sd  S(   Ni    i   (   R   R>   R	   R*   R3   (   R   R#   R$   R   R%   t   posR    R   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   Œ   s    	(   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRC   ‹   s   t   NullEncoderc           B   s   e  Z d  Z d „  Z RS(   i    c         C   s
   t  d f S(   Ni    (   R	   (   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   ž   s    (   R,   R-   R   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRE   ›   s   t   ObjectIdentifierEncoderc           B   s   e  Z d  Z d „  Z RS(   i    c         C   sê  | j  ƒ  } t | ƒ d k  r7 t j d | f ƒ ‚ n  d } | d } | d } d | k oh d k n rî | d k r‘ | d f | d } q(| d k r± | f | d } q(| d k rÕ | d f | d } q(t j d | f ƒ ‚ n: | d k r| d f | d } n t j d | f ƒ ‚ x¯ | D]§ }	 d |	 k oLd	 k n ra| |	 f 7} q/|	 d	 k r½|	 d	 @f }
 |	 d
 L}	 x) |	 r¯d |	 d	 @Bf |
 }
 |	 d
 L}	 q‡W| |
 7} q/t j d |	 | f ƒ ‚ q/Wt | ƒ d f S(   Ni   s   Short OID %si    i   i'   i(   iP   s"   Impossible first/second arcs at %si   i   i€   s   Negative OID arc %s at %s(    (   R   R   R   R   R   (   R   R#   R$   R   R%   t   oidt   octetst   firstt   secondt   subOidt   res(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   ¥   s:    


	(   R,   R-   R   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRF   ¢   s   t   RealEncoderc           B   s5   e  Z d  Z d Z e d „  ƒ Z d „  Z d „  Z RS(   i    i   c         C   s  d	 \ } } |  d k  r! d } n  | d k  r6 d } n  |  | 9}  | d k r |  d t  | ƒ d | 9}  t  | ƒ d | } n? | d k r¾ |  d t  | ƒ d | 9}  t  | ƒ d | } n  x7 t r÷ t |  ƒ |  k ró |  | 9}  | d 8} qÁ n  PqÁ W| t |  ƒ | | f S(
   Ni   i    iÿÿÿÿi   i   i   i   i   (   i   i   (   t   absR*   R;   (   t   mt   encbaset   et   mst   es(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   _dropFloatingPointÕ   s&    		
	

c         C   sm  | \ } } } d d d g } | j  | k rC |  j | | j  | ƒ S|  j  | k rh |  j | |  j  | ƒ S| | | g } | | | g } d } d }	 t d ƒ } x¼ t d ƒ D]® }
 |  j | |
 | |
 | |
 ƒ \ } | |
 <| |
 <| |
 <t | |
 ƒ t | ƒ k  s2t | |
 ƒ t | ƒ k r« | |
 | k  r« | |
 } t | |
 ƒ } | |
 }	 q« q« W| | |	 | f S(   Ni   i   i   i   t   infi   (   t
   binEncBaseRT   t   floatt   rangeRN   R;   (   R   R$   RO   t   bRQ   t   encBaset   mantissat	   exponentat   signRP   t   i(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   _chooseEncBaseì   s&    9,
c         C   s¬  | j  ƒ  r t d ƒ d f S| j ƒ  r8 t d ƒ d f S| \ } } } | sW t d f S| d k r’ t d | | d k r~ d p d | f ƒ d f S| d k r•d	 } |  j | ƒ \ }	 } }
 } |	 d k  rØ | d O} n  |
 d k rx¤ | d
 @d k r| d
 L} | d
 7} qç Wny |
 d k rVx( | d @d k rH| d L} | d
 7} q!W| d O} n5 x( | d @d k r€| d L} | d
 7} qYW| d O} d } x( | d
 @d k r»| d
 L} | d
 7} q”W| d k rÚt j d ƒ ‚ n  | | d >O} t } | d k s| d k rt | d @ƒ } n¤ x. | d k rIt | d @ƒ | } | d L} qW| d k rƒ| rƒt | d ƒ d	 @rƒt d ƒ | } n  | d k r½| r½t | d ƒ d	 @r½t d ƒ | } n  t	 | ƒ } | d k rçt j d ƒ ‚ n  | d
 k rönP | d k r| d
 O} n7 | d k r(| d O} n | d O} t | d @ƒ | } t } x( | rvt | d @ƒ | } | d L} qOWt | ƒ | | } | d f St j d | ƒ ‚ d  S(   Ni@   i    iA   i
   s   %dE%s%dt   +t    i   i€   i   i   i   i   i   i   i   i    s   Scale factor overflowiÿÿÿÿiÿ   s   Real exponent overflows   Prohibited Real base %s(   i    iÿÿÿÿ(
   t   isPlusInfinityR   t   isMinusInfinityR	   R
   R_   R   R   R   R   (   R   R#   R$   R   R%   RO   RY   RQ   t   foRR   RP   t   sft   eot   nt   poR    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&     s|    
/




&'
	
(   R,   R-   R   RV   t   staticmethodRT   R_   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRM   Ñ   s
   	t   SequenceEncoderc           B   s   e  Z d  „  Z RS(   c         C   s®   | j  ƒ  | j ƒ  t } t | ƒ } x{ | d k r£ | d 8} | | d  k rU q) n  | j | ƒ } | d  k	 r† | | | k r† q) n  | | | | | ƒ | } q) W| d f S(   Ni    i   (   t   setDefaultComponentst   verifySizeSpecR	   R   t   Nonet   getDefaultComponentByPosition(   R   R#   R$   R   R%   R    t   idxt	   component(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   J  s    


(   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRj   I  s   t   SequenceOfEncoderc           B   s   e  Z d  „  Z RS(   c         C   s]   | j  ƒ  t } t | ƒ } x4 | d k rR | d 8} | | | | | ƒ | } q W| d f S(   Ni    i   (   Rl   R	   R   (   R   R#   R$   R   R%   R    Ro   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   ]  s    

(   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRq   \  s   t   ChoiceEncoderc           B   s   e  Z d  „  Z RS(   c         C   s   | | j  ƒ  | | ƒ d f S(   Ni   (   t   getComponent(   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   j  s    (   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRr   i  s   t
   AnyEncoderc           B   s   e  Z d  „  Z RS(   c         C   s   | j  ƒ  | d k f S(   Ni    (   R>   (   R   R#   R$   R   R%   (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyR&   o  s    (   R,   R-   R&   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRt   n  s   t   Encoderc           B   s)   e  Z e Z i  d  „ Z e d d „ Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   _Encoder__tagMapt   _Encoder__typeMap(   R   t   tagMapt   typeMap(    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   __init__¢  s    	i    c         C   sÄ  t  | t j ƒ s$ t j d ƒ ‚ n  | rG |  j rG t j d ƒ ‚ n  t j t j @oŒ t j d | rm d pp d | | j	 ƒ  | j
 ƒ  f ƒ | j ƒ  } t | ƒ d k r´ t } n‘ | j d  k	 rè | j |  j k rè |  j | j } n] | |  j k r|  j | } n> | j } | |  j k r/|  j | } n t j d | f ƒ ‚ t j t j @oqt j d | j j | f ƒ | j |  | | | ƒ } t j t j @o¿t j d	 t | ƒ t j | ƒ f ƒ | S(
   Ns;   value is not valid (should be an instance of an ASN.1 Item)s6   Indefinite length encoding not supported by this codecsB   encoder called in %sdef mode, chunk size %s for type %s, value:
%st   inRa   i   s   No encoder for %ss!   using value codec %s chosen by %ss2   built %s octets of substrate: %s
encoder completed(   R1   R    t   Asn1ItemR   R   t   supportIndefLengthR   t   loggert   flagEncodert   prettyPrintTypet   prettyPrintR)   R   t   explicitlyTaggedItemEncodert   typeIdRm   Rw   Rv   t
   baseTagSett	   __class__R,   R   t   hexdump(   R   R$   R   R%   R+   t   concreteEncoderR    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   __call__¦  s2    -	!	 (   R,   R-   R*   R}   Rz   Rˆ   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyRu   ž  s   N(G   t   pyasn1.typeR    R   R   R   R   t   pyasn1.codec.berR   t   pyasn1.compat.octetsR   R   R   R	   R
   t   pyasn1.compat.integerR   t   pyasn1R   R   t   __all__t   objectR   R.   R/   R‚   R4   R7   R=   RC   RE   RF   RM   Rj   Rq   Rr   Rt   R'   R+   t   Booleant   Integert	   BitStringt   OctetStringt   Nullt   ObjectIdentifiert
   Enumeratedt   Realt
   SequenceOft   SetOft   Choicet
   UTF8Stringt   NumericStringt   PrintableStringt   TeletexStringt   VideotexStringt	   IA5Stringt   GraphicStringt   VisibleStringt   GeneralStringt   UniversalStringt	   BMPStringt   ObjectDescriptort   GeneralizedTimet   UTCTimeRx   t   SetRƒ   t   Sequencet   AnyRy   Ru   R   (    (    (    s8   /tmp/pip-build-kpPAdC/pyasn1/pyasn1/codec/ber/encoder.pyt   <module>   sp   ((	<
		/x@