Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/internet/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyc


0Nc
@shdZddlmZeZddlmZmZmZddl	m
Z
mZdddYZdefdYZ
d	d d
YZde
jfdYZd
e
jfdYZde
jfdYZde
jfdYZddlmZmZmZddlmZmZddlmZddlmZddd	dddddddg
ZdS(!sR
SSL transport. Requires PyOpenSSL (http://pyopenssl.sf.net).

SSL connections require a ContextFactory so they can create SSL contexts.
End users should only use the ContextFactory classes directly - for SSL
connections use the reactor.connectSSL/listenSSL and so on, as documented
in IReactorSSL.

All server context factories should inherit from ContextFactory, and all
client context factories should inherit from ClientContextFactory. At the
moment this is not enforced, but in the future it might be.

Future Plans:
    - split module so reactor-specific classes are in a separate module
i(tSSL(t
implementstimplementsOnlyt
implementedBy(ttcpt
interfacestContextFactorycBseZdZdZdZRS(s>A factory for SSL context objects, for server SSL connections.icCs
tdS(s4Return a SSL.Context object. override in subclasses.N(tNotImplementedError(tself((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt
getContext%s(t__name__t
__module__t__doc__tisClientR	(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR stDefaultOpenSSLContextFactorycBsMeZdZdZejejdZdZ	dZ
dZdZRS(sI
    L{DefaultOpenSSLContextFactory} is a factory for server-side SSL context
    objects.  These objects define certain parameters related to SSL
    handshakes and the subsequent connection.

    @ivar _contextFactory: A callable which will be used to create new
        context objects.  This is typically L{SSL.Context}.
    cCs2||_||_||_||_|jdS(s
        @param privateKeyFileName: Name of a file containing a private key
        @param certificateFileName: Name of a file containing a certificate
        @param sslmethod: The SSL method to use
        N(tprivateKeyFileNametcertificateFileNamet	sslmethodt_contextFactorytcacheContext(RRRRR((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt__init__5s
				cCsa|jdkr]|j|j}|jtj|j|j|j	|j
||_ndS(N(t_contexttNoneRRtset_optionsRtOP_NO_SSLv2tuse_certificate_fileRtuse_privatekey_fileR(Rtctx((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyRGscCs|jj}|d=|S(NR(t__dict__tcopy(Rtd((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt__getstate__RscCs
||_dS(N(R(Rtstate((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt__setstate__XscCs|jS(s(
        Return an SSL context.
        (R(R((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR	\sN(
R
RRRRRt
SSLv23_METHODtContextRRRR!R	(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR*s			tClientContextFactorycBs/eZdZdZejZejZdZ	RS(s"A context factory for SSL clients.icCs&|j|j}|jtj|S(N(RtmethodRRR(RR((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR	ns(
R
RRR
RR"R%R#RR	(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR$cs
		tClientcBs^eZdZeejgeejD]Z	e	ej
kr%e	^q%ddZdZ
RS(s
    I am an SSL client.
    cCs,||_tjj||||||dS(N(t
ctxFactoryRR&R(RthosttporttbindAddressR't	connectortreactor((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR~s	cCs.|j|j|jtjj|dS(N(tstartTLSR'tstartWritingRR&t_connectDone(R((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR/s
N(R
RRRRt
ISSLTransportRRR&tit
ITLSTransportRRR/(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR&vs
	2tServercBs$eZdZeejdZRS(s
    I am an SSL server.
    cOs-tjj||||j|jjdS(N(RR3RR-tserverR'(Rtargstkwargs((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyRs(R
RRRRR0R(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR3s
tPortcBs5eZdZeZdZddddZdZRS(s
    I am an SSL port.
    tTLSi2tcCs,tjj||||||||_dS(N(RR7RR'(RR)tfactoryR'tbacklogt	interfaceR,((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyRscCstjj||dS(s|
        Override the normal prefix to include an annotation indicating this is a
        port for TLS connections.
        s (TLS)(RR7t
_getLogPrefix(RR:((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR=sN(	R
RRR3t	transportt_typeRRR=(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR7s
t	ConnectorcBseZddZdZRS(cCs/||_tjj|||||||dS(N(tcontextFactoryRR@R(RR(R)R:RAttimeoutR*R,((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyRs	cCs(t|j|j|j|j||jS(N(R&R(R)R*RAR,(R((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt_makeTransportsN(R
RRRRC(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyR@s(tDistinguishedNametDNtCertificate(tCertificateRequesttPrivateCertificate(tKeyPair(tOpenSSLCertificateOptionsRDRERFRGRHRItCertificateOptionsN(((RtOpenSSLRtTruet	supportedtzope.interfaceRRRttwisted.internetRRRRR$R&R3R7R@ttwisted.internet._sslverifyRDRERFRGRHRIRJRKt__all__(((s8/usr/lib/python2.7/dist-packages/twisted/internet/ssl.pyt<module>s(
9