o
    vh                     @   s   d dl mZmZmZmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ e dkr2dd	lmZmZ ndd	lmZmZ g d
ZdddZG dd dZdS )    )unicode_literalsdivisionabsolute_importprint_function   )ffi   )_try_decode)TLSError)str_clscffi)secur32	get_error)handle_errorr   Secur32ConstNc                 C   sz   | dkrdS | t jkrtd| t jkrtd| t jkr!tdt \}}t|ts/t|}|du r5t	}|d|  | )a5  
    Extracts the last Windows error message into a python unicode string

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

    :param exception_class:
        The exception class to use for the exception if an error occurred

    :return:
        A unicode string error message
    r   Nz"A packet was received out of orderzA packet was received alteredzThe TLS session expiredzSECURITY_STATUS error 0x%0.2X: )
r   SEC_E_OUT_OF_SEQUENCEr
   SEC_E_MESSAGE_ALTEREDSEC_E_CONTEXT_EXPIREDr   
isinstancer   r	   OSError)resultexception_class_error_string r   T/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/oscrypto/_win/_secur32.pyr      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Z7d&Z8d'Z9d(Z:d)Z;d*Z<d+Z=d,Z>d-Z?d.Z@d/ZAd0ZBd1ZCd2ZDd3ZEd4ZFd5ZGd6ZHd7ZId8ZJd9S ):r      r   z,Microsoft Unified Security Protocol Provider       i  @    r   i	 i	 i!	 l     l     i1 l     l     l   ]  l   "  l   %  l   (  l   &  l     l   !  i 	    i   i                  r   Z   S   i   i   if  if  if  ih  if  if  i  i  i  i  i  i  i  i  i  i   i $  i"  i "  N)K__name__
__module____qualname__SCHANNEL_CRED_VERSIONSECPKG_CRED_OUTBOUND
UNISP_NAMESCH_CRED_MANUAL_CRED_VALIDATIONSCH_CRED_AUTO_CRED_VALIDATIONSCH_USE_STRONG_CRYPTOSCH_CRED_NO_DEFAULT_CREDSSECBUFFER_VERSIONSEC_E_OKSEC_I_CONTINUE_NEEDEDSEC_I_CONTEXT_EXPIREDSEC_I_RENEGOTIATESEC_E_INCOMPLETE_MESSAGESEC_E_INVALID_TOKENr   r   r   SEC_E_INVALID_PARAMETERSEC_E_WRONG_PRINCIPALSEC_E_UNTRUSTED_ROOTSEC_E_CERT_EXPIREDSEC_E_ILLEGAL_MESSAGESEC_E_INTERNAL_ERRORSEC_E_BUFFER_TOO_SMALLSEC_I_INCOMPLETE_CREDENTIALSISC_REQ_REPLAY_DETECTISC_REQ_SEQUENCE_DETECTISC_REQ_CONFIDENTIALITYISC_REQ_ALLOCATE_MEMORYISC_REQ_INTEGRITYISC_REQ_STREAMISC_REQ_USE_SUPPLIED_CREDSISC_RET_REPLAY_DETECTISC_RET_SEQUENCE_DETECTISC_RET_CONFIDENTIALITYISC_RET_ALLOCATED_MEMORYISC_RET_INTEGRITYISC_RET_STREAMSECBUFFER_ALERTSECBUFFER_STREAM_HEADERSECBUFFER_STREAM_TRAILERSECBUFFER_EXTRASECBUFFER_TOKENSECBUFFER_DATASECBUFFER_EMPTYSECPKG_ATTR_STREAM_SIZESSECPKG_ATTR_CONNECTION_INFOSECPKG_ATTR_REMOTE_CERT_CONTEXTSP_PROT_TLS1_2_CLIENTSP_PROT_TLS1_1_CLIENTSP_PROT_TLS1_CLIENTSP_PROT_SSL3_CLIENTSP_PROT_SSL2_CLIENTCALG_AES_256CALG_AES_128	CALG_3DESCALG_RC4CALG_RC2CALG_DESCALG_MD5	CALG_SHA1CALG_SHA256CALG_SHA384CALG_SHA512
CALG_DH_SFCALG_DH_EPHEM	CALG_ECDH
CALG_ECDHECALG_RSA_KEYXCALG_RSA_SIGN
CALG_ECDSACALG_DSS_SIGNr   r   r   r   r   ;   s    r   )N)
__future__r   r   r   r    r   _decoder	   errorsr
   _typesr   _secur32_cffir   r   _secur32_ctypes__all__r   r   r   r   r   r   <module>   s   

%