o
    �õ±jo  ã                   @   s&   d dl m Z mZ d dlZddd„ZdS )é    )ÚdatetimeÚ	timedeltaNc                 C   sf  ddl m} ddlm} ddlm} ddlm} ddlm} ddl	m
} |du r1|jd	d
|ƒ d�}| | |j| ¡g¡}	| | ¡g}
|r\|D ]}|
 | |¡¡ |
 | t |¡¡¡ qF| |
¡}|jddd�}t ¡ }| ¡  |	¡ |	¡ | ¡ ¡ d¡ |¡ |tdd� ¡  |d¡  |d¡ !|| "¡ |ƒ ¡}|j#|j$j%d�}|j&|j$j%|j'j(| )¡ d�}||fS )zLGenerates self signed certificate for a hostname, and optional IP addresses.r   )Úx509)ÚNameOID)Úhashes)Údefault_backend)Úserialization)ÚrsaNi  i   )Úpublic_exponentÚkey_sizeÚbackendT)ÚcaÚpath_lengthiè  iB  )ÚdaysF)Úencoding)r   ÚformatÚencryption_algorithm)*Úcryptographyr   Úcryptography.x509.oidr   Úcryptography.hazmat.primitivesr   Úcryptography.hazmat.backendsr   r   Ú)cryptography.hazmat.primitives.asymmetricr	   Úgenerate_private_keyÚNameÚNameAttributeÚCOMMON_NAMEÚDNSNameÚappendÚ	IPAddressÚ	ipaddressÚ
ip_addressÚSubjectAlternativeNameÚBasicConstraintsr   ÚutcnowÚCertificateBuilderÚsubject_nameÚissuer_nameÚ
public_keyÚserial_numberÚnot_valid_beforeÚnot_valid_afterr   Úadd_extensionÚsignÚSHA256Úpublic_bytesÚEncodingÚPEMÚprivate_bytesÚPrivateFormatÚTraditionalOpenSSLÚNoEncryption)ÚhostnameÚip_addressesÚkeyr   r   r   r   r   r	   ÚnameÚ	alt_namesÚaddrÚsanÚbasic_contraintsÚnowÚcertÚcert_pemÚkey_pem© rA   ú—/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/unicomm/utils/genselfsigned.pyÚgenerate_selfsigned_cert   sR   ýÿ

öýrC   )NN)r   r   r   rC   rA   rA   rA   rB   Ú<module>   s   