
    hE                     "   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZ ddlmZ eZeZ eZ! G d	 d
e      Z" ee"      Z# ee#      Z$ G d de      Z% ee%      Z& G d de      Z' G d de      Z(eree(   Z)n ee(      Z) G d de      Z* G d de      Z+ ee+      Z, G d de      Z- ee-      Z. G d de      Z/ ee/      Z0 ee0      Z1 G d de      Z2 G d de      Z3 ee3      Z4 G d de      Z5 ee5      Z6 G d d e      Z7 ee7      Z8 ee      Z9dZ:d!Z;d"Z<d#Z=dZ> ed$      Z?d%Z@d&ZAd'ZBd(ZCd)ZDd*ZEd+ZFd,ZGd-ZHd.ZId/ZJd#ZKd0ZLd1ZMd2ZNeBeCz  eDz  eEz  eFz  eGz  eHz  eIz  eJz  ZO ed3      ZP ed4      ZQd5eRd6ed7ed8efd9ZSePj                  ZTe8e9feT_U        eSeT_V        ePj                  ZWeee!ee
feW_U        e eW_X        eSeW_V        ePj                  ZYe eeeee$feY_U        eeY_X        ePj                  ZZeeefeZ_U        e#eZ_X        eSeZ_V        ePj                  Z[ee#ee e)ee
e1fe[_U        ee[_X        eSe[_V        ePj                  Z\e	e0e4e6fe\_U        ee\_X        ePj                  Z]e efe]_U        ee]_X        eSe]_V        ePj                  Z^e0fe^_U        ePj                  Z_e#fe__U        ePj                  Z`efe`_U        eQj                  Zaeeeeeee
fea_U        eea_X        	 dHd:ej                  d;eced   d<eedz  d8dfd=Zfd:ej                  d>edz  d?e d@e
dAe)d<eedz  dBegd8dfdCZhd:ej                  dDeced   d?e d@e
dAe)d<eedz  dBegd8dfdEZie j                  dFej                  d8ej                  d   fdG       Zly)I    N)WinDLLWinError)
POINTER	Structurec_char_pc_ulongc_void_p	c_wchar_pcastcreate_unicode_bufferpointersizeof)
BOOLDWORDHANDLELONGLPCSTRLPCVOIDLPCWSTR
LPFILETIMELPSTRLPWSTR)TYPE_CHECKINGAny   )_set_ssl_context_verify_modec                   .    e Zd ZdefdefdefdefdeffZy)CERT_CONTEXTdwCertEncodingTypepbCertEncodedcbCertEncoded	pCertInfo
hCertStoreN)__name__
__module____qualname__r   r
   
HCERTSTORE_fields_     HD:\EasyAligner\venv\Lib\site-packages\pip/_vendor/truststore/_windows.pyr   r   '   s1    	u%	(#	% 	h	z"Hr+   r   c                   (    e Zd Zdefd ee      ffZy)CERT_ENHKEY_USAGEcUsageIdentifierrgpszUsageIdentifierN)r%   r&   r'   r   r   r   r)   r*   r+   r,   r.   r.   5   s    	U#	0Hr+   r.   c                       e Zd ZdefdeffZy)CERT_USAGE_MATCHdwTypeUsageN)r%   r&   r'   r   r.   r)   r*   r+   r,   r2   r2   ?   s    	5	#$Hr+   r2   c            
       F    e Zd Zdefdefdefdefdefdefdefdefd	eff	Zy
)CERT_CHAIN_PARAcbSizeRequestedUsageRequestedIssuancePolicydwUrlRetrievalTimeoutfCheckRevocationFreshnessTimedwRevocationFreshnessTimepftCacheResyncpStrongSignParadwStrongSignFlagsN)	r%   r&   r'   r   r2   r   r   r
   r)   r*   r+   r,   r6   r6   F   sS    	5	+,	"$45	 %(	($/	$e,	:&	H%	e$
Hr+   r6   c                       e Zd ZdefdeffZy)CERT_TRUST_STATUSdwErrorStatusdwInfoStatusN)r%   r&   r'   r   r)   r*   r+   r,   rA   rA   Z   s    	% 	Hr+   rA   c                   :    e Zd ZdefdefdefdefdefdefdeffZ	y)	CERT_CHAIN_ELEMENTr7   pCertContextTrustStatuspRevocationInfopIssuanceUsagepApplicationUsagepwszExtendedErrorInfoN)
r%   r&   r'   r   PCERT_CONTEXTrA   r
   PCERT_ENHKEY_USAGEr   r)   r*   r+   r,   rE   rE   a   sD    	5	'	)*	H%	-.	01	 '*Hr+   rE   c                   F    e Zd Zdefdefdefd ee      fdefdefdeffZ	y)	CERT_SIMPLE_CHAINr7   rG   cElement
rgpElementpTrustListInfofHasRevocationFreshnessTimer<   N)
r%   r&   r'   r   rA   r   PCERT_CHAIN_ELEMENTr
   r   r)   r*   r+   r,   rO   rO   p   sH    	5	)*	U	w234	8$	&-	$e,Hr+   rO   c            	       L    e Zd Zdefdefdefd ee      fdefdefdefdeffZ	y	)
CERT_CHAIN_CONTEXTr7   rG   cChainrgpChaincLowerQualityChainContextrgpLowerQualityChainContextrS   r<   N)
r%   r&   r'   r   rA   r   PCERT_SIMPLE_CHAINr
   r   r)   r*   r+   r,   rV   rV      sP    	5	)*	5	W/01	$e,	&1	&-	$e,	Hr+   rV   c                   (    e Zd ZdefdefdefdeffZy) SSL_EXTRA_CERT_CHAIN_POLICY_PARAr7   
dwAuthType	fdwCheckspwszServerNameN)r%   r&   r'   r   r   r)   r*   r+   r,   r]   r]      s)    	5	u	e	7#	Hr+   r]   c                   "    e Zd ZdefdefdeffZy)CERT_CHAIN_POLICY_PARAr7   dwFlagspvExtraPolicyParaN)r%   r&   r'   r   r
   r)   r*   r+   r,   rb   rb      s!    	5	E	h'Hr+   rb   c                   .    e Zd ZdefdefdefdefdeffZy)CERT_CHAIN_POLICY_STATUSr7   dwErrorlChainIndexlElementIndexpvExtraPolicyStatusN)r%   r&   r'   r   r   r
   r)   r*   r+   r,   rf   rf      s1    	5	E		$	)Hr+   rf   c                   ^    e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdeffZy)CERT_CHAIN_ENGINE_CONFIGr7   hRestrictedRoothRestrictedTrusthRestrictedOthercAdditionalStorerghAdditionalStorerc   r:   MaximumCachedCertificatesCycleDetectionModulushExclusiveRoothExclusiveTrustedPeopledwExclusiveFlagsN)r%   r&   r'   r   r(   r
   r)   r*   r+   r,   rl   rl      sq    	5	J'	Z(	Z(	U#	x(	E	 %(	$e,	 %(	:&	"J/	U#Hr+   rl   i   s   Memory   s   1.3.6.1.5.5.7.3.1i   i             @          i   i   i @     i   i   zcrypt32.dllzkernel32.dllresult_argsreturnc                     | s
t               |S Nr   )r   r   r   s      r,   _handle_win_errorr      s    jKr+   ssl_context
cert_chainserver_hostnamec           
         |st        j                  d      d}t        t        dddd      }	 |dd D ]*  }t	        |t
        t        z  |t        |      t        d       , |d   }t        t
        t        z  |t        |            }t               }d|_        t        dz  t              |_        t               }||_        t#               }	||	_        t'        |	      |	_        t+        |	      }
| j,                  t         j.                  z  rt0        }n&| j,                  t         j2                  z  rt4        }nd}	 t7        | d|||
||       t=        |d       |rt?        |       yy# t         j                  $ rM}| j9                  d      }|r.	 t;        | ||||
||       n# t         j                  $ r |dw xY w Y d}~vd}~ww xY w# t=        |d       |rt?        |       w w xY w)z9Verify the cert_chain from the server using Windows APIs.z#Peer sent no certificates to verifyNr   r   )chain_flagsT)binary_form) sslSSLCertVerificationErrorCertOpenStoreCERT_STORE_PROV_MEMORY CertAddEncodedCertificateToStoreX509_ASN_ENCODINGPKCS_7_ASN_ENCODINGlenCERT_STORE_ADD_USE_EXISTINGCertCreateCertificateContextr.   r/   r   OID_PKIX_KP_SERVER_AUTHr0   r2   r4   r6   r8   r   r7   r   verify_flagsVERIFY_CRL_CHECK_CHAIN!CERT_CHAIN_REVOCATION_CHECK_CHAINVERIFY_CRL_CHECK_LEAF$CERT_CHAIN_REVOCATION_CHECK_END_CERT_get_and_verify_cert_chainget_ca_certs_verify_using_custom_ca_certsCertCloseStoreCertFreeCertificateContext)r   r   r   rF   hIntermediateCertStore
cert_bytes	leaf_certcert_enhkey_usagecert_usage_matchchain_params
pChainParar   ecustom_ca_certss                 r,   _verify_peercerts_implr   B  s    **+PQQL*+A1dAtTK5$QR.J,&!$77J+ ) qM	3 33YI

 ./-.*2:Q,@W1X.+-!2&(&6#$\2\*
##c&@&@@;K%%(A(AA>KK#	 '&'D 	-q1&|4 5 ++ 	
 3>2J2J  3K 3O &1#'.$"'$/ 33 &%& 	2 	-q1&|4 sH   DG 6E# #G6F>FF>F55F>9G >GG G"hChainEnginer   pPeerCertContextr   r   c           
      .   d }	 t        t                     }t        ||d |||d |       |j                  }t	               }	t        |	      |	_        t        |	_        d|	_	        |rt        |      |	_        t               }
t        t        |	      t              |
_        | j                   t"        j$                  k(  r|
xj&                  t(        z  c_        | j*                  s|
xj&                  t,        z  c_        t        |
      |
_        t        |
      }t/               }t        |      |_        t        |      }t1        t2        |||       |j4                  }|rt7        d      }t9        t:        t<        z  d |d|t        |      d       }|dk  rd|dd|j>                   d}n|j@                  jC                         }t#        jD                  |      }||_#        ||_$        |d 	 |rtK        |j                         y y # |rtK        |j                         w w xY w)Nr   i   zCertificate chain policy error z#xz [])&r   PCERT_CHAIN_CONTEXTCertGetCertificateChaincontentsr]   r   r7   AUTHTYPE_SERVERr^   r_   r   r`   rb   r   r
   rd   verify_moder   	CERT_NONErc   (CERT_CHAIN_POLICY_VERIFY_MODE_NONE_FLAGScheck_hostname*CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAGrf    CertVerifyCertificateChainPolicyCERT_CHAIN_POLICY_SSLrg   r   FormatMessageWFORMAT_MESSAGE_FROM_SYSTEMFORMAT_MESSAGE_IGNORE_INSERTSri   valuestripr   verify_messageverify_codeCertFreeCertificateChain)r   r   r   r   r   r   r   ppChainContextpChainContext ssl_extra_cert_chain_policy_parachain_policypPolicyParapolicy_statuspPolicyStatus
error_codeerror_message_buferror_message_charserror_messageerrs                      r,   r   r     s    NK> !4!67"		
 '// ,L+M(28,3
(/ 7F(356(2>G>X,;-/)-45x*
& ""cmm3  $LL ))  $NN $\2l+02%m4.(!		
 #**
 5d ;"0*-JJ!()# #a'"A*RPRS`SnSnRoop q 1 7 7 = = ?..}=C!.C(CO41 4 $^%<%<= >$^%<%<= s   GG: :Hr   c           	         d }t        t        dd dd       }	 |D ]*  }	t        |t        t        z  |	t        |	      t        d        , t               }
t        |
      |
_	        ||
_
        t        |
      }t        t                     }t        ||       |j                  }t        | ||||||       |rt!        |       t#        |d       y # |rt!        |       t#        |d       w xY w)Nr   )r   r   r   r   r   r   r   rl   r   r7   rt   r   HCERTCHAINENGINE CertCreateCertificateChainEnginer   r   CertFreeCertificateChainEnginer   )r   r   r   r   r   r   r   r   hRootCertStorer   cert_chain_engine_configpConfigphChainEngines                r,   r   r     s     L"#91dAtLN&*)J,!$77J+ * $<#= *01I*J '2@ /23 0 23(	
 %-- 	#"	
 *<8~q) *<8~q)s   BC C#ctxc              #      K   | j                   }| j                  }d| _         t        | t        j                         	 d  || _         t        | |       y # || _         t        | |       w xY ww)NF)r   r   r   r   r   )r   r   r   s      r,   _configure_contextr   *  s_     ''N//KC cmm47+$S+6 ,$S+6s   :A-A A-A**A-r   )m
contextlibr   typingctypesr   r   r   r   r   r	   r
   r   r   r   r   r   ctypes.wintypesr   r   r   r   r   r   r   r   r   r   r   r   _ssl_constantsr   r   r(   HCRYPTPROV_LEGACYr   rL   PCCERT_CONTEXTr.   rM   r2   r6   PCERT_CHAIN_PARArA   rE   rT   rO   r[   rV   r   PCCERT_CHAIN_CONTEXTr]   rb   PCERT_CHAIN_POLICY_PARArf   PCERT_CHAIN_POLICY_STATUSrl   PCERT_CHAIN_ENGINE_CONFIGPHCERTCHAINENGINEr   r   r   r   USAGE_MATCH_TYPE_ORr   r   r   1CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS7CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG'CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAGr   )CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG,CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG.CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS%CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG%CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAGr   r   r   r   r   wincryptkernel32boolr   r   argtypeserrcheckr   restyper   r   r   r   r   r   r   r   r   
SSLContextlistbytesstrr   intr   r   contextmanagerIteratorr   r*   r+   r,   <module>r      s    
        & 8 
 9  %'	  ./ y i  //	 	 	 01 		 	 ./ 
 
 01 23 y Y  ""89 y  $$<= y $ $$<= ,-    "   "#78 '1 $$. !4> 1:D 7*4 '-7 *,6 )/9 ,1; .(2 %(2 % '  *  6=>-. 11 0	0
 33 55 ,, ,, ) - .!d s # #  $,#L#L  -   ) ->   )&& %):E8L " * #+#L#L  			-   ) ,0   ('DD ).%(@  %'4  $(9  %":: 		$    #'  #4   #+#L#L  	-   ) ,0   (((%u-  + #<< %8$:  !%@@ '4&6  #!)!H!H +;*=  '((			
	    #'Y5Y5UY5 4ZY5 
	Y5xU>U>"T)U> 'U> 	U>
 !U> 4ZU> U> 
U>p1*1*%[1* '1* 	1*
 !1* 4Z1* 1* 
1*h 	7CNN 	7vt/D 	7 	7r+   