HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ns3133907 6.8.0-86-generic #87-Ubuntu SMP PREEMPT_DYNAMIC Mon Sep 22 18:03:36 UTC 2025 x86_64
User: cssnetorguk (1024)
PHP: 8.2.28
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/pymacaroons/__pycache__/verifier.cpython-312.pyc
�

BQ�YQ���ddlZ	ddlmZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZmZmZGd�d	e�Zy#e$r	ddlmZY�9wxYw)
�N)�compare_digest)�equals)�HashSignaturesBinder)�!MacaroonInvalidSignatureException)� FirstPartyCaveatVerifierDelegate� ThirdPartyCaveatVerifierDelegate)�convert_to_bytes�convert_to_string�generate_derived_key�hmac_digestc�L�eZdZd�Zd�Zd�Zd�Zdd�Zdd�Zd�Z	d	�Z
d
�Zd�Zy)
�Verifierc��g|_|jg|_d|_t	�|_t
�|_y�N)�
predicates�verify_exact�	callbacks�calculated_signaturer�$first_party_caveat_verifier_delegater�$third_party_caveat_verifier_delegate)�selfs �6/usr/lib/python3/dist-packages/pymacaroons/verifier.py�__init__zVerifier.__init__s?������+�+�,���$(��!�,�.�	
�1�
-�.�	
�1�c�f�|�td��|jjt|��y)NzPredicate cannot be none.)�	TypeErrorr�appendr
�r�	predicates  r�
satisfy_exactzVerifier.satisfy_exact$s,�����7�8�8������0��;�<rc�h�t|d�std��|jj|�y)N�__call__z*General caveat verifiers must be callable.)�hasattrrrr)r�funcs  r�satisfy_generalzVerifier.satisfy_general)s*���t�Z�(��H�I�I������d�#rc��||jvSr)rrs  rrzVerifier.verify_exact.s���D�O�O�+�+rNc�R�tt|��}|j||||�Sr)rr	�verify_discharge)r�macaroon�key�discharge_macaroonss    r�verifyzVerifier.verify1s1��"�#3�C�#8�9���$�$�����	
�	
rc�V�t||j�}|j||||�}||k7r@tjt|�j
tj|���}|j|jtj|��std��y)NzSignatures do not matchT)r�identifier_bytes�_verify_caveats�binascii�	unhexlifyr�bind_signature�hexlify�_signatures_match�signature_bytesr)r�root�	discharger*r+rs      rr(zVerifier.verify_discharge:s���*���+�+� 
�� $�3�3��)�0�2F� 
���9��#+�#5�#5�$�T�*�9�9��$�$�%9�:��$� ��%�%��)�)�� � �!5�6�8�4�4M�N�N�rc�x�|jD]*}|j|||||�s�|j||�}�,|Sr)�caveats�_caveat_met�_update_signature)rr6r)r+�	signature�caveats      rr/zVerifier._verify_caveatsQsQ���&�&�	F�F����� &� (� 3� )�	+�
!�2�2�6�9�E�	�
	F��rc��|j�r|jj|||�S|jj	||||||�Sr)�first_partyr�verify_first_party_caveatr�verify_third_party_caveat)rr6r=r)r+r<s      rr:zVerifier._caveat_met[sT�������5�5�*�*�4���C�
��5�5�*�*��&�$��'���
rc��|j�r|jj||�S|jj||�Sr)r?r�update_signaturer)rr=r<s   rr;zVerifier._update_signaturemsF�������5�5�!�!�)�V�4�
��5�5�!�!�)�V�4�
rc�>�tt|�t|��Sr)�constant_time_comparer	)r�macaroon_signature�computed_signatures   rr4zVerifier._signatures_match{s!��$��/�0��/�0�
�	
rr)
�__name__�
__module__�__qualname__rr r%rr,r(r/r:r;r4�rrrrs4��	
�=�
$�
,�
��.��$�
rr)r0�hmacrrE�ImportError�pymacaroons.utilsr�pymacaroons.bindersr�pymacaroons.exceptionsr�pymacaroons.caveat_delegatesrrr	r
rr�objectrrKrr�<module>rSsL���B�<�5�D����h
�v�h
��#�B�A�B�s�8�A�A