o
    c@
                     @   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                   @   s|   e Zd ZU dZejddejdZee	 e
d< ejdddZee e
d< ejdddZee e
d< 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   5/opt/certbot/lib/python3.10/site-packages/acme/jws.pyr      s   zHeader.nonceN)__name__
__module____qualname____doc__r   fieldencode_b64joser   r   bytes__annotations__r   strr   decoderr   r   r   r   r      s   
 r   c                   @   s<   e Zd ZU dZejjZeZ	ej
dde	 e	jdZeed< 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   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    