U
    ÓZj+  ã                   @   sF   d Z ddlZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZdS )	zäACME-specific JWS.

The JWS implementation in josepy only implements the base JOSE standard. In
order to support the new header fields defined in ACME, this module defines some
ACME-specific classes that layer on top of josepy.
é    Nc                   @   sL   e Zd ZdZejddejd�Zejddd�Zejddd�Z	ej
dd	„ ƒZd
S )ÚHeaderz?ACME-specific JOSE Header. Implements nonce, kid, and url.
    ÚnonceT)Ú	omitemptyÚencoderÚkid)r   Úurlc              
   C   sF   zt  | ¡W S  t jk
r@ } zt  d |¡¡‚W 5 d }~X Y nX d S )NzInvalid nonce: {0})ÚjoseZdecode_b64joseZDeserializationErrorÚformat)ÚvalueÚerror© r   úK/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/acme/jws.pyr      s    zHeader.nonceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚFieldZencode_b64joser   r   r   Údecoderr   r   r   r   r   
   s   r   c                   @   s2   e Zd ZdZejjZeZ	ej
dde	ƒ e	jd�ZdS )Ú	SignaturezGACME-specific Signature. Uses ACME-specific Header for customer fields.ÚheaderT)r   Údefaultr   N)r   r   r   r   r   r   Ú_orig_slotsÚ	__slots__r   Z
header_clsr   Ú	from_jsonr   r   r   r   r   r      s     þr   c                       s2   e Zd ZdZeZejjZ	e
d‡ fdd„	ƒZ‡  ZS )ÚJWSzCACME-specific JWS. Includes none, url, and kid in protected header.Nc              
      s6   |d k}t t| ƒj|||tdddddgƒ||||d�S )Nr   r   r   ZjwkÚalg)Úkeyr   Zprotectr   r   r   Úinclude_jwk)Úsuperr   ÚsignÚ	frozenset)ÚclsÚpayloadr   r   r   r   r   r   ©Ú	__class__r   r   r   -   s      ýzJWS.sign)NN)r   r   r   r   r   Zsignature_clsr   r   r   r   Úclassmethodr   Ú__classcell__r   r   r#   r   r   (   s
   r   )r   Zjosepyr   r   r   r   r   r   r   r   Ú<module>   s   