o
    s–hž
  ã                   @  sl   d dl mZ ddlmZmZmZmZmZ ddlm	Z	 d dl
mZ d dlmZ d dlmZ G d	d
„ d
eƒZdS )é    )Úannotationsé   )ÚAttestationÚAttestationTypeÚAttestationResultÚInvalidSignatureÚcatch_builtinsé   )ÚES256)Úx509)Údefault_backend)r   c                   @  s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )ÚFidoU2FAttestationzfido-u2fc              	   C  sR   |j }d|jd  |jd  }|d }t |j||j||d |d ¡ ttj|ƒS )Nó   éþÿÿÿéýÿÿÿÚx5cr   Úsig)	Úcredential_dataÚ
public_keyr   Úverify_signatureÚ
rp_id_hashÚcredential_idr   r   ÚBASIC)ÚselfÚ	statementÚ	auth_dataÚclient_data_hashÚcdÚpkr   © r   úP/var/www/html/env_mimamsha/lib/python3.10/site-packages/fido2/attestation/u2f.pyÚverify/   s   úzFidoU2FAttestation.verifyc                 C  sT   d|  | | | }t  |tƒ ¡}zt | ¡ ¡ ||¡ W d S  ty)   tƒ ‚w )Nó    )	r   Úload_der_x509_certificater   r
   Úfrom_cryptography_keyr   r!   Ú_InvalidSignaturer   )Ú	app_paramÚclient_paramÚ
key_handler   Ú
cert_bytesÚ	signatureÚmÚcertr   r   r    r   >   s   ÿz#FidoU2FAttestation.verify_signatureN)Ú__name__Ú
__module__Ú__qualname__ÚFORMATr   r!   Ústaticmethodr   r   r   r   r    r   ,   s    
r   N)Ú
__future__r   Úbaser   r   r   r   r   Úcoser
   Úcryptographyr   Úcryptography.hazmat.backendsr   Úcryptography.exceptionsr%   r   r   r   r   r    Ú<module>   s   