§
    pïg½  ã                   óz   — d dl Z d dlmZmZmZ d dlmZ d dlmZ e j	        rd dlm
Z
 d dlmZ  G d„ d¦  «        ZdS )	é    N)ÚInvalidSignatureÚUnsupportedAlgorithmÚ_Reasons)Úconstant_time)ÚCBC)Úciphers)ÚBackendc                   óX   — e Zd Z	 d	 	 	 	 	 dd„Zdeddfd	„Zdefd
„Zdd„Zdeddfd„ZdS )Ú_CMACContextNÚbackendr	   Ú	algorithmúciphers.BlockCipherAlgorithmÚreturnc                 óH  — |                      |¦  «        st          dt          j        ¦  «        ‚|| _        |j        | _        || _        |j        dz  | _	        |�€?| j        j
        }|t          |¦  «        t          f         } || j        |t          ¦  «        }| j        j                             ¦   «         }| j                             || j        j        j        k    ¦  «         | j        j                             || j        j        j        ¦  «        }| j        j                             | j        ¦  «        }| j        j                             ||t-          | j        ¦  «        || j        j        j        ¦  «        }| j                             |dk    ¦  «         || _        d S )Nz#This backend does not support CMAC.é   é   )Úcmac_algorithm_supportedr   r   ÚUNSUPPORTED_CIPHERÚ_backendÚkeyÚ_keyÚ
_algorithmÚ
block_sizeÚ_output_lengthÚ_cipher_registryÚtyper   Ú_libÚCMAC_CTX_newÚopenssl_assertÚ_ffiÚNULLÚgcÚCMAC_CTX_freeÚfrom_bufferÚ	CMAC_InitÚlenÚ_ctx)	Úselfr   r   ÚctxÚregistryÚadapterÚ
evp_cipherÚkey_ptrÚress	            úK/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/cmac.pyÚ__init__z_CMACContext.__init__   sl  € ð ×/Ò/°	Ñ:Ô:ð 	Ý&Ø5ÝÔ+ñô ð ð
  ˆŒØ”MˆŒ	Ø#ˆŒØ'Ô2°aÑ7ˆÔà‰;Ø”}Ô5ˆHØ�t I™œµÐ3Ô4ˆGà ˜ ¤°	½3Ñ?Ô?ˆJà”-Ô$×1Ò1Ñ3Ô3ˆCàŒM×(Ò(¨°´Ô0BÔ0GÒ)GÑHÔHÐHØ”-Ô$×'Ò'¨¨T¬]Ô-?Ô-MÑNÔNˆCà”mÔ(×4Ò4°T´YÑ?Ô?ˆGØ”-Ô$×.Ò.ØØÝ�D”I‘”ØØ”Ô"Ô'ñô ˆCð ŒM×(Ò(¨°ªÑ2Ô2Ð2àˆŒ	ˆ	ˆ	ó    Údatac                 ó¨   — | j         j                             | j        |t	          |¦  «        ¦  «        }| j                              |dk    ¦  «         d S )Nr   )r   r   ÚCMAC_Updater'   r&   r   )r(   r2   r.   s      r/   Úupdatez_CMACContext.update=   sF   € ØŒmÔ ×,Ò,¨T¬Y¸½cÀ$¹i¼iÑHÔHˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.Ð.Ð.r1   c                 óz  — | j         j                             d| j        ¦  «        }| j         j                             d| j        ¦  «        }| j         j                             | j        ||¦  «        }| j                              |dk    ¦  «         d | _        | j         j                             |¦  «        d d …         S )Nzunsigned char[]zsize_t *r   )	r   r    Únewr   r   Ú
CMAC_Finalr'   r   Úbuffer)r(   ÚbufÚlengthr.   s       r/   Úfinalizez_CMACContext.finalizeA   sž   € ØŒmÔ ×$Ò$Ð%6¸Ô8KÑLÔLˆØ”Ô#×'Ò'¨
°DÔ4GÑHÔHˆØŒmÔ ×+Ò+¨D¬I°s¸FÑCÔCˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.àˆŒ	àŒ}Ô!×(Ò(¨Ñ-Ô-¨a¨a¨aÔ0Ð0r1   c                 óZ  — | j         j                             ¦   «         }| j         j                             || j         j        j        ¦  «        }| j         j                             || j        ¦  «        }| j                              |dk    ¦  «         t          | j         | j
        |¬¦  «        S )Nr   )r)   )r   r   r   r    r"   r#   ÚCMAC_CTX_copyr'   r   r   r   )r(   Ú
copied_ctxr.   s      r/   Úcopyz_CMACContext.copyK   s�   € Ø”]Ô'×4Ò4Ñ6Ô6ˆ
Ø”]Ô'×*Ò*Ø˜œÔ*Ô8ñ
ô 
ˆ
ð ŒmÔ ×.Ò.¨z¸4¼9ÑEÔEˆØŒ×$Ò$ S¨A¢XÑ.Ô.Ð.Ý˜DœM¨4¬?À
ÐKÑKÔKÐKr1   Ú	signaturec                 óv   — |                       ¦   «         }t          j        ||¦  «        st          d¦  «        ‚d S )NzSignature did not match digest.)r<   r   Úbytes_eqr   )r(   rA   Údigests      r/   Úverifyz_CMACContext.verifyT   s@   € Ø—’‘”ˆÝÔ% f¨iÑ8Ô8ð 	FÝ"Ð#DÑEÔEÐEð	Fð 	Fr1   )N)r   r	   r   r   r   N)r   r   )	Ú__name__Ú
__module__Ú__qualname__r0   Úbytesr5   r<   r@   rE   © r1   r/   r   r      sÉ   € € € € € ð
 ð	&àð&ð 2ð&ð
 
ð&ð &ð &ð &ðP/˜5ð / Tð /ð /ð /ð /ð1˜%ð 1ð 1ð 1ð 1ðLð Lð Lð LðF ð F¨$ð Fð Fð Fð Fð Fð Fr1   r   )ÚtypingÚcryptography.exceptionsr   r   r   Úcryptography.hazmat.primitivesr   Ú,cryptography.hazmat.primitives.ciphers.modesr   ÚTYPE_CHECKINGr   Ú,cryptography.hazmat.backends.openssl.backendr	   r   rJ   r1   r/   ú<module>rQ      sÞ   ðð
 €€€ðð ð ð ð ð ð ð ð ð ð
 9Ð 8Ð 8Ð 8Ð 8Ð 8Ø <Ð <Ð <Ð <Ð <Ð <à	Ôð EØ6Ð6Ð6Ð6Ð6Ð6ØDÐDÐDÐDÐDÐDðCFð CFð CFð CFð CFñ CFô CFð CFð CFð CFr1   