1Uc@sdZddklZlZlZlZlZddkZdZdZ de fdYZ ei e ei ZdddZd fd YZd fd YZd fdYZdfdYZdfdYZe dZe dZe dZdZdfdYZdfdYZdfdYZdZdfdYZe d Ze d!Ze d"Z d#Z!d$fd%YZ"e d&Z#dS('sM2Crypto wrapper for OpenSSL X509 API. Copyright (c) 1999-2004 Ng Pheng Siong. All rights reserved. Portions created by Open Source Applications Foundation (OSAF) are Copyright (C) 2004-2007 OSAF. All Rights Reserved. Author: Heikki Toivonen i(tASN1tBIOtErrtEVPtutilNiit X509ErrorcBseZRS((t__name__t __module__(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCs|djo&|iddj otdnti}ti|}ti||||}t||}|i||S(s- Create new X509_Extension instance. tsubjectKeyIdentifiers0123456789abcdefABCDEF:tsvalue must be precomputed hash(tstript ValueErrortm2t x509v3_lhashtx509v3_set_conf_lhashtx509v3_ext_conftX509_Extensiont set_critical(tnametvaluetcriticalt_pyfreetlhashtctxt x509_ext_ptrtx509_ext((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt new_extensions   RcBseeZdZeiZd ddZdZdZ ddZ dZ dZ ddd Z RS( s X509 Extension icCs||_||_dS(N(RR(tselfRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt__init__-s cCs5t|ddo|io|i|indS(NRi(tgetattrRtm2_x509_extension_free(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt__del__1scCs|iS(N(R(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt_ptr5scCsti|i|S(sL Mark this extension critical or noncritical. By default an extension is not critical. @type critical: int @param critical: Nonzero sets this extension as critical. Calling this method without arguments will set this extension to critical. (R tx509_extension_set_criticalR(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR8s cCsti|iS(s Return whether or not this is a critical extension. @rtype: int @return: Nonzero if this is a critical extension. (R tx509_extension_get_criticalR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_criticalDscCsti|iS(sG Get the extension name, for example 'subjectAltName'. (R tx509_extension_get_nameR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_nameMsicCs5ti}ti|i|i|||iS(s Get the extension value, for example 'DNS:www.example.com'. @param flag: Flag to control what and how to print. @param indent: How many spaces to print before actual value. (Rt MemoryBufferR tx509_ext_printtbio_ptrRtread_all(Rtflagtindenttbuf((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_valueSs N(RRt__doc__R tx509_extension_freeRtNoneRRR RR#R%R-(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR&s    tX509_Extension_StackcBseeZdZeiZd ddZdZdZ dZ dZ dZ dZ d ZRS( sZ X509 Extension Stack @warning: Do not modify the underlying OpenSSL stack except through this interface, or use any OpenSSL functions that do so indirectly. Doing so will get the OpenSSL stack and the internal pystack of this class out of sync, leading to python memory leaks, exceptions or even python crashes! icCs|dj oj||_||_ti|i}xdt|D]1}|iitti |i|d|q>Wn"ti |_d|_g|_dS(NRi( R0tstackRR tsk_x509_extension_numtrangetpystacktappendRtsk_x509_extension_valuetsk_x509_extension_new_null(RR2Rtnumti((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRls    ! cCs+t|ddo|i|indS(NRi(Rtm2_sk_x509_extension_freeR2(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRyscCs6ti|it|ijptt|iS(N(R R3R2tlenR5tAssertionError(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt__len__}s)cCs |i|S(N(R5(Rtidx((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt __getitem__scCs t|iS(N(titerR5(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt__iter__scCs|iS(N(R2(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR scCsL|ii|ti|i|i}|t|ijpt|S(s Push X509_Extension object onto the stack. @type x509_ext: M2Crypto.X509.X509_Extension @param x509_ext: X509_Extension object to be pushed onto the stack. @return: The number of extensions on the stack. (R5R6R tsk_x509_extension_pushR2R R<R=(RRtret((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytpushscCsNti|i}|djo"t|idjptdS|iiS(sk Pop X509_Extension object from the stack. @return: X509_Extension popped iN(R tsk_x509_extension_popR2R0R<R5R=tpop(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRGs  N(RRR.R tsk_x509_extension_freeR;R0RRR>R@RBR RERG(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR1_s        tX509_Name_EntrycBsheZdZeiZddZdZdZdZ e i dZ dZ dZd ZRS( s X509 Name Entry icCs||_||_dS(N(tx509_name_entryR(RRJR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs cCs+t|ddo|i|indS(NRi(Rtm2_x509_name_entry_freeRJ(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCs|iS(N(RJ(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR scCsti|i|iS(N(R tx509_name_entry_set_objectRJR (Rtasn1obj((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_objects cCsti|i||S(N(R tx509_name_entry_set_dataRJ(Rtdatattype((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytset_datas cCstiti|iS(N(Rt ASN1_ObjectR tx509_name_entry_get_objectRJ(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_objectscCstiti|iS(N(Rt ASN1_StringR tx509_name_entry_get_dataRJ(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_datascCs"ti|ii||||S(N(R tx509_name_entry_create_by_txtRJR (RtfieldRQtentryR<((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt create_by_txts(RRR.R tx509_name_entry_freeRKRRR RNRt MBSTRING_ASCRRRURXR\(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRIs       t X509_NamecBsqeZdZheid6eid6eid6eid6eid6eid6eid6eid6eid 6eid 6ei d 6ei d 6ei d 6ei d6ei d6ei d6ei d6ei d6ei d6ZeiZd$ddZdZdZdZdZdZdZdZdZdZdZd Zdeid!Zd"Z d#Z!RS(%s X509 Name tCtSPtSTtstateOrProvinceNametLt localityNametOtorganizationNametOUtorganizationUnitNametCNt commonNametEmailt emailAddresst serialNumbertSNtsurnametGNt givenNameicCsY|dj o0ti|p td||_||_nti|_d|_dS(Ns'x509_name' type errori(R0R tx509_name_type_checkR=t x509_nameRt x509_name_new(RRtR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs    cCs+t|ddo|i|indS(NRi(Rtm2_x509_name_freeRt(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCs-ti|ip tdti|iS(Ns'x509_name' type error(R RsRtR=tx509_name_oneline(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt__str__scCsw||ijo8ti|ip tdti|i|i|S||ijo |i|St||fdS(Ns'x509_name' type error(tnidR RsRtR=tx509_name_by_nidt__dict__tAttributeError(Rtattr((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt __getattr__s  cCs\||ijo;ti|ip tdti|i|i||S||i|scCsMd|jo|ijnptdntti|i|S(Nisindex out of range(t entry_countt IndexErrorRIR tx509_name_get_entryRt(RR?((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR@ s$ccs*x#t|iD]}||VqWdS(N(txrangeR(RR:((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRBscCs|iS(N(Rt(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR scCs"ti|i||||||S(N(R tx509_name_add_entry_by_txtRt(RRZRQR[R<tloctset((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytadd_entry_by_txtscCsti|iS(N(R RRt(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsZg}d}xGto?ti|i||}|djoPn|i||qW|S(Ni(tTrueR tx509_name_get_index_by_nidRtR6(RRyRDtlastpos((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_entries_by_nids  cCsRti|ip tdti}ti|i|i|||iS(s as_text returns the name as a string. @param indent: Each line in multiline format is indented by this many spaces. @param flags: Flags that control how the output should be formatted. s'x509_name' type error( R RsRtR=RR&tx509_name_print_exR(R)(RR+tflagsR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytas_text,s cCs-ti|ip tdti|iS(Ns'x509_name' type error(R RsRtR=tx509_name_get_der(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytas_der9scCs-ti|ip tdti|iS(Ns'x509_name' type error(R RsRtR=tx509_name_hash(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytas_hash=sN("RRR.R tNID_countryNametNID_stateOrProvinceNametNID_localityNametNID_organizationNametNID_organizationalUnitNametNID_commonNametNID_pkcs9_emailAddresstNID_serialNumbert NID_surnamet NID_givenNameRytx509_name_freeRvR0RRRxR~RR>R@RBR RRRtXN_FLAG_COMPATRRR(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR_sH                               tX509cBsReZdZeiZd%ddZdZdZ dZ dZ dZ dZ ed Zd Zd Zd Zd ZdZdZdZdZdZdZddZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d%d Z%d!Z&d"Z'd#d$Z(RS(&s X.509 Certificate icCsY|dj o0ti|p td||_||_nti|_d|_dS(Ns'x509' type errori(R0R tx509_type_checkR=tx509Rtx509_new(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRHs    cCs+t|ddo|i|indS(NRi(Rt m2_x509_freeR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRQscCs$ti|ip td|iS(Ns'x509' type error(R RRR=(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR UscCsLti|ip tdti}ti|i|i|iS(Ns'x509' type error( R RRR=RR&t x509_printR(R)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRYs cCs-ti|ip tdti|iS(Ns'x509' type error(R RRR=ti2d_x509(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR_scCs/ti}ti|i|i|iS(N(RR&R tx509_write_pemR(RR)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytas_pemcs cCs+ti|d}ti|i|iS(s save_pem twb(RtopenfileR RR(R(Rtfilenametbio((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytsave_pemhscCspti|d}|tjoti|i|iS|tjoti|i|iSt ddS(s Saves X.509 certificate to a file. Default output format is PEM. @type filename: string @param filename: Name of the file the cert will be saved to. @type format: int @param format: Controls what output format is used to save the cert. Either FORMAT_PEM or FORMAT_DER to save in PEM or DER format. Raises a ValueError if an unknow format is used. Rs9Unknown filetype. Must be either FORMAT_PEM or FORMAT_DERN( RRt FORMAT_PEMR RR(Rt FORMAT_DERt i2d_x509_bioR (RRtformatR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytsaveos   cCs0ti|ip tdti|i|S(s Set version. @type version: int @param version: Version number. @rtype: int @return: Returns 0 on failure. s'x509' type error(R RRR=tx509_set_version(Rtversion((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_versions cCs6ti|ip tdti|i|iS(Ns'x509' type error(R RRR=tx509_set_not_beforeR (Rt asn1_utctime((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytset_not_beforescCs6ti|ip tdti|i|iS(Ns'x509' type error(R RRR=tx509_set_not_afterR (RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_not_afterscCs3ti|ip tdti|i|iS(Ns'x509' type error(R RRR=tx509_set_subject_nameRt(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytset_subject_namescCs3ti|ip tdti|i|iS(Ns'x509' type error(R RRR=tx509_set_issuer_nameRt(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytset_issuer_namescCs-ti|ip tdti|iS(Ns'x509' type error(R RRR=tx509_get_version(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_versionscCs<ti|ip tdti|i}ti|S(Ns'x509' type error(R RRR=tx509_get_serial_numbertasn1_integer_get(Rt asn1_integer((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_serial_numberscCs?ti|ip tdti|i}ti||S(sh Set serial number. @type serial: int @param serial: Serial number. s'x509' type error(R RRR=Rtasn1_integer_set(RtserialR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytset_serial_numberscCs6ti|ip tdtiti|iS(Ns'x509' type error(R RRR=Rt ASN1_UTCTIMEtx509_get_not_before(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_not_beforescCs6ti|ip tdtiti|iS(Ns'x509' type error(R RRR=RRtx509_get_not_after(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_not_afterstsha1cCsBti|ip tdtiti|iddd|S(Ns'x509' type errorRitmd(R RRR=RtPKeytx509_get_pubkey(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_pubkeyscCs3ti|ip tdti|i|iS(sw Set the public key for the certificate @type pkey: EVP_PKEY @param pkey: Public key s'x509' type error(R RRR=tx509_set_pubkeytpkey(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_pubkeyscCs3ti|ip tdtti|iS(Ns'x509' type error(R RRR=R_tx509_get_issuer_name(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_issuerscCs3ti|ip tdti|i|iS(sp Set issuer name. @type name: X509_Name @param name: subjectName field. s'x509' type error(R RRR=RRt(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_issuerscCs3ti|ip tdtti|iS(Ns'x509' type error(R RRR=R_tx509_get_subject_name(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_subjectscCs3ti|ip tdti|i|iS(sq Set subject name. @type name: X509_Name @param name: subjectName field. s'x509' type error(R RRR=RRt(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt set_subjectscCs6ti|ip tdti|i|idS(s Add X509 extension to this certificate. @type ext: X509_Extension @param ext: Extension s'x509' type errori(R RRR=t x509_add_extR(Rtext((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytadd_extscCsxti}ti}|i}xPtti|D]9}|||}|||jot|ddSq1WtdS(s Get X509 extension by name. @type name: Name of the extension @param name: str @return: X509_Extension RiN(R t x509_get_extR$RR4tx509_get_ext_countRt LookupError(RRtm2x509_get_exttm2x509_extension_get_nameRR:textPtr((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_exts   cCsI|djp||ijo tntti|i|ddS(s Get X509 extension by index. @type index: Name of the extension @param index: int @return: X509_Extension iR(t get_ext_countRRR RR(Rtindex((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get_ext_at s  cCsti|iS(s+ Get X509 extension count. (R RR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCskti|ip tdtt|d}|djotd|fnti|i|i|S(s Sign the certificate. @type pkey: EVP_PKEY @param pkey: Public key @type md: str @param md: Message digest algorithm to use for signing, for example 'sha1'. s'x509' type errorsunknown message digestN( R RRR=RR0R t x509_signR(RRRtmda((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytsigns  cCs[ti|ip td|oti|i|iSti|i|iiSdS(Ns'x509' type error(R RRR=t x509_verifyRR(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytverify-scCsti|iS(s Check if the certificate is a Certificate Authority (CA) certificate. @return: 0 if the certificate is not CA, nonzero otherwise. @requires: OpenSSL 0.9.8 or newer (R t x509_check_caR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytcheck_ca4scCsti|i||S(s) Check if the certificate's purpose matches the asked purpose. @param id: Purpose id. See X509_PURPOSE_* constants. @param ca: 1 if the certificate should be CA, 0 otherwise. @return: 0 if the certificate purpose does not match, nonzero otherwise. (R tx509_check_purposeR(Rtidtca((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt check_purpose>stmd5cCsT|i}ti|}|i||i}tti|dd!iS(s Get the fingerprint of the certificate. @param md: Message digest algorithm to use. @return: String containing the fingerprint in hex format. ii( RRt MessageDigesttupdatetfinalthexRt octx_to_numtupper(RRtdertdigest((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_fingerprintHs    N()RRR.R t x509_freeRR0RRR RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRAsF                          cCsti|}|tjo t|S|tjoIti|i}|djot t i nt |ddSt ddS(sc Load certificate from file. @type file: string @param file: Name of file containing certificate in either DER or PEM format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the file to be loaded, either PEM or DER. @rtype: M2Crypto.X509.X509 @return: M2Crypto.X509.X509 object. Ris7Unknown format. Must be either FORMAT_DER or FORMAT_PEMN(RRRt load_cert_bioRR td2i_x509R R0RRt get_errorRR (tfileRRtcptr((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt load_certUs     cCs|tjoti|i}n3|tjoti|i}n td|djott i nt |ddS(sf Load certificate from a bio. @type bio: M2Crypto.BIO.BIO @param bio: BIO pointing at a certificate in either DER or PEM format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the cert to be loaded, either PEM or DER. @rtype: M2Crypto.X509.X509 @return: M2Crypto.X509.X509 object. s7Unknown format. Must be either FORMAT_DER or FORMAT_PEMRiN( RR t x509_read_pemR RRR R0RRRR(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRls    cCsti|}t||S(sg Load certificate from a string. @type string: string @param string: String containing a certificate in either DER or PEM format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the cert to be loaded, either PEM or DER. @rtype: M2Crypto.X509.X509 @return: M2Crypto.X509.X509 object. (RR&R(tstringRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytload_cert_strings cCsWti|}ti|i}|djottint |ddS(s Load certificate from a string. @type string: string @param string: String containing a certificate in DER format. @rtype: M2Crypto.X509.X509 @return: M2Crypto.X509.X509 object. RiN( RR&R RR R0RRRR(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytload_cert_der_strings  tX509_Store_ContextcBsYeZdZeiZddZdZdZdZ dZ dZ dZ RS( s X509 Store Context icCs||_||_dS(N(RR(Rtx509_store_ctxR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs cCs"|io|i|indS(N(Rtm2_x509_store_ctx_freeR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs cCs|iS(N(R(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR scCstti|iddS(s Get current X.509 certificate. @warning: The returned certificate is NOT refcounted, so you can not rely on it being valid once the store context goes away or is modified. Ri(RR tx509_store_ctx_get_current_certR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_current_certscCsti|iS(s! Get error code. (R tx509_store_ctx_get_errorR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsti|iS(s" Get error depth. (R tx509_store_ctx_get_error_depthR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_error_depthscCstti|iddS(s Get certificate chain. @return: Reference counted (i.e. safe to use even after the store context goes away) stack of certificates in the chain. @rtype: X509_Stack i(t X509_StackR tx509_store_ctx_get1_chainR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt get1_chains( RRR.R tx509_store_ctx_freeR RRR R RRR(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR s      t X509_StorecBsVeZdZeiZdddZdZdZ dZ e Z dZ e Z RS(s X509 Store icCs?|dj o||_||_nti|_d|_dS(Ni(R0tstoreRR tx509_store_new(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs    cCs+t|ddo|i|indS(NRi(Rtm2_x509_store_freeR(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCs|iS(N(R(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR scCs<ti|i|}|djottin|S(Ni(R tx509_store_load_locationsRRRR(RRRD((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt load_infos cCs0t|tptti|i|iS(N(t isinstanceRR=R tx509_store_add_certRR (RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytadd_x509sN(RRR.R tx509_store_freeRR0RRR Rtload_locationsRtadd_cert(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs     RcBsqeZdZeiZd dddZdZdZ dZ dZ dZ dZ d Zd ZRS( sL X509 Stack @warning: Do not modify the underlying OpenSSL stack except through this interface, or use any OpenSSL functions that do so indirectly. Doing so will get the OpenSSL stack and the internal pystack of this class out of sync, leading to python memory leaks, exceptions or even python crashes! icCs|dj os||_||_g|_ti|i}xdt|D]1}|iitti |i|d|qGWn"ti |_d|_g|_dS(NRi( R0R2RR5R t sk_x509_numR4R6Rt sk_x509_valuetsk_x509_new_null(RR2Rt _pyfree_x509R9R:((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs     ! cCs+t|ddo|i|indS(NRi(Rtm2_sk_x509_freeR2(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCs6ti|it|ijptt|iS(N(R R!R2R<R5R=(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR>s)cCs |i|S(N(R5(RR?((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR@scCs t|iS(N(RAR5(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRBscCs|iS(N(R2(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR !scCsct|tpt|ii|ti|i|i}|t |ijpt|S(s push an X509 certificate onto the stack. @param x509: X509 object. @return: The number of X509 objects currently on the stack. ( RRR=R5R6R t sk_x509_pushR2R R<(RRRD((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRE$s cCsNti|i}|djo"t|idjptdS|iiS(s pop a certificate from the stack. @return: X509 object that was popped, or None if there is nothing to pop. iN(R t sk_x509_popR2R0R<R5R=RG(Rtx509_ptr((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRG1s  cCsti|iS(s: Return the stack as a DER encoded string (R tget_der_encoding_stackR2(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR>sN(RRR.R t sk_x509_freeR%R0RRR>R@RBR RERGR(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs        cCsBti|}|djottint|ddS(sO Create a new X509_Stack from DER string. @return: X509_Stack iN(R tmake_stack_from_der_sequenceR0RRRR(t der_stringt stack_ptr((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytnew_stack_from_derEs tRequestcBseZdZeiZdddZdZdZ dZ dZ dZ e dZd Zd Zd Zd Zd ZdZeZdZdZdZRS(s# X509 Certificate Request. icCs?|dj o||_||_nti|_d|_dS(Ni(R0treqRR t x509_req_new(RR0R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRXs    cCs+t|ddo|i|indS(NRi(Rtm2_x509_req_freeR0(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR`scCs/ti}ti|i|i|iS(N(RR&R tx509_req_printR(R0R)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRds cCs/ti}ti|i|i|iS(N(RR&R tx509_req_write_pemR(R0R)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRis cCs/ti}ti|i|i|iS(N(RR&R ti2d_x509_req_bioR(R0R)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRns cCs+ti|d}ti|i|iS(NR(RRR R4R(R0(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRsscCspti|d}|tjoti|i|iS|tjoti|i|iSt ddS(s Saves X.509 certificate request to a file. Default output format is PEM. @type filename: string @param filename: Name of the file the request will be saved to. @type format: int @param format: Controls what output format is used to save the request. Either FORMAT_PEM or FORMAT_DER to save in PEM or DER format. Raises ValueError if an unknown format is used. Rs9Unknown filetype. Must be either FORMAT_DER or FORMAT_PEMN( RRRR R4R(R0RR5R (RRRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRws   cCstiti|iddS(s Get the public key for the request. @rtype: EVP_PKEY @return: Public key from the request. Ri(RRR tx509_req_get_pubkeyR0(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsti|i|iS(s Set the public key for the request. @type pkey: EVP_PKEY @param pkey: Public key @rtype: int @return: Return 1 for success and 0 for failure. (R tx509_req_set_pubkeyR0R(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs cCsti|iS(sd Get version. @rtype: int @return: Returns version. (R tx509_req_get_versionR0(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsti|i|S(s Set version. @type version: int @param version: Version number. @rtype: int @return: Returns 0 on failure. (R tx509_req_set_versionR0(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs cCstti|iS(N(R_R tx509_req_get_subject_nameR0(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsti|i|iS(sq Set subject name. @type name: X509_Name @param name: subjectName field. (R tx509_req_set_subject_nameR0Rt(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsti|i|iS(s Add X509 extensions to this request. @type ext_stack: X509_Extension_Stack @param ext_stack: Stack of extensions to add. (R tx509_req_add_extensionsR0R (Rt ext_stack((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytadd_extensionsscCsti|i|iS(N(R tx509_req_verifyR0R(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRscCsNtt|d}|djotd|fnti|i|i|S(Nsunknown message digest(RR R0R t x509_req_signR0R(RRRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRs N(RRR.R t x509_req_freeR2R0RRRRRRRRRRRRRRRR>RR(((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR/Qs&          cCsti|}|tjoti|i}n3|tjoti|i}n td|i |djot t i nt|dS(sy Load certificate request from file. @type file: string @param file: Name of file containing certificate request in either PEM or DER format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the file to be loaded, either PEM or DER. @rtype: M2Crypto.X509.Request @return: M2Crypto.X509.Request object. s9Unknown filetype. Must be either FORMAT_PEM or FORMAT_DERiN(RRRR tx509_req_read_pemR(Rt d2i_x509_reqR tcloseR0RRRR/(RRtfR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyt load_requests      cCs|tjoti|i}n3|tjoti|i}n td|djott i nt |ddS(s Load certificate request from a bio. @type bio: M2Crypto.BIO.BIO @param bio: BIO pointing at a certificate request in either DER or PEM format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the request to be loaded, either PEM or DER. @rtype: M2Crypto.X509.Request @return: M2Crypto.X509.Request object. s7Unknown format. Must be either FORMAT_DER or FORMAT_PEMRiN( RR RBR RRCR R0RRRR/(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytload_request_bios    cCsti|}t||S(s Load certificate request from a string. @type string: string @param string: String containing a certificate request in either DER or PEM format. @type format: int, either FORMAT_PEM or FORMAT_DER @param format: Describes the format of the request to be loaded, either PEM or DER. @rtype: M2Crypto.X509.Request @return: M2Crypto.X509.Request object. (RR&RG(RRR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytload_request_strings cCsti|}t|tS(s Load certificate request from a string. @type string: string @param string: String containing a certificate request in DER format. @rtype: M2Crypto.X509.Request @return: M2Crypto.X509.Request object. (RR&RGR(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytload_request_der_strings tCRLcBseeZdZeiZd ddZdZdZ dZ dZ dZ dZ d ZRS( s* X509 Certificate Revocation List icCsH|dj o||_||_nti|_d|_d|_dS(Ni(R0tcrlRR t x509_crl_newt revocations(RRKR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR's     cCs+t|ddo|i|indS(NRi(Rtm2_x509_crl_freeRK(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR0scCs/ti}ti|i|i|iS(s Return CRL in PEM format in a string. @rtype: string @return: String containing the CRL in PEM format. (RR&R tx509_crl_printR(RKR)(RR,((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyR4s cCs6ti|ip tdtiti|iS(Ns'x509_CRL' type error(R tx509_CRL_type_checkRKR=RRtx509_CRL_get_last_update(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_last_update@scCs6ti|ip tdtiti|iS(Ns'x509_CRL' type error(R RPRKR=RRtx509_CRL_get_next_update(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pytget_next_updateDscCs3ti|ip tdti|i|iS(Ns'x509_CRL' type error(R RPRKR=tx509_CRL_verifyR(RR((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRHscCs3ti|ip tdtti|iS(Ns'x509_CRL' type error(R RPRKR=R_tx509_CRL_get_issuer(R((s3/usr/lib/python2.6/vendor-packages/M2Crypto/X509.pyRLsc Cs*|idjoh|_ti|i}xtti|D]}ti||}titi |}ti |}d}xmtti |D]V}ti ||}ti |} | djo"t |dd} | i}qqWt|f|i|s:(   9E%x    2%M     D