+
     h  c                  s    ^ RI Ht ^ RIt^ RIt^ RIt^ RIHt Rt^t] ! R R4      4       t	 ! R R]P                  4      t ! R	 R
]4      t^t]( t^t^t^t^t^tt^t^tR R ltR# )i    )annotationsN)	dataclassi  c                  s^    ] tR t^'t$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   RtR# )HidDescriptorzstr | bytespathZintZvidZpidreport_size_inZreport_size_outz
str | NoneZproduct_nameZserial_number N)__name__
__module____qualname____firstlineno__Z__annotations____static_attributes__r       3/usr/lib/python3.14/site-packages/fido2/hid/base.pyr   r   '   s*    
	H	Hr   r   c                  s    ] tR t^2t]P
                  R R l4       t]P
                  R R l4       t]P
                  R R l4       tRt	R# )	CtapHidConnectionc                   V ^8  d   QhRR/# )   returnbytesr   Zformat   "r   __annotate__CtapHidConnection.__annotate__4   s     & &U &r   c                    R# )zReads a CTAP HID packetNr   self   &r   read_packetZCtapHidConnection.read_packet3       r   c                    V ^8  d   QhRRRR/# )r   datar   r   Noner   r   r   r   r   r   8   s     ' ' '4 'r   c                r   )zWrites a CTAP HID packetNr   )r   r      &&r   write_packetZCtapHidConnection.write_packet7   r   r   c               r   )r   r   r   r   r   r   r   r   r   <   s     $ $t $r   c                r   )zCloses the connectionNr   r   r   r   closeZCtapHidConnection.close;   r   r   r   N)
r   r   r   r	   abcZabstractmethodr   r    r!   r
   r   r   r   r   r   2   sN    & & 	' ' 	$ $r   r   c                  s2    ] tR t^@tRtR tR tR tR tRt	R# )FileCtapHidConnectionzMBasic CtapHidConnection implementation which uses a path to a file descriptorc                	sz    \         P                  ! VP                  \         P                  4      V n        Wn        R # N)osZopenr   ZO_RDWRhandle
descriptor)r   r'   r   r   __init__ZFileCtapHidConnection.__init__C   s!    ggjooryy9$r   c                	sF    \         P                  ! V P                  4       R # r$   )r%   r!   r&   r   r   r   r!   ZFileCtapHidConnection.closeG   s    
r   c                	sz    \         P                  ! V P                  V4      \        V4      8w  d   \	        R 4      hR# )zfailed to write entire packetN)r%   Zwriter&   ZlenZOSError)r   Zpacketr   r   r    Z"FileCtapHidConnection.write_packetJ   s.    88DKK(CK79:: 8r   c                	sl    \         P                  ! V P                  V P                  P                  4      # r$   )r%   Zreadr&   r'   r   r   r   r   r   Z!FileCtapHidConnection.read_packetN   s!    wwt{{DOO$B$BCCr   )r'   r&   N)
r   r   r   r	   Z__doc__r(   r!   r    r   r
   r   r   r   r#   r#   @   s    W%;Dr   r#   c               r   )r   r   r   r   ztuple[int, int]r   r   r   r   r   r   ]   s     )* )*% )*O )*r   c                s8   R R r!R R rCR R re^pV '       Ed\   V'       EdS   \         P                  ! RV 4      ^ ,          V R,          r\        V,          \        V,          r\         P                  ! RV R V
 P	                  ^R4      4      ^ ,          pW
R  p VeZ   VeV   V	\
        8X  d!   Vf   WV,          ^,          pR R reV^,          pM*V	\        8X  d    Vf   WV,          ^,          pR R reV^,          pV	\        8X  d   V'       g   TpV^,          pEK  EK  V	\        8X  d   V'       g   TpV^,          pEK(  EK+  V	\        8X  d   V'       g   TpEKC  EKF  V	\        8X  g   EKT  V'       d   EK_  TpEKd  V'       g   V\        8X  d   V\        8X  d   W43# \        R4      h)Nz>B:i   NNz<Is    zNot a FIDO device)structZunpack_fromREPORT_DESCRIPTOR_KEY_MASK	SIZE_MASKZljust
INPUT_ITEMOUTPUT_ITEM
USAGE_PAGEUSAGEREPORT_COUNTREPORT_SIZEFIDO_USAGE_PAGE
FIDO_USAGEZ
ValueError)r   ZusageZ
usage_pageZmax_input_sizeZmax_output_sizeZreport_countZreport_sizeZ	remainingZheadZkeyZsizeZvalues   &           r   parse_report_descriptorr4   ]   st   d:&*DO $d+I
$99''d3A6Rd.5y47GT""4et):):1e)DEaHE{#(?j !)%1%?1%DN04d+NI#"*&2&@A&EO04d+NI*"
Q	  E\Q	  L $  K;#65J;N..
(
))r   )Z
__future__r    r"   r%   r)   Zdataclassesr   r2   r3   r   ZABCr   r#   r*   r+   r-   r,   ZCOLLECTION_ITEMr0   r1   r.   r/   r4   r   r   r   <module>r5      s   8 # 
 	  !
   $ $D- D$ " ''	

)*r   