ó ñ1Mc@sædZddlZddlmZddlmZdefd„ƒYZejeƒddd„ƒYZ d e fd „ƒYZ d e fd „ƒYZ d d„Z de fd„ƒYZ de fd„ƒYZde fd„ƒYZdS(scM2Crypto wrapper for OpenSSL BIO API. Copyright (c) 1999-2004 Ng Pheng Siong. All rights reserved.iÿÿÿÿN(tbio_do_handshake(tStringIOtBIOErrorcBseZRS((t__name__t __module__(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR stBIOcBsÈeZdZejZdddd„Zd„Zd„Z e Z d„Z d„Z dd„Z dd „Zd d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(s)Abstract object interface to the BIO API.icCs1||_||_||_d|_d|_dS(Ni(tbiot_pyfreet _close_cbtclosedt write_closed(tselfRRR((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt__init__s     cCs |jr|j|jƒndS(N(Rt m2_bio_freeR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt__del__s cCs|jS(N(R(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt_ptr!scCstj|jƒS(N(tm2t bio_get_fdR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytfileno'scCs|j S(N(R (R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytreadable*scCs¨|jƒstd‚n|dkritƒ}x/tj|jdƒ}|sOPn|j|ƒq0|jƒS|dkrydS|dkr‘t d‚ntj|j|ƒSdS(Ns cannot readiitsread count is negative( RtIOErrortNoneRRtbio_readRtwritetgetvaluet ValueError(R tsizetbuftdata((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytread-s        icCs1|jƒstd‚ntj|j|ƒ}|S(Ns cannot read(RRRtbio_getsR(R RR((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytreadline>s  tignoredcCsZ|jƒstd‚ng}x5tj|jdƒ}|dkrFPn|j|ƒq!|S(Ns cannot readi(RRRRRRtappend(R tsizehinttlinesR((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt readlinesDs   cCs|j o|j S(N(R R (R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt writeableOscCs+|jƒstd‚ntj|j|ƒS(Ns cannot write(R&RRt bio_writeR(R R((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRRs  cCs d|_dS(Ni(R (R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt write_closeWscCstj|jƒdS(N(Rt bio_flushR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytflushZscCstj|jƒS(s3 Sets the bio to its initial state (Rt bio_resetR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytreset]scCs#d|_|jr|jƒndS(Ni(R R(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytclosecs  cCstj|jƒS(si Can the call be attempted again, or was there an error ie do_handshake (Rtbio_should_retryR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt should_retryhscCstj|jƒS(se Returns whether the cause of the condition is the bio should read more data (Rtbio_should_readR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt should_readpscCstj|jƒS(sf Returns whether the cause of the condition is the bio should write more data (Rtbio_should_writeR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt should_writewsN(RRt__doc__Rtbio_freeR RR RRtbio_ptrRRRR R%R&RR(R*R,R-R/R1R3(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRs(               t MemoryBuffercBsHeZdZdd„Zd„Zdd„ZeZZd„Z e Z RS(sw Object interface to BIO_s_mem. Empirical testing suggests that this class performs less well than cStringIO, because cStringIO is implemented in C, whereas this class is implemented in Python. Thus, the recommended practice is to use cStringIO for regular work and convert said cStringIO object to a MemoryBuffer object only when necessary. cCsTtj|ƒtjtjƒƒ|_d|_|dk rPtj|j|ƒndS(Ni( RR Rtbio_newt bio_s_memRRRR'(R R((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR ‰s    cCstj|jƒS(N(Rtbio_ctrl_pendingR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt__len__sicCsT|jƒstd‚n|r1tj|j|ƒStj|jtj|jƒƒSdS(Ns cannot read(RRRRRR:(R R((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR“s   cCs d|_tj|jdƒdS(Nii(R Rtbio_set_mem_eof_returnR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR(žs N( RRR4RR R;RRtread_allR(R-(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR7~s     tFilecBs#eZdZdd„Zd„ZRS(sÅ Object interface to BIO_s_fp. This class interfaces Python to OpenSSL functions that expect BIO *. For general file manipulation in Python, use Python's builtin file object. icCs>tj|ddƒ||_||_tj|dƒ|_dS(NRii(RR tpyfilet close_pyfileRt bio_new_fpR(R R?R@((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR ®s  cCs&d|_|jr"|jjƒndS(Ni(R R@R?R-(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR-´s  (RRR4R R-(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR>¥s trbcCstt||ƒƒS(N(R>topen(tfilenametmode((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytopenfile¹stIOBuffercBsAeZdZejZejZddd„Zd„Z d„Z RS(s¶ Object interface to BIO_f_buffer. Its principal function is to be BIO_push()'ed on top of a BIO_f_ssl, so that makefile() of said underlying SSL socket works. trwbicCswtj|d|ƒtjtjƒƒ|_tj|j|jƒƒ|_||_ d|krjd|_ n d|_ dS(NRtwii( RR RR8t bio_f_buffertiotbio_pushRRt _under_bioR (R t under_bioRER((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR És   cCs9t|ddƒr%|j|jƒn|j|jƒdS(NRi(tgetattrt m2_bio_popRR RK(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRÔscCstj|ƒdS(N(RR-(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR-Ùs( RRR4Rtbio_popRPR5R R RR-(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRG½s    t CipherStreamcBsVeZdZejZejZejZ d„Z d„Z d„Z d„Z d„ZRS(s+ Object interface to BIO_f_cipher. cCsAtj|ddƒ||_tjtjƒƒ|_d|_dS(NRii(RR tobioRR8t bio_f_cipherRR (R RS((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR ès cCs#t|ddƒs|jƒndS(NR i(ROR-(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRîscCs-|j|jƒ|j|jƒd|_dS(Ni(RPRR R (R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR-òscCs|jjƒdS(N(RSR((R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR(÷scCsott|dƒ}|dkr0td|f‚ntj|j|ƒ|||ƒtj|j|jjƒƒdS(Nsunknown cipher( RORRRtbio_set_cipherRRLRSR(R talgotkeytivtoptcipher((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt set_cipherús  (RRR4RtPKCS5_SALT_LENtSALT_LENRQRPR5R R RR-R(R[(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyRRÝs       tSSLBiocBs2eZdZdd„Zejd„Zd„ZRS(s( Object interface to BIO_f_ssl icCs5tj||ƒtjtjƒƒ|_d|_dS(Ni(RR RR8t bio_f_sslRR (R R((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR scCsHd|_tj|j|j|ƒ|tjkrD|jtjƒndS(sh Sets the bio to the SSL pointer which is contained in the connection object. iN(RRt bio_set_sslRtsslt bio_noclosetset_ssl_close_flagt bio_close(R tconnt close_flag((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pytset_ssl s cCstj|jƒS(s” Do the handshake. Return 1 if the handshake completes Return 0 or a negative number if there is a problem (RRR(R ((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyt do_handshakes(RRR4R RRbRgRh(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyR^s  ((R4RRtbio_do_ssl_handshaket cStringIORt ExceptionRtbio_initRR7R>RFRGRRR^(((s2/usr/lib/python2.7/vendor-packages/M2Crypto/BIO.pyts  n'  %