o
    sh                     @  s   U d dl mZ ddlmZmZmZ d dlZd dlZd dlZd dl	m	Z	 d dl
mZ d dlZd dlZejdks8J eeZdZd	Zd
ZdZdZG dd deZdd Zdd Ze Zded< dd ZdS )    )annotations   )HidDescriptorFileCtapHidConnectionparse_report_descriptorN)array)Setwin32l   H  l   H  l   H  l   H  l   H  c                      s   e Zd Z fddZ  ZS )LinuxCtapHidConnectionc                   s   t  d|  d S )N    )superwrite_packet)selfpacket	__class__ J/var/www/html/env_mimamsha/lib/python3.10/site-packages/fido2/hid/linux.pyr   -   s   z#LinuxCtapHidConnection.write_packet)__name__
__module____qualname__r   __classcell__r   r   r   r   r
   ,   s    r
   c                 C  s   t | S )N)r
   )
descriptorr   r   r   open_connection2   s   r   c              	   C  s  t | d}tddgd }t|t|d td|\}}}tddgd }t|t|d}|dkr@t|d |d  	d	nd }z%tddgd
 }t|t
|d}|dkrdt|d |d  	d	nd }W n tyr   d }Y nw tddgd }t|t|d td|d }	|tddg|	 7 }t|t|d W d    n1 sw   Y  t|dd  }
t|
\}}t| ||||||S )NrbBr      Tz<IHH   r   zutf-8@      z<I)openr   fcntlioctlHIDIOCGRAWINFOstructunpackHIDIOCGRAWNAME	bytearraydecodeHIDIOCGRAWUNIQOSErrorHIDIOCGRDESCSIZEHIDIOCGRDESCr   r   )pathfbuf_vidpidlengthnameserialsizedatamax_in_sizemax_out_sizer   r   r   get_descriptor6   s0   &$r:   zSet[str]_failed_cachec               	   C  s   t t} g }tdD ]2}| | z	|t| W q ty$   Y q ty=   |tvr;tj	d|dd t
| Y qw t|  |S )Nz/dev/hidraw*zFailed opening device %sT)exc_info)setr;   globdiscardappendr:   
ValueError	Exceptionloggerdebugadddifference_update)staledeviceshidrawr   r   r   list_descriptors\   s    


rJ   )
__future__r   baser   r   r   r>   r!   r$   r   typingr   loggingsysplatform	getLoggerr   rC   r#   r+   r,   r&   r)   r
   r   r:   r=   r;   __annotations__rJ   r   r   r   r   <module>   s*   
#