
    [j:                       d Z ddlmZ ddlmZ ddlmZ dZ	 ddlm	Z
 n # e$ r 	 ddlmZ
 n# e$ r dZY nw xY wY nw xY wer)ddlZddlmZmZ e
j        ZdZe
j        Ze
j        ZddZdS  G d de          ZdZdZdZd ZdS )zSupport for SSL in PyMongo.    )annotations)OptionalConfigurationErrorTNF)	CERT_NONECERT_REQUIREDcertfileOptional[str]
passphraseca_certscrlfileallow_invalid_certificatesboolallow_invalid_hostnamesdisable_ocsp_endpoint_checkreturn_ssl.SSLContextc                X   |rt           nt          }t          j        t          j                  }|t           k    r	| |_        nd|_        t          |d          r| |_        t          |d          rh|xj        t          j	        z  c_        |xj        t          j
        z  c_        |xj        t          j        z  c_        |xj        t          j        z  c_        | C	 |                    | d|           n*# t          j        $ r}	t          d|	           dd}	~	ww xY w|Kt          j        rt          d          t#          t          dd          |_        |                    |           ||                    |           n|t           k    r|                                 ||_        |S )	z'Create and return an SSLContext object.Fcheck_ocsp_endpointoptionsNz'Private key doesn't match certificate: z(tlsCRLFile cannot be used with PyOpenSSLVERIFY_CRL_CHECK_LEAFr   )r   r   _ssl
SSLContextPROTOCOL_SSLv23check_hostnamehasattrr   r   OP_NO_SSLv2OP_NO_SSLv3OP_NO_COMPRESSIONOP_NO_RENEGOTIATIONload_cert_chainSSLErrorr   IS_PYOPENSSLgetattrverify_flagsload_verify_locationsload_default_certsverify_mode)
r	   r   r   r   r   r   r   r(   ctxexcs
             W/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/pymongo/ssl_support.pyget_ssl_contextr,   .   s    $>Pii=od233)##%<!<C!&C3-.. 	F*E&EC#3	"" 	4
 KK4++KKKK4++KKKK411KKKK433KKd##HdJ????= d d d()XSV)X)XYY_ccd  U()STTT&-q   C %%g...%%h////I%%""$$$%
s   C5 5DDDc                      e Zd ZdS )r"   N)__name__
__module____qualname__     r+   r"   r"   _   s        r2   r"   r1   c                      t          d          )z(No ssl module, raise ConfigurationError.z The ssl module is not available.r   )dummys    r+   r,   r,   f   s     !CDDDr2   )r	   r
   r   r
   r   r
   r   r
   r   r   r   r   r   r   r   r   )__doc__
__future__r   typingr   pymongo.errorsr   HAVE_SSLpymongo.pyopenssl_contextpyopenssl_contextr   ImportErrorpymongo.ssl_contextssl_contextssl
_stdlibsslr   r   HAS_SNIIPADDR_SAFEr"   BLOCKING_IO_ERRORSr,   	Exceptionr1   r2   r+   <module>rE      s   " ! " " " " " "       - - - - - -,,,,,,,   *******     GE
 ,,,,,,,,lGK}H0- - - - - -b    9    GKE E E E Es$    <,<6<6<<