PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  [c@sdZddlmZddlmZddlZddlZddlZddlZdZdfdYZ dZ d ej ej fd YZ dS( sK rhn.SSL builds an abstraction on top of the objects provided by pyOpenSSL i(tSSL(tcryptoNixt SSLSocketcBseZdZddZdZdZddZdZdZ dZ dZ d Z d Z d d Zdd ZdZdZdZeZeZddZRS(sM Class that wraps a pyOpenSSL Connection object, adding more methods cCsd|_d|_||_g|_|p-g}x|D]}|j|q7Wtj|_tj |_ d|_ d|_ d|_ d|_d|_dS(Ni it(tNonet_ctxt _connectiont_sockt_trusted_certstadd_trusted_certRt SSLv23_METHODt _ssl_methodt VERIFY_PEERt_ssl_verify_flagst _buffer_sizet_post_buffert_makefile_calledt_closed(tselftsockett trusted_certstf((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyt__init__+s            cCs9tj|tjs%td|n|jj|dS(sh Adds a trusted certificate to the certificate store of the SSL context object. s"Unable to read certificate file %sN(tostaccesstR_OKt ValueErrorRtappend(Rtfile((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR HscCs|jtj|j|_|jjtj|jjtj|jrux-|jD]}|jj |qXWn d|_ |jj |j t t tdr|jjtjntj|j|j|_|jjdS(s1 Initializes the SSL connection. itOP_DONT_INSERT_EMPTY_FRAGMENTSN(t _check_closedRtContextR Rt set_optionst OP_NO_SSLv2t OP_NO_SSLv3Rtload_verify_locationsR t set_verifytssl_verify_callbackthasattrRt ConnectionRRtset_connect_state(RR((s+/usr/lib/python2.7/site-packages/rhn/SSL.pytinit_sslQs   cCs&|r||_n|jd|_|S(sG Returns self, since we are a file-like object already i(RR(Rtmodetbufsize((s+/usr/lib/python2.7/site-packages/rhn/SSL.pytmakefileos cCs8|jr dS|js$|jdS|jd|_dS(s+ Closes the SSL connection Ni(RRt _really_close(R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pytclose|s    cCs|jdkrdStjddkrN|jjdkrs|jjqsn%|jjdkrs|jjn|jjd|_dS(Niis%SSL negotiation finished successfullyi( RRtsyst version_infotget_state_stringtshutdownt state_stringR/R(R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR.s cCs|jrtdndS(NsI/O operation on closed file(RR(R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRs cCs/t|j|r"t|j|St|dS(N(R'RtgetattrtAttributeError(Rtname((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyt __getattr__scCsdS(s' Returns false always. i((R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pytisattyscCs|jS(N(R(R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyttellsicCs tddS(Ntseek(tNotImplementedError(RtposR+((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR;scCs|j|j}t|j}x||ks=|dkr<|dk r_t|||}nyT|jj|}|j||_t|j}|jj}|dkrPnWq%t j k rPq%t j k r}dG|j GHPq%t j k r|jtjdq%t jk r8|jtjdq%Xq%W|rc|j| }|j||_n|j}d|_|jt||_|S(s@ Reads up to amt bytes from the SSL connection. is SSL exceptiontreadRN(RRtlenRRtminRtrecvtpendingRtZeroReturnErrort SysCallErrortargstWantWriteErrort_polltselecttPOLLOUTt WantReadErrortPOLLINR(Rtamtt buffer_sizet buffer_lengthtdataRBtetret((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR>s:        cCs[tj}|j|j||j|jjd}|gkrWtd|ndS(NisConnection timed out on %s(RHtpolltregisterRt gettimeouttTimeoutException(Rt filter_typet caller_nametpollertres((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRGs   cCs|jt|}xtry6|jj|}|t|krJPn||}Wqtjk r~|jtj dqtj k r|jtj dqXqW|S(s/ Writes to the SSL connection. twrite( RR?tTrueRtsendRRFRGRHRIRJRK(RROtoriglentsent((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRZs   cCs |j|S(N(R>(RRL((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRAscCs|jx]trid}|jjd}|dkrD|d}n$|rht|j|krh|}n|dk r|j| }|j||_|jt||_|S|j}|rt|j|t|j}ny&|j j |}|j||_Wq t j k rPq t j k r?|jtjdq t jk re|jtjdq Xq W|j}d|_|jt||_|S(sg Reads a single line (up to `length' characters long) from the SSL connection. s iitreadlineRN(RR[RRtfindR?RRR@RRARRCRFRGRHRIRJRK(Rtlengtht charcounttiRQR,RO((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR_s:        "  N(t__name__t __module__t__doc__RRR R*R-R/R.RR8R9R:R;R>RGRZRAR\tsendallR_(((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR's&          2   cCs|S(sb Verify callback, which will be called for each certificate in the certificate chain. ((tconntcertterrnumtdepthtok((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyR&7sRUcBseZdZdZRS(cGs ||_dS(N(RE(RRE((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRAscCsdS(NsTimeout Exception((R((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyt__str__Ds(RdReRRm(((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyRU?s (RftOpenSSLRRRR0RRHtDEFAULT_TIMEOUTRR&tErrorttimeoutRU(((s+/usr/lib/python2.7/site-packages/rhn/SSL.pyts