o
    >e                     @   s   d dl mZmZmZmZ d dlZddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd	lmZ e d
kr@ddlmZmZ nddlmZmZ g dZe Zed  ed fZdddZdd Zdd ZG dd dZedkrude_dS dS )    )unicode_literalsdivisionabsolute_importprint_functionN   )ffi   )_try_decode)SignatureError)newunwrapnull)str_clscffi)advapi32	get_error)r   Advapi32Consthandle_errorTc                 C   s   | t jkr	t j}n| t jkrt j}ntd|  |s| t jkr&t }t j}nt j}t j	}t
td}t||| ||}|sMt d t jkrMt||| |d}t| t|S )NzInvalid provider specified: %szHCRYPTPROV *r   )r   MS_ENH_RSA_AES_PROVPROV_RSA_AESMS_ENH_DSS_DH_PROVPROV_DSS_DH
ValueErrorr   CRYPT_VERIFYCONTEXTCONTAINER_NAMECRYPT_NEWKEYSETr   r   CryptAcquireContextWr   
NTE_EXISTSr   r   )providerverify_onlyprovider_typecontainer_nameflagscontext_handle_pointerres r%   X/var/www/html/humari/django-venv/lib/python3.10/site-packages/oscrypto/_win/_advapi32.pyopen_context_handle   s8   


r'   c                 C   s   t | d}t| d S )Nr   )r   CryptReleaseContextr   )handler$   r%   r%   r&   close_context_handleD   s   r*   c                 C   s>   | rdS t  \}}|tjkrtdt|tst|}t|)z
    Extracts the last Windows error message into a python unicode string

    :param result:
        A function result, 0 or None indicates failure

    :return:
        A unicode string error message
    NzSignature is invalid)r   r   NTE_BAD_SIGNATUREr
   
isinstancer   r	   OSError)resultcodeerror_stringr%   r%   r&   r   I   s   


r   c                   @   s   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd
Zd
Z dZ!dZ"dZ#dZ$d
Z%dZ&d Z'd!Z(d"Z)d#Z*d$Z+dZ,d%Z-d&Z.d'Z/d(Z0d)S )*r   zoscrypto temporary DSS keyset         ,   (      z@Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Providerz5Microsoft Enhanced RSA and AES Cryptographic Providerr   l      ` i  i  i  i  i  if  ih  if  i	f  if  if  if  if  i "  i $  i   r                  @   i 	i 	iRSA1iRSA2iDSS1iDSS2N)1__name__
__module____qualname__r   r   r   X509_PUBLIC_KEY_INFOPKCS_PRIVATE_KEY_INFOX509_DSS_SIGNATURECRYPT_NO_SALTr   r   CRYPT_EXPORTABLEr   r   CALG_MD5	CALG_SHA1CALG_SHA_256CALG_SHA_384CALG_SHA_512CALG_RC2CALG_RC4CALG_DESCALG_3DES_112	CALG_3DESCALG_AES_128CALG_AES_192CALG_AES_256CALG_DSS_SIGNCALG_RSA_SIGNCALG_RSA_KEYXCRYPT_MODE_CBCPKCS5_PADDINGCUR_BLOB_VERSIONPUBLICKEYBLOBPRIVATEKEYBLOBPLAINTEXTKEYBLOBKP_IV
KP_PADDINGKP_MODEKP_EFFECTIVE_KEYLEN
CRYPT_OAEPr+   r   AT_SIGNATURERSA1RSA2DSS1DSS2r%   r%   r%   r&   r   b   s^    r   )   r   zAMicrosoft Enhanced RSA and AES Cryptographic Provider (Prototype))T)
__future__r   r   r   r   sys r   _decoder	   errorsr
   _ffir   r   r   _typesr   _advapi32_cffir   r   _advapi32_ctypes__all__getwindowsversion_gwv_win_version_infor'   r*   r   r   r   r%   r%   r%   r&   <module>   s(   

'A
