Sindbad~EG File Manager
a
��g�$ � @ s d Z ddlZddlZddlZddlZddlT dZdZdZej �
ej �e��Z
d8dd�Zd
Zdd� Zdd� Zdd� Zedk�re�e
� eddd�\ZZedd��Ze�e� W d � n1 s�0 Y edd��Ze�e� W d � n1 s�0 Y ed� eg d�� eg d�� edd��$Ze�e� e�e� W d � n1 �sT0 Y edd ��Ze�e� W d � n1 �s�0 Y e� ed!dd�\ZZed"d��$Ze�e� e�e� W d � n1 �s�0 Y edd#d$�\ZZed%d��$Ze�e� e�e� W d � n1 �s00 Y ed!d#d$�\ZZed&d��$Ze�e� e�e� W d � n1 �s�0 Y ed'd#d(d)�\ZZed*d��$Ze�e� e�e� W d � n1 �s�0 Y g d+�Zed,d#d-�e�d.�\ZZed/d��$Ze�e� e�e� W d � n1 �s20 Y g d0�Zed1d#d-�e�d.�\ZZed2d��$Ze�e� e�e� W d � n1 �s�0 Y ed3d#d4d5�\ZZed6d��$Ze�e� e�e� W d � n1 �s�0 Y e� ed7� ed� ed%� dS )9zOMake the custom certificate and private key files used by test_ssl
and friends.� N)�*Z20180829142316ZZ20371028142316Za�
[ 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 = CA:true
F� �req_x509_extensions_full�rsa:3072c C s$ t d| � g }td�D ]<}tjdd��}|�|j� W d � q1 sJ0 Y q|\}} }
�z�tj| |tt d�}t
|d��}|�|� W d � n1 s�0 Y ddd d
dd|d
|
d|d|g
}|�rtjdd��"}|�|j� |j}
W d � n1 �s0 Y |d|
g7 }n|dd| g7 }tdg| � |�rldd|d|d| dddddd|
g}tdg| � t
| d��}|�
� }W d � n1 �s�0 Y t
|
d��}|�
� }W d � n1 �s�0 Y ||fW |D ]}t�|� �q�S ]}t�|� �q�n|D ]}t�|� �q0 d S )Nzcreating cert for � F)�delete��hostname� extra_san� startdate�enddate�w�req�-new�-nodesz-daysZ7000�-newkey�-keyout�-extensions�-config�-outz-x509�openssl�ca�-outdir�cadirz-policyZpolicy_anything�-batch�-infiles�r)�print�range�tempfile�NamedTemporaryFile�append�name�req_template�formatr r �open�write�
check_call�read�os�remove)r �signr
�ext�keyZ tempnames�i�fZreq_fileZ cert_fileZkey_filer �argsZreqfile�certr"