+
    HjIF                        ^ RI t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtHtHtH	t	H
t
HtHtHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHt ^ RIHtHt ^RIHt ]t]t ]t! ! R R	]4      t"]! ]"4      t#]! ]#4      t$ ! R
 R]4      t%]! ]%4      t& ! R R]4      t' ! R R]4      t(]'       d   ]](,          t)M]! ](4      t) ! R R]4      t* ! R R]4      t+]! ]+4      t, ! R R]4      t-]! ]-4      t. ! R R]4      t/]! ]/4      t0]! ]04      t1 ! R R]4      t2 ! R R]4      t3]! ]34      t4 ! R R]4      t5]! ]54      t6 ! R R]4      t7]! ]74      t8]! ]4      t9^t:R t;R!t<^t=^t>]! R"4      t?R#t@R$tA^tB^tC^tD^@tE^ tF^tGR%tHR&tIR'tJR(tK^tL^tMR(tNR)tO]B]C,          ]D,          ]E,          ]F,          ]G,          ]H,          ]I,          ]J,          tP]! R*4      tQ]! R+4      tRR, R- ltS]QP                  tT]8]93]TnU        ]S]TnV        ]QP                  tW]]]!]]
3]WnU        ] ]WnX        ]S]WnV        ]QP                  tY] ]]]]]$3]YnU        ]]YnX        ]QP                  tZ]]]3]ZnU        ]#]ZnX        ]S]ZnV        ]QP                  t[]]#]] ])]]
]13][nU        ]][nX        ]S][nV        ]QP                  t\]	]0]4]63]\nU        ]]\nX        ]QP                  t]] ]3]]nU        ]]]nX        ]S]]nV        ]QP                  t^]03]^nU        ]QP                  t_]#3]_nU        ]QP                  t`]3]`nU        ]RP                  ta]]]]]]]
3]anU        ]]anX        R6R. R/ lltbR0 R1 ltcR2 R3 ltd] P                  R4 R5 l4       tfR# )7    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                   8    ] tR t^'tR]3R]3R]3R]3R]33tRtR# )CERT_CONTEXTdwCertEncodingTypepbCertEncodedcbCertEncoded	pCertInfo
hCertStore N)	__name__
__module____qualname____firstlineno__r   r
   
HCERTSTORE_fields___static_attributes__r$       3lib/python3.14/site-packages/truststore/_windows.pyr   r   '   s1    	u%	(#	% 	h	z"Hr,   r   c                   2    ] tR t^5tR]3R]! ]4      33tRtR# )CERT_ENHKEY_USAGEcUsageIdentifierrgpszUsageIdentifierr$   N)	r%   r&   r'   r(   r   r   r   r*   r+   r$   r,   r-   r/   r/   5   s    	U#	0Hr,   r/   c                   &    ] tR t^?tR]3R]33tRtR# )CERT_USAGE_MATCHdwTypeUsager$   N)r%   r&   r'   r(   r   r/   r*   r+   r$   r,   r-   r3   r3   ?   s    	5	#$Hr,   r3   c            
       P    ] tR t^FtR]3R]3R]3R]3R]3R]3R]3R]3R	]33	t	R
t
R# )CERT_CHAIN_PARAcbSizeRequestedUsageRequestedIssuancePolicydwUrlRetrievalTimeoutfCheckRevocationFreshnessTimedwRevocationFreshnessTimepftCacheResyncpStrongSignParadwStrongSignFlagsr$   N)r%   r&   r'   r(   r   r3   r   r   r
   r*   r+   r$   r,   r-   r7   r7   F   sS    	5	+,	"$45	 %(	($/	$e,	:&	H%	e$
Hr,   r7   c                   &    ] tR t^ZtR]3R]33tRtR# )CERT_TRUST_STATUSdwErrorStatusdwInfoStatusr$   N)r%   r&   r'   r(   r   r*   r+   r$   r,   r-   rB   rB   Z   s    	% 	Hr,   rB   c                   D    ] tR t^atR]3R]3R]3R]3R]3R]3R]	33t
RtR	# )
CERT_CHAIN_ELEMENTr8   pCertContextTrustStatuspRevocationInfopIssuanceUsagepApplicationUsagepwszExtendedErrorInfor$   N)r%   r&   r'   r(   r   PCERT_CONTEXTrB   r
   PCERT_ENHKEY_USAGEr   r*   r+   r$   r,   r-   rF   rF   a   sD    	5	'	)*	H%	-.	01	 '*Hr,   rF   c                   P    ] tR t^ptR]3R]3R]3R]! ]4      3R]3R]	3R]33t
RtR	# )
CERT_SIMPLE_CHAINr8   rH   cElement
rgpElementpTrustListInfofHasRevocationFreshnessTimer=   r$   N)r%   r&   r'   r(   r   rB   r   PCERT_CHAIN_ELEMENTr
   r   r*   r+   r$   r,   r-   rP   rP   p   sH    	5	)*	U	w234	8$	&-	$e,Hr,   rP   c            	       V    ] tR t^tR]3R]3R]3R]! ]4      3R]3R]3R]	3R]33t
R	tR
# )CERT_CHAIN_CONTEXTr8   rH   cChainrgpChaincLowerQualityChainContextrgpLowerQualityChainContextrT   r=   r$   N)r%   r&   r'   r(   r   rB   r   PCERT_SIMPLE_CHAINr
   r   r*   r+   r$   r,   r-   rW   rW      sP    	5	)*	5	W/01	$e,	&1	&-	$e,	Hr,   rW   c                   2    ] tR t^tR]3R]3R]3R]33tRtR# ) SSL_EXTRA_CERT_CHAIN_POLICY_PARAr8   
dwAuthType	fdwCheckspwszServerNamer$   N)r%   r&   r'   r(   r   r   r*   r+   r$   r,   r-   r^   r^      s)    	5	u	e	7#	Hr,   r^   c                   ,    ] tR t^tR]3R]3R]33tRtR# )CERT_CHAIN_POLICY_PARAr8   dwFlagspvExtraPolicyParar$   N)r%   r&   r'   r(   r   r
   r*   r+   r$   r,   r-   rc   rc      s!    	5	E	h'Hr,   rc   c                   8    ] tR t^tR]3R]3R]3R]3R]33tRtR# )CERT_CHAIN_POLICY_STATUSr8   dwErrorlChainIndexlElementIndexpvExtraPolicyStatusr$   N)	r%   r&   r'   r(   r   r   r
   r*   r+   r$   r,   r-   rg   rg      s1    	5	E		$	)Hr,   rg   c                   h    ] tR t^tR]3R]3R]3R]3R]3R]3R]3R]3R	]3R
]3R]3R]3R]33tRtR# )CERT_CHAIN_ENGINE_CONFIGr8   hRestrictedRoothRestrictedTrusthRestrictedOthercAdditionalStorerghAdditionalStorerd   r;   MaximumCachedCertificatesCycleDetectionModulushExclusiveRoothExclusiveTrustedPeopledwExclusiveFlagsr$   N)	r%   r&   r'   r(   r   r)   r
   r*   r+   r$   r,   r-   rm   rm      sq    	5	J'	Z(	Z(	U#	x(	E	 %(	$e,	 %(	:&	"J/	U#Hr,   rm   i   s   Memorys   1.3.6.1.5.5.7.3.1i   i    i   i   i @  i   i   zcrypt32.dllzkernel32.dllc                H    V ^8  d   QhR\         R\        R\        R\        /# )   result_argsreturn)boolr   )formats   "r-   __annotate__r      s(      d s # # r,   c                 *    V '       g   \        4       hV# Nr   )rz   r{   r|   s   &&&r-   _handle_win_errorr      s    jKr,   c                x    V ^8  d   QhR\         P                  R\        \        ,          R\        R,          RR/# )ry   ssl_context
cert_chainserver_hostnameNr}   )ssl
SSLContextlistbytesstr)r   s   "r-   r   r   C  sB     Y5 Y5Y5UY5 4ZY5 
	Y5r,   c                X   V'       g   \         P                  ! R4      hRp\        \        ^ R^ R4      p VR,           F/  p\	        V\
        \        ,          V\        V4      \        R4       K1  	  V^ ,          p\        \
        \        ,          V\        V4      4      p\        4       p^Vn        \        ^,          ! \        4      Vn        \        4       pWxn        \#        4       p	Wn        \'        V	4      V	n        \+        V	4      p
V P,                  \         P.                  ,          '       d   \0        pM0V P,                  \         P2                  ,          '       d   \4        pM^ p \7        V RVVV
VVR7       \=        T^ 4       T'       d   \?        T4       R# R#   \         P                   dU   pT P9                  RR7      pT'       d5    \;        T TTTT
TTR7        Rp?Lj  \         P                   d    TRhi ; ih Rp?ii ; i  \=        T^ 4       T'       d   \?        T4       i i ; i)z9Verify the cert_chain from the server using Windows APIs.z#Peer sent no certificates to verifyN:   NN)chain_flagsT)binary_form) r   SSLCertVerificationErrorCertOpenStoreCERT_STORE_PROV_MEMORY CertAddEncodedCertificateToStoreX509_ASN_ENCODINGPKCS_7_ASN_ENCODINGlenCERT_STORE_ADD_USE_EXISTINGCertCreateCertificateContextr/   r0   r   OID_PKIX_KP_SERVER_AUTHr1   r3   r5   r7   r9   r   r8   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   rG   hIntermediateCertStore
cert_bytes	leaf_certcert_enhkey_usagecert_usage_matchchain_params
pChainParar   ecustom_ca_certss   &&&           r-   _verify_peercerts_implr   C  s    **+PQQL*+A1dAtTK5$R..J,&!$77J+ ) qM	3 33YI

 ./-.*2:Q,@W1X.+-!2&(&6#$\2\*
##c&@&@@@;K%%(A(AAA>KK#	 '&'D 	-q1&|4 5 ++ 	
 3>2J2J  3K 3O &1#'.$"'$/  33 &%& /	2 	-q1&|4 sH   D&H 	H &F H0G?G"H "G;;G??HH "H)c                    V ^8  d   QhR\         P                  R\        R,          R\        R\        R\
        R\        R,          R\        R	R/# )
ry   r   hChainEngineNr   pPeerCertContextr   r   r   r}   )r   r   HCERTCHAINENGINEr)   r
   PCERT_CHAIN_PARAr   int)r   s   "r-   r   r     so     W> W>W>"T)W> 'W> 	W>
 !W> 4ZW> W> 
W>r,   c           
      h   R p \        \        4       4      p\        VVR VVVR V4       VP                  p\	        4       p	\        V	4      V	n        \        V	n        ^ V	n	        V P                  RJ d   \        V	n	        V'       d   \        V4      V	n        \        4       p
\        \        V	4      \         4      V
n        V P$                  \&        P(                  8X  d   V
;P*                  \,        ,          un        \        V
4      V
n        \        V
4      p\/        4       p\        V4      Vn        \        V4      p\1        \2        VVV4       VP4                  pV'       d   \7        R4      p\9        \:        \<        ,          R V^ V\        V4      R 4      pV^ 8:  d   RVR RVP>                   R2pMVP@                  PC                  4       p\&        PD                  ! V4      pVVn#        VVn$        VR h V'       d   \K        VP                  4       R # R #   T'       d   \K        TP                  4       i i ; i)NFi   zCertificate chain policy error z#xz [])&r   PCERT_CHAIN_CONTEXTCertGetCertificateChaincontentsr^   r   r8   AUTHTYPE_SERVERr_   r`   check_hostname$SECURITY_FLAG_IGNORE_CERT_CN_INVALIDr   ra   rc   r   r
   re   verify_moder   	CERT_NONErd   (CERT_CHAIN_POLICY_VERIFY_MODE_NONE_FLAGSrg    CertVerifyCertificateChainPolicyCERT_CHAIN_POLICY_SSLrh   r   FormatMessageWFORMAT_MESSAGE_FROM_SYSTEMFORMAT_MESSAGE_IGNORE_INSERTSrj   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M> !4!67"		
 '// ,L+M(28,3
(/ 7F(356(2%%.4 -6 >G>X,;-/)-45x*
& ""cmm3  $LL $\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   A?H E+H  H1c                    V ^8  d   QhR\         P                  R\        \        ,          R\        R\
        R\        R\        R,          R\        R	R/# )
ry   r   r   r   r   r   r   Nr   r}   )	r   r   r   r   r)   r
   r   r   r   )r   s   "r-   r   r     sd     1* 1*1*%[1* '1* 	1*
 !1* 4Z1* 1* 
1*r,   c           	         R p\        \        ^ R ^ R 4      p V F/  p	\        V\        \        ,          V	\        V	4      \        R 4       K1  	  \        4       p
\        V
4      V
n	        Wn
        \        V
4      p\        \        4       4      p\        VV4       VP                  p\        V VVVVVV4       V'       d   \!        V4       \#        V^ 4       R #   T'       d   \!        T4       \#        T^ 4       i ; ir   )r   r   r   r   r   r   r   rm   r   r8   ru   r   r    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 !C5c                f    V ^8  d   QhR\         P                  R\        P                  R,          /# )ry   ctxr}   N)r   r   typingIterator)r   s   "r-   r   r   .  s'     	7 	7CNN 	7vt/D 	7r,   c              #      "   V P                   pV P                  pR V n         \        V \        P                  4        Rx  Wn         \        W4       R#   Yn         \        Y4       i ; i5i)FN)r   r   r   r   r   )r   r   r   s   &  r-   _configure_contextr   -  sV     ''N//KC cmm47+$S6 ,$S6s   :A*A A*A''A*r   )g
contextlibr   r   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   rM   PCCERT_CONTEXTr/   rN   r3   r7   r   rB   rF   rU   rP   r\   rW   r   PCCERT_CHAIN_CONTEXTr^   rc   PCERT_CHAIN_POLICY_PARArg   PCERT_CHAIN_POLICY_STATUSrm   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_FLAG*CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG)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   r   wincryptkernel32r   r   argtypeserrcheckr   restyper   r   r   r   r   r   r   r   r   r   r   r   contextmanagerr   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 %'1 $ '  *  6=>-. 11 0	0
 33 55 ,, ,, ) - .! $,#L#L  -   ) ->   )&& %):E8L " * #+#L#L  			-   ) ,0   ('DD ).%(@  %'4  $(9  %":: 		$    #'  #4   #+#L#L  	-   ) ,0   (((%u-  + #<< %8$:  !%@@ '4&6  #!)!H!H +;*=  '((			
	   Y5xW>t1*h 	7 	7r,   