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/serializers/__pycache__/binary_serializer.cpython-312.pyc
�

�%�Y01����ddlmZddlZddlmZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
ddlmZddlmZedd	d
g�ZGd�de�Zd
�Zej*j,dk(rd�Zd�Zyd�Zd�Zy)�)�unicode_literalsN)�
namedtuple)�urlsafe_b64encode)�convert_to_bytes�convert_to_string�
raw_b64decode)�BaseSerializer)�MacaroonSerializationException�PacketV2�
field_type�datac�t�eZdZdZdZdZdZdZdZd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zdd�Zd�Zd�Zy)�BinarySerializer����rc�r�t|j|��jd�jd�S)N�ascii�=)r�
serialize_raw�decode�rstrip)�self�macaroons  �K/usr/lib/python3/dist-packages/pymacaroons/serializers/binary_serializer.py�	serializezBinarySerializer.serializes/�� ����x�(�*�*0�&��/�&�&��+�	F�c�p�ddlm}|j|k(r|j|�S|j	|�S)Nr)�MACAROON_V1)�pymacaroons.macaroonr �version�
_serialize_v1�
_serialize_v2)rrr s   rrzBinarySerializer.serialize_raw#s5��4����{�*��%�%�h�/�/��!�!�(�+�+rc���|jd|j�}||jd|j�z
}|jD]y}||jd|j�z
}|j
s�/|js�<||jd|j
�z
}||jd|j�z
}�{||jdtj|j��z
}|S)N�location�
identifier�cid�vid�cl�	signature)
�
_packetize�location�
identifier�caveats�
_caveat_id�_verification_key_id�	_location�binascii�	unhexlify�signature_bytes)rr�combined�caveats    rr#zBinarySerializer._serialize_v1)s����?�?�;��0A�0A�B���D�O�O�M�8�3F�3F�G�G���&�&�	E�F�������0A�0A�B�B�H��*�*�v�/?�/?��D�O�O��F�7�7�9�9���D�O�O�E�6�3C�3C�D�D��
	E�	�D�O�O�����x�7�7�8�
�	
���rc��ddlm}t�}|j|�|j�W|j||jt|j��|j||j|j�|j||j�|jD]�}|j�0|j||jt|j��|j||j|j�|j�0|j||jt|j��|j||j���|j||j�|j||jt!j"|j$��t'|�S)Nr��MACAROON_V2)r!r:�	bytearray�appendr-�_append_packet�	_LOCATIONr�_IDENTIFIER�identifier_bytes�_EOSr/�caveat_id_bytes�verification_key_id�_VID�
_SIGNATUREr3r4r5�bytes)rrr:r
�cs     rr$zBinarySerializer._serialize_v2;su��4��{�����K� ����(�����d�n�n�6F��!�!�7#�
$�����d�&6�&6� (� 9� 9�
;����D�$�)�)�,��!�!�	1�A��z�z�%��#�#�D�$�.�.�$4�Q�Z�Z�$@�B�����d�&6�&6��8I�8I�J��$�$�0��#�#�D�$�)�)�5E��)�)�6+�,�����d�i�i�0�	1�	
���D�$�)�)�,����D�$�/�/�8�3E�3E��$�$�4&�	'��T�{�rc��t|�dk(rtd��t|�}t|�}|j	|�S)Nrzempty macaroon)�len�
ValueErrorrr�deserialize_raw)r�
serialized�decodeds   r�deserializezBinarySerializer.deserializeUs?���z�?�a���-�.�.�&�z�2�
��
�+���#�#�G�,�,rc��ddlm}ddlm}t	j
|dd�}||k(r|j
|�St|�r|j|�S|d��)Nrr9�� MacaroonDeserializationExceptionrz7cannot determine data format of binary-encoded macaroon)	r!r:�pymacaroons.exceptionsrQ�six�byte2int�_deserialize_v2�
_is_ascii_hex�_deserialize_v1)rrLr:rQ�firsts     rrKz BinarySerializer.deserialize_raw\s`��4�K����Z���^�,���K���'�'�
�3�3�����'�'�
�3�3�.�E�G�	Grc	��ddlm}m}ddlm}ddlm}||��}d}|t|�k�r!ttjd||||jz�dd�}|||jz||z}	|j|	�\}
}|
dk(r||_
n�|
d	k(r||_n�|
d
k(r$|jj!|||���nm|
dk(r||jd
_nS|
dk(r||jd
_
n9|
dk(rt%j&|�|_n|dj+|
|����||z}|t|�kr��!|S)Nr)�Macaroonr ��CaveatrP�r"s4s�r&r'r()�	caveat_idr"r)���r*r+z7Key {key} not valid key for this format. Value: {value})�key�value)r!rZr �pymacaroons.caveatr\rRrQrI�int�struct�unpack�PACKET_PREFIX_LENGTH�_depacketizer-r.r/r<rCr3�hexlify�	signature�format)rrMrZr r\rQr�index�
packet_length�packetrarbs            rrWz BinarySerializer._deserialize_v1hs{��>�-�K��K�0�����c�'�l�"���
�
���E�%�$�*C�*C�"C�D������M����1�1�1�%�-�2G��F��*�*�6�2�J�C���k�!�$)��!��
�%�&+��#����� � �'�'���7B�)D�E����;@�� � ��$�8����05�� � ��$�-���$�%-�%5�%5�e�%<��"�6�%�%+�V��u�&,�&����M�)�E�G�c�'�l�"�J�rc�2�ddlm}m}ddlm}ddlm}|dd}|j|�\}}d}t|�dkDr?|dj|jk(r#|djjd�}|dd}t|�dk7s|dj|jk7r|d��||dj||�	�}	|j|�\}	}|	}t|�dk(r�nP||�
�}
t|�dkDrD|dj|jk(r(|djjd�|
_|dd}t|�dk(s|dj|jk7r|d��|dj|
_|dd}t|�dk(r1|
j�|d��|j j#|
���t|�dk7r|d
��|dj|j$k7r|d��|dj|
_|j j#|
���v|j)|�\}}|j|j*k7r|d��t-j.|j�|_|S)Nr)rZr:r[rPr�zutf-8zinvalid macaroon header)r.r-r"r]zno identifier in caveatz*location not allowed in first party caveatzextra fields found in caveatzinvalid field found in caveatz+unexpected field found instead of signature)r!rZr:rcr\rRrQ�_parse_section_v2rIrr>r
rr?r-r_r/r<rDrC�_parse_packet_v2rEr3rirj)rrLrZr:r\rQ�section�locr�rest�cavrns            rrUz BinarySerializer._deserialize_v2�s���>�-�K� ���^�
�"�4�4�Z�@��
�G����w�<�!����
� 5� 5���� G��!�*�/�/�(�(��1�C��a�b�k�G��w�<�1����
� 5� 5��9I�9I� I�2�3L�M�M���q�z�����
��
� �2�2�:�>�M�D�'��J��7�|�q� ����-�C��7�|�a��G�A�J�$9�$9�T�^�^�$K�&�q�z���5�5�g�>���!�!�"�+���7�|�q� �G�A�J�$9�$9�T�=M�=M�$M�6�-�/�/�$�A�J�O�O�C�M��a�b�k�G��7�|�q� ��<�<�+�:�D�F�F�� � �'�'��,���7�|�q� �6�2�4�4��q�z�$�$��	�	�1�6�3�5�5�&-�a�j�o�o�C�#����#�#�C�(�A�B"�2�2�:�>��
�F�������/�2�=�?�
?�%�-�-�f�k�k�:����rc�t�|jdzt|�zt|�z}t|�dd}|dkDrtdj	|||����|jd�j
d�}|dzt|�zdz}tjtd	t|�z�||�}|S)
Nri��ztPacket too long for serialization. Max length is 0xFFFF (65535). Packet length: 0x{hex_length} ({length}) Key: {key})ra�
hex_length�lengthrr� �
z4s%ds)
rgrI�hexr
rk�zfill�encoderre�pack)rrar
�packet_size�packet_size_hex�header�packet_contentrns        rr,zBinarySerializer._packetize�s����/�/�!�3�c�#�h�>��T��J���k�*�1�2�.�����0��$�V��.�&�$��		�	
�!�&�&�q�)�0�0��9���t��&6�t�&<�<�u�D������W�s�>�':�:�;���
��
�
rc�T�|jd�d}|t|�dzd}||fS)Nrzrrr`)�splitrI)rrnrarbs    rrhzBinarySerializer._depacketize�s3���l�l�4� ��#���s�3�x�!�|�B�'���U�|�rNc��t||�||jk7r't|t|��|j|�yy�N)�_encode_uvarintrArI�extend)rr
r�packet_datas    rr=zBinarySerializer._append_packet�s8����j�)�����"��D�#�k�"2�3��K�K��$�#rc��ddlm}d}g}	t|�dk(r|d��|j|�\}}|j|j
k(r||fS|j|kr|d��|j
|�|j}|}�~)z� Parses a sequence of packets in data.

        The sequence is terminated by a packet with a field type of EOS
        :param data bytes to be deserialized.
        :return: the rest of data and an array of packet V2
        rrPr`z"section extends past end of bufferzfields out of order)rRrQrIrrrrAr<)rr
rQ�prev_field_type�packetsrurns       rrqz"BinarySerializer._parse_section_v2�s���	L�������4�y�A�~�6�8�:�:��0�0��6�L�D�&�� � �D�I�I�-��W�}�$�� � �O�3�6�7L�M�M��N�N�6�"�$�/�/�O��D�rc���ddlm}t|�\}}||d}||jk(r|t	|d�fSt|�\}}||d}|t|�kDr|d��||dt	||d|�fS)aQ Parses a V2 data packet at the start of the given data.

        The format of a packet is as follows:

        field_type(varint) payload_len(varint) data[payload_len bytes]

        apart from EOS which has no payload_en or data (it's a single zero
        byte).

        :param data:
        :return: rest of data, PacketV2
        rrPNz%field data extends past end of buffer)rRrQ�_decode_uvarintrArrI)rr
rQ�ft�n�payload_lens      rrrz!BinarySerializer._parse_packet_v2s���	L���%���A��A�B�x��
����?���"�d�+�+�+�(��.���Q��A�B�x����T��"�2�7�9�
9��K�L�!�8�B��Q�{�0C�#D�D�Drr�)�__name__�
__module__�__qualname__rgr>r?rDrErArrr#r$rNrKrWrUr,rhr=rqrr�rrrrsg�����I��K��D��J��D�F�,��$�4-�
G�.�`9�v�6�
%��2Errc��|dkrtd��	|dz}|dz}|dk(r|j|�y|j|dz��6)z7 Encodes integer into variable-length format into data.rzonly support positive integer���N)rJr<)r
r��	this_bytes   rr�r�-sV���1�u��8�9�9�
���H�	�	�a�����6��K�K�	�"�����I��$�%�
rrc��d}d}d}|D]3}t|�}|dz
}|dkr|||zz|fcS||dz|zz}|dz
}�5td���z� Decode a variable -length integer.

        Reads a sequence of unsigned integer byte and decodes them into an
        integer in variable-length format and returns it and the length read.
        rrr�r�r�zcannot read uvarint from buffer)�ord�	Exception�r
r��shift�i�bs     rr�r�;sx��
����
���	�A��A��A�
��F�A��4�x��1��:�~�q�(�(�
�!�d�(�u�$�$�A��Q�J�E�
	��9�:�:rc�~�d}d}d}|D](}|dz
}|dkr|||zz|fcS||dz|zz}|dz
}�*td��r�)r�r�s     rr�r�Mso��
����
���	�A�
��F�A��4�x��1��:�~�q�(�(�
�!�d�(�u�$�$�A��Q�J�E�	��9�:�:rc��td�|cxkrtd�krytd�|cxkrtd�kryyy)N�0�9T�a�fF)r�)r�s rrVrV_s?��
�3�x�1� ��C�� ��!�
�3�x�1� ��C�� ��!�r)�
__future__rr3�collectionsrrSre�sys�base64r�pymacaroons.utilsrrr�'pymacaroons.serializers.base_serializerr	rRr
rrr��version_info�majorr�rVr�rr�<module>r�s���'��"�
�
�
�$���
C�A��j�<��"8�9��TE�~�TE�n
&������Q��;�H�%;�$r