o
    ÿÑÐbÓ  ã                   @   sh   d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 G dd	„ d	eƒZ
G d
d„ deƒZdd„ ZdS )zÞ
    authlib.jose.rfc7518.jws_algorithms
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

    .. _`Section 3`: https://tools.ietf.org/html/rfc7518#section-3
é    Né   )ÚOctKey)ÚJWS_ALGORITHMSé   )ÚJWSAlgorithmÚJsonWebSignaturec                   @   s,   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	S )
ÚNoneAlgorithmÚnonez%No digital signature or MAC performedc                 C   s   d S ©N© ©ÚselfÚraw_datar   r   úb/var/www/secure340b-portal/env/lib/python3.10/site-packages/authlib/jose/rfc7518/jws_algorithms.pyÚprepare_key   ó   zNoneAlgorithm.prepare_keyc                 C   ó   dS )Nó    r   )r   ÚmsgÚkeyr   r   r   Úsign   r   zNoneAlgorithm.signc                 C   r   )NFr   )r   r   Úsigr   r   r   r   Úverify   r   zNoneAlgorithm.verifyN)Ú__name__Ú
__module__Ú__qualname__ÚnameÚdescriptionr   r   r   r   r   r   r   r      s    r   c                   @   sB   e Zd ZdZejZejZej	Z
dd„ Zdd„ Zdd„ Zd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                 C   s.   d  |¡| _d  |¡| _t| d  |¡ƒ| _d S )NzHS{}zHMAC using SHA-{}zSHA{})Úformatr   r   ÚgetattrÚhash_alg)r   Zsha_typer   r   r   Ú__init__+   s   zHMACAlgorithm.__init__c                 C   s
   t  |¡S r
   )r   Z
import_keyr   r   r   r   r   0   s   
zHMACAlgorithm.prepare_keyc                 C   s   |  d¡}t ||| j¡ ¡ S )Nr   )Ú
get_op_keyÚhmacÚnewr!   Údigest)r   r   r   Úop_keyr   r   r   r   3   s   
zHMACAlgorithm.signc                 C   s*   |  d¡}t ||| j¡ ¡ }t ||¡S )Nr   )r#   r$   r%   r!   r&   Úcompare_digest)r   r   r   r   r'   Zv_sigr   r   r   r   8   s   
zHMACAlgorithm.verifyN)r   r   r   Ú__doc__ÚhashlibÚsha256ÚSHA256Úsha384ÚSHA384Úsha512ÚSHA512r"   r   r   r   r   r   r   r   r       s    r   c                  C   sN   t  tƒ ¡ t  tdƒ¡ t  tdƒ¡ t  tdƒ¡ tD ]} t  | ¡ qd S )Né   i€  i   )r   Zregister_algorithmr   r   r   )Ú	algorithmr   r   r   Úregister_jws_rfc7518>   s   ÿr3   )r)   r$   r*   Zoct_keyr   Z_cryptography_backendsr   Zrfc7515r   r   r   r   r3   r   r   r   r   Ú<module>   s   	