
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
lá˜_o  ã               @   s  d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ ejejƒG dd„ deƒƒZdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZejeƒG dd„ deƒƒZejeƒG dd„ deƒƒZG dd„ deƒZejeƒG dd„ deƒƒZejeƒG dd„ deƒƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalized)Úlibc               @   s(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚPaddingContextc             C   s   dS )zR
        Pads the provided bytes and returns any available data as bytes.
        N© )ÚselfÚdatar	   r	   ú/usr/lib64/python3.6/padding.pyÚupdate   s    zPaddingContext.updatec             C   s   dS )z6
        Finalize the padding, returns bytes.
        Nr	   )r
   r	   r	   r   Úfinalize   s    zPaddingContext.finalizeN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r	   r	   r	   r   r      s   r   c             C   s8   d|   kodkn  s t dƒ‚| d dkr4t 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 krt dƒ‚tjd|ƒ | t|ƒ7 } t| ƒ|d  }| d ||d  … }| ||d  d … } | |fS )NzContext 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 krt dƒ‚|d t| ƒ }| ||ƒ S )NzContext was already finalized.r   )r   r   )r   r   Z	paddingfnÚpad_sizer	   r	   r   Ú_byte_padding_pad7   s    r    c             C   sr   | d krt dƒ‚tjd|ƒ | t|ƒ7 } tt| ƒ|d  d dƒ}| d ||d  … }| ||d  d … } | |fS )NzContext 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 krt dƒ‚t| ƒ|d kr(tdƒ‚|| |d ƒ}|sBtdƒ‚tj| dƒ}| d | … S )NzContext was already finalized.r   zInvalid padding bytes.r!   éÿÿÿÿ)r   r   r   ÚsixZ
indexbytes)r   r   ZcheckfnZvalidr   r	   r	   r   Ú_byte_unpadding_checkO   s    r&   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPKCS7c             C   s   t |ƒ || _d S )N)r   r   )r
   r   r	   r	   r   Ú__init__`   s    zPKCS7.__init__c             C   s
   t | jƒS )N)Ú_PKCS7PaddingContextr   )r
   r	   r	   r   Úpadderd   s    zPKCS7.padderc             C   s
   t | jƒS )N)Ú_PKCS7UnpaddingContextr   )r
   r	   r	   r   Úunpadderg   s    zPKCS7.unpadderN)r   r   r   r(   r*   r,   r	   r	   r	   r   r'   _   s   r'   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r)   c             C   s   || _ d| _d S )Nó    )r   Ú_buffer)r
   r   r	   r	   r   r(   m   s    z_PKCS7PaddingContext.__init__c             C   s   t | j|| jƒ\| _}|S )N)r   r.   r   )r
   r   r   r	   r	   r   r   r   s    z_PKCS7PaddingContext.updatec             C   s   t j|ƒ| S )N)r%   Úint2byte)r
   Úsizer	   r	   r   Ú_paddingx   s    z_PKCS7PaddingContext._paddingc             C   s   t | j| j| jƒ}d | _|S )N)r    r.   r   r1   )r
   r   r	   r	   r   r   {   s    z_PKCS7PaddingContext.finalizeN)r   r   r   r(   r   r1   r   r	   r	   r	   r   r)   k   s   r)   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r+   c             C   s   || _ d| _d S )Nr-   )r   r.   )r
   r   r	   r	   r   r(   …   s    z_PKCS7UnpaddingContext.__init__c             C   s   t | j|| jƒ\| _}|S )N)r#   r.   r   )r
   r   r   r	   r	   r   r   Š   s    z_PKCS7UnpaddingContext.updatec             C   s   t | j| jtjƒ}d | _|S )N)r&   r.   r   r   Z Cryptography_check_pkcs7_padding)r
   r   r	   r	   r   r   �   s    z_PKCS7UnpaddingContext.finalizeN)r   r   r   r(   r   r   r	   r	   r	   r   r+   ƒ   s   r+   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚANSIX923c             C   s   t |ƒ || _d S )N)r   r   )r
   r   r	   r	   r   r(   ™   s    zANSIX923.__init__c             C   s
   t | jƒS )N)Ú_ANSIX923PaddingContextr   )r
   r	   r	   r   r*   �   s    zANSIX923.padderc             C   s
   t | jƒS )N)Ú_ANSIX923UnpaddingContextr   )r
   r	   r	   r   r,       s    zANSIX923.unpadderN)r   r   r   r(   r*   r,   r	   r	   r	   r   r2   ˜   s   r2   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r3   c             C   s   || _ d| _d S )Nr-   )r   r.   )r
   r   r	   r	   r   r(   ¦   s    z _ANSIX923PaddingContext.__init__c             C   s   t | j|| jƒ\| _}|S )N)r   r.   r   )r
   r   r   r	   r	   r   r   «   s    z_ANSIX923PaddingContext.updatec             C   s   t jdƒ|d  t j|ƒ S )Nr   r!   )r%   r/   )r
   r0   r	   r	   r   r1   ±   s    z _ANSIX923PaddingContext._paddingc             C   s   t | j| j| jƒ}d | _|S )N)r    r.   r   r1   )r
   r   r	   r	   r   r   ´   s    z _ANSIX923PaddingContext.finalizeN)r   r   r   r(   r   r1   r   r	   r	   r	   r   r3   ¤   s   r3   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r4   c             C   s   || _ d| _d S )Nr-   )r   r.   )r
   r   r	   r	   r   r(   ¾   s    z"_ANSIX923UnpaddingContext.__init__c             C   s   t | j|| jƒ\| _}|S )N)r#   r.   r   )r
   r   r   r	   r	   r   r   Ã   s    z _ANSIX923UnpaddingContext.updatec             C   s   t | j| jtjƒ}d | _|S )N)r&   r.   r   r   Z#Cryptography_check_ansix923_padding)r
   r   r	   r	   r   r   É   s    z"_ANSIX923UnpaddingContext.finalizeN)r   r   r   r(   r   r   r	   r	   r	   r   r4   ¼   s   r4   )Z
__future__r   r   r   r   r%   Zcryptographyr   Zcryptography.exceptionsr   Z%cryptography.hazmat.bindings._paddingr   Zadd_metaclassÚABCMetaÚobjectr   r   r   r    r#   r&   r'   Zregister_interfacer)   r+   r2   r3   r4   r	   r	   r	   r   Ú<module>   s,   