+
     h$  c                  sr   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
Ht ^ RIHtHt ^RIHtHtHt ^RIHt ^RIHt ]P.                  ! ]4      t]P4                  P7                  R	4      '       d   ^R
IHt M]P4                  P7                  R4      '       d   ^RIHt M]P4                  P7                  R4      '       d   ^RIH t M]P4                  P7                  R4      '       d   ^RIH!t MX]P4                  P7                  R4      '       d   ^RIH"t M0]P4                  P7                  R4      '       d   ^RIH#t M]$! R4      h]PJ                  t%]PL                  t&]PN                  t' ! R R]$4      t(]	 ! R R]4      4       t)]	 ! R R]4      4       t*^t+ ! R R]4      t,R R lt-R  R! lt.R# )"    )annotationsN)IntEnumIntFlagunique)Event)CallableIterator)STATUS
CtapDevice	CtapError)LOG_LEVEL_TRAFFIC)HidDescriptorlinux)r   Zwin32)windowsZdarwin)macosfreebsd)r   netbsd)r   openbsd)r   zUnsupported platformc                  s    ] tR t^BtRtRtR# )ConnectionFailurez;The CTAP connection failed or returned an invalid response. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       7/usr/lib/python3.14/site-packages/fido2/hid/__init__.pyr   r   B   s    Er   r   c                  s>    ] tR t^Ft^t^t^t^t^t^t	^t
^?t^;t^@tRtR# )CTAPHIDr   N)r   r   r   r   PINGZMSGLOCKINITWINKCBORCANCELERROR	KEEPALIVEZVENDOR_FIRSTr   r   r   r   r   r   F   s4    D
CDDDDFEILr   r   c                  s2    ] tR t^Vt^t^t^t^tR R ltRt	R# )
CAPABILITYc                    V ^8  d   QhRRRR/# )   flagsr&   returnboolr   Zformat   "r   __annotate__ZCAPABILITY.__annotate__]   s     " "z "d "r   c                	s$    \        W,          4      # N)r+   )selfr)      &&r   	supportedZCAPABILITY.supported]   s    EL!!r   r   N)
r   r   r   r   r!   r   r"   ZNMSGr2   r   r   r   r   r&   r&   V   s     DDDD" "r   r&   c                  s   ] tR t^dtRtR R ltR t]R R l4       t]R R l4       t	]R	 R
 l4       t
]R R l4       t]R R l4       tR tRR R lltR tR R ltR R R lltR!R R lltR R lt]R R l4       tRtR# )"CtapHidDevicezZ
CtapDevice implementation using the HID transport.

:cvar descriptor: Device descriptor.
c                   V ^8  d   QhRR/# )r(   
descriptorr   r   r,   r-   r   r.   CtapHidDevice.__annotate__k   s     , ,= ,r   c                	sj   Wn         VP                  V n        W n        \        P
                  ! ^4      pRV n        V P                  \        P                  V4      pVR,          VR,          rEWS8w  d   \        R4      h\        P                  ! RV4      w  V n        V n        pppV n        WgV3V n        R# )   l    :Nr7   N:r7   NNzWrong noncez>IBBBBBN)r5   Zreport_size_out_packet_size_connectionosZurandom_channel_idcallr   r    r   structunpack_from_u2fhid_version_capabilities_device_version)	r0   r5   Z
connectionZnonceresponseZr_nonceZv1Zv2Zv3s	   &&&      r   __init__ZCtapHidDevice.__init__k   s    $&66%

1%99W\\51$RL(2,#M22 y(3	
  "|r   c                	s8    R V P                   P                  : R2# )zCtapHidDevice(Z))r5   pathr0      &r   __repr__ZCtapHidDevice.__repr__   s     4 47q99r   c               r4   r(   r*   intr   r,   r-   r   r.   r6      s     $ $ $r   c                    V P                   # )zCTAP HID protocol version.)r?   rE   rF   r   versionZCtapHidDevice.version        ###r   c               r4   )r(   r*   ztuple[int, int, int]r   r,   r-   r   r.   r6      s     $ $ 4 $r   c                rJ   )zDevice version number.)rA   rE   rF   r   device_versionZCtapHidDevice.device_version   rL   r   c               r4   rH   r   r,   r-   r   r.   r6      s     " "c "r   c                rJ   )z%Capabilities supported by the device.)r@   rE   rF   r   capabilitiesZCtapHidDevice.capabilities   s     !!!r   c               r4   r(   r*   z
str | Noner   r,   r-   r   r.   r6      s     , ,j ,r   c                .    V P                   P                  # )zProduct name of device.)r5   product_namerE   rF   r   rQ   ZCtapHidDevice.product_name   s     +++r   c               r4   rO   r   r,   r-   r   r.   r6      s     - -z -r   c                rP   )zSerial number of device.)r5   serial_numberrE   rF   r   rR   ZCtapHidDevice.serial_number   s     ,,,r   c                	s8   \         P                  ! R V P                  \        \        P
                  ,          4      P                  V P                  R4      p\        P                  \        RVP                  4       4       V P                  P                  V4       R# )>IB    SEND: %sN)r=   packr;   	TYPE_INITr   r#   ljustr8   loggerlogr   hexr9   write_packet)r0   packet   & r   _send_cancelZCtapHidDevice._send_cancel   sf    UD$4$4i'..6PQWWu
 	

$j&**,?%%f-r   Nc          
     s,    V ^8  d   QhRRRRRRRRR	R/# )
r(   cmdrI   databyteseventzEvent | Noneon_keepalivezCallable[[STATUS], None] | Noner*   r   r,   r-   r   r.   r6      s<        	
 6 
r   c                	s0   T;'       g    \        4       p  V P                  WW44      #   \         db   pTP                  \        P                  P
                  8X  d3   TP                  R4      '       g   \        P                  R4        Rp?Kz  h Rp?ii ; i)Tg?z"CTAP channel busy, trying again...N)	r   _do_callr
   ZcodeERRZCHANNEL_BUSYZwaitrY   Zwarning)r0   r`   ra   rc   rd   Zes   &&&&& r   r<   ZCtapHidDevice.call   sr       }}SDD 66Y]]777 ::c??'KL s    ) B?B4BBBc                	sz   Tp^ p\         P                  ! RV P                  \        V,          \	        V4      4      pV'       g   V^ 8X  d   \        \	        V4      V P                  \	        V4      ,
          4      pVRV WXR rYWy,           p
\        P                  \        RV
P                  4       4       V P                  P                  V
P                  V P                  R4      4       \         P                  ! RV P                  ^V,          4      pV^,          pK   ^ pRpRp VP                  4       '       d&   \        P                  R4       V P!                  4        V P                  P#                  4       p\        P                  \        RVP                  4       4       \         P$                  ! R	V4      ^ ,          pVR
,          pWP                  8w  d   \'        R4      hV'       Eg   \         P$                  ! RV4      w  ppVR,          pV\        V,          8X  d   EM)V\        \(        P*                  ,          8X  d^    \-        \         P$                  ! RV4      ^ ,          4      p\        P                  RVR 24       T'       d   TT8w  d   TpT! T4       EK~  V\        \(        P0                  ,          8X  d(   \3        \         P$                  ! RV4      ^ ,          4      h\3        \2        P4                  P6                  4      h\         P$                  ! RV4      ^ ,          pVR,          pVV8w  d   \'        R4      hV^,          pW,          p\	        V4      X8  g   EKE   TRT #   \.         d    \'        R4      hi ; i  \8         d(    \        P                  R4       T P!                  4        h i ; i)r    z>IBHNrU   rT   rS   r   zSending cancel...zRECV: %sz>I:i   NNzWrong channelz>BH:i   NN>BzGot keepalive status: Z02xzInvalid keepalive status:i   NNzWrong sequence numberz!Keyboard interrupt, cancelling...)r=   rV   r;   rW   ZlenZminr8   rY   rZ   r   r[   r9   r\   rX   Zis_setZdebugr_   Zread_packetr>   r   r   r%   r   Z
ValueErrorr$   r
   rf   ZINVALID_COMMANDZKeyboardInterrupt)r0   r`   ra   rc   rd   Z	remainingZseqZheaderZsizeZbodyr]   rB   Zlast_kaZrecvZ	r_channelZr_cmdZr_lenZ	ka_statusZr_seqs   &&&&&              r   re   ZCtapHidDevice._do_call   s   	 VT%5%5y3IW3!8s9~t'8'83v;'FGD'.	%0@)]FJJ(*fjjlC))&,,t7H7H%*PQ[[(8(8$*EF1HC6	CHG<<>>LL!45%%'''335

,j$((*E"..tT:1=	Bx 0 00+O<<x#)#5#5eT#BLE58D	C/)g.?.?"??P(.v/A/A$/Ma/P(QI"LL+A)C)QR (I,@&/G(3 )gmm";;'(:(:4(Fq(IJJ'	(E(EFF"..tT:1=E8D|/0GHH1HC x=E)FU##+  * P"34N"OOP, ! 	LL<=		s@   N :B2N -AN A M. N CN (N .NN 2N:c               r4   r(   r*   Noner   r,   r-   r   r.   r6      s        d  r   c                sD    V P                  \        P                  4       R# )z"Causes the authenticator to blink.N)r<   r   r!   rE   rF   r   winkZCtapHidDevice.wink   s    		',,r   c               s     V ^8  d   QhRRRR/# )r(   msgrb   r*   r   r,   r-   r   r.   r6     s     , , ,% ,r   c                sB    V P                  \        P                  V4      # )zSends data to the authenticator, which echoes it back.

:param msg: The data to send.
:return: The response from the authenticator.
)r<   r   r   )r0   rk   r1   r   pingZCtapHidDevice.ping  s     yys++r   c               r'   )r(   	lock_timerI   r*   ri   r   r,   r-   r   r.   r6   	  s     > >c >4 >r   c                sp    V P                  \        P                  \        P                  ! RV4      4       R# )zLocks the channel.rg   N)r<   r   r   r=   rV   )r0   rm   r1   r   lockZCtapHidDevice.lock	  s    		',,D) <=r   c               r4   rh   r   r,   r-   r   r.   r6     s     $ $t $r   c                	sp    V P                   '       d$   V P                   P                  4        R V n         R # R # r/   )r9   closerE   rF   r   ro   ZCtapHidDevice.close  s-    ""$#D r   c               r4   r(   r*   zIterator[CtapHidDevice]r   r,   r-   r   r.   r6     s     - -4 -r   c              #  	sX   "   \        4        F  pV ! V\        V4      4      x  K  	  R # 5ir/   )list_descriptorsopen_connection)ZclsZdr^   r   list_devicesZCtapHidDevice.list_devices  s$     !#Aa+,, $s   (*)r@   r;   r9   rA   r8   r?   r5   )r   NN)s
   Hello FIDO)i
   )r   r   r   r   r   rC   rG   ZpropertyrK   rM   rN   rQ   rR   r_   r<   re   rj   rl   rn   ro   Zclassmethodrs   r   r   r   r   r3   r3   d   s    ,*: $ $ $ $ " " , , - -.&EN ,>$
 - -r   r3   c               r4   rp   r   r,   r-   r   r.   r.     s     ( (- (r   c                 s*    \         P                  4       # r/   )r3   rs   r   r   r   rs   rs     s    %%''r   c               r4   )r(   r*   r3   r   r,   r-   r   r.   r.     s     B B Br   c                sB    \        V 4      p\        V\        V4      4      # r/   )get_descriptorr3   rr   )rD   r5   r^   r   open_deviceru     s    %J_Z%@AAr   )/Z
__future__r   Zloggingr:   r=   ZsysZenumr   r   r   Z	threadingr   Ztypingr   r   Zctapr   r	   r
   Zutilsr   Zbaser   Z	getLoggerr   rY   ZplatformZ
startswithZ r   Zbackendr   r   r   r   r   Z	Exceptionrq   rt   rr   r   r   r&   rW   r3   rs   ru   r   r   r   <module>rv      se  8 #  	  
 ) )  % 0 0 % 			8	$ <<7##"\\W%%$\\X&&"\\Y''$\\X&&#\\Y''$
*
++ ++ ''))F	 F g   " " " 	q-J q-h(Br   