
    U-f<                        d Z ddlZddlZddlmZ ddlmZmZmZ ddl	Z
ddlmZ ddlmZmZ ddlmZmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZ  ej        e          Z G d dej                   Z! G d de!e          Z" G d de"          Z# G d d          Z$ G d de$e"          Z% G d de$e"          Z& G d de"          Z'e"(                     e#dej)                            Z*e"(                     e#dej+                            Z,e"(                     e#dej-                            Z.e"(                     e%dej)                            Z/e"(                     e%dej+                            Z0e"(                     e%dej-                            Z1e"(                     e&dej)                            Z2e"(                     e&d ej+                            Z3e"(                     e&d!ej-                            Z4e"(                     e'd"ej)                            Z5e"(                     e'd#ej+                            Z6e"(                     e'd$ej-                            Z7dS )%zZJSON Web Algorithms.

https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40

    N)Hashable)AnyCallableDict)default_backend)hasheshmac)ecpaddingrsa)decode_dss_signatureencode_dss_signature)HashAlgorithm)errors
interfacesjwkc                       e Zd ZdZdS )JWAzJSON Web Algorithm.N)__name__
__module____qualname____doc__     Y/home/cdr/domains/dharristours.com/map/certbot/lib/python3.11/site-packages/josepy/jwa.pyr   r      s         r   r   c            	          e Zd ZU dZi Zeed f         ed<   eed<   deddfdZ	dede
fd	Zdefd
Zedd            ZdefdZededd fd            Zej        dededefd            Zej        dededede
fd            ZdefdZdS )JWASignaturez-Base class for JSON Web Signature Algorithms.
SIGNATURESktynamereturnNc                     || _         d S Nr    )selfr    s     r   __init__zJWASignature.__init__&   s    			r   otherc                 Z    t          |t                    st          S | j        |j        k    S r#   )
isinstancer   NotImplementedr    )r%   r'   s     r   __eq__zJWASignature.__eq__)   s)    %.. 	"!!yEJ&&r   c                 8    t          | j        | j        f          S r#   )hash	__class__r    r%   s    r   __hash__zJWASignature.__hash__.   s    T^TY/000r   signature_clsc                 $    || j         |j        <   |S )z(Register class for JSON deserialization.)r   r    )clsr1   s     r   registerzJWASignature.register1   s     .;})*r   c                     | j         S r#   r$   r/   s    r   to_partial_jsonzJWASignature.to_partial_json7   
    yr   jobjc                     | j         |         S r#   )r   )r3   r8   s     r   	from_jsonzJWASignature.from_json:   s    ~d##r   keymsgc                     t                      )Sign the ``msg`` using ``key``.NotImplementedError)r%   r;   r<   s      r   signzJWASignature.sign>        "###r   sigc                     t                      )z-Verify the ``msg`` and ``sig`` using ``key``.r?   )r%   r;   r<   rC   s       r   verifyzJWASignature.verifyC   rB   r   c                     | j         S r#   r$   r/   s    r   __repr__zJWASignature.__repr__H   r7   r   )r1   r   r!   r   )r   r   r   r   r   r   str__annotations__r   r&   boolr+   intr0   classmethodr4   r6   r:   abcabstractmethodbytesrA   rE   rG   r   r   r   r   r       s        77,.JS.()...	HHHS T    'C 'D ' ' ' '
1# 1 1 1 1    [
     $S $^ $ $ $ [$ 	$ $% $E $ $ $ $ 	$# $E $ $$ $ $ $ $#      r   r   c                   r     e Zd Zej        Zdedeg ef         f fdZ	de
de
de
fdZde
de
de
defd	Z xZS )
_JWAHSr    hash_c                 h    t                                          |            |            | _        d S r#   superr&   r-   r%   r    rR   r.   s      r   r&   z_JWAHS.__init__O   ,    EGG			r   r;   r<   r!   c                     t          j        || j        t                                }|                    |           |                                S )Nbackend)r	   HMACr-   r   updatefinalize)r%   r;   r<   signers       r   rA   z_JWAHS.signS   sB    3	?3D3DEEEc   r   rC   c                 (   t          j        || j        t                                }|                    |           	 |                    |           dS # t          j        j        $ r'}t          
                    |d           Y d }~dS d }~ww xY w)NrY   Texc_infoF)r	   r[   r-   r   r\   rE   cryptography
exceptionsInvalidSignatureloggerdebug)r%   r;   r<   rC   verifiererrors         r   rE   z_JWAHS.verifyX   s    9S$)_5F5FGGG	OOC   
 4	 &7 	 	 	LLL...55555	s   A B*BB)r   r   r   r   JWKOctr   rH   r   r   r&   rO   rA   rJ   rE   __classcell__r.   s   @r   rQ   rQ   L   s        
*CS "m2C)D      ! !E !e ! ! ! !
	% 	e 	% 	D 	 	 	 	 	 	 	 	r   rQ   c                   z    e Zd ZU ej        ZeZee	d<   eZ
ee	d<   dej        dedefdZdej        dededefdZd	S )
_JWARSAr   r-   r;   r<   r!   c                 ^   	 |                     || j        | j                  S # t          $ r5}t                              |d           t          j        d          d}~wt          $ rB}t                              |d           t          j        t          |                    d}~ww xY w)r>   Tr`   %Public key cannot be used for signingN)
rA   r   r-   AttributeErrorre   rf   r   Error
ValueErrorrH   r%   r;   r<   rh   s       r   rA   z_JWARSA.signi   s    	+88Cty999 	H 	H 	HLLL...,FGGG 	+ 	+ 	+LLL...,s5zz***	+s     # 
B,0AB,*=B''B,rC   c                     	 |                     ||| j        | j                   dS # t          j        j        $ r'}t                              |d           Y d}~dS d}~ww xY w),Verify the ``msg` and ``sig`` using ``key``.Tr`   NF)rE   r   r-   rb   rc   rd   re   rf   )r%   r;   r<   rC   rh   s        r   rE   z_JWARSA.verifyt   st    	JJsCty999
 4	 &7 	 	 	LLL...55555	s   "& A!AA!N)r   r   r   r   JWKRSAr   r*   r   r   rI   r-   r   r   RSAPrivateKeyrO   rA   RSAPublicKeyrJ   rE   r   r   r   rm   rm   d   s         
*C!GS!!!(D-(((	+) 	+ 	+% 	+ 	+ 	+ 	+#*  U t      r   rm   c                   <     e Zd Zdedeg ef         ddf fdZ xZS )_JWARSr    rR   r!   Nc                     t                                          |           t          j                    | _         |            | _        d S r#   )rU   r&   r   PKCS1v15r-   rV   s      r   r&   z_JWARS.__init__   s<    '))EGG			r   r   r   r   rH   r   r   r&   rj   rk   s   @r   rz   rz      \        S "m2C)D           r   rz   c                   <     e Zd Zdedeg ef         ddf fdZ xZS )_JWAPSr    rR   r!   Nc                     t                                          |           t          j        t          j         |                      t          j        j                  | _         |            | _        d S )N)mgfsalt_length)rU   r&   r   PSSMGF1
MAX_LENGTHr-   rV   s      r   r&   z_JWAPS.__init__   sW    {w|EEGG'<'<'+J`aaaEGG			r   r}   rk   s   @r   r   r      r~   r   r   c                        e Zd Zej        Zdedeg ef         f fdZ	de
j        dedefdZde
j        dedefdZde
j        ded	edefd
Zde
j        dededefdZ xZS )_JWAECr    rR   c                 h    t                                          |            |            | _        d S r#   rT   rV   s      r   r&   z_JWAEC.__init__   rW   r   r;   r<   r!   c                     |                      ||          }t          |          \  }}t          j                            |j                  }|                    |d          |                    |d          z   S )r>   big)length	byteorder)_signr   r   JWKECexpected_length_for_curvecurveto_bytes)r%   r;   r<   rC   drdsr   s          r   rA   z_JWAEC.sign   su    jjc""%c**B44SY??{{&E{::R[[U >I >
 >
 
 	
r   c                 v   	 |                     |t          j        | j                            S # t          $ r5}t
                              |d           t          j        d          d }~wt          $ rB}t
                              |d           t          j        t          |                    d }~ww xY w)NTr`   ro   )rA   r
   ECDSAr-   rp   re   rf   r   rq   rr   rH   rs   s       r   r   z_JWAEC._sign   s    	+88C$)!4!4555 	H 	H 	HLLL...,FGGG 	+ 	+ 	+LLL...,s5zz***	+s    ,/ 
B80A))B86=B33B8rC   c                 P   t           j                            |j                  }t	          |          d|z  k    rdS t          t                              |d|         d          t                              ||d         d                    }|                     |||          S )ru      Fr   r   )r   N)	r   r   r   r   lenr   rK   
from_bytes_verify)r%   r;   r<   rC   rlenasn1sigs         r   rE   z_JWAEC.verify   s    y2239==s88q4x5&NN3qv;%N88NN3tuu:N77
 
 ||Cg...r   r   c                     	 |                     ||t          j        | j                             dS # t          j        j        $ r'}t                              |d           Y d }~dS d }~ww xY w)NTr`   F)	rE   r
   r   r-   rb   rc   rd   re   rf   )r%   r;   r<   r   rh   s        r   r   z_JWAEC._verify   sz    	JJwRXdi%8%8999
 4	 &7 	 	 	LLL...55555	s   .2 A-A((A-)r   r   r   r   r   r   rH   r   r   r&   r
   EllipticCurvePrivateKeyrO   rA   r   EllipticCurvePublicKeyrJ   rE   r   rj   rk   s   @r   r   r      s       
)CS "m2C)D      
2 
 
5 
 
 
 
+3 +% +E + + + +
/"3 
/% 
/e 
/PT 
/ 
/ 
/ 
/24 5 5 UY        r   r   HS256HS384HS512RS256RS384RS512PS256PS384PS512ES256ES384ES512)8r   rM   loggingcollections.abcr   typingr   r   r   cryptography.exceptionsrb   cryptography.hazmat.backendsr   cryptography.hazmat.primitivesr   r	   )cryptography.hazmat.primitives.asymmetricr
   r   r   /cryptography.hazmat.primitives.asymmetric.utilsr   r   %cryptography.hazmat.primitives.hashesr   josepyr   r   r   	getLoggerr   re   JSONDeSerializabler   r   rQ   rm   rz   r   r   r4   SHA256r   SHA384r   SHA512r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   
 


  $ $ $ $ $ $ & & & & & & & & & &     8 8 8 8 8 8 7 7 7 7 7 7 7 7 F F F F F F F F F F        @ ? ? ? ? ? * * * * * * * * * *		8	$	$    *
'   ) ) ) ) )3 ) ) )X    \   0       6    Wl       Wl   - - - - -\ - - -b 	ffWfm<<==ffWfm<<==ffWfm<<== 	ffWfm<<==ffWfm<<==ffWfm<<== 	ffWfm<<==ffWfm<<==ffWfm<<== 	ffWfm<<==ffWfm<<==ffWfm<<==r   