§
    Dj   ã                  óØ   — d dl mZ d dlZd dlZd dlZd dlmZ dZdZe G d„ d¦  «        ¦   «         Z	 G d„ d	ej
        ¦  «        Z G d
„ de¦  «        ZdZe ZdZdZdZdZdZdZdZdd„ZdS )é    )ÚannotationsN)Ú	dataclassiÐñ  é   c                  óV   — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   dS )ÚHidDescriptorzstr | bytesÚpathÚintÚvidÚpidÚreport_size_inÚreport_size_outz
str | NoneÚproduct_nameÚserial_numberN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    úI/home/thesage/.hermes/venv/lib/python3.11/site-packages/fido2/hid/base.pyr   r   '   s`   € € € € € € àÐÐÑØ€H€HHØ€H€HHØÐÐÑØÐÐÑØÐÐÑØÐÐÑÐÐr   r   c                  ót   — e Zd Zej        d	d„¦   «         Zej        d
d„¦   «         Zej        dd„¦   «         ZdS )ÚCtapHidConnectionÚreturnÚbytesc                ó   — dS )zReads a CTAP HID packetNr   ©Úselfs    r   Úread_packetzCtapHidConnection.read_packet3   ó   € € € r   ÚdataÚNonec                ó   — dS )zWrites a CTAP HID packetNr   ©r   r    s     r   Úwrite_packetzCtapHidConnection.write_packet7   r   r   c                ó   — dS )zCloses the connectionNr   r   s    r   ÚclosezCtapHidConnection.close;   r   r   N)r   r   )r    r   r   r!   )r   r!   )r   r   r   ÚabcÚabstractmethodr   r$   r&   r   r   r   r   r   2   s~   € € € € € ØÔð&ð &ð &ñ Ôð&ð 	Ôð'ð 'ð 'ñ Ôð'ð 	Ôð$ð $ð $ñ Ôð$ð $ð $r   r   c                  ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚFileCtapHidConnectionzMBasic CtapHidConnection implementation which uses a path to a file descriptorc                óf   — t          j        |j        t           j        ¦  «        | _        || _        d S ©N)ÚosÚopenr   ÚO_RDWRÚhandleÚ
descriptor)r   r1   s     r   Ú__init__zFileCtapHidConnection.__init__C   s$   € Ý”g˜jœo­r¬yÑ9Ô9ˆŒØ$ˆŒˆˆr   c                ó8   — t          j        | j        ¦  «         d S r,   )r-   r&   r0   r   s    r   r&   zFileCtapHidConnection.closeG   s   € Ý
Œ”ÑÔÐÐÐr   c                óz   — t          j        | j        |¦  «        t          |¦  «        k    rt	          d¦  «        ‚d S )Nzfailed to write entire packet)r-   Úwriter0   ÚlenÚOSErrorr#   s     r   r$   z"FileCtapHidConnection.write_packetJ   s8   € ÝŒ8D”K Ñ&Ô&­#¨d©)¬)Ò3Ð3ÝÐ9Ñ:Ô:Ð:ð 4Ð3r   c                óJ   — t          j        | j        | j        j        ¦  «        S r,   )r-   Úreadr0   r1   r   r   s    r   r   z!FileCtapHidConnection.read_packetN   s   € ÝŒwt”{ D¤OÔ$BÑCÔCÐCr   N)r   r   r   Ú__doc__r2   r&   r$   r   r   r   r   r*   r*   @   s[   € € € € € ØWÐWð%ð %ð %ðð ð ð;ð ;ð ;ðDð Dð Dð Dð Dr   r*   éü   é   é€   é    é”   ét   é   é   r    r   r   útuple[int, int]c                óœ  — d\  }}d\  }}d\  }}d}| r|rt          j        d| ¦  «        d         | dd …         } }t          |z  t          |z  }
}	t          j        d| d |
…                              dd¦  «        ¦  «        d         }| |
d …         } |A|?|	t
          k    r|€||z  dz  }d\  }}|dz  }n|	t          k    r|€||z  dz  }d\  }}|dz  }|	t          k    r
|s|}|dz  }n4|	t          k    r
|s|}|dz  }n|	t          k    r|s|}n|	t          k    r|s|}| r|°|s|t          k    r|t          k    r||fS t          d	¦  «        ‚)
N)NNrA   z>Br   r   z<Ió    rB   zNot a FIDO device)ÚstructÚunpack_fromÚREPORT_DESCRIPTOR_KEY_MASKÚ	SIZE_MASKÚljustÚ
INPUT_ITEMÚOUTPUT_ITEMÚ
USAGE_PAGEÚUSAGEÚREPORT_COUNTÚREPORT_SIZEÚFIDO_USAGE_PAGEÚ
FIDO_USAGEÚ
ValueError)r    ÚusageÚ
usage_pageÚmax_input_sizeÚmax_output_sizeÚreport_countÚreport_sizeÚ	remainingÚheadÚkeyÚsizeÚvalues               r   Úparse_report_descriptorr_   ]   sÕ  € à"Ñ€Eˆ:Ø&0Ñ#€NOØ *Ñ€L+Ø€IØ
ñ $9ñ $ÝÔ'¨¨dÑ3Ô3°AÔ6¸¸Q¸R¸R¼ˆdˆÝ.°Ñ5µyÀ4Ñ7GˆTˆÝÔ" 4¨¨e¨t¨e¬×):Ò):¸1¸eÑ)DÔ)DÑEÔEÀaÔHˆØDEEŒ{ˆàÐ#¨Ð(?Ø•jÒ Ð Ø!Ð)Ø%1°KÑ%?À1Ñ%DNØ0:Ñ-L +Ø ‘NIøØÒ#Ð#Ø"Ð*Ø&2°[Ñ&@ÀAÑ&EOØ0:Ñ-L +Ø ‘NIØ•*ÒÐØð Ø"
Ø˜Q‘	øØ•EŠ\ˆ\Øð ØØ˜Q‘	øØ•LÒ Ð Øð %Ø$øØ•KÒÐØð $Ø#ð= ð $9ñ $ð@ ð /˜¥Ò6Ð6¸5ÅJÒ;NÐ;NØ˜Ð.Ð.å
Ð(Ñ
)Ô
)Ð)r   )r    r   r   rC   )Ú
__future__r   r'   r-   rF   Údataclassesr   rQ   rR   r   ÚABCr   r*   rH   rI   rL   rK   ÚCOLLECTION_ITEMrO   rP   rM   rN   r_   r   r   r   ú<module>rd      s4  ðð8 #Ð "Ð "Ð "Ð "Ð "à 
€
€
€
Ø 	€	€	€	Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !à€Ø€
ð ðð ð ð ð ñ ô ñ „ðð$ð $ð $ð $ð $˜œñ $ô $ð $ðDð Dð Dð Dð DÐ-ñ Dô Dð Dð$ "Ð Ø'Ð'€	Ø€Ø€
Ø€Ø€Ø€Ø€
Ø€ð)*ð )*ð )*ð )*ð )*ð )*r   