
     h                         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	Zd
 Zd Z G 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                     t          t          d          }t          j        || t                      |          }t	          |           t          |          S )NzBCRYPT_ALG_HANDLE *)r	   r   BCryptOpenAlgorithmProviderr
   r   r   )constantflagshandle_pointerress       N/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/oscrypto/_win/_cng.pyr   r      sH    !677N

,^Xtvvu
U
UC.!!!    c                 N    t          j        | d          }t          |           d S )Nr   )r   BCryptCloseAlgorithmProviderr   )handler   s     r   r   r      s(    

-fa
8
8Cr   c                 &   | 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| z  }| | |v r|d||          z   z  }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outputs      r   r   r   #   s     A~~ 	$&@,.h$m)+L,.V(*H+-[.0oH &	1Fh!6!6$),,,
&//r   c                      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_PADDING r   r   r   r   F   s        #"6-!5+.,-+'(",()!+", ! !MM %/"&0#%/"&0#%/"&0#N!)!&)%(!+!+$.!(! ON" *     ".".".  "&&&",%r   r   N)r   )
__future__r   r   r   r    r   _ffir	   r
   r   	_cng_cffir   _cng_ctypes__all__r   r   r   r   r   r   r   <module>r      s   R R R R R R R R R R R R       $ $ $ $ $ $ $ $ $ $355F??!!!!!!!######  " " " "  
     FN& N& N& N& N& N& N& N& N& N&r   