3
«F\‡[ ã R @ s d dl Z d dlZd dlmZ d dlmZmZ d dlmZm Z d dl
mZ d dlm
Z
d dlmZ d dlmZmZmZmZ d d lmZmZmZmZmZ m!Z"m#Z$m%Z&m'Z( d d
l)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\gRZ0ye1Z2W n& e3k
�rš G d]d^„ d^e4ƒZ2Y nX ej5Z5ej6Z6ej7Z7ej8Z8ej9Z9ej:Z:ej;Zd_Z?d`Z@daZAdbZBdcZCddZDejEZFejGZHejIZJejKZLejMZNejOZPejQZRejSZTejUZVejWZXejYZZej[Z\ej]Z^ej_Z`ejaZbejcZdejeZfejgZhejiZjejkZlejmZnejoZpejqZrejsZtejuZvejwZxejyZzej{Z|ej}Z~ejZ€ej�Z‚ejƒZ„ej…Z†ej‡Zˆej‰ZŠej‹ZŒej�ZŽej�Z�ej‘Z’ej“Z”ej•Z–ej—Z˜ej™Z™ejšZšej›Z›ejœ�r$ej�Z�ejžZžejŸZŸej Z e0j¡dedfdgdhgƒ ej¢Z¢ej£Z£ej¤Z¤ej¥Z¥ej¦Z¦ej§Z§ej¨Z¨ej©Z©ejªZªej«Z«ej¬Z¬ejZej®Z®didjdkdldmgZ¯dngZ°doZ±dpZ²G dqdS„ dSe³ƒZ´eee´ƒZµe e´ƒZ¶G drdT„ dTe´ƒZ·G dsdU„ dUe´ƒZ¸G dtdV„ dVe´ƒZ¹G dudW„ dWe´ƒZºG dvdX„ dXe´ƒZ»G dwdx„ dxe4ƒZ¼G dydz„ dze¼ƒZ½G d{d|„ d|e¼ƒZ¾G d}d~„ d~e¼ƒZ¿G dd€„ d€e¼ƒZÀG d�d‚„ d‚e¼ƒZÁG dƒd„„ d„e¼ƒZÂd…d†„ ZÃd‡dY„ ZÄdˆd‰„ ZÅeÅejÆdŠƒZÇeÅejÈd‹ƒZÉeÅejÊdŒƒZËG d�dZ„ dZe4ƒZÌG dŽd[„ d[e4ƒZÍeeÍeÎd�eσZÐG d�d\„ d\e4ƒZÑeeÑeÎd‘eσZÒejÓƒ dS )’é N)Úplatform)ÚwrapsÚpartial)ÚcountÚchain)ÚWeakValueDictionary)Ú errorcode)Ú
deprecated)Úbinary_typeÚ
integer_typesÚint2byteÚ
indexbytes) ÚUNSPECIFIEDÚexception_from_error_queueÚffiÚlibÚmake_assertÚnativeÚpath_stringÚtext_to_bytes_and_warnÚno_zero_allocator)ÚFILETYPE_PEMÚ_PassphraseHelperÚPKeyÚX509NameÚX509Ú X509StoreÚOPENSSL_VERSION_NUMBERÚSSLEAY_VERSIONÚ
SSLEAY_CFLAGSÚSSLEAY_PLATFORMÚ
SSLEAY_DIRÚSSLEAY_BUILT_ONÚ
SENT_SHUTDOWNÚRECEIVED_SHUTDOWNÚSSLv2_METHODÚSSLv3_METHODÚ
SSLv23_METHODÚTLSv1_METHODÚTLSv1_1_METHODÚTLSv1_2_METHODÚOP_NO_SSLv2ÚOP_NO_SSLv3ÚOP_NO_TLSv1Ú
OP_NO_TLSv1_1Ú
OP_NO_TLSv1_2ÚMODE_RELEASE_BUFFERSÚOP_SINGLE_DH_USEÚOP_SINGLE_ECDH_USEÚOP_EPHEMERAL_RSAÚOP_MICROSOFT_SESS_ID_BUGÚOP_NETSCAPE_CHALLENGE_BUGÚ#OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUGÚOP_SSLREF2_REUSE_CERT_TYPE_BUGÚOP_MICROSOFT_BIG_SSLV3_BUFFERÚOP_MSIE_SSLV2_RSA_PADDINGÚOP_SSLEAY_080_CLIENT_DH_BUGÚ
OP_TLS_D5_BUGÚOP_TLS_BLOCK_PADDING_BUGÚOP_DONT_INSERT_EMPTY_FRAGMENTSÚOP_CIPHER_SERVER_PREFERENCEÚOP_TLS_ROLLBACK_BUGÚOP_PKCS1_CHECK_1ÚOP_PKCS1_CHECK_2ÚOP_NETSCAPE_CA_DN_BUGÚ"OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUGÚOP_NO_COMPRESSIONÚOP_NO_QUERY_MTUÚOP_COOKIE_EXCHANGEÚOP_NO_TICKETÚOP_ALLÚVERIFY_PEERÚVERIFY_FAIL_IF_NO_PEER_CERTÚVERIFY_CLIENT_ONCEÚVERIFY_NONEÚSESS_CACHE_OFFÚSESS_CACHE_CLIENTÚSESS_CACHE_SERVERÚSESS_CACHE_BOTHÚSESS_CACHE_NO_AUTO_CLEARÚSESS_CACHE_NO_INTERNAL_LOOKUPÚSESS_CACHE_NO_INTERNAL_STOREÚSESS_CACHE_NO_INTERNALÚSSL_ST_CONNECTÚ
SSL_ST_ACCEPTÚSSL_ST_MASKÚSSL_CB_LOOPÚSSL_CB_EXITÚSSL_CB_READÚSSL_CB_WRITEÚSSL_CB_ALERTÚSSL_CB_READ_ALERTÚSSL_CB_WRITE_ALERTÚSSL_CB_ACCEPT_LOOPÚSSL_CB_ACCEPT_EXITÚSSL_CB_CONNECT_LOOPÚSSL_CB_CONNECT_EXITÚSSL_CB_HANDSHAKE_STARTÚSSL_CB_HANDSHAKE_DONEÚErrorÚ
WantReadErrorÚWantWriteErrorÚWantX509LookupErrorÚZeroReturnErrorÚSysCallErrorÚSSLeay_versionÚSessionÚContextÚ
Connectionc @ s e Zd ZdS )Ú_bufferN)Ú__name__Ú
__module__Ú__qualname__© rs rs ú/usr/lib/python3.6/SSL.pyro v s ro é é é é é é ÚSSL_ST_INITÚ
SSL_ST_BEFOREÚ SSL_ST_OKÚSSL_ST_RENEGOTIATEz"/etc/ssl/certs/ca-certificates.crtz /etc/pki/tls/certs/ca-bundle.crtz/etc/ssl/ca-bundle.pemz/etc/pki/tls/cacert.pemz1/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pemz/etc/ssl/certss$ /opt/pyca/cryptography/openssl/certss' /opt/pyca/cryptography/openssl/cert.pemc @ s e Zd ZdZdS )re z4
An error occurred in an `OpenSSL.SSL` API.
N)rp rq rr Ú__doc__rs rs rs rt re ï s c @ s e Zd ZdS )rf N)rp rq rr rs rs rs rt rf ù s c @ s e Zd ZdS )rg N)rp rq rr rs rs rs rt rg ý s c @ s e Zd ZdS )rh N)rp rq rr rs rs rs rt rh s c @ s e Zd ZdS )ri N)rp rq rr rs rs rs rt ri s c @ s e Zd ZdS )rj N)rp rq rr rs rs rs rt rj s c @ s e Zd ZdZdd„ Zdd„ ZdS )Ú_CallbackExceptionHelperaÅ
A base class for wrapper classes that allow for intelligent exception
handling in OpenSSL callbacks.
:ivar list _problems: Any exceptions that occurred while executing in a
context where they could not be raised in the normal way. Typically
this is because OpenSSL has called into some Python code and requires a
return value. The exceptions are saved to be raised later when it is
possible to do so.
c C s
g | _ d S )N)Ú _problems)Úselfrs rs rt Ú__init__ s z!_CallbackExceptionHelper.__init__c C s6 | j r2y
tƒ W n tk
r$ Y nX | j jdƒ‚dS )z�
Raise an exception from the OpenSSL error queue or that was previously
captured whe running a callback.
r N)r� Ú_raise_current_errorre Úpop)r‚ rs rs rt Úraise_if_problem s
z)_CallbackExceptionHelper.raise_if_problemN)rp rq rr r rƒ r† rs rs rs rt r€
s
r€ c @ s e Zd ZdZdd„ ZdS )Ú
_VerifyHelperz^
Wrap a callback such that it can be used as a certificate verification
callback.
c s2 t jˆƒ tˆ ƒ‡ ‡fdd„ƒ}tjd|ƒˆ_d S )Nc s° t j|ƒ}t j|ƒ tj|ƒ}t j|ƒ}t j|ƒ}t jƒ }t j||ƒ}t j
| }yˆ ||||| ƒ} W n, tk
r� }
zˆjj
|
ƒ dS d }
~
X nX | r¨t j|t jƒ dS dS d S )Nr ru )Ú_libZX509_STORE_CTX_get_current_certÚX509_up_refr Ú_from_raw_x509_ptrZX509_STORE_CTX_get_errorZX509_STORE_CTX_get_error_depthZ"SSL_get_ex_data_X509_STORE_CTX_idxZX509_STORE_CTX_get_ex_datarn Ú_reverse_mappingÚ Exceptionr� ÚappendZX509_STORE_CTX_set_errorZ X509_V_OK)ÚokZ store_ctxZx509ÚcertZerror_numberZerror_depthÚindexÚsslZ
connectionÚresultÚe)Úcallbackr‚ rs rt Úwrapper2 s$
z'_VerifyHelper.__init__..wrapperzint (*)(int, X509_STORE_CTX *))r€ rƒ r Ú_ffir” )r‚ r” r• rs )r” r‚ rt rƒ / s
z_VerifyHelper.__init__N)rp rq rr r rƒ rs rs rs rt r‡ ) s r‡ c @ s e Zd ZdZdd„ ZdS )Ú_NpnAdvertiseHelperzT
Wrap a callback such that it can be used as an NPN advertisement callback.
c s2 t jˆƒ tˆ ƒ‡ ‡fdd„ƒ}tjd|ƒˆ_d S )Nc s ynt j| }ˆ |ƒ}djtjdd„ |D ƒƒƒ}tjdt|ƒƒtjd|ƒg|_|jd d |d<