
    /d                        d dl Z d dlZd dlmZmZmZmZ d dlmZ eZ G d d          Z	 ej
         ed                    Z ej
         ed                    Z ej
         ed                    Zej        Zee_        eeeeeefe_        ej        Zee_        eeege_        ej        Zee_        eeej        ge_        ej        Zee_        eefe_        ej        Zee_        eefe_        ej        Zee_        efe_        ej        Zee_        efe_        ej        Zee_        efe_        d	 Zd
 Zd Zd Zd Z G d de          Z G d de          Z G d de          Z  G d de          Z!ddZ"d Z#d Z$dS )    N)c_void_pc_uint32c_int32byref)find_libraryc                   "    e Zd ZdZdZdZdZdZdS )errori,ii3i*i$N)__name__
__module____qualname__item_not_foundkeychain_deniedsec_auth_failedplist_missingsec_interaction_not_allowed     :lib/python3.11/site-packages/keyring/backends/macOS/api.pyr	   r	      s*        NOOM"(r   r	   SecurityCoreServices
Foundationc                 6    t          j        t          |           S )N)r   in_dll_secss    r   k_r   C   s    ?4###r   c           	      j    t          d dt          j        t          | rdnd                              S )N	      r   )CFNumberCreatectypesr   r   )bs    r   create_cfboolr$   G   s.    $V\'q-!!a2H2H%I%IJJJr   c                 J    t          d |                     d          d          S )Nutf8i  )CFStringCreateWithCStringencoder   s    r   create_cfstrr)   K   s'    $ahhv
  r   c            	      8   t          d t          t          |           z  d |                                 D              t          t          |           z  d |                                 D              t          |           t
          j        t
          j                  S )Nc                 ,    g | ]}t          |          S r   )r   ).0ks     r   
<listcomp>z create_query.<locals>.<listcomp>T   s    "@"@"@Q2a55"@"@"@r   c                 Z    g | ](}t          |t                    rt          |          n|)S r   )
isinstancestrr)   )r,   vs     r   r.   z create_query.<locals>.<listcomp>V   s1    TTTqAs!3!3:l1oooTTTr   )CFDictionaryCreater   lenkeysvalues_foundkCFTypeDictionaryKeyCallBackskCFTypeDictionaryValueCallBacks)kwargss    r   create_queryr;   Q   s    	CKK	"@"@&++--"@"@"@A	CKK	TTFMMOOTTT	
 	F,.	 	 	r   c                     t          j        t          |           t          |                                         d          S )Nzutf-8)r"   	string_atCFDataGetBytePtrCFDataGetLengthdecode)datas    r   cfstr_to_strrB   ^   s;    ,T22OD4I4IJJQQ  r   c                   $    e Zd Zed             ZdS )Errorc                 
   |dk    rd S |t           j        k    rt          |d          |t           j        k    rt	          |d          |t           j        k    s|t           j        k    rt          |d           | |d          )Nr   zItem not foundzKeychain Access DeniedzDSecurity Auth Failure: make sure python is signed with codesign utilzUnknown Error)r	   r   NotFoundr   KeychainDeniedr   r   SecAuthFailure)clsstatuss     r   raise_for_statuszError.raise_for_statuse   s    Q; 	FU)) 	56#3444U** 	C )ABBBU** 	f8K.K 	 6  
 c&/***r   N)r
   r   r   classmethodrK   r   r   r   rD   rD   d   s-        + + [+ + +r   rD   c                       e Zd ZdS )rF   Nr
   r   r   r   r   r   rF   rF   v           Dr   rF   c                       e Zd ZdS )rG   NrN   r   r   r   rG   rG   z   rO   r   rG   c                       e Zd ZdS )rH   NrN   r   r   r   rH   rH   ~   rO   r   rH   Fc           	      H   t          t          d          t          d          ||t          d                    }t                      }t	          |t          |                    }|t          j        k    r|rd S t          	                    |           t          |          S )NkSecClassGenericPasswordkSecMatchLimitOneT)	kSecClasskSecMatchLimitkSecAttrServicekSecAttrAccountkSecReturnData)r;   r   r$   r   SecItemCopyMatchingr   r	   r   rD   rK   rB   )kc_nameserviceusernamenot_found_okqrA   rJ   s          r   find_generic_passwordr`      s    /00-.. $T**	 	 	A ::D E$KK00F%% , 	6"""r   c                    t          j        t                    5  t          | ||           d d d            n# 1 swxY w Y   t	          t          d          |||          }t          |d           }t                              |           d S )NrS   )rU   rW   rX   kSecValueData)	
contextlibsuppressrF   delete_generic_passwordr;   r   
SecItemAddrD   rK   )namer\   r]   passwordr_   rJ   s         r   set_generic_passwordri      s    		X	&	& 9 9gx8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 	/00 		 	 	A 4  F	6"""""s   8<<c                     t          t          d          ||          }t          |          }t                              |           d S )NrS   )rU   rW   rX   )r;   r   SecItemDeleterD   rK   )rg   r\   r]   r_   rJ   s        r   re   re      sQ    /00 	 	 	A 1F	6"""""r   )F)%rc   r"   r   r   r   r   ctypes.utilr   	OS_statusr	   CDLLr   _corer7   r3   restypeargtypesr'   r!   rf   rZ   rk   r>   r?   r   r$   r)   r;   rB   	ExceptionrD   rF   rG   rH   r`   ri   re   r   r   r   <module>rs      s                   % $ $ $ $ $ 	) ) ) ) ) ) ) ) v{<<
++,,LL0011	\\,//	0	0. %     #< $,  !&.(%C  "&! #Xv? _

 *
 . '   ((3  "! " * #  %K  (! $; $ $ $K K K  
 
 
  + + + + +I + + +$	 	 	 	 	u 	 	 		 	 	 	 	U 	 	 		 	 	 	 	U 	 	 	   (# # ## # # # #r   