
     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
 ddlmZ  e            dk    rddlmZmZmZ n
ddlmZmZmZ g d	Zd
Zd
dgZedk     r ej                      ej         e
                       dZedk    r[ ej         e
            d                    d                    r- ej         e
            d                    d                     ndZd ZddZd Z G d d          Z dS )    )unicode_literalsdivisionabsolute_importprint_function   )ffi)buffer_from_bytesbyte_string_from_buffernull)str_clscffi   )	libcryptoversionversion_info)handle_openssl_errorr   libcrypto_legacy_supportlibcrypto_versionlibcrypto_version_infoLibcryptoConstpeek_openssl_errorzutf-8cp1252)r   r   T)   legacyasciiFc                     	 t          | t                    S # t          $ r3 t          D ](}	 t          | |d          c cY S # t          $ r Y %w xY wY nw xY wt          | d          S )Nstrict)errorsreplace)r   	_encodingUnicodeDecodeError_fallback_encodings)valueencodings     X/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/oscrypto/_openssl/_libcrypto.py_try_decoder&   5   s    
ui(((    + 	 	Huhx@@@@@@@@&   	 	 5++++s1    AAA
AAAAANc                     | dk    rdS |t           }t          j                    }t          d          }t          j        ||           t          |          } |t          |                    )ah  
    Checks if an error occurred, and if so throws an OSError containing the
    last OpenSSL error message

    :param result:
        An integer result code - 1 or greater indicates success

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

    :raises:
        OSError - when an OpenSSL error occurs
    r   Nx   )OSErrorr   ERR_get_errorr	   ERR_error_stringr
   r&   )resultexception_class	error_numbuffererror_strings        r%   r   r   F   sr     zz!'))Is##Fy&111 +622L
/+l33
4
44    c                     t          j                    } t          dk     r=t          | dz	  dz            }t          | dz	  dz            }t          | dz            }n)t          | dz	  dz            }d}t          | dz            }|||fS )	z
    Peeks into the error stack and pulls out the lib, func and reason

    :return:
        A three-element tuple of integers (lib, func, reason)
    )r   r            i     r   i )r   ERR_peek_errorr   int)errorlibfuncreasons       r%   r   r   e   s     $&&E&&5B;$&''ERK5())UU]##5B;$&''UX%&&vr1   c                   R    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S )r   r   r   r      i     i        i  i  i  r   N)__name__
__module____qualname__EVP_CTRL_SET_RC2_KEY_BITSSSLEAY_VERSIONRSA_PKCS1_PADDINGRSA_NO_PADDINGRSA_PKCS1_OAEP_PADDINGEVP_MD_CTX_FLAG_PSS_MDLENEVP_PKEY_CTRL_RSA_PADDINGRSA_PKCS1_PSS_PADDINGEVP_PKEY_CTRL_RSA_PSS_SALTLENEVP_PKEY_RSAEVP_PKEY_OP_SIGNEVP_PKEY_OP_VERIFYNID_X9_62_prime256v1NID_secp384r1NID_secp521r1OPENSSL_EC_NAMED_CURVEDH_GENERATOR_2 r1   r%   r   r   {   sr         !NN !# !'$*!LMMNNNr1   r   )N)!
__future__r   r   r   r    r   _ffir	   r
   r   _typesr   _libcrypto_cffir   r   r   r   r   _libcrypto_ctypes__all__r    r"   ERR_load_crypto_stringsOPENSSL_configr   OSSL_PROVIDER_availableencodeOSSL_PROVIDER_loadr&   r   r   r   rW   r1   r%   <module>rd      s   R R R R R R R R R R R R       C C C C C C C C C C      355F??                      	)  F""%I%''' 	          U""(y(1I1IJJ )$	$TTVVX__W-E-EFFFF#( , , ,"5 5 5 5>  ,         r1   