o
    ‹¨Êh“  ã                
   @   sD  d dl mZmZmZmZmZmZmZmZ d dl m	Z	m
Z
mZ zd dl mZ W n ey1   edƒ‚w d dlmZ G dd„ deƒZG dd	„ d	eƒZd
ZdZd
ZdZdZdZdZdZdZe
dƒZeejeeƒeejƒeeƒeeeƒejeeƒƒdefƒZ eejeeƒeejƒeeƒeeeƒejeeƒƒdefƒZ!ddd„Z"ddd„Z#dS )é    )Ú	StructureÚPOINTERÚc_void_pÚcastÚcreate_string_bufferÚc_char_pÚbyrefÚmemmove)ÚwindllÚWinDLLÚWINFUNCTYPE)Úwintypesr   )Úuc                   @   s$   e Zd ZdejfdeejƒfgZdS )Ú	DATA_BLOBÚcbDataÚpbDataN)Ú__name__Ú
__module__Ú__qualname__r   ÚDWORDr   ÚBYTEÚ_fields_© r   r   úJ/var/www/html/env/lib/python3.10/site-packages/keyrings/alt/_win_crypto.pyr      s    ÿr   c                   @   s4   e Zd ZdejfdejfdejfdeejƒfgZdS )ÚCRYPTPROTECT_PROMPTSTRUCTÚcbSizeÚdwPromptFlagsÚhwndAppÚszPromptN)	r   r   r   r   r   ÚHWNDr   ÚWCHARr   r   r   r   r   r      s    ýr   é   é   é   é   é   é    é@   é€   zCRYPT32.DLLÚCryptProtectDataÚCryptUnprotectDatac              	   C   ó|   t t| ƒtt| ƒttjƒƒd�}t ƒ }tt|ƒt	dƒd d d t
t|ƒƒs'tdƒ‚t|jƒ}t||j|jƒ tj |j¡ |jS )N©r   r   úpython-keyring-lib.win32cryptozCan't encrypt)r   Úlenr   r   r   r   r   r)   r   r   ÚCRYPTPROTECT_UI_FORBIDDENÚOSErrorr   r   r	   r   r
   Úkernel32Ú	LocalFreeÚraw)ÚdataÚnon_interactiveÚblobinÚbloboutÚ	encryptedr   r   r   ÚencryptD   ó"   ÿÿü
r9   c              	   C   r+   )Nr,   r-   zCan't decrypt)r   r.   r   r   r   r   r   r*   r   r   r/   r0   r   r   r	   r   r
   r1   r2   r3   )r8   r5   r6   r7   r4   r   r   r   ÚdecryptW   r:   r;   N)r   )$Úctypesr   r   r   r   r   r   r   r	   r
   r   r   r   Ú
ValueErrorÚImportErrorÚkeyring.util.escaper   r   r   Ú CRYPTPROTECT_PROMPT_ON_UNPROTECTÚCRYPTPROTECT_PROMPT_ON_PROTECTr/   ÚCRYPTPROTECT_LOCAL_MACHINEÚCRYPTPROTECT_CRED_SYNCÚCRYPTPROTECT_AUDITÚCRYPTPROTECT_NO_RECOVERYÚCRYPTPROTECT_VERIFY_PROTECTIONÚCRYPTPROTECT_CRED_REGENERATEÚ_dllÚBOOLr    r   r)   r*   r9   r;   r   r   r   r   Ú<module>   sV   (þ	ùù	
úù
