File: //lib/python3/dist-packages/pymacaroons/__pycache__/verifier.cpython-312.pyc
�
BQ�YQ � � � d dl Z d dlmZ d dlmZ d dl m
Z
d dlmZm
Z
d dlmZmZmZmZ G d� d e� Zy# e$ r d dlmZ Y �9w xY w)
� N)�compare_digest)�equals)�HashSignaturesBinder)�!MacaroonInvalidSignatureException)� FirstPartyCaveatVerifierDelegate� ThirdPartyCaveatVerifierDelegate)�convert_to_bytes�convert_to_string�generate_derived_key�hmac_digestc �L � e Zd Zd� Zd� Zd� Zd� Zdd�Zdd�Zd� Z d � Z
d
� Zd� Zy)
�Verifierc � � g | _ | j g| _ 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 � |�t d� �| j j t |� � y )NzPredicate cannot be none.)� TypeErrorr �appendr
�r � predicates r �
satisfy_exactzVerifier.satisfy_exact$ s, � ����7�8�8������0��;�<r c �h � t |d� st d� �| j j |� y )N�__call__z*General caveat verifiers must be callable.)�hasattrr r r )r �funcs r �satisfy_generalzVerifier.satisfy_general) s* � ��t�Z�(��H�I�I������d�#r c � � || j v S r )r r s r r zVerifier.verify_exact. s � ��D�O�O�+�+r Nc �R � t t |� � }| j ||||� S r )r r �verify_discharge)r �macaroon�key�discharge_macaroonss r �verifyzVerifier.verify1 s1 � �"�#3�C�#8�9���$�$�����
�
r c �V � t ||j � }| j ||||� }||k7 r@t j t |� j
t j |� � � }| j |j t j |� � st d� �y)NzSignatures do not matchT)r �identifier_bytes�_verify_caveats�binascii� unhexlifyr �bind_signature�hexlify�_signatures_match�signature_bytesr )r �root� discharger* r+ r s r r( zVerifier.verify_discharge: s� � �*���+�+�
�� $�3�3��)�0�2F�
�� �9��#+�#5�#5�$�T�*�9�9��$�$�%9�:��$� � �%�%��)�)�� � �!5�6�8� 4�4M�N�N�r c �x � |j D ]* }| j |||||� s�| j ||� }�, |S r )�caveats�_caveat_met�_update_signature)r r6 r) r+ � signature�caveats r r/ zVerifier._verify_caveatsQ sQ � ��&�&� F�F����� &� (� 3� )� +�
!�2�2�6�9�E� �
F� �r c � � |j � r| j j | ||� S | j j | |||||� S r )�first_partyr �verify_first_party_caveatr �verify_third_party_caveat)r r6 r= r) r+ r<