
    kKj              	           d dl Z d dlmZ ddlmZmZ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 ddlmZ d	d
lmZ dede
dedefdZ	 ddedeez  dz  dedz  defdZ e j0                  d      Zdeez  defdZy)    N)Any   )to_bytesto_strjson_b64encodeurlsafe_b64encodeurlsafe_b64decode)JWSAlgModelCompactSignature)decode_header)JWSRegistrydefault_registry)DecodeError   )is_rfc7797_enabledobjalgkeyreturnc                     t        | j                               }|dz   | j                  z   }t        |j	                  ||            }t        | j                        r
|dz   |z   }|S |dz   |z   }|S )N   .s   ..)r   headerspayloadr   sign__is_urlsafe_characters)r   r   r   header_segmentsigning_input	signatureouts          i/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/joserfc/_rfc7797/compact.pysign_rfc7515_compactr!      st    #CKKM2N"T)CKK7M!#((=#">?I s{{+d"Y. J u$y0J    valuer   registryc                    | j                  d      }t        |      dk7  rt        d      |t        }|\  }}}|j	                  |       |j                  |       |r|j                  |       t        |      }t        |      r|s|rt        |      }|}n'|s|rt        |      }t        |      }n	 t        |      }t        ||      }|j                  j!                  |||d       |S # t        t        f$ r t        d      w xY w)a  Extract the JWS Compact Serialization from bytes to object.

    :param value: JWS in bytes
    :param payload: optional payload, required with detached content
    :param registry: optional JWSRegistry instance
    :raise DecodeError: when decoding fails
    r      zInvalid JSON Web SignaturezInvalid payload)headerr   r   )splitlenr   r   validate_header_sizevalidate_signature_sizevalidate_payload_sizer   r   r   r   r	   	TypeError
ValueErrorr   segmentsupdate)	r#   r   r$   partsr   payload_segmentsignature_segment	protectedr   s	            r    extract_rfc7515_compactr5      s    KKE
5zQ677#9>6NO%6!!.1$$%67&&7n-I)$7&w/O!7w'G/8O5+O< 9g
.CLL$&*	
 J z* 5!"3445s   2C* *Dz^[a-zA-Z0-9-_~]+$sc                 P    t        t        j                  t        |                   S )N)bool_re_urlsafematchr   )r6   s    r    r   r   X   s    !!&),--r"   )NN)retypingr   utilr   r   r   r   r	   _rfc7515.modelr
   r   _rfc7515.compactr   _rfc7515.registryr   r   errorsr   r   bytesr!   strr5   compiler9   r8   r    r"   r    <module>rF      s    	   ; , =   $
. 
[ 
s 
u 
 VZ00 3;-0@Kd@R00n bjj,-.us{ .t .r"   