o
    6aS	                     @   sR   d Z ddlm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 )
zACME-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.
    )OptionalNc                   @   sV   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ed	efd
dZdS )Headerz?ACME-specific JOSE Header. Implements nonce, kid, and url.
    nonceT)	omitemptyencoderkid)r   urlvaluereturnc              
   C   s8   zt | W S  t jy } zt d|d }~ww )NzInvalid nonce: {0})josedecode_b64joseDeserializationErrorformat)r	   error r   */usr/lib/python3/dist-packages/acme/jws.pyr      s   zHeader.nonceN)__name__
__module____qualname____doc__r   Fieldencode_b64joser   r   r   decoderstrbytesr   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   
header_clsr   	from_jsonr   r   r   r   r   r      s    
r   c                       sd   e Zd ZdZeZejjZ	e
	ddedejdejdee dee dee d	ejf fd
dZ  ZS )JWSzCACME-specific JWS. Includes none, url, and kid in protected header.Npayloadkeyalgr   r   r   r
   c              
      s,   |d u }t  j|||tg d||||dS )N)r   r   r   jwkr%   )r$   r%   protectr   r   r   include_jwk)supersign	frozenset)clsr#   r$   r%   r   r   r   r(   	__class__r   r   r*   1   s   
zJWS.sign)NN)r   r   r   r   r   signature_clsr   r"   r   r   classmethodr   JWKJWASignaturer   r   r*   __classcell__r   r   r-   r   r"   ,   s    r"   )r   typingr   josepyr   r   r   r"   r   r   r   r   <module>   s    