File: //usr/lib/python3/dist-packages/twisted/test/__pycache__/test_sslverify.cpython-38.pyc
U
s�@g�� � @ s� d Z ddlmZmZ ddlZddlZddlZddlmZ ddl m
Z
dZdZdZ
dZe
d��rxddlZddlmZ ddlmZ dd lmZ dd
lmZmZ ddlmZmZ ddlmZ dd
lmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl"m'Z' ze�(ej)�Z*e*�+dd� � W n e,k
�r: dZ
Y nX ze�(ej)�Z*e*�-dd� � W n e,k
�rt dZY nX ndZeZeZ
eZddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< dd lm=Z=m>Z>m?Z? dd!l@mAZA dd"l2mBZBmCZC dd#lmDZD dd$lEmFZF e�sVdd%lGmHZHmIZI dd&lmJZK dd'lLmMZM d(ZNd)ZOe9eP�jQ�Rd*��S� ZTe�U� fd+d,�ZVd-d.� ZWdzd0d1�ZXd2d3� ZYd{d4d5�ZZd|d6d7�Z[d8d9� Z\G d:d;� d;e=j]�Z^G d<d=� d=e=j]�Z_G d>d?� d?e`�ZaG d@dA� dAe;jb�ZcG dBdC� dCe`�ZdG dDdE� dEe`�ZeG dFdG� dGeee;jf�ZgG dHdI� dIe;jb�ZhG dJdK� dKe;jf�ZiG dLdM� dMe;jb�Zjd}dNdO�ZkG dPdQ� dQe;jf�ZlG dRdS� dSe;jf�ZmG dTdU� dUe;jf�ZnG dVdW� dW�ZoG dXdY� dY�ZpG dZd[� d[�ZqG d\d]� d]e;jf�ZrG d^d_� d_e;jf�ZsG d`da� dae;jf�ZtG dbdc� dce;jf�ZuG ddde� dee;jf�ZvG dfdg� dge;jf�ZwG dhdi� die`�ZxG djdk� dke`�ZyG dldm� dme;jf�ZzG dndo� doe`�Z{G dpdq� dqe`�Z|G drds� dse;jb�Z}G dtdu� due;jb�Z~G dvdw� dwe;jf�ZG dxdy� dye;jb�Z�dS )~z+
Tests for L{twisted.internet._sslverify}.
� )�division�absolute_importN)�implementer)�
requireModule�OpenSSL)�ssl)�SSL)�get_elliptic_curves)�PKey�X509)�TYPE_RSA�FILETYPE_PEM)�x509)�default_backend)�hashes)�rsa)�
PrivateFormat�NoEncryption)�NameOID)�Encodingc C s d S �N� ��cr r �=/usr/lib/python3/dist-packages/twisted/test/test_sslverify.py�<lambda>. � r z1OpenSSL 1.0.1 or greater required for NPN supportc C s d S r r r r r r r 4 r z2OpenSSL 1.0.2 or greater required for ALPN supportz"OpenSSL is required for SSL tests.)�SetAsideModule)�connectedServerAndClient)�ConnectionClosed)�nativeString)�FilePath)� getModule)�unittest�util)�protocol�defer�reactor)� _idnaText)�CertificateError�ConnectionLost)�
interfaces)�Version)�
platformTrust�VerificationError)�
_sslverify)�TLSMemoryBIOFactorya�
-----BEGIN CERTIFICATE-----
MIIC2jCCAkMCAjA5MA0GCSqGSIb3DQEBBAUAMIG0MQswCQYDVQQGEwJVUzEiMCAG
A1UEAxMZZXhhbXBsZS50d2lzdGVkbWF0cml4LmNvbTEPMA0GA1UEBxMGQm9zdG9u
MRwwGgYDVQQKExNUd2lzdGVkIE1hdHJpeCBMYWJzMRYwFAYDVQQIEw1NYXNzYWNo
dXNldHRzMScwJQYJKoZIhvcNAQkBFhhub2JvZHlAdHdpc3RlZG1hdHJpeC5jb20x
ETAPBgNVBAsTCFNlY3VyaXR5MB4XDTA2MDgxNjAxMDEwOFoXDTA3MDgxNjAxMDEw
OFowgbQxCzAJBgNVBAYTAlVTMSIwIAYDVQQDExlleGFtcGxlLnR3aXN0ZWRtYXRy
aXguY29tMQ8wDQYDVQQHEwZCb3N0b24xHDAaBgNVBAoTE1R3aXN0ZWQgTWF0cml4
IExhYnMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxJzAlBgkqhkiG9w0BCQEWGG5v
Ym9keUB0d2lzdGVkbWF0cml4LmNvbTERMA8GA1UECxMIU2VjdXJpdHkwgZ8wDQYJ
KoZIhvcNAQEBBQADgY0AMIGJAoGBAMzH8CDF/U91y/bdbdbJKnLgnyvQ9Ig9ZNZp
8hpsu4huil60zF03+Lexg2l1FIfURScjBuaJMR6HiMYTMjhzLuByRZ17KW4wYkGi
KXstz03VIKy4Tjc+v4aXFI4XdRw10gGMGQlGGscXF/RSoN84VoDKBfOMWdXeConJ
VyC4w3iJAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAviMT4lBoxOgQy32LIgZ4lVCj
JNOiZYg8GMQ6y0ugp86X80UjOvkGtNf/R7YgED/giKRN/q/XJiLJDEhzknkocwmO
S+4b2XpiaZYxRyKWwL221O7CGmtWYyZl2+92YYmmCiNzWQPfP6BOMlfax0AGLHls
fXzCWdG0O/3Lk2SRM0I=
-----END CERTIFICATE-----
a�
-----BEGIN CERTIFICATE-----
MIIC3jCCAkcCAjA6MA0GCSqGSIb3DQEBBAUAMIG2MQswCQYDVQQGEwJVUzEiMCAG
A1UEAxMZZXhhbXBsZS50d2lzdGVkbWF0cml4LmNvbTEPMA0GA1UEBxMGQm9zdG9u
MRwwGgYDVQQKExNUd2lzdGVkIE1hdHJpeCBMYWJzMRYwFAYDVQQIEw1NYXNzYWNo
dXNldHRzMSkwJwYJKoZIhvcNAQkBFhpzb21lYm9keUB0d2lzdGVkbWF0cml4LmNv
bTERMA8GA1UECxMIU2VjdXJpdHkwHhcNMDYwODE2MDEwMTU2WhcNMDcwODE2MDEw
MTU2WjCBtjELMAkGA1UEBhMCVVMxIjAgBgNVBAMTGWV4YW1wbGUudHdpc3RlZG1h
dHJpeC5jb20xDzANBgNVBAcTBkJvc3RvbjEcMBoGA1UEChMTVHdpc3RlZCBNYXRy
aXggTGFiczEWMBQGA1UECBMNTWFzc2FjaHVzZXR0czEpMCcGCSqGSIb3DQEJARYa
c29tZWJvZHlAdHdpc3RlZG1hdHJpeC5jb20xETAPBgNVBAsTCFNlY3VyaXR5MIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnm+WBlgFNbMlHehib9ePGGDXF+Nz4
CjGuUmVBaXCRCiVjg3kSDecwqfb0fqTksBZ+oQ1UBjMcSh7OcvFXJZnUesBikGWE
JE4V8Bjh+RmbJ1ZAlUPZ40bAkww0OpyIRAGMvKG+4yLFTO4WDxKmfDcrOb6ID8WJ
e1u+i3XGkIf/5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAD4Oukm3YYkhedUepBEA
vvXIQhVDqL7mk6OqYdXmNj6R7ZMC8WWvGZxrzDI1bZuB+4aIxxd1FXC3UOHiR/xg
i9cDl1y8P/qRp4aEBNF6rI0D4AxTbfnHQx4ERDAOShJdYZs/2zifPJ6va6YvrEyr
yqDtGhklsWW3ZwBzEh5VEOUp
-----END CERTIFICATE-----
z
server.pemc C s t | �S )zQ
Each time we're called, return the next integer in the natural numbers.
)�next)�counterr r r r2 � s r2 c K s� t � }|�td� t� }|�d� |�d� |�� |�� fD ]&}| �� D ]\}}t ||t
|�� qHq<|�t� � |�
|� |�|d� ||fS )Ni r i�3�Zmd5)r
Zgenerate_keyr r Zgmtime_adj_notBeforeZgmtime_adj_notAfterZ
get_issuer�get_subject�items�setattrr Zset_serial_numberr2 Z
set_pubkey�sign)�kwZkeypair�certificateZxname�k�vr r r �makeCertificate� s
r; �example.comc C s� t �t �tjd�g�}t �t �tjd�g�}t�ddd�}tjddt � d�}|�
� }t �� �|��
|��tj�� | ��tj�� | ��t �� ��
|�jt jdd d
�dd�j|t�� t � d�}tjddt � d�}|�
� }zt�| �} W n" tk
�r t �| �g}
Y nX t �| �g}
t �� �|��
|��tj�� | ��tj�� | ��t �� ��
|�jt jd
dd
�dd�jt �|
�dd�j|t�� t � d�}tj� |�!t"j#��}tj$� d�%|�&t"j#t'j(t)� �|�!t"j#�g��}
||
fS )a~
Create a self-signed CA certificate and server certificate signed by the
CA.
@param serviceIdentity: The identity (hostname) of the server.
@type serviceIdentity: L{unicode}
@return: a 2-tuple of C{(certificate_authority_certificate,
server_certificate)}
@rtype: L{tuple} of (L{sslverify.Certificate},
L{sslverify.PrivateCertificate})
zTesting Example CAzTesting Example Server� r i i )Zpublic_exponentZkey_size�backendT� )ZcaZpath_length)Zcritical)Zprivate_key� algorithmr>