o
    l>j                     @  s   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ ddlm	Z	m
Z
mZ ejdks2J 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 )    )annotationsN)array   )FileCtapHidConnectionHidDescriptorparse_report_descriptor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data	__class__ D/home/thesage/.local/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_connection0   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HIDIOCGRDESCbytesr   r   )pathfbuf_vidpidlengthnameserialsizer   max_in_sizemax_out_sizer   r   r   get_descriptor4   s0   &$r9   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appendr9   
ValueError	Exceptionloggerdebugadddifference_update)staledeviceshidrawr   r   r   list_descriptorsZ   s    


rI   )
__future__r   r    r=   loggingr#   sysr   baser   r   r   platform	getLoggerr   rB   r"   r*   r+   r%   r(   r	   r   r9   r<   r:   __annotations__rI   r   r   r   r   <module>   s(   
#