o
    Õl>jÊ
  ã                   @  sl   d dl mZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 ddlmZmZmZmZmZ G d	d
„ d
eƒZdS )é    )Úannotations)Úx509)ÚInvalidSignature)Údefault_backendé   )ÚES256é   )ÚAttestationÚAttestationResultÚAttestationTyper   Úcatch_builtinsc                   @  s(   e Zd ZdZedd„ ƒZedd„ ƒZdS )ÚFidoU2FAttestationzfido-u2fc              	   C  s^   |j }|d us	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   úJ/home/thesage/.local/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   Úcryptographyr   Úcryptography.exceptionsr   r%   Úcryptography.hazmat.backendsr   Úcoser   Úbaser	   r
   r   r   r   r   r   r   r    Ú<module>   s   	