<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
ꅭhV                 @   sp   d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZ d dlmZ ejejG dd deZdS )	    )absolute_importdivisionprint_function)utils)InvalidSignatureUnsupportedAlgorithm_Reasons)constant_timemac)CBCc               @   s@   e Zd ZdddZejdZdd Zdd Zd	d
 Z	dd Z
dS )_CMACContextNc       	      C   s   |j |stdtj|| _|j| _|| _|jd | _	|d kr| jj
}|t|tf }|| j|t}| jjj }| jj|| jjjk | jjj|| jjj}| jjj| j}| jjj||t| j|| jjj}| jj|dk || _d S )Nz#This backend does not support CMAC.      )Zcmac_algorithm_supportedr   r   ZUNSUPPORTED_CIPHER_backendkeyZ_key
_algorithmZ
block_size_output_lengthZ_cipher_registrytyper   _libCMAC_CTX_newopenssl_assert_ffiZNULLgcCMAC_CTX_freeZfrom_bufferZ	CMAC_Initlen_ctx)	selfZbackend	algorithmctxregistryZadapterZ
evp_cipherZkey_ptrres r!   /usr/lib64/python3.6/cmac.py__init__   s0    
z_CMACContext.__init__r   c             C   s,   | j jj| j|t|}| j j|dk d S )Nr   )r   r   ZCMAC_Updater   r   r   )r   datar    r!   r!   r"   update9   s    z_CMACContext.updatec             C   sd   | j jjd| j}| j jjd| j}| j jj| j||}| j j|dk d | _| j jj|d d  S )Nzunsigned char[]zsize_t *r   )	r   r   newr   r   Z
CMAC_Finalr   r   buffer)r   ZbufZlengthr    r!   r!   r"   finalize=   s    z_CMACContext.finalizec             C   sV   | j jj }| j jj|| j jj}| j jj|| j}| j j|dk t	| j | j
|dS )Nr   )r   )r   r   r   r   r   r   ZCMAC_CTX_copyr   r   r   r   )r   Z
copied_ctxr    r!   r!   r"   copyG   s    z_CMACContext.copyc             C   s    | j  }tj||stdd S )NzSignature did not match digest.)r(   r	   Zbytes_eqr   )r   Z	signatureZdigestr!   r!   r"   verifyP   s    z_CMACContext.verify)N)__name__
__module____qualname__r#   r   Zread_only_propertyr   r%   r(   r)   r*   r!   r!   r!   r"   r      s   
#

	r   N)Z
__future__r   r   r   Zcryptographyr   Zcryptography.exceptionsr   r   r   Zcryptography.hazmat.primitivesr	   r
   Z,cryptography.hazmat.primitives.ciphers.modesr   Zregister_interfaceZ
MACContextobjectr   r!   r!   r!   r"   <module>   s   