
    1hh%                     "   S SK r S SKrS SKrS SKrS SK7  SrSrSr\ R                  R                  \ R                  R                  \5      5      r  S0S jrSrS rS	 rS
 r\S:X  Ga  \ R&                  " \5        \" SSS9u  rr\" SS5       r\R1                  \5        SSS5        \" SS5       r\R1                  \5        SSS5        \" S5        \" / SQ5        \" / SQ5        \" SS5       r\R1                  \5        \R1                  \5        SSS5        \" SS5       r\R1                  \5        SSS5        \" 5         \" SSS9u  rr\" SS5       r\R1                  \5        \R1                  \5        SSS5        \" SSS9u  rr\" SS5       r\R1                  \5        \R1                  \5        SSS5        \" / SQ5        \" SSS9u  rr\" SS5       r\R1                  \5        \R1                  \5        SSS5        \" SSS S!9u  rr\" S"S5       r\R1                  \5        \R1                  \5        SSS5        / S#Qr\" S$SS%R9                  \5      S&9u  rr\" S'S5       r\R1                  \5        \R1                  \5        SSS5        / S(Qr\" S)SS%R9                  \5      S&9u  rr\" S*S5       r\R1                  \5        \R1                  \5        SSS5        \" S+SS,S-9u  rr\" S.S5       r\R1                  \5        \R1                  \5        SSS5        \" 5         \" S/5        \" S5        \" S5        gg! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       GNS= f! , (       d  f       GN = f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNQ= f! , (       d  f       GN= f! , (       d  f       N= f)1    N)*20180829142316Z20371028142316Za
  
    [ default ]
    base_url               = http://testca.pythontest.net/testca

    [req]
    distinguished_name     = req_distinguished_name
    prompt                 = no

    [req_distinguished_name]
    C                      = XY
    L                      = Castle Anthrax
    O                      = Python Software Foundation
    CN                     = {hostname}

    [req_x509_extensions_nosan]

    [req_x509_extensions_simple]
    subjectAltName         = @san

    [req_x509_extensions_full]
    subjectAltName         = @san
    keyUsage               = critical,keyEncipherment,digitalSignature
    extendedKeyUsage       = serverAuth,clientAuth
    basicConstraints       = critical,CA:false
    subjectKeyIdentifier   = hash
    authorityKeyIdentifier = keyid:always,issuer:always
    authorityInfoAccess    = @issuer_ocsp_info
    crlDistributionPoints  = @crl_info

    [ issuer_ocsp_info ]
    caIssuers;URI.0        = $base_url/pycacert.cer
    OCSP;URI.0             = $base_url/ocsp/

    [ crl_info ]
    URI.0                  = $base_url/revocation.crl

    [san]
    DNS.1 = {hostname}
    {extra_san}

    [dir_sect]
    C                      = XY
    L                      = Castle Anthrax
    O                      = Python Software Foundation
    CN                     = dirname example

    [princ_name]
    realm = EXP:0, GeneralString:KERBEROS.REALM
    principal_name = EXP:1, SEQUENCE:principal_seq

    [principal_seq]
    name_type = EXP:0, INTEGER:1
    name_string = EXP:1, SEQUENCE:principals

    [principals]
    princ1 = GeneralString:username

    [ ca ]
    default_ca      = CA_default

    [ CA_default ]
    dir = cadir
    database  = $dir/index.txt
    crlnumber = $dir/crl.txt
    default_md = sha256
    startdate = {startdate}
    default_startdate = {startdate}
    enddate = {enddate}
    default_enddate = {enddate}
    default_days = 7000
    default_crl_days = 7000
    certificate = pycacert.pem
    private_key = pycakey.pem
    serial    = $dir/serial
    RANDFILE  = $dir/.rand
    policy          = policy_match

    [ policy_match ]
    countryName             = match
    stateOrProvinceName     = optional
    organizationName        = match
    organizationalUnitName  = optional
    commonName              = supplied
    emailAddress            = optional

    [ policy_anything ]
    countryName   = optional
    stateOrProvinceName = optional
    localityName    = optional
    organizationName  = optional
    organizationalUnitName  = optional
    commonName    = supplied
    emailAddress    = optional


    [ v3_ca ]

    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid:always,issuer
    basicConstraints = critical, CA:true
    keyUsage = critical, digitalSignature, keyCertSign, cRLSign

    c                 Z   [        SU -   5        / n[        S5       H;  n[        R                  " SS9 nUR	                  UR
                  5        S S S 5        M=     Uu  pn
 [        R                  U U[        [        S9n[        US5       nUR                  U5        S S S 5        SSS	S
SSUSU
SUSU/nU(       aL  [        R                  " SS9 nUR	                  UR
                  5        UR
                  nS S S 5        USW/-  nOUSSU	/-  n[        S/U-   5        U(       a  SSUSUSU	SSSSSSW/n[        S/U-   5        [        U	S5       nUR                  5       nS S S 5        [        U
S5       nUR                  5       nS S S 5        WU4U H  n[        R                  " U5        M     $ ! , (       d  f       GM  = f! , (       d  f       GN.= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nx= f! U H  n[        R                  " U5        M     f = f)Nzcreating cert for    F)deletehostname	extra_san	startdateenddatewreq-new-nodesz-days7000-newkey-keyout-extensions-config-outz-x509opensslca-outdircadirz-policypolicy_anything-batch-infilesr)printrangetempfileNamedTemporaryFileappendnamereq_templateformatr   r   openwrite
check_callreadosremove)r
   signr   extkey	tempnamesifreq_file	cert_filekey_filer   argsreqfilecertr%   s                   E/opt/python-3.13.8/usr/lib/python3.13/test/certdata/make_ssl_certs.pymake_cert_keyr;   x   s   	

)*I1X((6!QVV$ 76  %.!H+!!	 " 
 (C AGGCL !vx&3	8s8% ,,E:a  (&& ; VW&&D Wfi11DI;%&8s	7,*gD 	{T)* )S!Q668D "(C A&&(C !SyDIIdO [ 76 !  ;:, "!   DIIdO sx   F1!*H	 G2H	 (G7AH	 G'!H	 5G8H	 1
G	
GH	 
G$ H	 '
G51H	 8
HH	 	!H*r   c                  8    [         R                  " [        5        g )N)shutilrmtree	TMP_CADIR     r:   	unmake_carB      s    
MM)rA   c                  b   [         R                  " [        5        [        [         R                  R                  SS5      S5       n  S S S 5        [        [         R                  R                  SS5      S5       n U R                  S5        S S S 5        [        [         R                  R                  SS5      S5       n U R                  S5        S S S 5        [        [         R                  R                  SS	5      S
5       n U R                  S5        S S S 5        [        R                  " S
5       n[        R                  SS[        [        S9nUR                  U5        UR                  5         [        R                  " 5        n SSUR                  SSSSSSSU R                  SS/n[        S/U-   5        SSUR                  SSSS[        SSS S!S"S#U R                  /n[        S/U-   5        SSUR                  S$SS%/n[        S/U-   5        S S S 5        S S S 5        [        / S&Q5        [         R"                  " S'S(5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNq= f! , (       d  f       N= f! , (       d  f       N= f))Nr   z	index.txta+zcrl.txt00zindex.txt.attrzw+zunique_subject = noserialr   zCB2D80995A69525B
zour-ca-server r	   r   r   r   r   r   rsa:3072r   zpycakey.pemr   z-subjzG/C=XY/L=Castle Anthrax/O=Python Software Foundation CA/CN=our-ca-serverr   r   pycacert.pemr   r   z-keyfilez	-selfsignr   v3_car   z-gencrlzrevocation.crl)r   x509-inrI   r   capath/ceff1710.0rM   zcapath/b1930218.0)r,   mkdirr?   r(   pathjoinr)   r"   r#   r&   r'   r   r   flushr%   r*   r=   copy)r3   tr   r7   s       r:   make_carT      s   HHY	bggll7;/	5 
6	bggll79-d	3q	 
4	bggll7#34T	:a	%& 
; 
bggll78,c	2a	$% 
3 
	$	$S	)Q!!$	 " 
 	
		((*a9afffz}AFFfhD 	{T)*)QVVNHiQVVND 	{T)*)QVVY@PQD	{T)* + 
*4    KK#%89O 
6	5	3	3	:	: 
3	2 +* 
*	)sV   I9I=I+I=1AJ BJJ 
I
I(+
I:=
J
J	J  
J.c                 V    SS K n[        R                  " UR                  U 5      5        g )Nr   )_sslpprint_test_decode_cert)rO   rV   s     r:   
print_certrY      s    
MM$((./rA   __main__	localhostreq_x509_extensions_simple)r/   zssl_cert.pemr   ssl_key.pemz5password protecting ssl_key.pem in ssl_key.passwd.pem)	r   pkeyrL   r]   r   zssl_key.passwd.pem-aes256-passoutpass:somepass)	r   r^   rL   r]   r   keycert.passwd.pemr_   r`   ra   zkeycert.pemrb   rD   fakehostnamezkeycert2.pemT)r.   keycert3.pem)r   rK   z-outformpemrL   rd   r   z	cert3.pemzkeycert4.pemzlocalhost-ecczparam:secp384r1.pem)r.   r0   zkeycertecc.pem)	z0otherName.1 = 1.2.3.4;UTF8:some other identifierz/otherName.2 = 1.3.6.1.5.2.2;SEQUENCE:princ_namezemail.1 = user@example.orgzDNS.2 = www.example.orgzdirName.1 = dir_sectzURI.1 = https://www.python.org/zIP.1 = 127.0.0.1z
IP.2 = ::1zRID.1 = 1.2.3.4.5allsans
)r.   r   zallsans.pem)z'DNS.2 = xn--knig-5qa.idn.pythontest.netz6DNS.3 = xn--knigsgsschen-lcb0w.idna2003.pythontest.netz6DNS.4 = xn--knigsgchen-b4a3dun.idna2008.pythontest.netz,DNS.5 = xn--nxasmq6b.idna2003.pythontest.netz,DNS.6 = xn--nxasmm1c.idna2008.pythontest.netidnsanszidnsans.pemnosanreq_x509_extensions_nosan)r.   r/   z	nosan.pemz>update Lib/test/test_ssl.py and Lib/test/test_asyncio/utils.py)FrG   req_x509_extensions_fullrH   )r,   rW   r=   r"   
subprocessr   r   r&   rO   abspathdirname__file__herer;   r?   rB   rT   rY   __name__chdirr9   r0   r(   r3   r)   r    r*   r   rP   r@   rA   r:   <module>rs      s   
    	
fP 
wwrwwx01 356@3j 	):X0
 zHHTNk/KLID#	nc	"a	 
#	mS	!Q	 
"	
ABvwvw	mS	!Q		 
" 
"D	)Q	 
* In2NOID#	nc	"a		 
# k5ID#	nc	"a		 
# abn48ID#	nc	"a		 
# d(=ID# 
	$		 
%I iddii	>RSID#	mS	!Q		 
"	I iddii	>RSID#	mS	!Q		 
" gD6QRID#	k3	1		 
  K	
JK}~q  
#	"	!	! 
"	! 
*	) 
#	"
 
#	" 
#	" 
%	$& 
"	!" 
"	!
 
 	s   M1M0#M0$N#N#N&#N8#O
/#O#O. #P 
M
M-0
M?
N
N#&
N58
O

O
O+.
O= 
P