+
    :i'*  c                   sJ   ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^RIHtHtH t  ] PB                  ! ]"4      t#Rt$Rt%R t&R t' ! R R]4      t( ! R R] 4      t)R t*R t+R t,RR lt-R# )    N)sleep)System)CardConnectionExceptionNoCardException)ExclusiveConnectCardConnection)ListReadersException)PID	TRANSPORTYUBIKEY)SmartCardCtapDeviceSmartCardConnection)	LOG_LEVEL)USB_INTERFACE)	read_info)REINSERT_STATUSCancelledExceptionYkmanDevicezyubico yubikeyZYKMAN_NO_EXLUSIVEc                 sT   \         V P                  4       9  d   R # \        ^ 4      p\         F  pVP                  V 9   g   K  W,          pK   	  RV 9   d   V\        P                  ,          pRV 9   d   \
        P                  M\
        P                  p\        P                  ! W14      # )NZU2FNEO)
YK_READER_NAMElowerr   nameZFIDOr	   r   ZYK4r   Zof)r   Z
interfacesZifaceZkey_types   &   8/usr/lib/python3.14/site-packages/ykman/pcsc/__init__.py_pid_from_namer   8   sx    TZZ\)q!J::J  }m(((
#tmw{{H66(''    c                 sN    \        V R 4      '       d   V P                  4        R# R# )releaseN)Zhasattrr   )
connection   &r   _releaser   H   s     z9%% &r   c                   sB   a  ] tR t^Mt o R t]R 4       tR tR tRt	V t
R# )ScardSmartCardConnectionc                s    VP                  4        Wn        V P                  P                  4       pV'       d-   V^,          ^,          ^8X  d   \        P                  V n        R# \        P
                  V n        R# )i   N)Zconnectr   ZgetATRr   USBNFC
_transport)selfr   Zatrs   && r   __init__Z!ScardSmartCardConnection.__init__N   sR    $oo$$& SVd]d%:IMM 	@I 	r   c                s    V P                   # N)r!   r"   r   r   	transportZ"ScardSmartCardConnection.transportW   s    r   c                sd    V P                   P                  4        \        V P                   4       R # r$   )r   Z
disconnectr   r%   r   r   closeZScardSmartCardConnection.close[   s    ""$!r   c                sf   \         P                  \        P                  RVP	                  4       4       V P
                  P                  \        V4      4      w  r#p\         P                  \        P                  R\        V4      P	                  4       W44       \        V4      V^,          V,          3# )z9Sends a command APDU and returns the response data and swzSEND: %szRECV: %s SW=%02x%02x)	loggerZlogr   ZTRAFFICZhexr   ZtransmitZlistZbytes)r"   ZapduZdataZsw1Zsw2s   &&   r   send_and_receiveZ)ScardSmartCardConnection.send_and_receive_   sz    

9$$j$((*=11$t*=3

5uT{7H#	
 T{C1HsN**r   )r!   r   N)__name__
__module____qualname____firstlineno__r#   Zpropertyr&   r'   r)   __static_attributes____classdictcell__)__classdict__s   @r   r   r   M   s-     
  "+ +r   r   c                   sd   a a ] tR t^it oRtV 3R ltR tV 3R ltR	V3R lR lltR t	Rt
VtV ;t# )
ScardYubiKeyDevicezYubiKey Smart card devicec                s   < \         VP                  P                  4       9   d   \        P                  pM\        P
                  p\        SV `  W!P                  \        VP                  4      4       Wn	        R # r$   )
r   r   r   r   r   r    superr#   r   reader)r"   r3   r&   	__class__s   && r   r#   ZScardYubiKeyDevice.__init__l   sK    V[[..00!I!IKK1LMr   c                s    \        \        V4      '       d   V P                  \        P                  8H  # \        \
        V4      # r$   )
issubclassr
   r&   r   r    r   )r"   connection_types   &&r   supports_connectionZ&ScardYubiKeyDevice.supports_connectionu   s1    )?;;>>Y]]222ODDr   c                s   < \        V\        4      '       g   Q h\        \        V4      '       d   V P	                  4       # \        \
        V4      '       d   \        V P	                  4       4      # \        SV `  V4      # r$   )Z
isinstanceZtyper5   r   _open_smartcard_connectionr
   r2   open_connection)r"   r6   r4   s   &&r   r9   Z"ScardYubiKeyDevice.open_connectionz   se    /40000.@@2244+_==&t'F'F'HIIw&77r   c                s    < V ^8  d   QhRS[ /# )i   Zreturnr   )Zformatr0   s   "r   Z__annotate__ZScardYubiKeyDevice.__annotate__   s        8K  r   c                s   V P                   P                  4       p \        P                  P	                  \
        4      f/   \        V4      p \        V4      p\        P                  R4       V# \        V4      #   \         d    \        P                  R4        L-i ; i  \         dI    \        T4       T'       d4   \        4       '       g   \        4       '       d   T P                  R4      u # h \         \"        3 d~    \        T4       T'       di   T P$                  \&        P(                  8X  dJ   \+        ^4       F:  p \-        R4       T P                  R4      u u #   \         \"        3 d     K8  i ; i	  h i ; i)NzUsing exclusive CCID connectionz#Failed to get exclusive CCID accessF      ?)r3   ZcreateConnectionosZenvironZget_YKMAN_NO_EXCLUSIVEr   r   r(   Zdebugr   infor   kill_scdaemonkill_yubikey_agentr8   r   
ValueErrorr&   r   r   Zranger   )r"   Zretryr   Zexcl_connectionZ
scard_connZ_s   &&    r   r8   Z-ScardYubiKeyDevice._open_smartcard_connection   s5   [[113
	zz~~12:"@"LG!9/!JJLL!BC%%
 ,J77	 / GKK EFG
 ' 	Z -//-?-A-A66u==, 	Z  9==8qA!c
#>>uEE+Z8 ! !	 " 	sa   0B  !A: /
B  : BB  BB   AE?1E?AE?E#E?#E84E?7E88E?c                s   R pV P                  \        4      ;_uu_ 4       p\        W@P                  4      pRRR4       V! \        P
                  4       V P                  \        P                  8X  d   VP                  R4      '       g    V P                  \        4      pV'       dt   \        W@P                  4      pVP                  4        XP                  VP                  8w  g   VP                  VP                  8w  d   \        R4      h\        R4       R# VP                  4        K  \%        4       hVP                  R4      '       Eg   V'       g6   V P&                  \)        4       9  d   V! \        P"                  4       RpKS  KU  \)        4        F  pVP*                  V P&                  P*                  8X  g   K*  Wpn        V P                  \        4      ;_uu_ 4       p\        W@P                  4      pRRR4       XP                  XP                  8w  g   VP                  VP                  8w  d   \        R4      h\        R4        R# 	  EK  \%        4       h  + '       g   i     EL2; i  \         d     EK  \          d*    T'       g   T! \        P"                  4       Rp EK=   EKA  i ; i  + '       g   i     L; i)FNr:   z.Reinserted YubiKey does not match the originalg      ?T)r9   r   r   pidr   ZREMOVEr&   r   r    Zwaitr'   ZserialZversionr@   r   r   r   ZREINSERTr   r3   list_readersr   )r"   Zreinsert_cbZeventZremovedZconnr=   Zinfo2r3   s   &&&     r   _do_reinsertZScardYubiKeyDevice._do_reinsert   s   !!"566$T88,D 7O**+>>Y]]*jjoo'//0CDD )$ 9

;;%,,6$,,%--:W", P#  c
JJL %&&jjoo{{,.8#O$<$<="& 9
 #/.!;;$++*:*::*0K!%!5!56I!J!Jd(1$(A "K !%u|| ;#'<<5==#@&0$T'" !" "#J" #1 %&&c 766$ / & '"#O$<$<="& #'$ "K!JsH   II3 (A1I3 I3 #J8I0	3J5J5J5J54J58K)r3   )T)r*   r+   r,   r-   Z__doc__r#   r7   r9   r8   rC   r.   r/   Z__classcell__)r4   r0   s   @@r   r1   r1   i   s-     #E
8   D3' 3'r   r1   c                  s   R p \         P                  R8X  d   ^ RIHp V'       g   ^ RIHpHpHp ^ RIH	p V! R4      pVP                  R4      pV F]  pVP                  R4      P                  R8X  g   K%  VP                  R	4      P                  p	V! ^R V	4      p
V! V
R4       V! V
4       R
p K_  	  M!\        P                  ! . RO4      pV^ 8X  d   R
p V '       d   \        R4       V # )Fwin32)TYPE_CHECKING)CloseHandleOpenProcessTerminateProcess)	GetObjectz	winmgmts:ZWin32_ProcessZNamezscdaemon.exeZ	ProcessIDT皙?i)pkillz-9Zscdaemon)sysplatformZtypingrE   Zwin32apirF   rG   rH   Zwin32com.clientrI   ZInstancesOfZProperties_ZValue
subprocesscallr   )killedrE   rF   rG   rH   rI   ZwmiZpsZprA   Zhandlereturn_codes               r   r>   r>      s    F
||w 	)KK1K(C1B==(...@--4::C(E37F$VR0'!F  !oo&AB!Fc
Mr   c                  s    R p \         P                  R8w  d"   \        P                  ! . RO4      pV^ 8X  d   Rp V '       d   \	        R4       V # )FrD   TrJ   )rK   z-HUPzyubikey-agent)rL   rM   rN   rO   r   )rP   rQ        r   r?   r?      s>    F
||w oo&HI!Fc
Mr   c                  s     \         P                  ! 4       #   \         d?   p  ^ RIHp RTn        \         P                  ! 4       u Rp ? #   \         d    T hi ; iRp ? ii ; i)r    )PCSCContextN)r   Zreadersr   Zsmartcard.pcsc.PCSCContextrS   ZinstanceZImportError)ZerS   rR   r   rB   rB     sT    ~~ 	>#'K >>## 	G	s&    A !A
A 
AAA c                 s    V f   \         MT p . p\        4        FL  pV P                  4       VP                  P                  4       9   g   K2  VP	                  \        V4      4       KN  	  V# r$   )r   rB   r   r   Zappendr1   )Zname_filterZdevicesr3   s   &  r   list_devicesrT     sV    $/$7.[KG.&++"3"3"55NN-f56 ! Nr   r$   ).Zloggingr;   rN   rL   Ztimer   Z	smartcardr   Zsmartcard.Exceptionsr   r   Z(smartcard.ExclusiveConnectCardConnectionr   Zsmartcard.pcsc.PCSCExceptionsr   Zyubikit.corer   r   r	   Zyubikit.core.fidor
   Zyubikit.core.smartcardr   Zyubikit.loggingr   Zyubikit.managementr   Zyubikit.supportr   Zbaser   r   r   Z	getLoggerr*   r(   r   r<   r   r   r   r1   r>   r?   rB   rT   ) r   r   <module>rU      s   8  	  
   I S > 0 0 1 6 % , % C C			8	$ ") ( 
+2 +8n' n'b>	"r   