3 lá˜_o ã @ s d dl mZmZmZ d dlZd dlZd dlmZ d dlm Z d dl mZ ejej ƒG dd„ deƒƒZdd „ Zd d„ Zdd „ Zdd„ Zdd„ ZG dd„ deƒZejeƒG dd„ deƒƒZejeƒG dd„ deƒƒZG dd„ deƒZejeƒG dd„ deƒƒZejeƒG dd„ deƒƒZdS )é )Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalized)Úlibc @ s( e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚPaddingContextc C s dS )zR Pads the provided bytes and returns any available data as bytes. N© )ÚselfÚdatar r ú/usr/lib64/python3.6/padding.pyÚupdate s zPaddingContext.updatec C s dS )z6 Finalize the padding, returns bytes. Nr )r r r r Úfinalize s zPaddingContext.finalizeN)Ú__name__Ú __module__Ú__qualname__ÚabcÚabstractmethodr r r r r r r s r c C s8 d| kodkn s t dƒ‚| d dkr4t dƒ‚d S )Nr iø z%block_size must be in range(0, 2041).é z#block_size must be a multiple of 8.)Ú ValueError)Ú block_sizer r r Ú_byte_padding_check s r c C sh | d krt dƒ‚tjd|ƒ | t|ƒ7 } t| ƒ|d }| d ||d … }| ||d d … } | |fS )NzContext was already finalized.r r )r r Ú_check_byteslikeÚbytesÚlen)Úbuffer_r r Úfinished_blocksÚresultr r r Ú_byte_padding_update' s r c C s, | d krt dƒ‚|d t| ƒ }| ||ƒ S )NzContext was already finalized.r )r r )r r Z paddingfnÚpad_sizer r r Ú_byte_padding_pad7 s r c C sr | d krt dƒ‚tjd|ƒ | t|ƒ7 } tt| ƒ|d d dƒ}| d ||d … }| ||d d … } | |fS )NzContext was already finalized.r r é r )r r r r Úmaxr )r r r r r r r r Ú_byte_unpadding_update? s r# c C s\ | d krt dƒ‚t| ƒ|d kr(tdƒ‚|| |d ƒ}|sBtdƒ‚tj| dƒ}| d | … S )NzContext was already finalized.r zInvalid padding bytes.r! éÿÿÿÿ)r r r ÚsixZ indexbytes)r r ZcheckfnZvalidr r r r Ú_byte_unpadding_checkO s r&