
    Dj                        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mZmZ  ej        d	          Zd
 Z G d de          ZdS )    )annotations)x509)InvalidSignature)default_backend   )CoseKey   )AttestationAttestationResultAttestationTypeInvalidDatar   _validate_cert_commoncatch_builtinsz1.3.6.1.4.1.45724.1.1.4c                "   t          |            | j                            t          j        j                  }|st          d          | j                            t          j        j                  }|st          d          | j                            t          j        j                  }|st          d          |d         }|j	        dk    rt          d          | j                            t          j        j
                  }|st          d          	 | j                            t                    }|j        rt          d          |j	        j	        dd          }||k    rt          d	          d S # t          j        $ r Y d S w xY w)
NzSubject must have C set!zSubject must have O set!z3Subject must have OU = "Authenticator Attestation"!r   zAuthenticator AttestationzSubject must have CN set!z/AAGUID extension must not be marked as criticalr   zDAAGUID in Authenticator data does not match attestation certificate!)r   subjectget_attributes_for_oidr   NameOIDCOUNTRY_NAMEr   ORGANIZATION_NAMEORGANIZATIONAL_UNIT_NAMEvalueCOMMON_NAME
extensionsget_extension_for_oid
OID_AAGUIDcriticalExtensionNotFound)	certaaguidcoousoucnext
ext_aaguids	            S/home/thesage/.hermes/venv/lib/python3.11/site-packages/fido2/attestation/packed.py_validate_packed_certr(   0   s   $++DL,EFFA 64555++DL,JKKA 64555
,
-
-dl.S
T
TC QOPPP	QB	x...OPPP		,	,T\-E	F	FB 75666
o33J??< 	QOPPPY_QRR(
V     !   s   AE; ;FFc                  (    e Zd ZdZed             ZdS )PackedAttestationpackedc                   d|v rt          d          |d         }|                    d          }|j        J |rt          j        |d         t                                }t          ||j        j                   t          j	        |          
                    |                                          }t          j        }nDt          j        |j        j                  }|j        |k    rt!          d          t          j        }	 |                    ||z   |d                    t'          ||pg           S # t(          $ r t+                      w xY w)N
ecdaaKeyIdzECDAA not implementedalgx5cr   zWrong algorithm of public key!sig)NotImplementedErrorgetcredential_datar   load_der_x509_certificater   r(   r   r   for_algfrom_cryptography_key
public_keyr   BASICparse	ALGORITHMr   SELFverifyr   _InvalidSignaturer   )	self	statement	auth_dataclient_data_hashr.   r/   r   pub_keyatt_types	            r'   r<   zPackedAttestation.verifyU   sJ   9$$%&=>>>mmE""(444 
	,1#a&/:K:KLLD!$	(A(HIIIoc**@@ARARSSG&,HHmI$=$HIIG C''!"BCCC&+H	%NN9'7759IJJJ$Xsyb999  	% 	% 	%"$$$	%s   0D9 9EN)__name__
__module____qualname__FORMATr   r<        r'   r*   r*   R   s2        F% % ^% % %rI   r*   N)
__future__r   cryptographyr   cryptography.exceptionsr   r=   cryptography.hazmat.backendsr   coser   baser
   r   r   r   r   r   ObjectIdentifierr   r(   r*   rH   rI   r'   <module>rQ      s  8 # " " " " "       I I I I I I 8 8 8 8 8 8                        #T"#<==
  D% % % % % % % % % %rI   