a
a @ sL d dl mZ d dlmZmZmZ d dlmZ d dlm Z G dd de
ZdS ) )utils)InvalidSignatureUnsupportedAlgorithm_Reasons)
constant_time)CBCc @ s\ e Zd ZdddZedZeddddZedd d
Z d dddZ
edd
ddZdS )_CMACContextNc C s | |stdtj|| _|j| _|| _|jd | _ |d u r| jj
}|t|tf }|| j|t}| jj
}| j|| jjjk | jj|| jj
j}| jj| j}| jj
||t| j|| jjj}| j|dk || _d S )Nz#This backend does not support CMAC. )Zcmac_algorithm_supportedr r ZUNSUPPORTED_CIPHER_backendkeyZ_key
_algorithmZ
block_size_output_lengthZ_cipher_registrytyper _libCMAC_CTX_newopenssl_assert_ffiZNULLgc
CMAC_CTX_freeZfrom_bufferZ CMAC_Initlen_ctx) selfZbackend algorithmctxregistryZadapterZ
evp_cipherZkey_ptrres r O/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/cmac.py__init__ s4
z_CMACContext.__init__r
)datareturnc C s, | j j| j|t|}| j |dk d S )Nr
)r r ZCMAC_Updater r r )r r r r r r update6 s z_CMACContext.update)r! c C sd | j jd| j}| j jd| j}| j j| j||}| j |dk d | _| j j|d d S )Nzunsigned char[]zsize_t *r
) r r newr r Z
CMAC_Finalr r buffer)r buflengthr r r r finalize: s z_CMACContext.finalizec C sV | j j }| j j|| j jj}| j j|| j}| j |dk t | j | j
|dS )Nr
)r )r r r r r r Z
CMAC_CTX_copyr r r r
)r Z
copied_ctxr r r r copyD s
z_CMACContext.copy) signaturer! c C s | }t||stdd S )NzSignature did not match digest.)r' r Zbytes_eqr )r r) Zdigestr r r verifyM s z_CMACContext.verify)N)__name__
__module____qualname__r r Zread_only_propertyr bytesr" r' r( r* r r r r r s
#
r N)Zcryptographyr Zcryptography.exceptionsr r r Zcryptography.hazmat.primitivesr Z,cryptography.hazmat.primitives.ciphers.modesr objectr r r r r