
    U-f
                         d Z ddlmZ ddlZ G d dej                  Z G d dej                  Z G 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                       e Zd ZU dZ ej        ddej                  Zee	         e
d<    ej        dd          Zee         e
d<    ej        dd          Zee         e
d<   ej        ded	e	fd
            ZdS )Headerz?ACME-specific JOSE Header. Implements nonce, kid, and url.
    nonceT)	omitemptyencoderkid)r   urlvaluereturnc                     	 t          j        |           S # t           j        $ r,}t          j        d                    |                    d }~ww xY w)NzInvalid nonce: {0})josedecode_b64joseDeserializationErrorformat)r   errors     W/home/cdr/domains/dharristours.com/map/certbot/lib/python3.11/site-packages/acme/jws.pyr   zHeader.nonce   s_    	P&u---( 	P 	P 	P+,@,G,G,N,NOOO	Ps    A'AAN)__name__
__module____qualname____doc__r   fieldencode_b64joser   r   bytes__annotations__r	   strr
   decoder     r   r   r      s          'TZ4I\]]]E8E?]]]#ET:::C#:::#ET:::C#::: ]PS PU P P P ]P P Pr   r   c                   |    e Zd ZU dZej        j        ZeZ	 ej
        dd e	            e	j                  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!      si         QQ*I JTZD**,,$& & &FF & & & & &r   r!   c                        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
            Z xZS )JWSzCACME-specific JWS. Includes none, url, and kid in protected header.Npayloadkeyalgr   r
   r	   r   c           
      |    |d u }t                                          |||t          g d          ||||          S )N)r   r
   r	   jwkr,   )r+   r,   protectr   r
   r	   include_jwk)supersign	frozenset)	clsr*   r+   r,   r   r
   r	   r0   	__class__s	           r   r2   zJWS.sign1   sO     Tkww||G#$-.S.S.S$T$T"'Sc(3  5 5 	5r   )NN)r   r   r   r   r!   signature_clsr   r)   r$   r%   classmethodr   JWKJWASignaturer   r   r2   __classcell__)r5   s   @r   r)   r)   ,   s        MMM$I >B5 55 5tx 5d6G 5PXY^P_ 53-5-5c]5FJh5 5 5 5 5 [5 5 5 5 5r   r)   )r   typingr   josepyr   r   r!   r)   r   r   r   <module>r=      s              P P P P PT[ P P P$	& 	& 	& 	& 	& 	& 	& 	&5 5 5 5 5$( 5 5 5 5 5r   