o
    vh                     @   s   d dl mZmZmZmZ ddlmZ ddlmZm	Z	m
Z
 e dkr(ddlmZ nddlmZ g dZdd	d
Zdd Zdd ZG dd dZdS )    )unicode_literalsdivisionabsolute_importprint_function   )ffi)newnullunwrapcffi   )bcrypt)r   BcryptConstclose_alg_handlehandle_erroropen_alg_handlec                 C   s,   t td}t|| t |}t| t|S )NzBCRYPT_ALG_HANDLE *)r   r   BCryptOpenAlgorithmProviderr	   r   r
   )constantflagshandle_pointerres r   P/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/oscrypto/_win/_cng.pyr      s   
r   c                 C   s   t | d}t| d S )Nr   )r   BCryptCloseAlgorithmProviderr   )handler   r   r   r   r      s   r   c                 C   sp   | dkrdS t jdt jdt jdt jdt jdt jdt jd	t jd
i}d|  }| dur4| |v r4|d||   7 }t	|)z
    Extracts the last Windows error message into a python unicode string

    :param error_num:
        The number to get the error string for

    :return:
        A unicode string error message
    r   NzThe object was not foundz8An invalid parameter was passed to a service or functionz_Not enough virtual memory or paging file quota is available to complete the specified operationzAn invalid HANDLE was specifiedz&The cryptographic signature is invalidzThe request is not supportedz,The buffer is too small to contain the entryz=The size of the buffer is invalid for the specified operationzNTSTATUS error 0x%0.2Xz: )
r   STATUS_NOT_FOUNDSTATUS_INVALID_PARAMETERSTATUS_NO_MEMORYSTATUS_INVALID_HANDLESTATUS_INVALID_SIGNATURESTATUS_NOT_SUPPORTEDSTATUS_BUFFER_TOO_SMALLSTATUS_INVALID_BUFFER_SIZEOSError)	error_nummessagesoutputr   r   r   r   #   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)Z1d*Z2d+Z3d,Z4d-Z5d.Z6d/Z7d0Z8d1Z9d2Z:d3Z;d4Z<d5Z=d6Z>dZ?dZ@d7S )8r   RNG	KeyLengthEffectiveKeyLengthRSAPRIVATEBLOBRSAFULLPRIVATEBLOBRSAPUBLICBLOBDSAPRIVATEBLOBDSAPUBLICBLOBECCPRIVATEBLOBECCPUBLICBLOBiRSA1iRSA2iRSA3iDSPBiDSPViDPB2iDPV2r   r   r      iECS1iECS2iECS3iECS4iECS5iECS6l   %   l       l       l       l       l       l   #    l      iKDBMKeyDataBlob   3DES3DES_112AESDESRC2RC4DSA
ECDSA_P256
ECDSA_P384
ECDSA_P521RSAMD5SHA1SHA256SHA384SHA512N)A__name__
__module____qualname__BCRYPT_RNG_ALGORITHMBCRYPT_KEY_LENGTHBCRYPT_EFFECTIVE_KEY_LENGTHBCRYPT_RSAPRIVATE_BLOBBCRYPT_RSAFULLPRIVATE_BLOBBCRYPT_RSAPUBLIC_BLOBBCRYPT_DSA_PRIVATE_BLOBBCRYPT_DSA_PUBLIC_BLOBBCRYPT_ECCPRIVATE_BLOBBCRYPT_ECCPUBLIC_BLOBBCRYPT_RSAPUBLIC_MAGICBCRYPT_RSAPRIVATE_MAGICBCRYPT_RSAFULLPRIVATE_MAGICBCRYPT_DSA_PUBLIC_MAGICBCRYPT_DSA_PRIVATE_MAGICBCRYPT_DSA_PUBLIC_MAGIC_V2BCRYPT_DSA_PRIVATE_MAGIC_V2DSA_HASH_ALGORITHM_SHA1DSA_HASH_ALGORITHM_SHA256DSA_HASH_ALGORITHM_SHA512DSA_FIPS186_2DSA_FIPS186_3BCRYPT_NO_KEY_VALIDATIONBCRYPT_ECDSA_PUBLIC_P256_MAGICBCRYPT_ECDSA_PRIVATE_P256_MAGICBCRYPT_ECDSA_PUBLIC_P384_MAGICBCRYPT_ECDSA_PRIVATE_P384_MAGICBCRYPT_ECDSA_PUBLIC_P521_MAGICBCRYPT_ECDSA_PRIVATE_P521_MAGICSTATUS_SUCCESSr   r   r   r   r   r    r!   r"   BCRYPT_KEY_DATA_BLOB_MAGICBCRYPT_KEY_DATA_BLOB_VERSION1BCRYPT_KEY_DATA_BLOBBCRYPT_PAD_PKCS1BCRYPT_PAD_OAEPBCRYPT_PAD_PSSBCRYPT_3DES_ALGORITHMBCRYPT_3DES_112_ALGORITHMBCRYPT_AES_ALGORITHMBCRYPT_DES_ALGORITHMBCRYPT_RC2_ALGORITHMBCRYPT_RC4_ALGORITHMBCRYPT_DSA_ALGORITHMBCRYPT_ECDSA_P256_ALGORITHMBCRYPT_ECDSA_P384_ALGORITHMBCRYPT_ECDSA_P521_ALGORITHMBCRYPT_RSA_ALGORITHMBCRYPT_MD5_ALGORITHMBCRYPT_SHA1_ALGORITHMBCRYPT_SHA256_ALGORITHMBCRYPT_SHA384_ALGORITHMBCRYPT_SHA512_ALGORITHMBCRYPT_ALG_HANDLE_HMAC_FLAGBCRYPT_BLOCK_PADDINGr   r   r   r   r   F   s~    r   N)r   )
__future__r   r   r   r    r   _ffir   r	   r
   	_cng_cffir   _cng_ctypes__all__r   r   r   r   r   r   r   r   <module>   s   

	#