Spade
Mini Shell
| Directory:~$ /proc/self/root/usr/lib64/python2.7/site-packages/M2Crypto/SSL/ |
| [Home] [System Details] [Kill Me] |
�
�1Mc@s\dZdddddgZddljjZddlZddlmZdd lm Z dd
l
mZddlZddlm
Z
mZddlmZd
�Zddejjej�d�Zddejjej�d�Zddejjed�Zddejjdd�Zddd��YZddd��YZdefd��YZdS(sv
Make Twisted use M2Crypto for SSL
Copyright (c) 2004-2007 Open Source Applications Foundation.
All rights reserved.
t
connectSSLt
connectTCPt listenSSLt listenTCPtTLSProtocolWrapperi����N(tProtocolWrapper(t
ITLSTransport(t
implements(tm2tX509(tCheckercCsdS(Ni((tpeerX509texpectedHost((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt"_alwaysSucceedsPostConnectionChecksic s=tj|�}��fd�|_|j|||||�S(s~
A convenience function to start an SSL/TLS connection using Twisted.
See IReactorSSL interface in Twisted.
cs%t||ddddd�d��S(NtstartPassThroughitclientitcontextFactorytpostConnectionCheck(R(tfactorytwrappedProtocol(RR(sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt<lambda>$s(tpoliciestWrappingFactorytprotocolR( thosttportRRttimeouttbindAddresstreactorRtwrappingFactory((RRsI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRs cs:tj|�}�fd�|_|j|||||�S(s�
A convenience function to start a TCP connection using Twisted.
NOTE: You must call startTLS(ctx) to go into SSL/TLS mode.
See IReactorTCP interface in Twisted.
cs%t||ddddddd��S(NRiRRR(RtNone(RR(R(sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR9s(RRRR(RRRRRRRR((RsI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR.s
itcs:tj|�}��fd�|_|j||||�S(s~
A convenience function to listen for SSL/TLS connections using Twisted.
See IReactorSSL interface in Twisted.
cs%t||ddddd�d��S(NRiRRR(R(RR(RR(sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRLs(RRRR(RRRtbacklogt interfaceRRR((RRsI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRCscs7tj|�}�fd�|_|j||||�S(s�
A convenience function to listen for TCP connections using Twisted.
NOTE: You must call startTLS(ctx) to go into SSL/TLS mode.
See IReactorTCP interface in Twisted.
cs%t||ddddddd��S(NRiRiRR(RR(RR(R(sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRas(RRRR(RRR
R!RRR((RsI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRVs
t _BioProxycBs2eZdZejZd�Zd�Zd�ZRS(s�
The purpose of this class is to eliminate the __del__ method from
TLSProtocolWrapper, and thus letting it be garbage collected.
cCs
||_dS(N(tbio(tselfR#((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt__init__sscCs|jS(N(R#(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt_ptrvscCs&|jdk r"|j|j�ndS(N(R#Rtm2_bio_free_all(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt__del__ys( t__name__t
__module__t__doc__Rtbio_free_allR'R%R&R((((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR"ks
t _SSLProxycBs2eZdZejZd�Zd�Zd�ZRS(s�
The purpose of this class is to eliminate the __del__ method from
TLSProtocolWrapper, and thus letting it be garbage collected.
cCs
||_dS(N(tssl(R$R.((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR%�scCs|jS(N(R.(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR&�scCs&|jdk r"|j|j�ndS(N(R.Rtm2_ssl_free(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR(�s( R)R*R+Rtssl_freeR/R%R&R((((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR-~s
cBs�eZdZee�d�Zd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd �Z
d
�Zd�Zdd
d�Zdd�ZRS(s�
A SSL/TLS protocol wrapper to be used with Twisted. Typically
you would not use this class directly. Use connectTCP,
connectSSL, listenTCP, listenSSL functions defined above,
which will hook in this class.
cCs�||_||_d|_d|_d|_d|_||_d|_|dkr`t |_
n ||_
|s�|j|j��ndS(s�
@param factory:
@param wrappedProtocol:
@param startPassThrough: If true we won't encrypt at all.
Need to
call startTLS() later to switch to
SSL/TLS.
@param client: True if this should be a client
protocol.
@param contextFactory: Factory that creates SSL.Context
objects.
The called function is getContext().
@param postConnectionCheck: The post connection check callback that
will be called just after connection
has
been established but before any real
data
has been exchanged. The first argument
to
this function is an X509 object, the
second
is the expected host name string.
RiN(
RRtdatat encryptedt
tlsStartedtcheckedtisClientt helloDoneRR
RtstartTLSt
getContext(R$RRRRRR((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR%�s cCsst|dd�r9d|_d|_d|_d|_nd|_d|_d|_d|_ d|_
d|_dS(sI
Clear this instance, after which it is ready for reuse.
R3iRiN(tgetattrRtsslBioR.tinternalBiot
networkBioR1R2R3R4R5R6(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pytclear�s cCs�|jrtd�n||_tjtj��|_tj|jd�ttjtj���|_ tj|j j
�d�tj|j|j j
��ttjtj���|_
ttj|jj��|_|jr�tj|jj
��ntj|jj
��tj|jj
�|j|j�tj|j
j
�|jj
�tj�tj|jj
��}tj|jj
�|tjBtjB�d|_dS(sq
Start SSL/TLS. If this is not called, this instance just passes
data
through untouched.
sTLS already
startediiN(R3t ExceptiontctxRtbio_newt bio_s_bioR;tbio_set_write_buf_sizeR"R<R&tbio_make_bio_pairt bio_f_sslR:R-tssl_newR.R5tssl_set_connect_statetssl_set_accept_statetssl_set_biotbio_set_ssltbio_noclosetssl_get_modetssl_set_modetSSL_MODE_ENABLE_PARTIAL_WRITEt#SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER(R$R?tmode((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR7�s( "(
cCs�|jstj||�dSy,|j|�}tj||�d|_WnGtjjk
r�}tj |j
j��|jdf|_|�nXdS(Nii(
R3Rtwritet_encryptR6tM2CryptotBIOtBIOErrorRtssl_get_verify_resultR.R&targs(R$R1t
encryptedDatate((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRPs
(cCs@|js&tj|dj|��dS|jdj|��dS(NR(R3Rt
writeSequencetjoinRP(R$R1((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRYs cCstj|�dS(N(RtloseConnection(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR[scCs:tj|�|jr6|jr6|jr6|j�ndS(N(RtconnectionMadeR3R5R6t_clientHello(R$((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR\s
cCs�|jstj||�dS|j|7_yhxa|j�}|j�|j�}tj||�tj||�|dkr2|dkr2Pq2q2WnGtj j
k
r�}tj|j
j��|jdf|_|�nXdS(NRi(R3RtdataReceivedR2t_decryptt_checkRQRPRRRSRTRRUR.R&RV(R$R1t
decryptedDataRWRX((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR^
s
(cCs|j�tj||�dS(N(R=RtconnectionLost(R$treason((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRb:s
cCs�|jr�tj|jj��r�tj|jj��}|dk r[tj|d�}n|jrw|j j
d}n|j j�j}|j
||�s�tjd�nd|_ndS(Niispost connection
check(R4Rtssl_is_init_finishedR.R&tssl_get_peer_certRR R5t transporttaddrtgetPeerRRR
tSSLVerificationError(R$tx509R((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR`>s" cCs}y/|jdd�}tj||�d|_WnGtjjk
rx}tj|j j
��|jdf|_|�nXdS(NtclientHelloii(RQRRPR6RRRSRTRRUR.R&RV(R$RWRX((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR]Ks
(RicCs d}|j|7_|jj�}|jj�}tj}tj}tj}tj} tj }
x�||�}|dkr�|jdks�|r�|||j�}|dkr�q�|j||_n| |�}
|
r|
||
�}|dk r||7}qqcPqc|S(NRi(R1R:R&R<Rtbio_ctrl_get_write_guaranteet bio_writetbio_should_retrytbio_ctrl_pendingtbio_readR(R$R1RkRWt sslBioPtrR<tm2bio_ctrl_get_write_guaranteetm2bio_writetm2bio_should_retrytm2bio_ctrl_pendingt
m2bio_readtgtrtpendingtd((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyRQXs0 !
cCs|j|7_d}|jj�}|jj�}tj}tj}tj}tj}tj } x�||�}
|
dkr�|jdkr�|||j�}|dkr�q�|j||_n||�}|r�| ||�}
|
dk r�||
7}q�qcPqc|S(NRi(R2R:R&R<RRlRmRnRoRpR(R$R1RaRqR<RrRsRtRuRvRwRxRyRz((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR_zs0
(R)R*R+RRR%R=R7RPRYR[R\R^RbR`R]RQR_(((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyR�s
, (
"(((R+t__all__ttwisted.protocols.policiest protocolsRttwisted.internet.reactorttwistedRttwisted.internet.interfacesRtzope.interfaceRRRRR tM2Crypto.SSLR
R
RtinternetRRRRRR"R-R(((sI/usr/lib64/python2.7/site-packages/M2Crypto/SSL/TwistedProtocolWrapper.pyt<module>s6