
    kKj                         d dl mZmZmZ d dlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ g dZ G d	 d
      Z G d d      Z G d d      Z G d d      Z G d de      Zy)    )AnyClassVarLiteral)ABCMetaabstractmethod   )SegmentsDictJSONSignatureDict   )InvalidKeyTypeError)Header)HeaderMemberCompactSignatureFlattenedJSONSignatureGeneralJSONSignatureJWSAlgModelc                   J    e Zd ZdZd
dedz  dedz  fdZdefdZdeddfd	Zy)r   zmA header member of the JSON signature. It is combined with protected header,
    and unprotected header.
    N	protectedheaderc                      || _         || _        y N)r   r   )selfr   r   s      g/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/_rfc7515/model.py__init__zHeaderMember.__init__   s    "    returnc                     i }| j                   r|j                  | j                          | j                  r|j                  | j                         |S r   )r   updater   )r   rvs     r   headerszHeaderMember.headers   s<    ;;IIdkk" >>IIdnn%	r   kidc                 H    | j                   i | _         || j                   d<   y Nr!   )r   r   r!   s     r   set_kidzHeaderMember.set_kid%   s!    ;;DK Er   )NN)	__name__
__module____qualname____doc__r   r   r    strr%    r   r   r   r      sA    &4-   !3 !4 !r   r   c                   <    e Zd ZdZdedefdZdefdZdeddfd	Z	y)
r   zgJSON Web Signature object for compact mode. This object is used to
    represent the JWS instance.
    r   payloadc                 .    || _         || _        i | _        y r   )r   r-   segments)r   r   r-   s      r   r   zCompactSignature.__init__0   s    "&(r   r   c                     | j                   S )z(Returns protected header values in dict.r   r   s    r   r    zCompactSignature.headers7   s    ~~r   r!   Nc                 "    || j                   d<   y r#   r1   r$   s     r   r%   zCompactSignature.set_kid;   s     #ur   )
r&   r'   r(   r)   r   bytesr   r    r*   r%   r+   r   r   r   r   +   s9    )& )5 ) $3 $4 $r   r   c                   ^    e Zd ZU dZdZee   ed<   dede	fdZ
edee   fd       Zdefd	Zy
)r   zEJSON Signature object that represents a flattened JSON serialization.T	flattenedmemberr-   c                 <    || _         || _        d | _        i | _        y r   )r7   r-   	signaturer/   )r   r7   r-   s      r   r   zFlattenedJSONSignature.__init__E   s    $*%37&(r   r   c                     | j                   gS )ziA list of header members. For flattened JSON serialization, there will
        be only one header member.)r7   r2   s    r   memberszFlattenedJSONSignature.membersM   s     }r   c                 6    | j                   j                         S )zHeader values in dict.)r7   r    r2   s    r   r    zFlattenedJSONSignature.headersS   s    {{""$$r   N)r&   r'   r(   r)   r6   r   bool__annotations__r   r4   r   propertylistr;   r   r    r+   r   r   r   r   ?   sT    O !%Ix~$)| )e ) l+  
% %r   r   c                   <    e Zd ZU dZdZee   ed<   dee	   de
fdZy)r   zCJSON Signature object that represents a general JSON serialization.Fr6   r;   r-   c                 <    || _         || _        g | _        i | _        y r   )r;   r-   
signaturesr/   )r   r;   r-   s      r   r   zGeneralJSONSignature.__init__^   s    +2%35&(r   N)r&   r'   r(   r)   r6   r   r=   r>   r@   r   r4   r   r+   r   r   r   r   X   s-    M !&Ix~%)\ 2 )U )r   r   c            	           e Zd ZU dZeed<   eed<   dZeed<   dZedz  ed<   dZ	d	Z
ed	   ed
<   dZdZdeddfdZedededefd       Zededededefd       Zy)r   zInterface for JWS algorithm. JWA specification (RFC7518) SHOULD
    implement the algorithms for JWS with this base implementation.
    namedescriptionFrecommendedNsecurity_warningoctJWSalgorithm_typesigr   keyr   c                     |j                  d       |j                  | j                  k7  r&t        d| j                   d| j                   d      |j	                  | j                         y )NrL   zAlgorithm 'z' requires 'z' key)	check_usekey_typer   rE   	check_alg)r   rM   s     r   	check_keyzJWSAlgModel.check_keyv   sQ    e<<4==(%DII;l4==/Y^&_``dii r   msgc                      y)zSign the text msg with a private/sign key.

        :param msg: message bytes to be signed
        :param key: private key to sign the message
        :return: bytes
        Nr+   )r   rS   rM   s      r   signzJWSAlgModel.sign|       r   c                      y)zVerify the signature of text msg with a public/verify key.

        :param msg: message bytes to be signed
        :param sig: result signature to be compared
        :param key: public key to verify the signature
        :return: boolean
        Nr+   )r   rS   rL   rM   s       r   verifyzJWSAlgModel.verify   rV   r   )r&   r'   r(   r)   r*   r>   rG   r=   rH   rP   rK   r   algorithm_locationalgorithm_securityr   rR   r   r4   rU   rX   r+   r   r   r   r   g   s     IK#'cDj'H%*NGEN*!S !T !  C E   % e # $  r   r   )	metaclassN)typingr   r   r   abcr   r   typesr	   r
   errorsr   registryr   __all__r   r   r   r   r   r+   r   r   <module>rb      sR    ) ) ' 2 ( ! !6$ $(% %2) )&G &r   