o
    Vh                     @  s  d dl mZ d dlZ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 dZee
dZee
dZe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
d Zejdd Zeeee d(ddZ!ejd)ddZ!dd Z"dd Z#G dd de$Z%G dd de%Z&G dd de%Z'G dd  d e%Z(d*d"d#Z)d$d% Z*d&d' Z+dS )+    )annotationsN)byrefc_int32c_uint32c_void_p)find_libraryc                   @  s    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 r   r   n/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/keyring/backends/macOS/api.pyr      s    r   SecurityCoreServices
Foundationc                 C  s   t t| S N)r   in_dll_sec)sr   r   r   k_E   s   r   c                 C  s   | S r   r   )obr   r   r   	create_cfI   s   r   val
bool | intc                 C  s.   |   dkr
t| d}td |tt| S )N   	   )
bit_lengthOverflowErrorCFNumberCreatectypesr   r   )r   int32r   r   r   _O   s   r&   r   strc                 C  s   d}t d | d|S )Ni  utf8)CFStringCreateWithCStringencode)r   kCFStringEncodingUTF8r   r   r   r&   X   s   c                  K  sF   t d tt|  tt|   tt|  tt|   t| tj	tj
S r   )CFDictionaryCreater   lenmapr   keysr   values_foundkCFTypeDictionaryKeyCallBackskCFTypeDictionaryValueCallBacks)kwargsr   r   r   create_query^   s   r5   c                 C  s   t t| t| dS )Nzutf-8)r$   	string_atCFDataGetBytePtrCFDataGetLengthdecode)datar   r   r   cfstr_to_stri   s   r;   c                   @  s   e Zd Zedd ZdS )Errorc                 C  s\   |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 DeniedzHSecurity Auth Failure: make sure executable is signed with codesign utilzUnknown Error)r   r   NotFoundr   KeychainDeniedr   r   SecAuthFailure)clsstatusr   r   r   raise_for_statusp   s   




zError.raise_for_statusN)r	   r
   r   classmethodrB   r   r   r   r   r<   o   s    r<   c                   @     e Zd ZdS )r=   Nr	   r
   r   r   r   r   r   r=          r=   c                   @  rD   )r>   NrE   r   r   r   r   r>      rF   r>   c                   @  rD   )r?   NrE   r   r   r   r   r?      rF   r?   Fc                 C  sR   t tdtd||dd}t }t|t|}|tjkr |r d S t| t	|S )NkSecClassGenericPasswordkSecMatchLimitOneT)	kSecClasskSecMatchLimitkSecAttrServicekSecAttrAccountkSecReturnData)
r5   r   r   SecItemCopyMatchingr   r   r   r<   rB   r;   )kc_nameserviceusernamenot_found_okqr:   rA   r   r   r   find_generic_password   s   
rT   c                 C  sb   t t t| || W d    n1 sw   Y  ttd|||d}t|d }t| d S )NrG   )rI   rK   rL   kSecValueData)	
contextlibsuppressr=   delete_generic_passwordr5   r   
SecItemAddr<   rB   )namerP   rQ   passwordrS   rA   r   r   r   set_generic_password   s   
r\   c                 C  s(   t td||d}t|}t| d S )NrG   )rI   rK   rL   )r5   r   SecItemDeleter<   rB   )rZ   rP   rQ   rS   rA   r   r   r   rX      s   rX   )r   r   )r   r'   )F),
__future__r   rV   r$   	functoolsr   r   r   r   ctypes.utilr   	OS_statusr   CDLLr   _corer1   r,   restypeargtypesr)   r#   rY   rN   r]   r7   r8   r   singledispatchr   registerboolintr&   r5   r;   	Exceptionr<   r=   r>   r?   rT   r\   rX   r   r   r   r   <module>   st    	



