+
     h  c                  s    ^ RI Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^RI	H
t
 ^RIHtHt ^RIHtHtHtHtHt  ! R	 R
]4      tR# )i    )annotationsN)x509)default_backend)bytes_eq)CoseKey)sha256websafe_decode)AttestationAttestationResultAttestationTypeInvalidDatacatch_builtinsc                  s:    ] tR t^/tRtRR R llt]R 4       tRtR# )AndroidSafetynetAttestationzandroid-safetynetc               s    V ^8  d   QhRR/# )i   allow_rootedZbool )Zformats   ">/usr/lib/python3.14/site-packages/fido2/attestation/android.pyZ__annotate__Z(AndroidSafetynetAttestation.__annotate__2   s     ) )T )    c                	s    Wn         R # Nr   )selfr   s   &&r   __init__Z$AndroidSafetynetAttestation.__init__2   s    (r   c                	s   VR ,          pR VP                  R4       4       w  rVp\        P                  ! VP                  R4      4      pV P                  '       g   VR,          RJd   \        R4      h\        W#,           4      p	\        V	\        VR,          4      4      '       g   \        R4      h\        P                  ! VP                  R4      4      pVR	,           U
u. uF  p
\        V
4      NK  	  pp
\        P                  ! V^ ,          \        4       4      pVP                  P                  \        P                  P                  4      pV^ ,          P                   R
8w  d   \        R4      h\"        P$                  ! VR,          4      P'                  VP)                  4       4      P+                  VP-                  R^4      ^ ,          V4       \/        \0        P2                  V4      # u up
i )Zresponsec              3  s8   "   T F  p\        V4      x  K  	  R # 5ir   )r   )Z.0xs   & r   Z	<genexpr>Z5AndroidSafetynetAttestation.verify.<locals>.<genexpr>8   s     K?aq 1 1?s   s   .Zutf8ZctsProfileMatchTzctsProfileMatch must be true!ZnoncezNonce does not match!x5czattest.android.comz-Certificate not issued to attest.android.com!Zalg)ZsplitjsonZloadsZdecoder   r
   r   r   r   r   Zload_der_x509_certificater   ZsubjectZget_attributes_for_oidZNameOIDZCOMMON_NAMEZvaluer   Zfor_nameZfrom_cryptography_keyZ
public_keyverifyZrsplitr   r	   ZBASIC)r   Z	statementZ	auth_dataZclient_data_hashZjwtZheaderZpayloadZsigZdataZexpected_noncer   r   ZcertZcns   &&&&          r   r   Z"AndroidSafetynetAttestation.verify5   st   
#K399T?Kzz'..01   T*;%<D%H=>>	 <=tG}(EFF566zz&--/0*.u+6+Q~a +6--c!fo6GH\\001I1IJa5;;..MNNe%;;DOO<MNUUJJtQ"C	
 !!6!6<< 7s   "G/r   N)F)	Z__name__Z
__module__Z__qualname__Z__firstlineno__ZFORMATr   r   r   Z__static_attributes__r   r   r   r   r   /   s      F) = =r   r   )Z
__future__r    r   Zcryptographyr   Zcryptography.hazmat.backendsr   Z,cryptography.hazmat.primitives.constant_timer   Zcoser   Zutilsr   r   Zbaser   r   r	   r
   r   r   r   r   r   <module>r      s2   8 #   8 A  * =+ =r   