�
�3Tfb � �\ � d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm Z m
Z
G d� dej �� Zdd �Z
dd
�Z dd�Z dd�Z dd
�Z G d� d� Z G d� de� Z G d� de� Z G d� d� Z G d� de� Z G d� de� Zy)� )�annotationsN)�utils)�AlreadyFinalized)�check_ansix923_padding�check_pkcs7_paddingc �X � e Zd Zej dd�� Zej dd�� Zy)�PaddingContextc � � y)zR
Pads the provided bytes and returns any available data as bytes.
N� )�self�datas �H/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/padding.py�updatezPaddingContext.update � � � c � � y)z6
Finalize the padding, returns bytes.
Nr �r s r �finalizezPaddingContext.finalize r r N�r
�bytes�returnr �r r )�__name__�
__module__�__qualname__�abc�abstractmethodr r r r r r r s4 � ����� ��
���� �r r )� metaclassc �n � d| cxk rdk st d� � t d� �| dz dk7 rt d� �y )Nr i� z%block_size must be in range(0, 2041).� z#block_size must be a multiple of 8.)�
ValueError)�
block_sizes r �_byte_padding_checkr# sI � �
��#�t�#��@�A�A�
$��@�A�A��A�~����>�?�?� r c � � | �t d� �t j d|� | t |� z
} t | � |dz z }| d ||dz z }| ||dz z d } | |fS )N�Context was already finalized.r
r )r r �_check_bytesliker �len��buffer_r
r" |