Ë
    Bü´jIF  ã                   ó&  — 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/ZJd0ZKd#ZLd1ZMd0ZNd2ZOeBeCz  eDz  eEz  eFz  eGz  eHz  eIz  eJz  ZP ed3«      ZQ ed4«      ZRd5eSd6ed7ed8efd9„ZTeQjª                  ZUe8e9feU_V        eTeU_W        eQj°                  ZXeee!ee
feX_V        e eX_Y        eTeX_W        eQj´                  ZZe eeeee$feZ_V        eeZ_Y        eQj¶                  Z[eeefe[_V        e#e[_Y        eTe[_W        eQj¸                  Z\ee#ee e)ee
e1fe\_V        ee\_Y        eTe\_W        eQjº                  Z]e	e0e4e6fe]_V        ee]_Y        eQj¼                  Z^e efe^_V        ee^_Y        eTe^_W        eQj¾                  Z_e0fe__V        eQjÀ                  Z`e#fe`_V        eQjÂ                  Zaefea_V        eRjÄ                  Zbeeeeeee
feb_V        eeb_Y        	 dHd:ejÆ                  d;edee   d<efdz  d8dfd=„Zgd:ejÆ                  d>edz  d?e d@e
dAe)d<efdz  dBehd8dfdC„Zid:ejÆ                  dDedee   d?e d@e
dAe)d<efdz  dBehd8dfdE„Zje jÖ                  dFejÆ                  d8ejØ                  d   fdG„«       Zmy)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_© ó    úQ/root/workspace/ytshorts/venv/lib/python3.12/site-packages/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ª   C  s  € ñ Ü×*Ñ*Ð+PÓQÐQà€LÜ*Ô+AÀ1ÀdÈAÈtÓTÐðK5à$ Q R˜.ò 	ˆJÜ,Ø&Ü!Ô$7Ñ7ØÜ�J“Ü+Øõð	ð ˜q‘Mˆ	Ü3ÜÔ 3Ñ3°YÄÀIÃó
ˆô
 .Ó/ÐØ-.ÐÔ*Ü2:¸Q±,Ô@WÓ1XÐÔ.Ü+Ó-ÐØ!2ÐÔÜ&Ó(ˆØ&6ˆÔ#Ü$ \Ó2ˆÔÜ˜\Ó*ˆ
à×#Ñ#¤c×&@Ñ&@Ò@Ü;‰KØ×%Ñ%¬×(AÑ(AÒAÜ>‰KàˆKð#	ô 'ØØØ&ØØØØ'õôD 	Ð-¨qÔ1ÙÜ& |Õ4ð øô5 ×+Ñ+ò 	ð
 3>×2JÑ2JØ ð 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|	_	        | j                  du rt        |	_	        |rt        |«      |	_        t        «       }
t        t        |	«      t         «      |
_        | j$                  t&        j(                  k(  r|
xj*                  t,        z  c_        t        |
«      |
_        t        |
«      }t/        «       }t        |«      |_        t        |«      }t1        t2        |||«       |j4                  }|rŠt7        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   Fi   zCertificate chain policy error z#xz [ú])&r   ÚPCERT_CHAIN_CONTEXTÚCertGetCertificateChainÚcontentsr]   r   r7   ÚAUTHTYPE_SERVERr^   r_   Úcheck_hostnameÚ$SECURITY_FLAG_IGNORE_CERT_CN_INVALIDr   r`   rb   r   r
   rd   Úverify_moderŒ   Ú	CERT_NONErc   Ú(CERT_CHAIN_POLICY_VERIFY_MODE_NONE_FLAGSrf   Ú 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ðM>ä Ô!4Ó!6Ó7ˆÜØØØØ"ØØØØô		
ð '×/Ñ/ˆô ,LÓ+MÐ(Ü28Ø,ó3
Ð(Ô/ô 7FÐ(Ô3Ø56Ð(Ô2Ø×%Ñ%¨Ñ.ä4ð -Ô6ñ Ü>GÈÓ>XÐ,Ô;ä-Ó/ˆÜ)-ÜÐ4Ó5´xó*
ˆÔ&ð ×"Ñ"¤c§m¡mÒ3Ø× Ò Ô$LÑLÕ Ü$ \Ó2ˆÔä˜lÓ+ˆÜ0Ó2ˆÜ% mÓ4ˆÔÜ Ó.ˆÜ(Ü!ØØØô		
ð #×*Ñ*ˆ
Ùä 5°dÓ ;ÐÜ"0Ü*Ô-JÑJØØØØ!ÜÐ(Ó)Øó#Ðð # aÒ'Ø"AÀ*ÈRÀÐPRÐS`×SnÑSnÐRoÐopÐ q‘à 1× 7Ñ 7× =Ñ =Ó ?�ä×.Ñ.¨}Ó=ˆCØ!.ˆCÔØ(ˆCŒOØ˜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Ü"Ô#9¸1¸dÀAÀtÓL€Nð&*à)ò 	ˆJÜ,ØÜ!Ô$7Ñ7ØÜ�J“Ü+Øõð	ô $<Ó#=Ð Ü*0Ð1IÓ*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ÔÜ  ¤c§m¡mÔ4ð7Ûà+ˆÔÜ$ S¨+Õ6øð ,ˆÔÜ$ S¨+Õ6üs   ‚:A-½A ÁA-ÁA*Á*A-r„   )nÚ
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_FLAGSÚ7CERT_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Ú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Ð %Ø'1Ð $Ø€ØÐ Ø'Ð Ø *Ð ð 6Ø=ñ>à-ñ.ð 1ñ1ð 0ñ	0ð
 3ñ3ð 5ñ5ð ,ñ,ð ,ñ,ð )ñ �-Ó €Ù�.Ó!€ð˜dð  sð °#ð ¸#ó ð $,×#LÑ#LÐ  àØð-Ð  Ô )ð ->Ð  Ô )à×&Ñ&€Ø  %Ð):¸EÀ8Ð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ð ˜4‘ZðY5ð 
ó	Y5ðxW>Ø—‘ðW>à" TÑ)ðW>ð 'ðW>ð ð	W>ð
 !ðW>ð ˜4‘ZðW>ð ðW>ð 
óW>ðt1*Ø—‘ð1*à˜%‘[ð1*ð 'ð1*ð ð	1*ð
 !ð1*ð ˜4‘Zð1*ð ð1*ð 
ó1*ðh ×Ñð	7˜CŸN™Nð 	7¨v¯©¸tÑ/Dò 	7ó ñ	7r+   