ó
h
\c           @   s^   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z d e f d     YZ d S(   i˙˙˙˙N(   t   ns(   t   utilst   UsernameTokenc           B   sV   e  Z d  Z d Z d Z d d e d d d  Z d   Z d   Z	 d   Z
 d   Z RS(	   sP  UsernameToken Profile 1.1

    https://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-UsernameTokenProfile.pdf

    Example response using PasswordText::

        <wsse:Security>
          <wsse:UsernameToken>
            <wsse:Username>scott</wsse:Username>
            <wsse:Password Type="wsse:PasswordText">password</wsse:Password>
          </wsse:UsernameToken>
        </wsse:Security>

    Example using PasswordDigest::

        <wsse:Security>
          <wsse:UsernameToken>
            <wsse:Username>NNK</wsse:Username>
            <wsse:Password Type="wsse:PasswordDigest">
                weYI3nXd8LjMNVksCKFV8t3rgHh3Rw==
            </wsse:Password>
            <wsse:Nonce>WScqanjCEAC4mQoBE07sAQ==</wsse:Nonce>
            <wsu:Created>2003-07-16T01:24:32Z</wsu:Created>
          </wsse:UsernameToken>
        </wsse:Security>

    sR   http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0sQ   http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0c         C   s:   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   usernamet   passwordt   password_digestt   noncet   createdt
   use_digest(   t   selfR   R   R   R   R   R   (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyt   __init__(   s    					c         C   sŇ   t  j |  } | j d t j  } | d  k rP t  j j   } | j |  n  t  j j |  j	  g } |  j
 d  k	 s |  j d  k	 rť |  j rĽ | j |  j    qť | j |  j    n  | j |  | | f S(   Ns   {%s}UsernameToken(   R   t   get_security_headert   findR    t   WSSEt   NoneR   t   appendt   UsernameR   R   R   R   t   extendt   _create_password_digestt   _create_password_text(   R	   t   envelopet   headerst   securityt   tokent   elements(    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyt   apply1   s    	c         C   s   d  S(   N(    (   R	   R   (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyt   verifyH   s    c         C   s#   t  j j |  j d d |  j g S(   Nt   Types   %s#PasswordText(   R   R   t   PasswordR   t   username_token_profile_ns(   R	   (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyR   K   s    		c         C   ső   |  j  r |  j  j d  } n t j d  } t j |  j  } |  j s t j	 t
 j | | j d  |  j j d   j    j d  } n	 |  j } t j j | d d |  j t j j t j	 |  j d  d d |  j t j j |  g S(   Ns   utf-8i   t   asciiR   s   %s#PasswordDigestt   EncodingTypes   %s#Base64Binary(   R   t   encodet   ost   urandomR   t   get_timestampR   R   t   base64t	   b64encodet   hashlibt   sha1R   t   digestt   decodeR   R   R   t   Noncet   soap_message_secutity_nst   WSUt   Created(   R	   R   t	   timestampR(   (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyR   R   s$    					N(   t   __name__t
   __module__t   __doc__R   R+   R   t   FalseR
   R   R   R   R   (    (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyR   	   s   			(	   R$   R&   R!   t   zeepR    t	   zeep.wsseR   t   objectR   (    (    (    sG   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/wsse/username.pyt   <module>   s
   