CasperSecurity
o
�%�Y01 � @ s� d dl mZ d dlZd dlmZ d dlZd dlZd dlZd dlm Z d dl
mZmZm
Z
d dlmZ d dlmZ edd d
g�ZG dd� de�Zd
d� ZejjdkrVdd� Zndd� Zdd� ZdS )� )�unicode_literalsN)�
namedtuple)�urlsafe_b64encode)�convert_to_bytes�convert_to_string�
raw_b64decode)�BaseSerializer)�MacaroonSerializationException�PacketV2�
field_type�datac @ s� e Zd ZdZdZdZdZdZdZdd� Z dd � Z
d
d� Zdd
� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zd!dd�Zdd� Zdd � ZdS )"�BinarySerializer� � � � r c C s t | �|���d��d�S )N�ascii�=)r �
serialize_raw�decode�rstrip)�self�macaroon� r �K/usr/lib/python3/dist-packages/pymacaroons/serializers/binary_serializer.py� serialize s
��zBinarySerializer.serializec C s* ddl m} |j|kr| �|�S | �|�S )Nr )�MACAROON_V1)�pymacaroons.macaroonr �version�
_serialize_v1�
_serialize_v2)r r r r r r r # s
zBinarySerializer.serialize_rawc C s� | � d|j�}|| � d|j�7 }|jD ]#}|| � d|j�7 }|jr6|jr6|| � d|j�7 }|| � d|j�7 }q|| � dt�|j ��7 }|S )N� location�
identifier� cid� vid� cl� signature)
�
_packetize�location�
identifier�caveats�
_caveat_id�_verification_key_id� _location�binascii� unhexlify�signature_bytes)r r �combined�caveatr r r r ) s
��
�zBinarySerializer._serialize_v1c C s� ddl m} t� }|�|� |jd ur'| �|| jt|j�� | �|| j|j � | �|| j
� |jD ]2}|jd urC| �|| jt|j�� | �|| j|j� |j
d ur\| �|| jt|j
�� | �|| j
� q1| �|| j
� | �|| jt�|j�� t|�S )Nr ��MACAROON_V2)r r4 � bytearray�appendr( �_append_packet� _LOCATIONr �_IDENTIFIER�identifier_bytes�_EOSr* �caveat_id_bytes�verification_key_id�_VID�
_SIGNATUREr. r/ r0 �bytes)r r r4 r �cr r r r ; s6
�
�
�
��zBinarySerializer._serialize_v2c C s. t |�dkr
td��t|�}t|�}| �|�S )Nr zempty macaroon)�len�
ValueErrorr r �deserialize_raw)r �
serialized�decodedr r r �deserializeU s
zBinarySerializer.deserializec C sV ddl m} ddlm} t�|d d� �}||kr| �|�S t|�r'| �|�S |d��)Nr r3 �� MacaroonDeserializationExceptionr z7cannot determine data format of binary-encoded macaroon) r r4 �pymacaroons.exceptionsrI �six�byte2int�_deserialize_v2�
_is_ascii_hex�_deserialize_v1)r rE r4 rI �firstr r r rD \ s
�z BinarySerializer.deserialize_rawc C s4 ddl m}m} ddlm} ddlm} ||d�}d}|t|�k r�tt �
d|||| j � �d d�}||| j || � } | �| �\}
}|
dkrM||_
nA|
d krU||_n9|
d
krd|j�|||d�� n*|
dkro||jd
_n|
dkrz||jd
_
n|
dkr�t�|�|_n |dj|
|d���|| }|t|�k s!|S )Nr )�Macaroonr ��CaveatrH �r s 4s� r! r"