
    M/e
                         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y)
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y)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j                  |            d }~ww xY w)NzInvalid nonce: {0})josedecode_b64joseDeserializationErrorformat)r   errors     */usr/lib/python3/dist-packages/acme/jws.pyr   zHeader.nonce   sN    	P&&u--(( 	P++,@,G,G,N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    'TZZ4I\I\]E8E?]#ET:C#:#ET:C#: ]]PS PU 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<   y)	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!      sD    Q**I JTZZ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.payloadkeyalgr   r
   r	   r   c           
      P    |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   s=     Tkw|G#$-.S$T"'Sc(3  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$$I >B55 5txx 5d6G6G 5PXY^P_ 53-5-5c]5FJhh5 5r   r)   )r   typingr   josepyr   r   r!   r)   r   r   r   <module>r=      sD     PT[[ P$	& 	&5$(( 5r   