Your IP : 3.14.28.173
�
��f�_c+@s�dZddlZddlZddlZddlmZmZmZddlmZddlmZm Z m
Z
mZmZm
Z
ddlmZmZmZddlmZmZmZmZmZmZyddlmZWnek
r�YnXydd lmZWnek
rYnXdd
lmZmZmZmZyddlmZWnek
rjYnXddlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'dd
lm(Z(m)Z)m*Z*ddlm+Z+m,Z,m-Z-m.Z.ddlm/Z/e0ed�e1�d<ide-6de,6de+6de.6Z2yddlm3Z3e3Z4Wnek
ree5Z4YnXde2e3<ddl6m7Z8ddl6m9Z:ddl6m6Z6m;Z;m<Z<m=Z=ddl6m>Z>m?Z?ddl@Z@ddlAZAddlBZBejCrdgZDngZDdZEGdd�deF�ZGdd d!�ZHd"d#�ZIGd$d%�d%e�ZJGd&d'�d'e6�ZKe5e5eLee.e5eMeMe5d(d)� ZNd*d+�ZOd,ZPd-ZQd.d/�ZRd0d1�ZSe+e5d2d3�ZTd4d5�ZUdS(6uThis module provides some more Pythonic support for SSL.
Object types:
SSLSocket -- subtype of socket.socket which does SSL over the socket
Exceptions:
SSLError -- exception raised for I/O errors
Functions:
cert_time_to_seconds -- convert time string used for certificate
notBefore and notAfter functions to integer
seconds past the Epoch (the time values
returned from time.time())
fetch_server_certificate (HOST, PORT) -- fetch the certificate provided
by the server running on HOST at port PORT. No
validation of the certificate is performed.
Integer constants:
SSL_ERROR_ZERO_RETURN
SSL_ERROR_WANT_READ
SSL_ERROR_WANT_WRITE
SSL_ERROR_WANT_X509_LOOKUP
SSL_ERROR_SYSCALL
SSL_ERROR_SSL
SSL_ERROR_WANT_CONNECT
SSL_ERROR_EOF
SSL_ERROR_INVALID_ERROR_CODE
The following group define certificate requirements that one side is
allowing/requiring from the other side:
CERT_NONE - no certificates from the other side are required (or will
be looked at if provided)
CERT_OPTIONAL - certificates are not required, but if provided will be
validated, and if validation fails, the connection will
also fail
CERT_REQUIRED - certificates are required, and will be validated, and
if validation fails, the connection will also fail
The following constants identify various SSL protocol variants:
PROTOCOL_SSLv2
PROTOCOL_SSLv3
PROTOCOL_SSLv23
PROTOCOL_TLSv1
iN(uOPENSSL_VERSION_NUMBERuOPENSSL_VERSION_INFOuOPENSSL_VERSION(u_SSLContext(uSSLErroruSSLZeroReturnErroruSSLWantReadErroruSSLWantWriteErroruSSLSyscallErroruSSLEOFError(u CERT_NONEu
CERT_OPTIONALu
CERT_REQUIRED(uOP_ALLuOP_NO_SSLv2uOP_NO_SSLv3uOP_NO_TLSv1uOP_CIPHER_SERVER_PREFERENCEuOP_SINGLE_DH_USE(uOP_NO_COMPRESSION(uOP_SINGLE_ECDH_USE(uRAND_statusuRAND_addu
RAND_bytesuRAND_pseudo_bytes(uRAND_egd( uSSL_ERROR_ZERO_RETURNuSSL_ERROR_WANT_READuSSL_ERROR_WANT_WRITEuSSL_ERROR_WANT_X509_LOOKUPuSSL_ERROR_SYSCALLu
SSL_ERROR_SSLuSSL_ERROR_WANT_CONNECTu
SSL_ERROR_EOFuSSL_ERROR_INVALID_ERROR_CODE(uHAS_SNIuHAS_ECDHuHAS_NPN(uPROTOCOL_SSLv3uPROTOCOL_SSLv23uPROTOCOL_TLSv1uPROTOCOL_TLS(u_OPENSSL_API_VERSIONuPROTOCOL_TLSuPROTOCOL_SSLv23uTLSv1uSSLv23uSSLv3(uPROTOCOL_SSLv2uSSLv2(ugetnameinfo(uerror(usocketuAF_INETuSOCK_STREAMucreate_connection(u
SOL_SOCKETuSO_TYPEu
tls-uniqueu)DEFAULT:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2cBs|EeZdZdS(uCertificateErrorN(u__name__u
__module__u__qualname__(u
__locals__((u(/opt/alt/python33/lib64/python3.3/ssl.pyuCertificateError�suCertificateErroric CsDg}|sdS|jd�^}}|jd�}||krYtdt|���n|su|j�|j�kS|dkr�|jd�nY|jd�s�|jd�r�|jtj |��n"|jtj |�j
dd��x$|D]}|jtj |��q�Wtjdd j|�d
tj
�}|j|�S(uhMatching according to RFC 6125, section 6.4.3
http://tools.ietf.org/html/rfc6125#section-6.4.3
u.u*u,too many wildcards in certificate DNS name: u[^.]+uxn--u\*u[^.]*u\Au\.u\ZF(uFalseusplitucountuCertificateErrorurepruloweruappendu
startswithureuescapeureplaceucompileujoinu
IGNORECASEumatch( udnuhostnameu
max_wildcardsupatsuleftmostu remainderu wildcardsufragupat((u(/opt/alt/python33/lib64/python3.3/ssl.pyu_dnsname_match�s&"
&u_dnsname_matchcCs[|std��ng}|jdf�}xC|D];\}}|dkr4t||�r_dS|j|�q4q4W|s�xc|jdf�D]L}xC|D];\}}|dkr�t||�r�dS|j|�q�q�Wq�Wnt|�dkrtd|d jtt|��f��n;t|�dkrKtd
||df��ntd��dS(
u)Verify that *cert* (in decoded format as returned by
SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125
rules are followed, but IP addresses are not accepted for *hostname*.
CertificateError is raised on failure. On success, the function
returns nothing.
uempty or no certificateusubjectAltNameuDNSNusubjectu
commonNameiu&hostname %r doesn't match either of %su, uhostname %r doesn't match %riu=no appropriate commonName or subjectAltName fields were found( u
ValueErrorugetu_dnsname_matchuappendulenuCertificateErrorujoinumapurepr(ucertuhostnameudnsnamesusanukeyuvalueusub((u(/opt/alt/python33/lib64/python3.3/ssl.pyumatch_hostname�s.%umatch_hostnamecBs\|EeZdZdZdZdd�Zdd�Zd
ddddd�Z
d d
�ZdS(u
SSLContextu|An SSLContext holds various SSL-related configuration options and
data, such as certificates and possibly a private key.uprotocolcOs2tj||�}|tkr.|jt�n|S(N(u_SSLContextu__new__u_SSLv2_IF_EXISTSuset_ciphersu_DEFAULT_CIPHERS(uclsuprotocoluargsukwargsuself((u(/opt/alt/python33/lib64/python3.3/ssl.pyu__new__�suSSLContext.__new__cCs
||_dS(N(uprotocol(uselfuprotocol((u(/opt/alt/python33/lib64/python3.3/ssl.pyu__init__�suSSLContext.__init__c
Cs+td|d|d|d|d|d|�S(Nusockuserver_sideudo_handshake_on_connectusuppress_ragged_eofsuserver_hostnameu_context(u SSLSocket(uselfusockuserver_sideudo_handshake_on_connectusuppress_ragged_eofsuserver_hostname((u(/opt/alt/python33/lib64/python3.3/ssl.pyuwrap_socket�s
uSSLContext.wrap_socketcCs�t�}xp|D]h}t|d�}t|�dksIt|�dkrXtd��n|jt|��|j|�qW|j|�dS(Nuasciiii�u(NPN protocols must be 1 to 255 in length(u bytearrayubytesulenuSSLErroruappenduextendu_set_npn_protocols(uselfu
npn_protocolsuprotosuprotocolub((u(/opt/alt/python33/lib64/python3.3/ssl.pyuset_npn_protocolss
$uSSLContext.set_npn_protocolsN(uprotocolFT(u__name__u
__module__u__qualname__u__doc__u __slots__u__new__u__init__uFalseuTrueuNoneuwrap_socketuset_npn_protocols(u
__locals__((u(/opt/alt/python33/lib64/python3.3/ssl.pyu
SSLContext�su
SSLContextcBs�|EeZdZdZd?d?d?d@eed?dAe e
dd?dAd?d?d?d?dd�Zdd�Zd?dd�Z
dd?d d
�Zdd�Zd@d
d�Zdd�Zdd�Zdd�Zddd�Zd?dd�Zdd�Zddd�Zdddd�Zd?dd d!�Zddd"d#�Zd?dd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z d0d1�Z!d@d2d3�Z"d4d5�Z#d6d7�Z$d8d9�Z%d:d;�Z&d<d=d>�Z'd?S(Bu SSLSocketu�This class implements a subtype of socket.socket that wraps
the underlying OS socket in an SSL context when necessary, and
provides read and write methods over that channel.ic"Cs2|r||_n|r.|r.td��n|rJ|rJtd��n|r`|r`|}nt|�|_||j_|r�|jj|�n|r�|jj||�n|r�|jj|�n|r�|jj|�n||_||_ ||_
||_||_||_
|jtt�tkr?td��n|rZ|rZtd��n||_||_||_|
|_d}|dk r8tj|d|jd|jd|jd|j��|j|j ��y|j!�Wn=t"k
r$}z|j#t#j$kr�nWYdd}~XnXd}|j&�nA|dk rZtj|d|�ntj|d| d|
d|�d|_'d|_(||_)|r.yY|jj*|||�|_(|r�|j �}|d kr�td
��n|j+�nWq.t"k
r*}z|j,�|�WYdd}~Xq.XndS(
Nu5certfile must be specified for server-side operationsucertfile must be specifiedu!only stream sockets are supportedu4server_hostname can only be specified in client modeufamilyutypeuprotoufilenoguHdo_handshake_on_connect should not be specified for non-blocking socketsFT(-ucontextu
ValueErroru
SSLContextuverify_modeuload_verify_locationsuload_cert_chainuset_npn_protocolsuset_ciphersukeyfileucertfileu cert_reqsussl_versionuca_certsuciphersu
getsockoptu
SOL_SOCKETuSO_TYPEuSOCK_STREAMuNotImplementedErroruserver_sideuserver_hostnameudo_handshake_on_connectusuppress_ragged_eofsuFalseuNoneusocketu__init__ufamilyutypeuprotoufilenou
settimeoutu
gettimeoutugetpeernameusocket_erroruerrnouENOTCONNuTrueudetachu_closedu_sslobju
_connectedu_wrap_socketudo_handshakeuclose(uselfusockukeyfileucertfileuserver_sideu cert_reqsussl_versionuca_certsudo_handshake_on_connectufamilyutypeuprotoufilenousuppress_ragged_eofsu
npn_protocolsuciphersuserver_hostnameu_contextu connectedueutimeoutux((u(/opt/alt/python33/lib64/python3.3/ssl.pyu__init__s�
uSSLSocket.__init__cCstd|jj��dS(NuCan't dup() %s instances(uNotImplementedu __class__u__name__(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyuduphsu
SSLSocket.dupcCsdS(N((uselfumsg((u(/opt/alt/python33/lib64/python3.3/ssl.pyu_checkClosedlsuSSLSocket._checkClosedcCs�|j�yD|dk r1|jj||�}n|jj|pCd�}|SWn[tk
r�}z;|jdtkr�|jr�|dk r�dSdSn�WYdd}~XnXdS(uORead up to LEN bytes and return them.
Return zero-length string on EOF.iisN(u_checkCloseduNoneu_sslobjureaduSSLErroruargsu
SSL_ERROR_EOFusuppress_ragged_eofs(uselfulenubufferuvux((u(/opt/alt/python33/lib64/python3.3/ssl.pyureadps
uSSLSocket.readcCs|j�|jj|�S(uhWrite DATA to the underlying SSL channel. Returns
number of bytes of DATA actually transmitted.(u_checkClosedu_sslobjuwrite(uselfudata((u(/opt/alt/python33/lib64/python3.3/ssl.pyuwrite�s
uSSLSocket.writecCs|j�|jj|�S(u�Returns a formatted version of the data in the
certificate provided by the other end of the SSL channel.
Return None if no certificate was provided, {} if a
certificate was provided, but not validated.(u_checkClosedu_sslobjupeer_certificate(uselfubinary_form((u(/opt/alt/python33/lib64/python3.3/ssl.pyugetpeercert�s
uSSLSocket.getpeercertcCs3|j�|jstjr"dS|jj�SdS(N(u_checkClosedu_sslobju_ssluHAS_NPNuNoneuselected_npn_protocol(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyuselected_npn_protocol�s
uSSLSocket.selected_npn_protocolcCs(|j�|jsdS|jj�SdS(N(u_checkClosedu_sslobjuNoneucipher(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyucipher�s
uSSLSocket.ciphercCs(|j�|jsdS|jj�SdS(N(u_checkClosedu_sslobjuNoneucompression(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyucompression�s
uSSLSocket.compressioncCs�|j�|jr�|dkr5td|j��nx�y|jj|�}WnVtk
r�}z6|jdtkrzdS|jdtkr�dS�WYdd}~Xq8X|Sq8nt j
|||�SdS(Niu3non-zero flags not allowed in calls to send() on %s(u_checkClosedu_sslobju
ValueErroru __class__uwriteuSSLErroruargsuSSL_ERROR_WANT_READuSSL_ERROR_WANT_WRITEusocketusend(uselfudatauflagsuvux((u(/opt/alt/python33/lib64/python3.3/ssl.pyusend�s"
uSSLSocket.sendcCsb|j�|jr)td|j��n5|dkrHtj|||�Stj||||�SdS(Nu%sendto not allowed on instances of %s(u_checkClosedu_sslobju
ValueErroru __class__uNoneusocketusendto(uselfudatau
flags_or_addruaddr((u(/opt/alt/python33/lib64/python3.3/ssl.pyusendto�s
uSSLSocket.sendtocOstd|j��dS(Nu&sendmsg not allowed on instances of %s(uNotImplementedErroru __class__(uselfuargsukwargs((u(/opt/alt/python33/lib64/python3.3/ssl.pyusendmsg�suSSLSocket.sendmsgcCs�|j�|jr�|dkr5td|j��nt|�}d}x3||kr||j||d��}||7}qJW|Stj|||�SdS(Niu6non-zero flags not allowed in calls to sendall() on %s(u_checkClosedu_sslobju
ValueErroru __class__ulenusendusocketusendall(uselfudatauflagsuamountucountuv((u(/opt/alt/python33/lib64/python3.3/ssl.pyusendall�s
uSSLSocket.sendallicCsY|j�|jrB|dkr5td|j��n|j|�Stj|||�SdS(Niu3non-zero flags not allowed in calls to recv() on %s(u_checkClosedu_sslobju
ValueErroru __class__ureadusocketurecv(uselfubuflenuflags((u(/opt/alt/python33/lib64/python3.3/ssl.pyurecv�s
uSSLSocket.recvcCs�|j�|r+|dkr+t|�}n|dkr@d}n|jr{|dkrktd|j��n|j||�Stj||||�SdS(Niiu8non-zero flags not allowed in calls to recv_into() on %s( u_checkCloseduNoneulenu_sslobju
ValueErroru __class__ureadusocketu recv_into(uselfubufferunbytesuflags((u(/opt/alt/python33/lib64/python3.3/ssl.pyu recv_into�s
uSSLSocket.recv_intocCs@|j�|jr)td|j��ntj|||�SdS(Nu'recvfrom not allowed on instances of %s(u_checkClosedu_sslobju
ValueErroru __class__usocketurecvfrom(uselfubuflenuflags((u(/opt/alt/python33/lib64/python3.3/ssl.pyurecvfrom�s
uSSLSocket.recvfromcCsC|j�|jr)td|j��ntj||||�SdS(Nu,recvfrom_into not allowed on instances of %s(u_checkClosedu_sslobju
ValueErroru __class__usocketu
recvfrom_into(uselfubufferunbytesuflags((u(/opt/alt/python33/lib64/python3.3/ssl.pyu
recvfrom_intos
uSSLSocket.recvfrom_intocOstd|j��dS(Nu&recvmsg not allowed on instances of %s(uNotImplementedErroru __class__(uselfuargsukwargs((u(/opt/alt/python33/lib64/python3.3/ssl.pyurecvmsg suSSLSocket.recvmsgcOstd|j��dS(Nu+recvmsg_into not allowed on instances of %s(uNotImplementedErroru __class__(uselfuargsukwargs((u(/opt/alt/python33/lib64/python3.3/ssl.pyurecvmsg_into
suSSLSocket.recvmsg_intocCs(|j�|jr |jj�SdSdS(Ni(u_checkClosedu_sslobjupending(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyupendings
uSSLSocket.pendingcCs'|j�d|_tj||�dS(N(u_checkCloseduNoneu_sslobjusocketushutdown(uselfuhow((u(/opt/alt/python33/lib64/python3.3/ssl.pyushutdowns
uSSLSocket.shutdowncCs?|jr%|jj�}d|_|Stdt|���dS(NuNo SSL wrapper around (u_sslobjushutdownuNoneu
ValueErrorustr(uselfus((u(/opt/alt/python33/lib64/python3.3/ssl.pyuunwraps
uSSLSocket.unwrapcCsd|_tj|�dS(N(uNoneu_sslobjusocketu_real_close(uself((u(/opt/alt/python33/lib64/python3.3/ssl.pyu_real_close%s uSSLSocket._real_closecCsT|j�}z3|dkr1|r1|jd�n|jj�Wd|j|�XdS(uPerform a TLS/SSL handshake.gN(u
gettimeoutu
settimeoutuNoneu_sslobjudo_handshake(uselfublockutimeout((u(/opt/alt/python33/lib64/python3.3/ssl.pyudo_handshake*suSSLSocket.do_handshakecCs�|jrtd��n|jr0td��n|jj|d|j�|_ya|rltj ||�}nd}tj||�|s�|jr�|j
�nd|_n|SWntk
r�d|_�YnXdS(Nu!can't connect in server-side modeu/attempt to connect already-connected SSLSocket!FT(userver_sideu
ValueErroru
_connecteducontextu_wrap_socketuFalseuserver_hostnameu_sslobjusocketu
connect_exuNoneuconnectudo_handshake_on_connectudo_handshakeuTrueusocket_error(uselfuaddru
connect_exurc((u(/opt/alt/python33/lib64/python3.3/ssl.pyu
_real_connect5s$
uSSLSocket._real_connectcCs|j|d�dS(uQConnects to remote ADDR, and then wraps the connection in
an SSL channel.NF(u
_real_connectuFalse(uselfuaddr((u(/opt/alt/python33/lib64/python3.3/ssl.pyuconnectLsuSSLSocket.connectcCs|j|d�S(uQConnects to remote ADDR, and then wraps the connection in
an SSL channel.T(u
_real_connectuTrue(uselfuaddr((u(/opt/alt/python33/lib64/python3.3/ssl.pyu
connect_exQsuSSLSocket.connect_excCsItj|�\}}|jj|d|jd|jdd�}||fS(u�Accepts a new connection from a remote client, and returns
a tuple containing that new connection wrapped with a server-side
SSL channel, and the address of the remote client.udo_handshake_on_connectusuppress_ragged_eofsuserver_sideT(usocketuacceptucontextuwrap_socketudo_handshake_on_connectusuppress_ragged_eofsuTrue(uselfunewsockuaddr((u(/opt/alt/python33/lib64/python3.3/ssl.pyuacceptVs uSSLSocket.acceptu
tls-uniquecCs_|tkrtd��n|dkr?tdj|���n|jdkrRdS|jj�S(u�Get channel binding data for current connection. Raise ValueError
if the requested `cb_type` is not supported. Return bytes of the data
or None if the data is not available (e.g. before the handshake).
u Unsupported channel binding typeu
tls-uniqueu({0} channel binding type not implementedN(uCHANNEL_BINDING_TYPESu
ValueErroruNotImplementedErroruformatu_sslobjuNoneu
tls_unique_cb(uselfucb_type((u(/opt/alt/python33/lib64/python3.3/ssl.pyuget_channel_bindingbsuSSLSocket.get_channel_bindingNFT((u__name__u
__module__u__qualname__u__doc__uNoneuFalseu CERT_NONEuPROTOCOL_TLSuTrueuAF_INETuSOCK_STREAMu__init__udupu_checkClosedureaduwriteugetpeercertuselected_npn_protocolucipherucompressionusendusendtousendmsgusendallurecvu recv_intourecvfromu
recvfrom_intourecvmsgurecvmsg_intoupendingushutdownuunwrapu_real_closeudo_handshakeu
_real_connectuconnectu
connect_exuacceptuget_channel_binding(u
__locals__((u(/opt/alt/python33/lib64/python3.3/ssl.pyu SSLSocketsJ P
u SSLSocketc
CsCtd|d|d|d|d|d|d|d|d |d
| �
S(Nusockukeyfileucertfileuserver_sideu cert_reqsussl_versionuca_certsudo_handshake_on_connectusuppress_ragged_eofsuciphers(u SSLSocket(
usockukeyfileucertfileuserver_sideu cert_reqsussl_versionuca_certsudo_handshake_on_connectusuppress_ragged_eofsuciphers((u(/opt/alt/python33/lib64/python3.3/ssl.pyuwrap_socketrsuwrap_socketcCs%ddl}|j|j|d��S(u�Takes a date-time string in standard ASN1_print form
("MON DAY 24HOUR:MINUTE:SEC YEAR TIMEZONE") and return
a Python time value in seconds past the epoch.iNu%b %d %H:%M:%S %Y GMT(utimeumktimeustrptime(u cert_timeutime((u(/opt/alt/python33/lib64/python3.3/ssl.pyucert_time_to_seconds�sucert_time_to_secondsu-----BEGIN CERTIFICATE-----u-----END CERTIFICATE-----cCs?ttj|�dd�}tdtj|d�dtdS(u[Takes a certificate in binary DER format and returns the
PEM version of it as a string.uASCIIustrictu
i@(ustrubase64ustandard_b64encodeu
PEM_HEADERutextwrapufillu
PEM_FOOTER(uder_cert_bytesuf((u(/opt/alt/python33/lib64/python3.3/ssl.pyuDER_cert_to_PEM_cert�suDER_cert_to_PEM_certcCs�|jt�s"tdt��n|j�jt�sJtdt��n|j�tt�tt��}tj|j dd��S(uhTakes a certificate in ASCII PEM format and returns the
DER-encoded version of it as a byte sequenceu(Invalid PEM encoding; must start with %su&Invalid PEM encoding; must end with %suASCIIustrict(
u
startswithu
PEM_HEADERu
ValueErrorustripuendswithu
PEM_FOOTERulenubase64udecodebytesuencode(upem_cert_stringud((u(/opt/alt/python33/lib64/python3.3/ssl.pyuPEM_cert_to_DER_cert�s
#uPEM_cert_to_DER_certcCst|\}}|dk r!t}nt}t|�}t|d|d|d|�}|jd�}|j�t|�S(u�Retrieve the certificate from the server at the specified address,
and return it as a PEM-encoded string.
If 'ca_certs' is specified, validate the server cert against it.
If 'ssl_version' is specified, use it in the connection attempt.ussl_versionu cert_reqsuca_certsNT( uNoneu
CERT_REQUIREDu CERT_NONEucreate_connectionuwrap_socketugetpeercertuTrueucloseuDER_cert_to_PEM_cert(uaddrussl_versionuca_certsuhostuportu cert_reqsusudercert((u(/opt/alt/python33/lib64/python3.3/ssl.pyuget_server_certificate�s
uget_server_certificatecCstj|d�S(Nu <unknown>(u_PROTOCOL_NAMESuget(u
protocol_code((u(/opt/alt/python33/lib64/python3.3/ssl.pyuget_protocol_name�suget_protocol_name(Vu__doc__utextwrapureu_ssluOPENSSL_VERSION_NUMBERuOPENSSL_VERSION_INFOuOPENSSL_VERSIONu_SSLContextuSSLErroruSSLZeroReturnErroruSSLWantReadErroruSSLWantWriteErroruSSLSyscallErroruSSLEOFErroru CERT_NONEu
CERT_OPTIONALu
CERT_REQUIREDuOP_ALLuOP_NO_SSLv2uOP_NO_SSLv3uOP_NO_TLSv1uOP_CIPHER_SERVER_PREFERENCEuOP_SINGLE_DH_USEuOP_NO_COMPRESSIONuImportErroruOP_SINGLE_ECDH_USEuRAND_statusuRAND_addu
RAND_bytesuRAND_pseudo_bytesuRAND_egduSSL_ERROR_ZERO_RETURNuSSL_ERROR_WANT_READuSSL_ERROR_WANT_WRITEuSSL_ERROR_WANT_X509_LOOKUPuSSL_ERROR_SYSCALLu
SSL_ERROR_SSLuSSL_ERROR_WANT_CONNECTu
SSL_ERROR_EOFuSSL_ERROR_INVALID_ERROR_CODEuHAS_SNIuHAS_ECDHuHAS_NPNuPROTOCOL_SSLv3uPROTOCOL_SSLv23uPROTOCOL_TLSv1uPROTOCOL_TLSu_OPENSSL_API_VERSIONugetattruglobalsu_PROTOCOL_NAMESuPROTOCOL_SSLv2u_SSLv2_IF_EXISTSuNoneusocketugetnameinfou_getnameinfouerrorusocket_erroruAF_INETuSOCK_STREAMucreate_connectionu
SOL_SOCKETuSO_TYPEubase64u tracebackuerrnouHAS_TLS_UNIQUEuCHANNEL_BINDING_TYPESu_DEFAULT_CIPHERSu
ValueErroruCertificateErroru_dnsname_matchumatch_hostnameu
SSLContextu SSLSocketuFalseuTrueuwrap_socketucert_time_to_secondsu
PEM_HEADERu
PEM_FOOTERuDER_cert_to_PEM_certuPEM_cert_to_DER_certuget_server_certificateuget_protocol_name(((u(/opt/alt/python33/lib64/python3.3/ssl.pyu<module>7s�..
"
@"
" 1)%�g
?>