%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyc

�
�|�Jc@s~dZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZddlmZmZmZmZmZmZdd	lmZmZmZmZdd
lmZmZmZddlmZm Z m!Z!ddl"m#Z#dd
l$m%Z%m&Z&ddl$m'Z'm(Z(m)Z)m*Z*m+Z+yddlm,Z,Wne-k
r�e.Z,nXyddlm/Z/Wne-k
r�e.Z/nXyddlm0Z0Wne-k
r�e.Z0nXd�Z1de#fd��YZ2de#fd��YZ3de#fd��YZ4de#fd��YZ5d�Z6de#fd��YZ7e8dkrze	�ndS( s 
Unit tests for L{OpenSSL.SSL}.
i����(tplatform(tsocket(tmakedirs(tjoin(tmain(tTYPE_RSAtFILETYPE_PEMtPKeytdump_privatekeytload_certificatetload_privatekey(t
WantReadErrortContexttContextTypet
ConnectiontConnectionTypetError(tSSLv2_METHODtSSLv3_METHODt
SSLv23_METHODtTLSv1_METHOD(tOP_NO_SSLv2tOP_NO_SSLv3tOP_SINGLE_DH_USE(tVERIFY_PEERtVERIFY_FAIL_IF_NO_PEER_CERTtVERIFY_CLIENT_ONCE(tTestCase(tcleartextCertificatePEMtcleartextPrivateKeyPEM(tclient_cert_pemtclient_key_pemtserver_cert_pemtserver_key_pemt
root_cert_pem(tOP_NO_QUERY_MTU(tOP_COOKIE_EXCHANGE(tOP_NO_TICKETcCs�t�}|jd�|jd�t�}|jt�|jd|j�df�|jt�|j�d}|j	d�|j
d�dks�t�|j	d�|j
d�dks�t�|jt�|jt�||fS(	sQ
    Establish and return a pair of network sockets connected to each other.
    tiis	127.0.0.1txity(R&i(RtbindtlistentsetblockingtFalset
connect_extgetsocknametTruetaccepttsendtrecvtAssertionError(tporttclienttserver((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytsocket_pair#s	

	





tContextTestscBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zedkrln	d�Z
d
�Zd�Zd�ZRS(s0
    Unit tests for L{OpenSSL.SSL.Context}.
    cCsQx$ttttgD]}t|�qW|jttd�|jttd�dS(s�
        L{Context} can be instantiated with one of L{SSLv2_METHOD},
        L{SSLv3_METHOD}, L{SSLv23_METHOD}, or L{TLSv1_METHOD}.
        R&i
N(RRRRRtassertRaisest	TypeErrort
ValueError(tselftmeth((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_methodEscCs'|jtt�|jtdt�dS(s�
        L{Context} and L{ContextType} refer to the same type object and can be
        used to create instances of that type.
        RN(tassertIdenticalRR
tassertConsistentTypeR(R<((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt	test_typePscCsLt�}|jtd�tt�}|j|�|jt|jd�dS(sU
        L{Context.use_privatekey} takes an L{OpenSSL.crypto.PKey} instance.
        i�R&N(Rtgenerate_keyRRRtuse_privatekeyR9R:(R<tkeytctx((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_use_privatekeyYs
	
cst�}|jtd�|j�}t|d�}d�|jtt|d���|j�g���fd�}t	t
�}|j|�|j|�|j
t��d�|j
t�ddt��|j
t�ddt��|j�ddd	�d	S(
s�
        L{Context.set_passwd_cb} accepts a callable which will be invoked when
        a private key is loaded from an encrypted PEM.
        i�twtfoobartblowfishcs�j|||f��S(N(tappend(tmaxlentverifytextra(t
calledWitht
passphrase(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytpassphraseCallbackrsiiiN(RRBRtmktemptfiletwriteRRtcloseRRt
set_passwd_cbtuse_privatekey_filet
assertTruetlent
isinstancetinttassertEqualtNone(R<RDtpemFiletfObjRPtcontext((RNROsH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_passwd_cbds 	


cs�t�\}}ttt�|�}|j�g��fd�}tt�}|j|�|jttt	��|j
ttt��t||�}|j
�xC�s�x6||fD](}y|j�Wq�tk
r�q�Xq�Wq�W|j��dS(s�
        L{Context.set_info_callback} accepts a callable which will be invoked
        when certain information about an SSL connection is available.
        cs�j|||f�dS(N(RJ(tconntwheretret(tcalled(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytinfo�sN(R7RRRtset_connect_statetset_info_callbacktuse_certificateR	RRRCR
Rtset_accept_statetdo_handshakeRRW(R<R6R5t	clientSSLReR_t	serverSSLtssl((RdsH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_info_callback~s(


	
cGst�\}}tt�}|j|�|jtd��t||�}|j�tt�}|jt	t
t��|jt
t
t��t||�}|j�xMtd�D]?}x6||fD](}	y|	j�Wq�tk
r�q�Xq�Wq�W|j�}
|j|
j�jd�dS(NcSs|S(N((Ratcertterrnotdepthtpreverify_ok((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt<lambda>�sisTesting Root CA(R7RRtload_verify_locationst
set_verifyRRRfRhR	RRRCR
RRitrangeRjRtget_peer_certificateR[tget_subjecttCN(R<targsR6R5t
clientContextRkt
serverContextRltiRmRo((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt_load_verify_locations_test�s.




cCsC|j�}t|d�}|jt�|j�|j|�dS(s�
        L{Context.load_verify_locations} accepts a file name and uses the
        certificates within for verification purposes.
        RGN(RQRRRSRRTR~(R<tcafileR^((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_load_verify_file�s


cCs,tt�}|jt|j|j��dS(sm
        L{Context.load_verify_locations} raises L{Error} when passed a
        non-existent cafile.
        N(RRR9RRtRQ(R<R{((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_load_verify_invalid_file�scCs_|j�}t|�t|d�}t|d�}|jt�|j�|jd|�dS(s�
        L{Context.load_verify_locations} accepts a directory name and uses
        the certificates within for verification purposes.
        s
c7adac82.0RGN(	RQRRRRRSRRTR~R\(R<tcapathRR^((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_load_verify_directory�s


tdarwintwin32cCs�tt�}|j�|jtd��t�}|jd�t||�}|j�|j	�|j
d�|j|jd��dS(s�
            L{Context.set_default_verify_paths} causes the platform-specific CA
            certificate locations to be used for verification purposes.
            cSs|S(N((RaRoRpRqRr((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyRsssverisign.comi�sGET / HTTP/1.0

iN(sverisign.comi�(
RRtset_default_verify_pathsRuRRtconnectRRfRjR1RWR2(R<R_R5Rk((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_default_verify_paths�s

	



cCsRtt�}|jt|jd�|jt|jd�|jt|jd�dS(sv
        L{Context.set_default_verify_paths} takes no arguments and raises
        L{TypeError} if given any.
        iR&N(RRR9R:R�R\(R<R_((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt'test_set_default_verify_paths_signaturescCs[tt�}|jt|j�|jt|jt��|jt|jt�t��dS(s�
        L{Context.add_extra_chain_cert} raises L{TypeError} if called with
        other than one argument or if called with an object which is not an
        instance of L{X509}.
        N(RRR9R:tadd_extra_chain_certtobject(R<R_((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt&test_add_extra_chain_cert_invalid_certscCs&tt�}|jttt��dS(sv
        L{Context.add_extra_chain_cert} accepts an L{X509} instance to add to
        the certificate chain.
        N(RRR�R	RR(R<R_((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_add_extra_chain_cert%s(sdarwinswin32(t__name__t
__module__t__doc__R>RARFR`RnR~R�R�R�RR�R�R�R�(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR8As 						"	&	
	
			
	tConnectionTestscBseZdZd�ZRS(s3
    Unit tests for L{OpenSSL.SSL.Connection}.
    cCs6|jtt�tt�}|jtd|d�dS(s�
        L{Connection} and L{ConnectionType} refer to the same type object and
        can be used to create instances of that type.
        RN(R?RRRRR@R\(R<RE((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyRA5s(R�R�R�RA(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR�1st
ErrorTestscBseZdZd�ZRS(s.
    Unit tests for L{OpenSSL.SSL.Error}.
    cCs-|jttt��|jtjd�dS(s0
        L{Error} is an exception type.
        RN(RWt
issubclassRt	ExceptionR[R�(R<((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyRADs(R�R�R�RA(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR�@stConstantsTestscBsVeZdZedk	r$d�Znedk	r<d�Znedk	rTd�Z	nRS(s�
    Tests for the values of constants exposed in L{OpenSSL.SSL}.

    These are values defined by OpenSSL intended only to be used as flags to
    OpenSSL APIs.  The only assertions it seems can be made about them is
    their values.
    cCs|jtd�dS(s�
            The value of L{OpenSSL.SSL.OP_NO_QUERY_MTU} is 0x1000, the value of
            I{SSL_OP_NO_QUERY_MTU} defined by I{openssl/ssl.h}.
            iN(R[R#(R<((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_op_no_query_mtuWscCs|jtd�dS(s�
            The value of L{OpenSSL.SSL.OP_COOKIE_EXCHANGE} is 0x2000, the value
            of I{SSL_OP_COOKIE_EXCHANGE} defined by I{openssl/ssl.h}.
            i N(R[R$(R<((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_op_cookie_exchangebscCs|jtd�dS(s�
            The value of L{OpenSSL.SSL.OP_NO_TICKET} is 0x4000, the value of
            I{SSL_OP_NO_TICKET} defined by I{openssl/ssl.h}.
            i@N(R[R%(R<((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_op_no_ticketmsN(
R�R�R�R#R\R�R$R�R%R�(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR�Ms

cCs|S(N((RaRoterrnumRqtok((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt	verify_cbxstMemoryBIOTestscBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(sA
    Tests for L{OpenSSL.SSL.Connection} using a memory BIO.
    cCs�tt�}|jttBtB�|jttBt	Bt
�|j�}|jt
tt��|jttt��|j�|jttt��t||�}|j�|S(sc
        Create a new server-side SSL L{Connection} object wrapped around
        C{sock}.
        (RRtset_optionsRRRRuRRRR�tget_cert_storeRCR
RR!RhR	R tcheck_privatekeytadd_certR"RRi(R<tsockt
server_ctxtserver_storetserver_conn((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt_servers

cCs�tt�}|jttBtB�|jttBt	Bt
�|j�}|jt
tt��|jttt��|j�|jttt��t||�}|j�|S(sc
        Create a new client-side SSL L{Connection} object wrapped around
        C{sock}.
        (RRR�RRRRuRRRR�R�RCR
RRRhR	RR�R�R"RRf(R<R�t
client_ctxtclient_storetclient_conn((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt_client�s

cCs�t}x�|r�t}x�||f||fgD]�\}}y|jd�}Wntk
r`nX||fSxEtr�y|jd�}Wntk
r�PqnXt}|j|�qnWq.Wq	WdS(s�
        Try to read application bytes from each of the two L{Connection}
        objects.  Copy bytes back and forth between their send/receive buffers
        for as long as there is anything to copy.  When there is nothing more
        to copy, return C{None}.  If one of them actually manages to deliver
        some application bytes, return a two-tuple of the connection from which
        the bytes were read and the bytes themselves.
        iiiNi(R/R,R2Rtbio_readt	bio_write(R<R�R�twrotetreadRStbytestdirty((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt	_loopback�s"		

	
cCs�|jd�}|jd�}|j|j�d�|j|j�d�|j|j�d�|j|j||�d�|j|j�d�|j|j�d�|j|j�d�|j	|j�|j��|j	|j�|j��|j
|j�|j��|j
|j�|j��d}|j|�|j	|j||�||f�|j|ddd��|j	|j||�||ddd�f�dS(s
        Two L{Connection}s which use memory BIOs can be manually connected by
        reading from the output of each and writing those bytes to the input of
        the other and in this way establish a connection and exchange
        application-level bytes with each other.
        sOne if by land, two if by sea.Ni����(R�R\R�R?t
master_keyt
client_randomt
server_randomR�tassertNotIdenticaltassertEqualstassertNotEqualsRS(R<R�R�timportant_message((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_memoryConnect�s,

c	Cs�t�\}}|j|�}|j|�}t}xO|s�t}x<||fD].}y|j�WqOtk
r|t}qOXqOWq6Wd}|j|�|jd�}|j	||�|ddd�}|j|�|jd�}|j	||�dS(s�
        Just like L{test_memoryConnect} but with an actual socket.

        This is primarily to rule out the memory BIO code as the source of
        any problems encountered while passing data over a L{Connection} (if
        this test fails, there must be a problem outside the memory BIO
        code, as no memory BIO is involved here).  Even though this isn't a
        memory BIO test, it's convenient to have it here.
        s,Help me Obi Wan Kenobi, you're my only hope.iNi����(
R7R�R�R,R/RjRR1R2R[(	R<R6R5R�R�testablishedRmR�tmsg((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_socketConnects&
	


cCsgtt�}t�}t||�}|jt|jd�|jt|jd�|jt|j�dS(s�
        Test that L{OpenSSL.SSL.bio_read} and L{OpenSSL.SSL.bio_write} don't
        work on L{OpenSSL.SSL.Connection}() that use sockets.
        idtfooN(	RRRRR9R:R�R�tbio_shutdown(R<R_R5Rk((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_socketOverridesMemory,s	cCs�|jd�}|jd�}|j||�d}|jd|�}|j||k�|j||�\}}|j||�|jt|�|�dS(s 
        If more bytes than can be written to the memory BIO are passed to
        L{Connection.send} at once, the number of bytes which were written is
        returned and that many bytes from the beginning of the input can be
        read from the other end of the connection.
        iiR'Ni�(	R�R\R�R�R1RWR?R�RX(R<R6R5tsizetsenttreceivertreceived((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_outgoingOverflow9scCsH|jd�}|j�|jt|jd�}|j|jt�dS(s{
        L{Connection.bio_shutdown} signals the end of the data stream from
        which the L{Connection} reads.
        iN(R�R\R�R9RR2R�t	__class__(R<R6te((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt
test_shutdownTs
cCs�|jd�}|jd�}|j|j�g�|j|j�g�|j�}||�}|j|j�g�|j|j�|�|j||�|j|j�|�|j|j�|�dS(s
        Verify the return value of the C{get_client_ca_list} method for server and client connections.

        @param func: A function which will be called with the server context
            before the client and server are connected to each other.  This
            function should specify a list of CAs for the server to send to the
            client and return that same list.  The list will be used to verify
            that C{get_client_ca_list} returns the proper value at various
            times.
        N(R�R\R�R[tget_client_ca_listtget_contextR�(R<tfuncR6R5REtexpected((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt_check_client_ca_listascCsXtt�}|jt|jd�|jt|jdg�|j|jg�d�dS(s�
        L{Context.set_client_ca_list} raises a L{TypeError} if called with a
        non-list or a list that contains objects other than X509Names.
        tspamN(RRR9R:tset_client_ca_listR?R\(R<RE((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_client_ca_list_errorsyscCsd�}|j|�dS(s
        If passed an empty list, L{Context.set_client_ca_list} configures the
        context to send no CA names to the client and, on both the server and
        client sides, L{Connection.get_client_ca_list} returns an empty list
        after the connection is set up.
        cSs|jg�gS(N(R�(RE((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytno_ca�s
N(R�(R<R�((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_empty_ca_list�s	cs;ttt�}|j���fd�}|j|�dS(sK
        If passed a list containing a single X509Name,
        L{Context.set_client_ca_list} configures the context to send that CA
        name to the client and, on both the server and client sides,
        L{Connection.get_client_ca_list} returns a list containing that
        X509Name after the connection is set up.
        cs|j�g��gS(N(R�(RE(tcadesc(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt	single_ca�sN(R	RR"RxR�(R<tcacertR�((R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_one_ca_list�scsYttt�}ttt�}|j��|j����fd�}|j|�dS(sW
        If passed a list containing multiple X509Name objects,
        L{Context.set_client_ca_list} configures the context to send those CA
        names to the client and, on both the server and client sides,
        L{Connection.get_client_ca_list} returns a list containing those
        X509Names after the connection is set up.
        cs��g}|j|�|S(N(R�(REtL(tcldesctsedesc(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytmultiple_ca�s
N(R	RR RxR�(R<tsecerttclcertR�((R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_multiple_ca_list�scswttt�}ttt�}ttt�}|j��|j��|j�����fd�}|j|�dS(s�
        If called multiple times, only the X509Names passed to the final call
        of L{Context.set_client_ca_list} are used to configure the CA names
        sent to the client.
        cs*|j��g�|j�g��gS(N(R�(RE(R�R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt
changed_ca�sN(R	RR"R RxR�(R<R�R�R�R�((R�R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_reset_ca_list�scsYttt�}ttt�}|j��|j����fd�}|j|�dS(s�
        If the list passed to L{Context.set_client_ca_list} is mutated
        afterwards, this does not affect the list of CA names sent to the
        client.
        cs-�g}|j�g�|j���gS(N(R�RJ(RER�(R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt
mutated_ca�s	
N(R	RR"R RxR�(R<R�R�R�((R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_mutated_ca_list�scCsatt�}ttt�}|jt|j�|jt|jd�|jt|j||�dS(s�
        L{Context.add_client_ca} raises L{TypeError} if called with a non-X509
        object or with a number of arguments other than one.
        R�N(RRR	RR"R9R:t
add_client_ca(R<RER�((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_add_client_ca_errors�s
cs>ttt���j����fd�}|j|�dS(s~
        A certificate's subject can be added as a CA to be sent to the client
        with L{Context.add_client_ca}.
        cs|j���gS(N(R�(RE(R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR��s
N(R	RR"RxR�(R<R�((R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_one_add_client_ca�scs_ttt��ttt���j���j������fd�}|j|�dS(s�
        Multiple CA names can be sent to the client by calling
        L{Context.add_client_ca} with multiple X509 objects.
        cs$|j��|j����gS(N(R�(RE(R�R�R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR�s

N(R	RR"R RxR�(R<R�((R�R�R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_multiple_add_client_ca�scszttt�}ttt�}ttt��|j��|j���j������fd�}|j|�dS(s�
        A call to L{Context.set_client_ca_list} followed by a call to
        L{Context.add_client_ca} results in using the CA names from the first
        call and the CA name from the second call.
        cs-|j��g�|j�����gS(N(R�R�(RE(R�R�R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytmixed_set_add_cas
N(R	RR"R RxR�(R<R�R�R�((R�R�R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_and_add_client_ca
scszttt�}ttt��ttt��|j���j���j�}����fd�}|j|�dS(s�
        A call to L{Context.set_client_ca_list} after a call to
        L{Context.add_client_ca} replaces the CA name specified by the former
        call with the names specified by the latter cal.
        cs4|j��|j�g�|j����gS(N(R�R�(RE(R�R�R�R�(sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pytset_replaces_add_ca-s

N(R	RR"R RxR�(R<R�R�R�((R�R�R�R�sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyttest_set_after_add_client_cas(R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyR�{s*			/	+	)	
		
			
						
		t__main__N(9R�tsysRRtosRtos.pathRtunittestRtOpenSSL.cryptoRRRRR	R
tOpenSSL.SSLRRR
RRRRRRRRRRRRRtOpenSSL.test.utilRtOpenSSL.test.test_cryptoRRRRR R!R"R#tImportErrorR\R$R%R7R8R�R�R�R�R�R�(((sH/opt/alt/python27/lib64/python2.7/site-packages/OpenSSL/test/test_ssl.pyt<module>sF.."(





	�
+	��

Zerion Mini Shell 1.0