a a+ @ sT d dl Z d dlZd dlmZ d dlmZ d dlmZmZ G dd de j dZ eddd d Zej e eeejeef ddd Zej e eejegef edddZej e eeejeef dddZej e eejegef edddZG dd deZG dd de ZG dd de ZG dd deZG dd de ZG d d! d!e ZdS )" N)utils)AlreadyFinalized)check_ansix923_paddingcheck_pkcs7_paddingc @ s6 e Zd ZejeedddZejedddZdS )PaddingContextdatareturnc C s dS )zR Pads the provided bytes and returns any available data as bytes. N )selfr r r L/usr/lib64/python3.9/site-packages/cryptography/hazmat/primitives/padding.pyupdate s zPaddingContext.updater c C s dS )z6 Finalize the padding, returns bytes. Nr r r r r finalize s zPaddingContext.finalizeN)__name__ __module____qualname__abcabstractmethodbytesr r r r r r r s r ) metaclass) block_sizer c C s6 d| krdksn t d| d dkr2t dd S )Nr i z%block_size must be in range(0, 2041). z#block_size must be a multiple of 8.) ValueErrorr r r r _byte_padding_check s r )buffer_r r r c C sh | d u rt dtd| | t|7 } t| |d }| d ||d }| ||d d } | |fS )NContext was already finalized.r r )r r _check_bytesliker lenr r r Zfinished_blocksresultr r r _byte_padding_update' s r# )r r paddingfnr c C s, | d u rt d|d t| }| || S )Nr r )r r )r r r$ pad_sizer r r _byte_padding_pad9 s r&