§
    (ê[f]  ã                   óP  — d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZmZ  G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z e¦   «          ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         ed¦  «         eddd¦  «         eddd¦  «         ed d!d¦  «         ed"d#d¦  «         ed¦  «         ed¦  «         ed¦  «        gZdS )$zÀ
    authlib.jose.rfc7518
    ~~~~~~~~~~~~~~~~~~~~

    "alg" (Algorithm) Header Parameter Values for JWS per `Section 3`_.

    .. _`Section 3`: https://tools.ietf.org/html/rfc7518#section-3
é    N)Úhashes)Údecode_dss_signatureÚencode_dss_signature)ÚECDSA)Úpadding)ÚInvalidSignatureé   )ÚJWSAlgorithmé   )ÚOctKey)ÚRSAKey)ÚECKey)Ú
encode_intÚ
decode_intc                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚNoneAlgorithmÚnonez%No digital signature or MAC performedc                 ó   — d S ©N© ©ÚselfÚraw_datas     úQ/var/www/piapp/venv/lib/python3.11/site-packages/authlib/jose/rfc7518/jws_algs.pyÚprepare_keyzNoneAlgorithm.prepare_key   s   € Øˆtó    c                 ó   — dS )Nr   r   )r   ÚmsgÚkeys      r   ÚsignzNoneAlgorithm.sign!   s   € Øˆsr   c                 ó   — dS )NFr   )r   r   Úsigr   s       r   ÚverifyzNoneAlgorithm.verify$   s   € Øˆur   N)Ú__name__Ú
__module__Ú__qualname__ÚnameÚdescriptionr   r    r#   r   r   r   r   r      sK   € € € € € Ø€DØ9€Kðð ð ðð ð ðð ð ð ð r   r   c                   óT   — e Zd ZdZej        Zej        Zej	        Z
d„ Zd„ Zd„ Zd„ ZdS )ÚHMACAlgorithmzžHMAC using SHA algorithms for JWS. Available algorithms:

    - HS256: HMAC using SHA-256
    - HS384: HMAC using SHA-384
    - HS512: HMAC using SHA-512
    c                 ó^   — d|› �| _         d|› �| _        t          | d|› �¦  «        | _        d S )NÚHSzHMAC using SHA-ÚSHA)r'   r(   ÚgetattrÚhash_alg©r   Úsha_types     r   Ú__init__zHMACAlgorithm.__init__3   s=   € Ø#˜�O�OˆŒ	Ø7¨XÐ7Ð7ˆÔÝ Ð&6¨HÐ&6Ð&6Ñ7Ô7ˆŒˆˆr   c                 ó*   — t          j        |¦  «        S r   )r   Ú
import_keyr   s     r   r   zHMACAlgorithm.prepare_key8   ó   € ÝÔ  Ñ*Ô*Ð*r   c                 ó†   — |                      d¦  «        }t          j        ||| j        ¦  «                             ¦   «         S ©Nr    )Ú
get_op_keyÚhmacÚnewr/   Údigest©r   r   r   Úop_keys       r   r    zHMACAlgorithm.sign;   s5   € à—’ Ñ'Ô'ˆÝŒx˜  T¤]Ñ3Ô3×:Ò:Ñ<Ô<Ð<r   c                 ó°   — |                      d¦  «        }t          j        ||| j        ¦  «                             ¦   «         }t          j        ||¦  «        S )Nr#   )r8   r9   r:   r/   r;   Úcompare_digest)r   r   r"   r   r=   Úv_sigs         r   r#   zHMACAlgorithm.verify@   sG   € Ø—’ Ñ)Ô)ˆÝ”˜  d¤mÑ4Ô4×;Ò;Ñ=Ô=ˆÝÔ" 3¨Ñ.Ô.Ð.r   N)r$   r%   r&   Ú__doc__ÚhashlibÚsha256ÚSHA256Úsha384ÚSHA384Úsha512ÚSHA512r2   r   r    r#   r   r   r   r*   r*   (   sq   € € € € € ðð ð Œ^€FØŒ^€FØŒ^€Fð8ð 8ð 8ð
+ð +ð +ð=ð =ð =ð
/ð /ð /ð /ð /r   r*   c                   óT   — e Zd ZdZej        Zej        Zej        Zd„ Zd„ Z	d„ Z
d„ ZdS )ÚRSAAlgorithmzÄRSA using SHA algorithms for JWS. Available algorithms:

    - RS256: RSASSA-PKCS1-v1_5 using SHA-256
    - RS384: RSASSA-PKCS1-v1_5 using SHA-384
    - RS512: RSASSA-PKCS1-v1_5 using SHA-512
    c                 óŽ   — d|› �| _         d|› �| _        t          | d|› �¦  «        | _        t	          j        ¦   «         | _        d S )NÚRSzRSASSA-PKCS1-v1_5 using SHA-r-   )r'   r(   r.   r/   r   ÚPKCS1v15r0   s     r   r2   zRSAAlgorithm.__init__Q   sM   € Ø#˜�O�OˆŒ	ØD¸(ÐDÐDˆÔÝ Ð&6¨HÐ&6Ð&6Ñ7Ô7ˆŒÝÔ'Ñ)Ô)ˆŒˆˆr   c                 ó*   — t          j        |¦  «        S r   ©r   r4   r   s     r   r   zRSAAlgorithm.prepare_keyW   r5   r   c                 óˆ   — |                      d¦  «        }|                     || j        |                      ¦   «         ¦  «        S r7   )r8   r    r   r/   r<   s       r   r    zRSAAlgorithm.signZ   s3   € Ø—’ Ñ'Ô'ˆØ�{Š{˜3 ¤¨d¯mªm©o¬oÑ>Ô>Ð>r   c                 ó²   — |                      d¦  «        }	 |                     ||| j        |                      ¦   «         ¦  «         dS # t          $ r Y dS w xY w)Nr#   TF)r8   r#   r   r/   r   ©r   r   r"   r   r=   s        r   r#   zRSAAlgorithm.verify^   sa   € Ø—’ Ñ)Ô)ˆð	Ø�MŠM˜#˜s D¤L°$·-²-±/´/ÑBÔBÐBØ�4øÝð 	ð 	ð 	Ø�5�5ð	øøøs   —/A Á
AÁAN©r$   r%   r&   rA   r   rD   rF   rH   r2   r   r    r#   r   r   r   rJ   rJ   F   sq   € € € € € ðð ð Œ]€FØŒ]€FØŒ]€Fð*ð *ð *ð+ð +ð +ð?ð ?ð ?ðð ð ð ð r   rJ   c                   óT   — e Zd ZdZej        Zej        Zej        Zd„ Zd„ Z	d„ Z
d„ ZdS )ÚECAlgorithmzÀECDSA using SHA algorithms for JWS. Available algorithms:

    - ES256: ECDSA using P-256 and SHA-256
    - ES384: ECDSA using P-384 and SHA-384
    - ES512: ECDSA using P-521 and SHA-512
    c                 óv   — || _         || _        d| j        › d|› �| _        t          | d|› �¦  «        | _        d S )NzECDSA using z	 and SHA-r-   )r'   Úcurver(   r.   r/   )r   r'   rW   r1   s       r   r2   zECAlgorithm.__init__r   sH   € ØˆŒ	ØˆŒ
ØI¨$¬*ÐIÐI¸xÐIÐIˆÔÝ Ð&6¨HÐ&6Ð&6Ñ7Ô7ˆŒˆˆr   c                 ó�   — t          j        |¦  «        }|d         | j        k    r t          d| j        › d| j        › d�¦  «        ‚|S )NÚcrvz	Key for "z" not supported, only "z	" allowed)r   r4   rW   Ú
ValueErrorr'   )r   r   r   s      r   r   zECAlgorithm.prepare_keyx   sN   € ÝÔ˜xÑ(Ô(ˆØˆuŒ:˜œÒ#Ð#ÝÐ`¨¬Ð`Ð`È4Ì:Ð`Ð`Ð`ÑaÔaÐaØˆ
r   c                 ó
  — |                      d¦  «        }|                     |t          |                      ¦   «         ¦  «        ¦  «        }t	          |¦  «        \  }}|j        }t          ||¦  «        t          ||¦  «        z   S r7   )r8   r    r   r/   r   Úcurve_key_sizer   )r   r   r   r=   Úder_sigÚrÚsÚsizes           r   r    zECAlgorithm.sign~   sn   € Ø—’ Ñ'Ô'ˆØ—+’+˜c¥5¨¯ª©¬Ñ#9Ô#9Ñ:Ô:ˆÝ# GÑ,Ô,‰ˆˆ1ØÔ!ˆÝ˜!˜TÑ"Ô"¥Z°°4Ñ%8Ô%8Ñ8Ð8r   c                 óŠ  — |j         }|dz   dz  }t          |¦  «        d|z  k    rdS t          |d |…         ¦  «        }t          ||d …         ¦  «        }t          ||¦  «        }	 |                     d¦  «        }	|	                     ||t          |                      ¦   «         ¦  «        ¦  «         dS # t          $ r Y dS w xY w)Né   é   r	   Fr#   T)	r\   Úlenr   r   r8   r#   r   r/   r   )
r   r   r"   r   Úkey_sizeÚlengthr^   r_   r]   r=   s
             r   r#   zECAlgorithm.verify…   sÎ   € ØÔ%ˆØ˜Q‘, 1Ñ$ˆåˆs‰8Œ8�q˜6‘zÒ!Ð!Ø�5å�s˜7˜F˜7”|Ñ$Ô$ˆÝ�s˜6˜7˜7”|Ñ$Ô$ˆÝ& q¨!Ñ,Ô,ˆð	Ø—^’^ HÑ-Ô-ˆFØ�MŠM˜' 3­¨d¯mªm©o¬oÑ(>Ô(>Ñ?Ô?Ð?Ø�4øÝð 	ð 	ð 	Ø�5�5ð	øøøs   Á'AB4 Â4
CÃCNrS   r   r   r   rU   rU   g   sq   € € € € € ðð ð Œ]€FØŒ]€FØŒ]€Fð8ð 8ð 8ðð ð ð9ð 9ð 9ðð ð ð ð r   rU   c                   óT   — e Zd ZdZej        Zej        Zej        Zd„ Zd„ Z	d„ Z
d„ ZdS )ÚRSAPSSAlgorithmzøRSASSA-PSS using SHA algorithms for JWS. Available algorithms:

    - PS256: RSASSA-PSS using SHA-256 and MGF1 with SHA-256
    - PS384: RSASSA-PSS using SHA-384 and MGF1 with SHA-384
    - PS512: RSASSA-PSS using SHA-512 and MGF1 with SHA-512
    c                 ó„   — d|› �| _         d}|                     ||¦  «        | _        t          | d|› �¦  «        | _        d S )NÚPSz,RSASSA-PSS using SHA-{} and MGF1 with SHA-{}r-   )r'   Úformatr(   r.   r/   )r   r1   Útpls      r   r2   zRSAPSSAlgorithm.__init__£   sH   € Ø#˜�O�OˆŒ	Ø<ˆØŸ:š: h°Ñ9Ô9ˆÔÝ Ð&6¨HÐ&6Ð&6Ñ7Ô7ˆŒˆˆr   c                 ó*   — t          j        |¦  «        S r   rO   r   s     r   r   zRSAPSSAlgorithm.prepare_key©   r5   r   c           	      ó  — |                      d¦  «        }|                     |t          j        t          j        |                      ¦   «         ¦  «        | j        j        ¬¦  «        |                      ¦   «         ¦  «        S )Nr    ©ÚmgfÚsalt_length)r8   r    r   ÚPSSÚMGF1r/   Údigest_sizer<   s       r   r    zRSAPSSAlgorithm.sign¬   sj   € Ø—’ Ñ'Ô'ˆØ�{Š{ØÝŒKÝ”L §¢¡¤Ñ1Ô1Ø œMÔ5ðñ ô ð �MŠM‰OŒOñ
ô 
ð 	
r   c           
      ó,  — |                      d¦  «        }	 |                     ||t          j        t          j        |                      ¦   «         ¦  «        | j        j        ¬¦  «        |                      ¦   «         ¦  «         dS # t          $ r Y dS w xY w)Nr#   ro   TF)r8   r#   r   rr   rs   r/   rt   r   rR   s        r   r#   zRSAPSSAlgorithm.verify·   s›   € Ø—’ Ñ)Ô)ˆð	Ø�MŠMØØÝ”Ýœ T§]¢]¡_¤_Ñ5Ô5Ø $¤Ô 9ðñ ô ð —’‘”ñô ð ð �4øÝð 	ð 	ð 	Ø�5�5ð	øøøs   —A,B Â
BÂBNrS   r   r   r   rh   rh   ˜   sq   € € € € € ðð ð Œ]€FØŒ]€FØŒ]€Fð8ð 8ð 8ð+ð +ð +ð	
ð 	
ð 	
ðð ð ð ð r   rh   é   i€  i   ÚES256zP-256ÚES384zP-384ÚES512zP-521ÚES256KÚ	secp256k1)rA   r9   rB   Úcryptography.hazmat.primitivesr   Ú/cryptography.hazmat.primitives.asymmetric.utilsr   r   Ú,cryptography.hazmat.primitives.asymmetric.ecr   Ú)cryptography.hazmat.primitives.asymmetricr   Úcryptography.exceptionsr   Úrfc7515r
   Úoct_keyr   Úrsa_keyr   Úec_keyr   Úutilr   r   r   r*   rJ   rU   rh   ÚJWS_ALGORITHMSr   r   r   ú<module>r‡      s™  ððð ð €€€Ø €€€Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ø =Ð =Ð =Ð =Ð =Ð =Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð �Lñ ô ð ð/ð /ð /ð /ð /�Lñ /ô /ð /ð<ð ð ð ð �<ñ ô ð ðB.ð .ð .ð .ð .�,ñ .ô .ð .ðb-ð -ð -ð -ð -�lñ -ô -ð -ðb €M�O„OØ€M�#ÑÔØ€M�#ÑÔØ€M�#ÑÔØ€L�ÑÔØ€L�ÑÔØ€L�ÑÔØ€K�˜ #Ñ&Ô&Ø€K�˜ #Ñ&Ô&Ø€K�˜ #Ñ&Ô&Ø€K�˜+ sÑ+Ô+Ø€O�CÑÔØ€O�CÑÔØ€O�CÑÔð€€€r   