
    vKg@                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKJrJrJrJrJr  S SKJr  SrSrSrS	 rS
 r " S S5      r\r\R:                  \R<                  \   \R:                  \S4   4   r\R@                  \\4   r! " S S5      r" " S S\RF                  5      r$ " S S\RJ                  5      r& " S S\RN                  5      r(g)    N)decode)PyAsn1Error)char
constraint	namedtypetaguniv)serializableii3s  
-----BEGIN DH PARAMETERS-----
MIICCAKCAgEAyT6LzpwVFS3gryIo29J5icvgxCnCebcdSe/NHMkD8dKJf8suFCg3
O2+dguLakSVif/t6dhImxInJk230HmfC8q93hdcg/j8rLGJYDKu3ik6H//BAHKIv
j5O9yjU3rXCfmVJQic2Nne39sg3CreAepEts2TvYHhVv3TEAzEqCtOuTjgDv0ntJ
Gwpj+BJBRQGG9NvprX1YGJ7WOFBP/hWU7d6tgvE6Xa7T/u9QIKpYHMIkcN/l3ZFB
chZEqVlyrcngtSXCROTPcDOQ6Q8QzhaBJS+Z6rcsd7X+haiQqvoFcmaJ08Ks6LQC
ZIL2EtYJw8V8z7C0igVEBIADZBI6OTbuuhDwRw//zU1uq52Oc48CIZlGxTYG/Evq
o9EWAXUYVzWkDSTeBH1r4z/qLPE2cnhtMxbFxuvK53jGB0emy2y1Ei6IhKshJ5qX
IB/aE7SSHyQ3MDHHkCmQJCsOd4Mo26YX61NZ+n501XjqpCBQ2+DfZCBh8Va2wDyv
A2Ryg9SUz8j0AXViRNMJgJrr446yro/FuJZwnQcO3WQnXeqSBnURqKjmqkeFP+d8
6mk2tqJaY507lRNqtGlLnj7f5RNoBFJDCLBNurVgfvq9TCVWKDIFD4vZRjCrnl6I
rD693XKIHUCWOjMh1if6omGXKHH40QuME2gNa50+YPn1iYDl88uDbbMCAQI=
-----END DH PARAMETERS-----
c                    [         R                  R                  5       nUR                  [         R                  R                  U5        [         R                  R                  5       nUR                  [        [        R                  " 5       S-  5      5        UR                  S5        XR                  5       l        XR                  5       l        UR                  S5        UR                  U5        UR                  UR                  5       5        UR!                  U5        UR#                  [         R                  R%                  SSS5      [         R                  R%                  SSS	5      [         R                  R%                  S
SS5      [         R                  R%                  SSS5      [         R                  R%                  SSSUS9/5        UR'                  US5        XE4$ )N'      ]s   basicConstraintsTs   CA:TRUEs
   nsCertTypeFs   sslCA   extendedKeyUsagesb   serverAuth,clientAuth,emailProtection,timeStamping,msCodeInd,msCodeCom,msCTLSign,msSGC,msEFS,nsSGCs   keyUsages   keyCertSign, cRLSigns   subjectKeyIdentifiers   hashsubjectsha256)OpenSSLcryptoPKeygenerate_keyTYPE_RSAX509set_serial_numberinttimeset_versionget_subjectCNOgmtime_adj_notBeforegmtime_adj_notAfter
set_issuer
set_pubkeyadd_extensionsX509Extensionsign)organizationcnexpkey_sizekeycerts         g/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/seleniumwire/thirdparty/mitmproxy/certs.py	create_car.   '   s   
..


CW^^,,h7>> D3tyy{U234Q'j)S!OOD$$&'OOC$$	

 	$$	

 	$$q	

 	$$#	

 	$$#	 	% 	
+ 8 	IIc89    c                 ,   / nU H=  n [         R                  " UR                  S5      5        UR                  SU-  5        M?     SR                  U5      n[        R                  R                  5       nUR                  S5        UR                  [        5        UR                  UR                  5       5        USL=(       a    [        U5      S:  nU(       a  X'R                  5       l        Ub  XGR                  5       l        UR#                  [%        [&        R&                  " 5       S-  5      5        U(       aG  UR)                  S	5        UR+                  [        R                  R-                  S
U(       + U5      /5        UR+                  [        R                  R-                  SSS5      /5        UR/                  UR1                  5       5        UR3                  U S5        [5        U5      $ ! [         a    UR                  SU-  5         GM  f = f)a"  
Generates a dummy certificate.

privkey: CA private key
cacert: CA certificate
commonname: Common name for the generated certificate.
sans: A list of Subject Alternate Names.
organization: Organization name for the generated certificate.

Returns cert if operation succeeded, None if not.
asciis   IP:%ss   DNS:%ss   , r   N@   r   r      subjectAltNamer   Fs   serverAuth,clientAuthr   )	ipaddress
ip_addressr   append
ValueErrorjoinr   r   r   r    r!   DEFAULT_EXP_DUMMY_CERTr"   r   lenr   r   r   r   r   r   r$   r%   r#   
get_pubkeyr&   Cert)	privkeycacert
commonnamesansr'   ssir,   is_valid_commonnames	            r-   
dummy_certrD   S   s    
B	$  '!23 IIhl#  
BB>> Dj)34OOF&&()$73z?R#7   *+3tyy{U234	^^))!''	 	
 	$$$	
  	OOF%%'(IIgx :K  	%IIi!m$$	%s   %G00HHc                       \ rS rSrS rSrg)CertStoreEntry   c                 (    Xl         X l        X0l        g Nr,   
privatekey
chain_file)selfr,   rK   rL   s       r-   __init__CertStoreEntry.__init__   s    	$$r/   )r,   rL   rK   N)__name__
__module____qualname____firstlineno__rN   __static_attributes__ r/   r-   rF   rF      s    %r/   rF   .c                      \ rS rSrSrSrS rS r\S 5       r	\
SS\R                  \   4S	 jj5       r\\R                   S
 5       5       r\SS\4S j5       rSS\S\S\R                  \   SS4S jjrS\S\4S jr\S\S\R0                  \   4S j5       r SS\R                  \   S\R0                  \   S\R                  \   S\R4                  S\R8                  R:                  \4   4S jjrSrg)	CertStore   z,
Implements an in-memory certificate store.
d   c                 P    Xl         X l        X0l        X@l        0 U l        / U l        g rI   )default_privatekey
default_cadefault_chain_filedhparamscertsexpire_queue)rM   r[   r\   r]   r^   s        r-   rN   CertStore.__init__   s)     #5$"4 ;=
r/   c                 8   U R                   R                  U5        [        U R                   5      U R                  :  aV  U R                   R	                  S5      nU R
                  R                  5        VVs0 sH  u  p4XB:w  d  M  X4_M     snnU l        g g s  snnf )Nr   )r`   r6   r:   	STORE_CAPpopr_   items)rM   entrydkvs        r-   expireCertStore.expire   sz      't  !DNN2!!%%a(A+/::+;+;+=H+=41$!$+=HDJ 3Hs   7
BBc                    [         R                  R                  U 5      (       d*  [        U S5       nUR	                  [
        5        S S S 5        [        R                  R                  R                  U R                  [        R                  " 5       5      S5      nU[        R                  R                  R                  :w  Ga,  [        R                  R                  R                  U[        R                  R                  R                   5      n[        R                  R                  R#                  U[        R                  R                  R                  [        R                  R                  R                  [        R                  R                  R                  5      n[        R                  R                  R                  U[        R                  R                  R$                  5      nU$ g ! , (       d  f       GN= f)Nwb   r)ospathexistsopenwriteDEFAULT_DHPARAMr   SSL_libBIO_new_fileencodesysgetfilesystemencoding_ffiNULLgcBIO_freePEM_read_bio_DHparamsDH_free)rp   fbiodhs       r-   load_dhparamCertStore.load_dhparam   s@   
 ww~~d##dD!Q( " kk++DKK8Q8Q8S,TVZ['++""'''++""%%c7;;+;+;+D+DEC!!77  %%  %%  %%	'B
 !!$$R)9)9)A)ABBI (	 "!s   G11
H N
passphrasec                 ~   [         R                  R                  XS-   5      n[         R                  R                  U5      (       d  U R	                  XU5      u  pgO[        US5       nUR                  5       n	S S S 5        [        R                  R                  [        R                  R                  W	5      n[        R                  R                  [        R                  R                  U	U5      n[         R                  R                  XS-   5      n
U R                  U
5      nU " XgX[5      $ ! , (       d  f       N= f)N-ca.pemrb-dhparam.pem)ro   rp   r8   rq   create_storerr   readr   r   load_certificateFILETYPE_PEMload_privatekeyr   )clsrp   basenamer*   r   ca_pathr+   car   rawdh_pathr   s               r-   
from_storeCertStore.from_store   s    '',,t	%9:ww~~g&&&&tx@GCgt$ffh %00++B ..00++C '',,t%>?g&3G(( %$s   (D..
D<c               #      #    [         R                  " S5      n [         R                  " U S-  5         Sv   [         R                  " U 5        g! [         R                  " U 5        f = f7f)z
Context to temporarily set umask to its original value bitor 0o77.
Useful when writing private keys to disk so that only the owner
will be able to read them.
r   ?   N)ro   umask)original_umasks    r-   umask_secretCertStore.umask_secret   sE      !
$&'	%HH^$BHH^$s   0A)A A)A&&A)c                    [         R                  R                  U 5      (       d  [         R                  " U 5        U=(       d    UnU=(       d    Un[	        X4XRS9u  pg[
        R                  5          [        [         R                  R                  XS-   5      S5       nUR                  [        R                  R                  [        R                  R                  U5      5        UR                  [        R                  R                  [        R                  R                  U5      5        S S S 5        S S S 5        [        [         R                  R                  XS-   5      S5       nUR                  [        R                  R                  [        R                  R                  U5      5        S S S 5        [        [         R                  R                  XS-   5      S5       nUR                  [        R                  R                  [        R                  R                  U5      5        S S S 5        [        [         R                  R                  XS-   5      S5       n[        R                  R                  5       n	U	R!                  U5        UR                  U	R#                  5       5        S S S 5        [
        R                  5          [        [         R                  R                  XS-   5      S5       n[        R                  R                  5       n	U	R!                  U5        U	R%                  U5        UR                  U	R#                  5       5        S S S 5        S S S 5        [        [         R                  R                  XS-   5      S5       nUR                  [&        5        S S S 5        Xg4$ ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN0= f! , (       d  f       GN= f! , (       d  f       GNU= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Xg4$ = f)	N)r'   r(   r)   r*   r   rm   z-ca-cert.pemz-ca-cert.cerz-ca-cert.p12z-ca.p12r   )ro   rp   rq   makedirsr.   rW   r   rr   r8   rs   r   r   dump_privatekeyr   dump_certificatePKCS12set_certificateexportset_privatekeyrt   )
rp   r   r*   r'   r(   expiryr+   r   r   p12s
             r-   r   CertStore.create_store   s   ww~~d##KK#/x^8&\##%tBGGLL)?S,TVZ'[_`GG..NN// GG//NN// (\% "'',,t%>?F!GG//NN// G "'',,t%>?F!GG//NN// G "'',,t%>?F!..'')C#GGCJJL! G ##%tBGGLL)?S,TVZ'[_`..'')C#s#GGCJJL!	 (\% "'',,t%>?F!GGO$ G wQ (\'[%% GF GF GF (\'[%% GF ws}   1-OBN6-O)AO%AO,!AO>-P!9A PP!P26
O	 O
O
O),
O;>
P
P	P!!
P/2
Qspecrp   returnc                    [        US5       nUR                  5       nS S S 5        [        [        R                  R                  [        R                  R                  W5      5      n [        R                  R                  [        R                  R                  UU5      nU R                  [        XgU5      UR                  S5      5        g ! , (       d  f       N= f! [         a    U R                  n NUf = f)Nr   idna)rr   r   r<   r   r   r   r   r   	Exceptionr[   add_certrF   rx   )rM   r   rp   r   r   r   r,   rK   s           r-   add_cert_fileCertStore.add_cert_file  s    $&&(C NN++++	1 77++J 	4T2KK	
   	100J	1s   C(9C 
CC76C7rf   namesc                    UR                   R                  (       a"  XR                  UR                   R                  '   UR                   R                   H  nXR                  U'   M     U H  nXR                  U'   M     g)z
Adds a cert to the certstore. We register the CN in the cert plus
any SANs, and also the list of names provided as an argument.
N)r,   r(   r_   altnames)rM   rf   r   rB   s       r-   r   CertStore.add_cert/  sW    
 ::==(-JJuzz}}%$$A!JJqM %A!JJqM r/   dnc           	          U R                  S5      nU /n[        S[        U5      5       H(  nUR                  SSR	                  XS 5      -   5        M*     U$ )z
Return all asterisk forms for a domain. For example, for www.example.com this will return
[b"www.example.com", b"*.example.com", b"*.com"]. The single wildcard "*" is omitted.
   .   s   *.N)splitranger:   r6   r8   )r   partsretrB   s       r-   asterisk_formsCertStore.asterisk_forms;  sP     dq#e*%AJJutyyr334 &
r/   r?   r@   r'   r<   c           	        ^  / nU(       a   UR                  T R                  U5      5        U H#  nUR                  T R                  U5      5        M%     UR                  S5        UR                  U[        U5      45        [	        [        U 4S jU5      S5      nU(       a  T R                  U   nOk[        [        T R                  T R                  UUU5      T R                  T R                  S9nUT R                  U[        U5      4'   T R                  U5        UR                  UR                  UR                  4$ )a	  
Returns an (cert, privkey, cert_chain) tuple.

commonname: Common name for the generated certificate. Must be a
valid, plain-ASCII, IDNA-encoded domain name.

sans: A list of Subject Alternate Names.

organization: Organization name for the generated certificate.
   *c                 "   > U TR                   ;   $ rI   )r_   )r+   rM   s    r-   <lambda>$CertStore.get_cert.<locals>.<lambda>a  s    sdjj0r/   NrJ   )extendr   r6   tuplenextfilterr_   rF   rD   r[   r\   r]   rj   r,   rK   rL   )rM   r?   r@   r'   potential_keyssnamerf   s   `       r-   get_certCertStore.get_certG  s   " 02!!$"5"5j"ABA!!$"5"5a"89 d#z5;780.A
 JJt$E"++OO "  22224E 5:DJJ
E$K01KKzz5++U-=-===r/   )r_   r\   r]   r[   r^   r`   rI   ) rP   rQ   rR   rS   __doc__rc   rN   rj   staticmethodr   classmethodtypingOptionalbytesr   
contextlibcontextmanagerr   DEFAULT_EXPr   strr   rF   r   Listr   Tupler   ru   r   r   rT   rU   r/   r-   rW   rW      sc    II  & )fooe>T ) )$ %  % <@TR] 1 1f
# 
S 
fooe>T 
`d 
&
"n 
"e 
" 	5 	V[[%7 	 	 48	,>.,> ++e$,> !//%0	,>
 
fgkk..3	4,> ,>r/   rW   c                      \ rS rSr\R
                  " \R                  " S\R                  " 5       R                  \
R                  " \
R                  \
R                  S5      S95      \R                  " S\R                  " 5       R                  \
R                  " \
R                  \
R                  S5      S95      5      rSrg)	_GeneralNameiv  dNSNamer   )implicitTag	iPAddress   rU   N)rP   rQ   rR   rS   r   
NamedTypes	NamedTyper   	IA5Stringsubtyper   TagtagClassContexttagFormatSimpler	   OctetStringcomponentTyperT   rU   r/   r-   r   r   v  s    ((It~~'7'?'? 3 3S5H5H!L (@ (
 	 	K)9)9);)C)C 3 3S5H5H!L *D *
 		Mr/   r   c                   v    \ rS rSr\" 5       r\R                  R                  \	R                  " SS5      -   rSrg)_GeneralNamesi  r   i   rU   N)rP   rQ   rR   rS   r   r   r	   
SequenceOfsizeSpecr   ValueSizeConstraintrT   rU   r/   r-   r   r     s-     NM''&&q$/0Hr/   r   c                      \ rS rSrS rS rS rS r\S 5       r	\S 5       r
\S 5       rS	 rS
 r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)r<   i  c                     Xl         g)z=
Returns a (common name, [subject alternative names]) tuple.
Nx509)rM   r,   s     r-   rN   Cert.__init__  s	     	r/   c                 H    U R                  S5      UR                  S5      :H  $ )Nr   )digest)rM   others     r-   __eq__Cert.__eq__  s    {{8$X(>>>r/   c                 "    U R                  5       $ rI   )to_pemrM   s    r-   	get_stateCert.get_state  s    {{}r/   c                 ~    [         R                  R                  [         R                  R                  U5      U l        g rI   )r   r   r   r   r   )rM   states     r-   	set_stateCert.set_state  s%    NN33GNN4O4OQVW	r/   c                 $    U R                  U5      $ rI   )from_pem)r   r   s     r-   
from_stateCert.from_state  s    ||E""r/   c                     [         R                  R                  [         R                  R                  U5      nU " U5      $ rI   )r   r   r   r   )r   txtr   s      r-   r  Cert.from_pem  s,    ~~..w~~/J/JCP4yr/   c                 P    [         R                  " U5      nU R                  U5      $ rI   )sslDER_cert_to_PEM_certr  )r   derpems      r-   from_derCert.from_der  s!    &&s+||C  r/   c                     [         R                  R                  [         R                  R                  U R                  5      $ rI   )r   r   r   r   r   r   s    r-   r   Cert.to_pem  s-    ~~..NN''II 	r/   c                 8    U R                   R                  U5      $ rI   )r   r   )rM   r   s     r-   r   Cert.digest  s    yy%%r/   c                 R    U R                   R                  5       R                  5       $ rI   )r   
get_issuerget_componentsr   s    r-   issuerCert.issuer  s    yy##%4466r/   c                     U R                   R                  5       n[        R                  R                  UR	                  S5      S5      $ Nr1   z%Y%m%d%H%M%SZ)r   get_notBeforedatetimestrptimer   rM   ts     r-   	notbeforeCert.notbefore  s6    II##%  ))!((7*;_MMr/   c                     U R                   R                  5       n[        R                  R                  UR	                  S5      S5      $ r  )r   get_notAfterr  r  r   r  s     r-   notafterCert.notafter  s6    II""$  ))!((7*;_MMr/   c                 6    U R                   R                  5       $ rI   )r   has_expiredr   s    r-   r%  Cert.has_expired  s    yy$$&&r/   c                 R    U R                   R                  5       R                  5       $ rI   )r   r   r  r   s    r-   r   Cert.subject  s    yy$$&5577r/   c                 6    U R                   R                  5       $ rI   )r   get_serial_numberr   s    r-   serialCert.serial  s    yy**,,r/   c                    U R                   R                  5       n[        R                  R                  S[        R                  R
                  S0nUR                  UR                  5       S5      UR                  5       4$ )NRSADSAUNKNOWN)	r   r;   r   r   r   TYPE_DSAgettypebits)rM   pktypess      r-   keyinfoCert.keyinfo  sb    YY!!#NN##UNN##U

 IIbggi+GGI
 	
r/   c                 P    S nU R                    H  nUS   S:X  d  M  US   nM     U$ )Nr   s   CNr   r   rM   crB   s      r-   r(   Cert.cn  s0    Atu}aD  r/   c                 P    S nU R                    H  nUS   S:X  d  M  US   nM     U$ )Nr      Or   r   r:  s      r-   r'   Cert.organization  s0    Att|aD  r/   c                    / n[        U R                  R                  5       5       H  nU R                  R                  U5      nUR	                  5       S:X  d  M4   [        UR                  5       [        5       S9nUS    HA  nUS   R                  5       (       d  M  US   R                  5       nUR                  U5        MC     M     U$ ! [         a     M  f = f)z 
Returns:
    All DNS altnames.
r3   )asn1Specr   )r   r   get_extension_countget_extensionget_short_namer   get_datar   r   hasValueasOctetsr6   )rM   r   rB   extdeces         r-   r   Cert.altnames  s     tyy4467A))))!,C!!#'88 -/JC QAt}}aDMMO *   8  # s    C
CCr   N)rP   rQ   rR   rS   rN   r   r   r   r   r  r  r  r   r   propertyr  r  r"  r%  r   r+  r7  r(   r'   r   rT   rU   r/   r-   r<   r<     s)   ?X # #   ! !
& 7 7 N N N N ' ' 8 8 - - 	
 	
      r/   r<   ))r   r  r4   ro   r  ry   r   r   r   pyasn1.codec.der.decoderr   pyasn1.errorr   pyasn1.typer   r   r   r   r	   +seleniumwire.thirdparty.mitmproxy.coretypesr
   r   r9   rt   r.   rD   rF   r   TCustomCertIdr   r   TGeneratedCertIdUnionTCertIdrW   Choicer   r   r   Serializabler<   rU   r/   r-   <module>rW     s       	 
 
    + $ > > D ! ")X5p% % << 6UCZ8P PQ 
,,}&66
7[> [>|	4;; 	0DOO 0q<$$ qr/   