Changeset 6845 for TI12-security/trunk


Ignore:
Timestamp:
26/04/10 13:58:15 (10 years ago)
Author:
pjkersha
Message:

Updated epydoc

Location:
TI12-security/trunk/MyProxyClient
Files:
70 added
35 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/MyProxyClient/documentation/api-objects.txt

    r5050 r6845  
    44myproxy.client.__revision__     myproxy.client-module.html#__revision__ 
    55myproxy.client.log      myproxy.client-module.html#log 
     6myproxy.test    myproxy.test-module.html 
     7myproxy.test.__revision__       myproxy.test-module.html#__revision__ 
     8myproxy.test.test_myproxyclient myproxy.test.test_myproxyclient-module.html 
     9myproxy.test.test_myproxyclient.__revision__    myproxy.test.test_myproxyclient-module.html#__revision__ 
     10myproxy.test.test_myproxyclient.mkPath  myproxy.test.test_myproxyclient-module.html#mkPath 
    611myproxy.utils   myproxy.utils-module.html 
    712myproxy.utils.__revision__      myproxy.utils-module.html#__revision__ 
    813myproxy.utils.openssl   myproxy.utils.openssl-module.html 
    914myproxy.utils.openssl.__revision__      myproxy.utils.openssl-module.html#__revision__ 
    10 myproxy.client.CaseSensitiveConfigParser        myproxy.client.CaseSensitiveConfigParser-class.html 
    11 myproxy.client.CaseSensitiveConfigParser.optionxform    myproxy.client.CaseSensitiveConfigParser-class.html#optionxform 
     15exceptions.AssertionError       exceptions.AssertionError-class.html 
     16exceptions.AssertionError.__init__      exceptions.AssertionError-class.html#__init__ 
     17exceptions.AssertionError.__new__       exceptions.AssertionError-class.html#__new__ 
    1218myproxy.client.MyProxyClient    myproxy.client.MyProxyClient-class.html 
    1319myproxy.client.MyProxyClient._getPort   myproxy.client.MyProxyClient-class.html#_getPort 
     20myproxy.client.MyProxyClient.PUT_CMD    myproxy.client.MyProxyClient-class.html#PUT_CMD 
     21myproxy.client.MyProxyClient._setCACertFilePath myproxy.client.MyProxyClient-class.html#_setCACertFilePath 
     22myproxy.client.MyProxyClient.hostname   myproxy.client.MyProxyClient-class.html#hostname 
     23myproxy.client.MyProxyClient.parseConfig        myproxy.client.MyProxyClient-class.html#parseConfig 
    1424myproxy.client.MyProxyClient._getCACertDir      myproxy.client.MyProxyClient-class.html#_getCACertDir 
    15 myproxy.client.MyProxyClient._setCACertFilePath myproxy.client.MyProxyClient-class.html#_setCACertFilePath 
    16 myproxy.client.MyProxyClient.parseConfig        myproxy.client.MyProxyClient-class.html#parseConfig 
    1725myproxy.client.MyProxyClient.serverDN   myproxy.client.MyProxyClient-class.html#serverDN 
    1826myproxy.client.MyProxyClient._getHostname       myproxy.client.MyProxyClient-class.html#_getHostname 
    19 myproxy.client.MyProxyClient.caCertDir  myproxy.client.MyProxyClient-class.html#caCertDir 
     27myproxy.client.MyProxyClient.__port     myproxy.client.MyProxyClient-class.html#__port 
    2028myproxy.client.MyProxyClient._getCACertFilePath myproxy.client.MyProxyClient-class.html#_getCACertFilePath 
    2129myproxy.client.MyProxyClient.openSSLConfFilePath        myproxy.client.MyProxyClient-class.html#openSSLConfFilePath 
    22 myproxy.client.MyProxyClient._caCertFilePath    myproxy.client.MyProxyClient-class.html#_caCertFilePath 
     30myproxy.client.MyProxyClient.destroy    myproxy.client.MyProxyClient-class.html#destroy 
     31myproxy.client.MyProxyClient.__caCertFilePath   myproxy.client.MyProxyClient-class.html#__caCertFilePath 
     32myproxy.client.MyProxyClient._getServerSSLCertVerify    myproxy.client.MyProxyClient-class.html#_getServerSSLCertVerify 
    2333myproxy.client.MyProxyClient._setServerDN       myproxy.client.MyProxyClient-class.html#_setServerDN 
    2434myproxy.client.MyProxyClient._deserializeResponse       myproxy.client.MyProxyClient-class.html#_deserializeResponse 
    25 myproxy.client.MyProxyClient._setServerCNPrefix myproxy.client.MyProxyClient-class.html#_setServerCNPrefix 
    26 myproxy.client.MyProxyClient.readProxyFile      myproxy.client.MyProxyClient-class.html#readProxyFile 
    27 myproxy.client.MyProxyClient.port       myproxy.client.MyProxyClient-class.html#port 
     35myproxy.client.MyProxyClient.MAX_RECV_TRIES     myproxy.client.MyProxyClient-class.html#MAX_RECV_TRIES 
     36myproxy.client.MyProxyClient.__serverDN myproxy.client.MyProxyClient-class.html#__serverDN 
     37myproxy.client.MyProxyClient._createCertReq     myproxy.client.MyProxyClient-class.html#_createCertReq 
    2838myproxy.client.MyProxyClient.__init__   myproxy.client.MyProxyClient-class.html#__init__ 
    2939myproxy.client.MyProxyClient._getServerDN       myproxy.client.MyProxyClient-class.html#_getServerDN 
    30 myproxy.client.MyProxyClient._proxyCertLifetime myproxy.client.MyProxyClient-class.html#_proxyCertLifetime 
    31 myproxy.client.MyProxyClient._getServerCNPrefix myproxy.client.MyProxyClient-class.html#_getServerCNPrefix 
    32 myproxy.client.MyProxyClient._setProxyCertMaxLifetime   myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime 
    33 myproxy.client.MyProxyClient._hostKeySubDirPath myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath 
    34 myproxy.client.MyProxyClient.hostname   myproxy.client.MyProxyClient-class.html#hostname 
     40myproxy.client.MyProxyClient.readProxyFile      myproxy.client.MyProxyClient-class.html#readProxyFile 
     41myproxy.client.MyProxyClient._initConnection    myproxy.client.MyProxyClient-class.html#_initConnection 
     42myproxy.client.MyProxyClient.__proxyCertLifetime        myproxy.client.MyProxyClient-class.html#__proxyCertLifetime 
     43myproxy.client.MyProxyClient._deserializeCerts  myproxy.client.MyProxyClient-class.html#_deserializeCerts 
     44myproxy.client.MyProxyClient.__cfg      myproxy.client.MyProxyClient-class.html#__cfg 
     45myproxy.client.MyProxyClient.GET_TRUST_ROOTS_CMD        myproxy.client.MyProxyClient-class.html#GET_TRUST_ROOTS_CMD 
     46myproxy.client.MyProxyClient.getTrustRoots      myproxy.client.MyProxyClient-class.html#getTrustRoots 
     47myproxy.client.MyProxyClient.PROPERTY_DEFAULTS  myproxy.client.MyProxyClient-class.html#PROPERTY_DEFAULTS 
    3548myproxy.client.MyProxyClient._getOpenSSLConfig  myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig 
    36 myproxy.client.MyProxyClient._createCertReq     myproxy.client.MyProxyClient-class.html#_createCertReq 
    37 myproxy.client.MyProxyClient.changePassphraseCmd        myproxy.client.MyProxyClient-class.html#changePassphraseCmd 
     49myproxy.client.MyProxyClient.port       myproxy.client.MyProxyClient-class.html#port 
    3850myproxy.client.MyProxyClient._getProxyCertMaxLifetime   myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime 
    39 myproxy.client.MyProxyClient._hostname  myproxy.client.MyProxyClient-class.html#_hostname 
    40 myproxy.client.MyProxyClient.caCertFilePath     myproxy.client.MyProxyClient-class.html#caCertFilePath 
    41 myproxy.client.MyProxyClient._deserializeCerts  myproxy.client.MyProxyClient-class.html#_deserializeCerts 
    42 myproxy.client.MyProxyClient.destroy    myproxy.client.MyProxyClient-class.html#destroy 
     51myproxy.client.MyProxyClient.proxyCertMaxLifetime       myproxy.client.MyProxyClient-class.html#proxyCertMaxLifetime 
    4352myproxy.client.MyProxyClient.writeProxyFile     myproxy.client.MyProxyClient-class.html#writeProxyFile 
    44 myproxy.client.MyProxyClient.destroyCmd myproxy.client.MyProxyClient-class.html#destroyCmd 
    45 myproxy.client.MyProxyClient._serverDN  myproxy.client.MyProxyClient-class.html#_serverDN 
     53myproxy.client.MyProxyClient.__serverSSLCertVerify      myproxy.client.MyProxyClient-class.html#__serverSSLCertVerify 
     54myproxy.client.MyProxyClient.__openSSLConfig    myproxy.client.MyProxyClient-class.html#__openSSLConfig 
    4655myproxy.client.MyProxyClient.store      myproxy.client.MyProxyClient-class.html#store 
    4756myproxy.client.MyProxyClient._getProxyCertLifetime      myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime 
    48 myproxy.client.MyProxyClient.infoCmd    myproxy.client.MyProxyClient-class.html#infoCmd 
    4957myproxy.client.MyProxyClient._setPort   myproxy.client.MyProxyClient-class.html#_setPort 
    50 myproxy.client.MyProxyClient._initConnection    myproxy.client.MyProxyClient-class.html#_initConnection 
    51 myproxy.client.MyProxyClient._openSSLConfig     myproxy.client.MyProxyClient-class.html#_openSSLConfig 
     58myproxy.client.MyProxyClient.INFO_CMD   myproxy.client.MyProxyClient-class.html#INFO_CMD 
     59myproxy.client.MyProxyClient.caCertDir  myproxy.client.MyProxyClient-class.html#caCertDir 
     60myproxy.client.MyProxyClient.PRIKEY_NBITS       myproxy.client.MyProxyClient-class.html#PRIKEY_NBITS 
    5261myproxy.client.MyProxyClient._hostCertSubDirPath        myproxy.client.MyProxyClient-class.html#_hostCertSubDirPath 
    53 myproxy.client.MyProxyClient._proxyCertMaxLifetime      myproxy.client.MyProxyClient-class.html#_proxyCertMaxLifetime 
     62myproxy.client.MyProxyClient.__hostname myproxy.client.MyProxyClient-class.html#__hostname 
    5463myproxy.client.MyProxyClient._setProxyCertLifetime      myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime 
    5564myproxy.client.MyProxyClient._setHostname       myproxy.client.MyProxyClient-class.html#_setHostname 
     65myproxy.client.MyProxyClient.getDelegation      myproxy.client.MyProxyClient-class.html#getDelegation 
     66myproxy.client.MyProxyClient.changePassphrase   myproxy.client.MyProxyClient-class.html#changePassphrase 
     67myproxy.client.MyProxyClient.DEF_PROXY_FILEPATH myproxy.client.MyProxyClient-class.html#DEF_PROXY_FILEPATH 
     68myproxy.client.MyProxyClient._getOpenSSLConfFilePath    myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath 
     69myproxy.client.MyProxyClient.put        myproxy.client.MyProxyClient-class.html#put 
     70myproxy.client.MyProxyClient._createKeyPair     myproxy.client.MyProxyClient-class.html#_createKeyPair 
     71myproxy.client.MyProxyClient.info       myproxy.client.MyProxyClient-class.html#info 
     72myproxy.client.MyProxyClient.__caCertDir        myproxy.client.MyProxyClient-class.html#__caCertDir 
    5673myproxy.client.MyProxyClient._setOpenSSLConfFilePath    myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath 
    57 myproxy.client.MyProxyClient.changePassphrase   myproxy.client.MyProxyClient-class.html#changePassphrase 
    58 myproxy.client.MyProxyClient._serverCNPrefix    myproxy.client.MyProxyClient-class.html#_serverCNPrefix 
    59 myproxy.client.MyProxyClient._getOpenSSLConfFilePath    myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath 
    60 myproxy.client.MyProxyClient.storeCmd   myproxy.client.MyProxyClient-class.html#storeCmd 
    61 myproxy.client.MyProxyClient.info       myproxy.client.MyProxyClient-class.html#info 
    62 myproxy.client.MyProxyClient.getCmd     myproxy.client.MyProxyClient-class.html#getCmd 
    63 myproxy.client.MyProxyClient.getDelegation      myproxy.client.MyProxyClient-class.html#getDelegation 
    64 myproxy.client.MyProxyClient.propertyDefaults   myproxy.client.MyProxyClient-class.html#propertyDefaults 
     74myproxy.client.MyProxyClient.MESSAGE_DIGEST_TYPE        myproxy.client.MyProxyClient-class.html#MESSAGE_DIGEST_TYPE 
     75myproxy.client.MyProxyClient.__proxyCertMaxLifetime     myproxy.client.MyProxyClient-class.html#__proxyCertMaxLifetime 
     76myproxy.client.MyProxyClient.PROXY_FILE_PERMISSIONS     myproxy.client.MyProxyClient-class.html#PROXY_FILE_PERMISSIONS 
     77myproxy.client.MyProxyClient.serverSSLCertVerify        myproxy.client.MyProxyClient-class.html#serverSSLCertVerify 
     78myproxy.client.MyProxyClient.STORE_CMD  myproxy.client.MyProxyClient-class.html#STORE_CMD 
    6579myproxy.client.MyProxyClient.k  myproxy.client.MyProxyClient-class.html#k 
    66 myproxy.client.MyProxyClient._port      myproxy.client.MyProxyClient-class.html#_port 
     80myproxy.client.MyProxyClient.SERVER_RESP_BLK_SIZE       myproxy.client.MyProxyClient-class.html#SERVER_RESP_BLK_SIZE 
    6781myproxy.client.MyProxyClient._setCACertDir      myproxy.client.MyProxyClient-class.html#_setCACertDir 
    68 myproxy.client.MyProxyClient._caCertDir myproxy.client.MyProxyClient-class.html#_caCertDir 
    69 myproxy.client.MyProxyClient.defProxyFile       myproxy.client.MyProxyClient-class.html#defProxyFile 
     82myproxy.client.MyProxyClient.__openSSLConfFilePath      myproxy.client.MyProxyClient-class.html#__openSSLConfFilePath 
     83myproxy.client.MyProxyClient._setProxyCertMaxLifetime   myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime 
     84myproxy.client.MyProxyClient.DESTROY_CMD        myproxy.client.MyProxyClient-class.html#DESTROY_CMD 
    7085myproxy.client.MyProxyClient.openSSLConfig      myproxy.client.MyProxyClient-class.html#openSSLConfig 
    71 myproxy.client.MyProxyClient.v  myproxy.client.MyProxyClient-class.html#v 
    72 myproxy.client.MyProxyClient._cfg       myproxy.client.MyProxyClient-class.html#_cfg 
     86myproxy.client.MyProxyClient.GET_CMD    myproxy.client.MyProxyClient-class.html#GET_CMD 
     87myproxy.client.MyProxyClient.caCertFilePath     myproxy.client.MyProxyClient-class.html#caCertFilePath 
    7388myproxy.client.MyProxyClient.proxyCertLifetime  myproxy.client.MyProxyClient-class.html#proxyCertLifetime 
    74 myproxy.client.MyProxyClient.serverCNPrefix     myproxy.client.MyProxyClient-class.html#serverCNPrefix 
    7589myproxy.client.MyProxyClient.logon      myproxy.client.MyProxyClient-class.html#logon 
    76 myproxy.client.MyProxyClient.proxyCertMaxLifetime       myproxy.client.MyProxyClient-class.html#proxyCertMaxLifetime 
    77 myproxy.client.MyProxyClient._openSSLConfFilePath       myproxy.client.MyProxyClient-class.html#_openSSLConfFilePath 
     90myproxy.client.MyProxyClient._setServerSSLCertVerify    myproxy.client.MyProxyClient-class.html#_setServerSSLCertVerify 
     91myproxy.client.MyProxyClient._hostKeySubDirPath myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath 
     92myproxy.client.MyProxyClient.CHANGE_PASSPHRASE_CMD      myproxy.client.MyProxyClient-class.html#CHANGE_PASSPHRASE_CMD 
    7893myproxy.client.MyProxyClientConfigError myproxy.client.MyProxyClientConfigError-class.html 
    7994myproxy.client.MyProxyClientError       myproxy.client.MyProxyClientError-class.html 
    8095myproxy.client.MyProxyClientGetError    myproxy.client.MyProxyClientGetError-class.html 
     96myproxy.client.MyProxyClientGetTrustRootsError  myproxy.client.MyProxyClientGetTrustRootsError-class.html 
    8197myproxy.client.MyProxyClientRetrieveError       myproxy.client.MyProxyClientRetrieveError-class.html 
    82 myproxy.client._HostCheck       myproxy.client._HostCheck-class.html 
    83 myproxy.client._HostCheck.__call__      myproxy.client._HostCheck-class.html#__call__ 
    84 myproxy.client._HostCheck.__init__      myproxy.client._HostCheck-class.html#__init__ 
     98myproxy.client.MyProxyCredentialsAlreadyExist   myproxy.client.MyProxyCredentialsAlreadyExist-class.html 
     99myproxy.client.MyProxyServerSSLCertVerification myproxy.client.MyProxyServerSSLCertVerification-class.html 
     100myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE       myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE 
     101myproxy.client.MyProxyServerSSLCertVerification.DN_LUT  myproxy.client.MyProxyServerSSLCertVerification-class.html#DN_LUT 
     102myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE_STR   myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE_STR 
     103myproxy.client.MyProxyServerSSLCertVerification.__call__        myproxy.client.MyProxyServerSSLCertVerification-class.html#__call__ 
     104myproxy.client.MyProxyServerSSLCertVerification.__init__        myproxy.client.MyProxyServerSSLCertVerification-class.html#__init__ 
     105myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase  myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html 
     106unittest.TestCase.failureException      exceptions.AssertionError-class.html 
     107myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase.test02SetProperties      myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html#test02SetProperties 
     108myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase.test01EnvironmentVarsSet myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html#test01EnvironmentVarsSet 
     109myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase       myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html 
     110unittest.TestCase.failureException      exceptions.AssertionError-class.html 
     111myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test06GetTrustRoots   myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test06GetTrustRoots 
     112myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test02GetDelegation   myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test02GetDelegation 
     113myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.setUp myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#setUp 
     114myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.CONFIG_FILENAME       myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#CONFIG_FILENAME 
     115myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test05Destroy myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test05Destroy 
     116myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test03Info    myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test03Info 
     117myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test04ChangePassphrase        myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test04ChangePassphrase 
     118myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase.test01Store   myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test01Store 
     119myproxy.test.test_myproxyclient._MyProxyClientTestCase  myproxy.test.test_myproxyclient._MyProxyClientTestCase-class.html 
     120unittest.TestCase.failureException      exceptions.AssertionError-class.html 
     121myproxy.utils.CaseSensitiveConfigParser myproxy.utils.CaseSensitiveConfigParser-class.html 
     122myproxy.utils.CaseSensitiveConfigParser.optionxform     myproxy.utils.CaseSensitiveConfigParser-class.html#optionxform 
    85123myproxy.utils.openssl.OpenSSLConfig     myproxy.utils.openssl.OpenSSLConfig-class.html 
    86124myproxy.utils.openssl.OpenSSLConfig._getReqDN   myproxy.utils.openssl.OpenSSLConfig-class.html#_getReqDN 
  • TI12-security/trunk/MyProxyClient/documentation/class-tree.html

    r5050 r6845  
    5757<h1 class="epydoc">Class Hierarchy</h1> 
    5858<ul class="nomargin-top"> 
    59     <li> <strong class="uidlink">M2Crypto.SSL.Checker.Checker</strong> 
    60     <ul> 
    61     <li> <strong class="uidlink"><a href="myproxy.client._HostCheck-class.html" onclick="show_private();">myproxy.client._HostCheck</a></strong>: 
    62       <em class="summary">Override SSL.Checker.Checker to allow additional check of MyProxy  
    63         server identity.</em> 
    64     </li> 
    65     </ul> 
    66     </li> 
    6759    <li> <strong class="uidlink">ConfigParser.RawConfigParser</strong> 
    6860    <ul> 
     
    7163    <li> <strong class="uidlink">ConfigParser.SafeConfigParser</strong> 
    7264    <ul> 
    73     <li> <strong class="uidlink"><a href="myproxy.client.CaseSensitiveConfigParser-class.html">myproxy.client.CaseSensitiveConfigParser</a></strong>: 
     65    <li> <strong class="uidlink"><a href="myproxy.utils.CaseSensitiveConfigParser-class.html">myproxy.utils.CaseSensitiveConfigParser</a></strong>: 
    7466      <em class="summary">Subclass the SafeConfigParser - to preserve the original string  
    7567        case of config section names</em> 
     
    10395      <em class="summary">Exceptions arising from get request to server</em> 
    10496    </li> 
     97    <li> <strong class="uidlink"><a href="myproxy.client.MyProxyClientGetTrustRootsError-class.html">myproxy.client.MyProxyClientGetTrustRootsError</a></strong>: 
     98      <em class="summary">Error retrieving trust roots</em> 
     99    </li> 
    105100    <li> <strong class="uidlink"><a href="myproxy.client.MyProxyClientRetrieveError-class.html">myproxy.client.MyProxyClientRetrieveError</a></strong>: 
    106101      <em class="summary">Error recovering a response from MyProxy</em> 
    107102    </li> 
     103    <li> <strong class="uidlink"><a href="myproxy.client.MyProxyCredentialsAlreadyExist-class.html">myproxy.client.MyProxyCredentialsAlreadyExist</a></strong>: 
     104      <em class="summary">Attempting to upload credentials to the server which already exist.</em> 
     105    </li> 
    108106    </ul> 
    109107    </li> 
     
    111109      <em class="summary">Exceptions related to OpenSSLConfig class</em> 
    112110    </li> 
     111    <li> <strong class="uidlink">exceptions.StandardError</strong>: 
     112      <em class="summary">Base class for all standard Python exceptions that do not represent 
     113        interpreter exiting.</em> 
     114    <ul> 
     115    <li> <strong class="uidlink"><a href="exceptions.AssertionError-class.html">exceptions.AssertionError</a></strong>: 
     116      <em class="summary">Assertion failed.</em> 
     117    </li> 
     118    </ul> 
     119    </li> 
    113120    </ul> 
    114121    </li> 
     
    117124    <li> <strong class="uidlink"><a href="myproxy.client.MyProxyClient-class.html">myproxy.client.MyProxyClient</a></strong>: 
    118125      <em class="summary">MyProxy client interface</em> 
     126    </li> 
     127    <li> <strong class="uidlink"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">myproxy.client.MyProxyServerSSLCertVerification</a></strong>: 
     128      <em class="summary">Check MyProxy server identity.</em> 
    119129    </li> 
    120130    <li> <strong class="uidlink"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html">myproxy.utils.openssl.OpenSSLConfig</a></strong>: 
    121131      <em class="summary">Wrapper to OpenSSL Configuration file to allow extraction of  
    122132        required distinguished name used for making certificate requests</em> 
     133    </li> 
     134    <li> <strong class="uidlink">unittest.TestCase</strong>: 
     135      <em class="summary">A class whose instances are single test cases.</em> 
     136    <ul> 
     137    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient._MyProxyClientTestCase-class.html" onclick="show_private();">myproxy.test.test_myproxyclient._MyProxyClientTestCase</a></strong>: 
     138      <em class="summary">Base implements environment settings common to all test case  
     139        classes</em> 
     140    <ul> 
     141    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html">myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase</a></strong>: 
     142      <em class="summary">Test interface for correct getting/setting of attributes</em> 
     143    </li> 
     144    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase</a></strong>: 
     145      <em class="summary">Tests require a connection to a real MyProxy service running on a  
     146        host</em> 
     147    </li> 
     148    </ul> 
     149    </li> 
     150    </ul> 
    123151    </li> 
    124152    </ul> 
     
    157185    <td align="left" class="footer"> 
    158186    <a href="epydoc-log.html">Generated by Epydoc 
    159     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     187    3.0.1 on Mon Apr 26 13:55:45 2010</a> 
    160188    </td> 
    161189    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/epydoc-log.html

    r5050 r6845  
    1111      alink="#204080"> 
    1212<h1 class="epydoc">Epydoc Log</h1> 
    13 <p class="log">Epydoc started at Fri Feb 27 13:59:01 2009</p><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/client.py, line 212, in myproxy.client.MyProxyClient.__init__</h2><div class="log-warning"><b>Docstring Warning</b>:  
     13<p class="log">Epydoc started at Mon Apr 26 13:55:43 2010</p><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 278, in myproxy.client.MyProxyClient.__init__</h2><div class="log-warning"><b>Docstring Warning</b>:  
    1414@param for unknown parameter &quot;**prop&quot;</div> 
    15 </div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/client.py, line 600, in myproxy.client.MyProxyClient._deserializeCerts</h2><div class="log-warning"><b>Docstring Warning</b>:  
    16 Line 606: Possible mal-formatted field item.</div> 
    17 </div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/client.py, line 980, in myproxy.client.MyProxyClient.logon</h2><div class="log-warning"><b>Docstring Warning</b>:  
     15</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 668, in myproxy.client.MyProxyClient._deserializeCerts</h2><div class="log-warning"><b>Docstring Warning</b>:  
     16Line 674: Possible mal-formatted field item.</div> 
     17</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 529, in myproxy.client.MyProxyClient._initConnection</h2><div class="log-warning"><b>Docstring Warning</b>:  
     18@param for unknown parameter &quot;sslCertFile&quot;</div> 
     19<div class="log-warning"><b>Docstring Warning</b>:  
     20@param for unknown parameter &quot;sslKeyFile&quot;</div> 
     21</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 1092, in myproxy.client.MyProxyClient.logon</h2><div class="log-warning"><b>Docstring Warning</b>:  
    1822u'return' did not expect an argument</div> 
    19 </div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/client.py, line 877, in myproxy.client.MyProxyClient.store</h2><div class="log-warning"><b>Docstring Warning</b>:  
     23</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 764, in myproxy.client.MyProxyClient.put</h2><div class="log-warning"><b>Docstring Warning</b>:  
     24@param for unknown parameter &quot;certFile&quot;</div> 
     25<div class="log-warning"><b>Docstring Warning</b>:  
     26@param for unknown parameter &quot;keyFile&quot;</div> 
     27</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line 989, in myproxy.client.MyProxyClient.store</h2><div class="log-warning"><b>Docstring Warning</b>:  
    2028@type for unknown parameter &quot;Force&quot;</div> 
    21 </div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/utils/openssl.py, line 122, in myproxy.utils.openssl.OpenSSLConfig._getCADir</h2><div class="log-warning"><b>Docstring Warning</b>:  
     29</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/utils/openssl.py, line 131, in myproxy.utils.openssl.OpenSSLConfig._getCADir</h2><div class="log-warning"><b>Docstring Warning</b>:  
    2230u'rtype' did not expect an argument</div> 
    2331<div class="log-warning"><b>Docstring Warning</b>:  
    2432u'return' did not expect an argument</div> 
    25 </div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/utils/openssl.py, line 133, in myproxy.utils.openssl.OpenSSLConfig._getReqDN</h2><div class="log-warning"><b>Docstring Warning</b>:  
     33</div><div class="log-block"><h2 class="log-hdr">File /home/pjkersha/workspace/MyProxyClient/myproxy/utils/openssl.py, line 141, in myproxy.utils.openssl.OpenSSLConfig._getReqDN</h2><div class="log-warning"><b>Docstring Warning</b>:  
    2634u'rtype' did not expect an argument</div> 
    2735<div class="log-warning"><b>Docstring Warning</b>:  
     
    3139<tr valign="top" class="opt-changed"><td valign="top">graphs</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['classtree', 'umlclasstree']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">include_log</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">names</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['../myproxy']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_name</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'MyProxy Client'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">show_frames</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">target</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'.'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbose</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>1</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbosity</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>1</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">action</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'html'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">configfiles</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">css</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">debug</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">docformat</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'epytext'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">dotpath</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_root</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">fail_on</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font_size</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">help_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">include_source_code</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">inheritance</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'listed'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">list_classes_separately</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">load_pickle</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">prj_link</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">prj_url</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">profile</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">pstat_files</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">quiet</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>0</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">redundant_details</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_imports</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_private</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">simple_term</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">src_code_tab_width</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>8</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">top_page</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr></table> 
    3240</div> 
    33 </div><p class="log">Epydoc finished at Fri Feb 27 13:59:02 2009</p> 
    34 <p class="log">(Elapsed time: 1 seconds)</p></body> 
     41</div><p class="log">Epydoc finished at Mon Apr 26 13:55:46 2010</p> 
     42<p class="log">(Elapsed time: 2 seconds)</p></body> 
    3543</html> 
  • TI12-security/trunk/MyProxyClient/documentation/epydoc.log

    r5050 r6845  
    1   [........................ 
     1  [.......................... 
    22+--------------------------------------------------------------------- 
    3 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    4 | client.py, line 212, in myproxy.client.MyProxyClient.__init__ 
     3| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     4| 278, in myproxy.client.MyProxyClient.__init__ 
    55|   Warning: @param for unknown parameter "**prop" 
    66|    
    77+--------------------------------------------------------------------- 
    8 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    9 | client.py, line 600, in  
    10 | myproxy.client.MyProxyClient._deserializeCerts 
    11 |   Warning: Line 606: Possible mal-formatted field item. 
     8| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     9| 668, in myproxy.client.MyProxyClient._deserializeCerts 
     10|   Warning: Line 674: Possible mal-formatted field item. 
    1211|    
    1312+--------------------------------------------------------------------- 
    14 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    15 | client.py, line 980, in myproxy.client.MyProxyClient.logon 
     13| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     14| 529, in myproxy.client.MyProxyClient._initConnection 
     15|   Warning: @param for unknown parameter "sslCertFile" 
     16|   Warning: @param for unknown parameter "sslKeyFile" 
     17|    
     18+--------------------------------------------------------------------- 
     19| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     20| 1092, in myproxy.client.MyProxyClient.logon 
    1621|   Warning: u'return' did not expect an argument 
    1722|    
    1823+--------------------------------------------------------------------- 
    19 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    20 | client.py, line 877, in myproxy.client.MyProxyClient.store 
     24| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     25| 764, in myproxy.client.MyProxyClient.put 
     26|   Warning: @param for unknown parameter "certFile" 
     27|   Warning: @param for unknown parameter "keyFile" 
     28|    
     29+--------------------------------------------------------------------- 
     30| File /home/pjkersha/workspace/MyProxyClient/myproxy/client.py, line  
     31| 989, in myproxy.client.MyProxyClient.store 
    2132|   Warning: @type for unknown parameter "Force" 
    2233|    
    23   [............................ 
     34  [........................... 
    2435+--------------------------------------------------------------------- 
    25 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    26 | utils/openssl.py, line 122, in  
     36| File /home/pjkersha/workspace/MyProxyClient/myproxy/utils/ 
     37| openssl.py, line 131, in  
    2738| myproxy.utils.openssl.OpenSSLConfig._getCADir 
    2839|   Warning: u'rtype' did not expect an argument 
     
    3041|    
    3142+--------------------------------------------------------------------- 
    32 | File /home/pjkersha/workspace/security/python/MyProxyClient/myproxy/ 
    33 | utils/openssl.py, line 133, in  
     43| File /home/pjkersha/workspace/MyProxyClient/myproxy/utils/ 
     44| openssl.py, line 141, in  
    3445| myproxy.utils.openssl.OpenSSLConfig._getReqDN 
    3546|   Warning: u'rtype' did not expect an argument 
  • TI12-security/trunk/MyProxyClient/documentation/help.html

    r5050 r6845  
    254254    <td align="left" class="footer"> 
    255255    <a href="epydoc-log.html">Generated by Epydoc 
    256     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     256    3.0.1 on Mon Apr 26 13:55:45 2010</a> 
    257257    </td> 
    258258    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/identifier-index.html

    r5050 r6845  
    5656</td><td> 
    5757[ 
    58   A 
     58 <a href="#A">A</a> 
    5959  B 
    6060 <a href="#C">C</a> 
     
    7575 <a href="#R">R</a> 
    7676 <a href="#S">S</a> 
    77   T 
     77 <a href="#T">T</a> 
    7878 <a href="#U">U</a> 
    79  <a href="#V">V</a> 
     79  V 
    8080 <a href="#W">W</a> 
    8181  X 
     
    8686</td></table> 
    8787<table border="0" width="100%"> 
     88<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td> 
     89<td valign="top"> 
     90<table class="link-index" width="100%" border="1"> 
     91<tr> 
     92<td width="33%" class="link-index"><a href="exceptions.AssertionError-class.html">AssertionError</a></td> 
     93<td width="33%" class="link-index">&nbsp;</td> 
     94<td width="33%" class="link-index">&nbsp;</td> 
     95</tr> 
     96<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr> 
     97</table> 
     98</td></tr> 
    8899<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td> 
    89100<td valign="top"> 
     
    92103<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#caCertDir">caCertDir</a><br /> 
    93104<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    94 <td width="33%" class="link-index"><a href="myproxy.client.CaseSensitiveConfigParser-class.html">CaseSensitiveConfigParser</a><br /> 
    95 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     105<td width="33%" class="link-index"><a href="myproxy.utils.CaseSensitiveConfigParser-class.html">CaseSensitiveConfigParser</a><br /> 
     106<span class="index-where">(in&nbsp;<a href="myproxy.utils-module.html">myproxy.utils</a>)</span></td> 
    96107<td width="33%" class="link-index"><a href="myproxy.client-module.html">client</a><br /> 
    97108<span class="index-where">(in&nbsp;<a href="myproxy-module.html">myproxy</a>)</span></td> 
     
    100111<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#caCertFilePath">caCertFilePath</a><br /> 
    101112<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     113<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#CHANGE_PASSPHRASE_CMD">CHANGE_PASSPHRASE_CMD</a><br /> 
     114<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     115<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#CONFIG_FILENAME">CONFIG_FILENAME</a><br /> 
     116<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     117</tr> 
     118<tr> 
     119<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#caDir">caDir</a><br /> 
     120<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    102121<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#changePassphrase">changePassphrase()</a><br /> 
    103122<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    104123<td width="33%" class="link-index">&nbsp;</td> 
    105124</tr> 
    106 <tr> 
    107 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#caDir">caDir</a><br /> 
    108 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    109 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#changePassphraseCmd">changePassphraseCmd</a><br /> 
    110 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    111 <td width="33%" class="link-index">&nbsp;</td> 
    112 </tr> 
    113125</table> 
    114126</td></tr> 
     
    117129<table class="link-index" width="100%" border="1"> 
    118130<tr> 
    119 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#defProxyFile">defProxyFile</a><br /> 
    120 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     131<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#DEF_PROXY_FILEPATH">DEF_PROXY_FILEPATH</a><br /> 
     132<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     133<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#DESTROY_CMD">DESTROY_CMD</a><br /> 
     134<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     135<td width="33%" class="link-index">&nbsp;</td> 
     136</tr> 
     137<tr> 
    121138<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#destroy">destroy()</a><br /> 
    122139<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    123 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#destroyCmd">destroyCmd</a><br /> 
    124 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    125 </tr> 
    126 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr> 
     140<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html#DN_LUT">DN_LUT</a><br /> 
     141<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a>)</span></td> 
     142<td width="33%" class="link-index">&nbsp;</td> 
     143</tr> 
    127144</table> 
    128145</td></tr> 
     
    143160<table class="link-index" width="100%" border="1"> 
    144161<tr> 
    145 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#getCmd">getCmd</a><br /> 
     162<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#GET_CMD">GET_CMD</a><br /> 
    146163<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    147164<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#getDelegation">getDelegation()</a><br /> 
     
    149166<td width="33%" class="link-index">&nbsp;</td> 
    150167</tr> 
    151 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr> 
     168<tr> 
     169<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#GET_TRUST_ROOTS_CMD">GET_TRUST_ROOTS_CMD</a><br /> 
     170<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     171<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#getTrustRoots">getTrustRoots()</a><br /> 
     172<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     173<td width="33%" class="link-index">&nbsp;</td> 
     174</tr> 
    152175</table> 
    153176</td></tr> 
     
    170193<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#info">info()</a><br /> 
    171194<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    172 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#infoCmd">infoCmd</a><br /> 
     195<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#INFO_CMD">INFO_CMD</a><br /> 
    173196<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    174197<td width="33%" class="link-index">&nbsp;</td> 
     
    206229<table class="link-index" width="100%" border="1"> 
    207230<tr> 
     231<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#MAX_RECV_TRIES">MAX_RECV_TRIES</a><br /> 
     232<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     233<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientConfigError-class.html">MyProxyClientConfigError</a><br /> 
     234<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     235<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a><br /> 
     236<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a>)</span></td> 
     237</tr> 
     238<tr> 
     239<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#MESSAGE_DIGEST_TYPE">MESSAGE_DIGEST_TYPE</a><br /> 
     240<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     241<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientError-class.html">MyProxyClientError</a><br /> 
     242<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     243<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientRetrieveError-class.html">MyProxyClientRetrieveError</a><br /> 
     244<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     245</tr> 
     246<tr> 
     247<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient-module.html#mkPath">mkPath()</a><br /> 
     248<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a>)</span></td> 
     249<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientGetError-class.html">MyProxyClientGetError</a><br /> 
     250<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     251<td width="33%" class="link-index"><a href="myproxy.client.MyProxyCredentialsAlreadyExist-class.html">MyProxyCredentialsAlreadyExist</a><br /> 
     252<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     253</tr> 
     254<tr> 
    208255<td width="33%" class="link-index"><a href="myproxy-module.html">myproxy</a></td> 
    209 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientConfigError-class.html">MyProxyClientConfigError</a><br /> 
    210 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    211 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientGetError-class.html">MyProxyClientGetError</a><br /> 
     256<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientGetTrustRootsError-class.html">MyProxyClientGetTrustRootsError</a><br /> 
     257<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     258<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a><br /> 
    212259<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    213260</tr> 
     
    215262<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a><br /> 
    216263<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    217 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientError-class.html">MyProxyClientError</a><br /> 
    218 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    219 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClientRetrieveError-class.html">MyProxyClientRetrieveError</a><br /> 
    220 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     264<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html">MyProxyClientInterfaceTestCase</a><br /> 
     265<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a>)</span></td> 
     266<td width="33%" class="link-index">&nbsp;</td> 
    221267</tr> 
    222268</table> 
     
    238284<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a><br /> 
    239285<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl-module.html">myproxy.utils.openssl</a>)</span></td> 
    240 <td width="33%" class="link-index"><a href="myproxy.client.CaseSensitiveConfigParser-class.html#optionxform">optionxform()</a><br /> 
    241 <span class="index-where">(in&nbsp;<a href="myproxy.client.CaseSensitiveConfigParser-class.html">CaseSensitiveConfigParser</a>)</span></td> 
     286<td width="33%" class="link-index"><a href="myproxy.utils.CaseSensitiveConfigParser-class.html#optionxform">optionxform()</a><br /> 
     287<span class="index-where">(in&nbsp;<a href="myproxy.utils.CaseSensitiveConfigParser-class.html">CaseSensitiveConfigParser</a>)</span></td> 
    242288</tr> 
    243289</table> 
     
    249295<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#parseConfig">parseConfig()</a><br /> 
    250296<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    251 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#propertyDefaults">propertyDefaults</a><br /> 
     297<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#PRIKEY_NBITS">PRIKEY_NBITS</a><br /> 
    252298<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    253299<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#proxyCertMaxLifetime">proxyCertMaxLifetime</a><br /> 
     
    255301</tr> 
    256302<tr> 
     303<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE">PARSER_RE</a><br /> 
     304<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a>)</span></td> 
     305<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#PROPERTY_DEFAULTS">PROPERTY_DEFAULTS</a><br /> 
     306<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     307<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#put">put()</a><br /> 
     308<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     309</tr> 
     310<tr> 
     311<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE_STR">PARSER_RE_STR</a><br /> 
     312<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a>)</span></td> 
     313<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#PROXY_FILE_PERMISSIONS">PROXY_FILE_PERMISSIONS</a><br /> 
     314<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     315<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#PUT_CMD">PUT_CMD</a><br /> 
     316<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     317</tr> 
     318<tr> 
    257319<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#port">port</a><br /> 
    258320<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     
    286348<table class="link-index" width="100%" border="1"> 
    287349<tr> 
    288 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#serverCNPrefix">serverCNPrefix</a><br /> 
     350<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#SERVER_RESP_BLK_SIZE">SERVER_RESP_BLK_SIZE</a><br /> 
    289351<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    290352<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#setCADir">setCADir()</a><br /> 
    291353<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    292 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#storeCmd">storeCmd</a><br /> 
     354<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#STORE_CMD">STORE_CMD</a><br /> 
    293355<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    294356</tr> 
     
    296358<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#serverDN">serverDN</a><br /> 
    297359<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     360<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#setUp">setUp()</a><br /> 
     361<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     362<td width="33%" class="link-index">&nbsp;</td> 
     363</tr> 
     364<tr> 
     365<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#serverSSLCertVerify">serverSSLCertVerify</a><br /> 
     366<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    298367<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#store">store()</a><br /> 
    299368<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     369<td width="33%" class="link-index">&nbsp;</td> 
     370</tr> 
     371</table> 
     372</td></tr> 
     373<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td> 
     374<td valign="top"> 
     375<table class="link-index" width="100%" border="1"> 
     376<tr> 
     377<td width="33%" class="link-index"><a href="myproxy.test-module.html">test</a><br /> 
     378<span class="index-where">(in&nbsp;<a href="myproxy-module.html">myproxy</a>)</span></td> 
     379<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html#test02SetProperties">test02SetProperties()</a><br /> 
     380<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html">MyProxyClientInterfaceTestCase</a>)</span></td> 
     381<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test06GetTrustRoots">test06GetTrustRoots()</a><br /> 
     382<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     383</tr> 
     384<tr> 
     385<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html#test01EnvironmentVarsSet">test01EnvironmentVarsSet()</a><br /> 
     386<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientInterfaceTestCase-class.html">MyProxyClientInterfaceTestCase</a>)</span></td> 
     387<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test03Info">test03Info()</a><br /> 
     388<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     389<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient-module.html">test_myproxyclient</a><br /> 
     390<span class="index-where">(in&nbsp;<a href="myproxy.test-module.html">myproxy.test</a>)</span></td> 
     391</tr> 
     392<tr> 
     393<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test01Store">test01Store()</a><br /> 
     394<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     395<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test04ChangePassphrase">test04ChangePassphrase()</a><br /> 
     396<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     397<td width="33%" class="link-index">&nbsp;</td> 
     398</tr> 
     399<tr> 
     400<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test02GetDelegation">test02GetDelegation()</a><br /> 
     401<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
     402<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html#test05Destroy">test05Destroy()</a><br /> 
     403<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient.MyProxyClientLiveTestCase-class.html">MyProxyClientLiveTestCase</a>)</span></td> 
    300404<td width="33%" class="link-index">&nbsp;</td> 
    301405</tr> 
     
    314418</table> 
    315419</td></tr> 
    316 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td> 
    317 <td valign="top"> 
    318 <table class="link-index" width="100%" border="1"> 
    319 <tr> 
    320 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#v">v</a><br /> 
    321 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    322 <td width="33%" class="link-index">&nbsp;</td> 
    323 <td width="33%" class="link-index">&nbsp;</td> 
    324 </tr> 
    325 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr> 
    326 </table> 
    327 </td></tr> 
    328420<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td> 
    329421<td valign="top"> 
     
    342434<table class="link-index" width="100%" border="1"> 
    343435<tr> 
    344 <td width="33%" class="link-index"><a href="myproxy.client._HostCheck-class.html#__call__">__call__()</a><br /> 
    345 <span class="index-where">(in&nbsp;<a href="myproxy.client._HostCheck-class.html" onclick="show_private();">_HostCheck</a>)</span></td> 
     436<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__caCertDir">__caCertDir</a><br /> 
     437<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     438<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__serverDN">__serverDN</a><br /> 
     439<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     440<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_getReqDN">_getReqDN()</a><br /> 
     441<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     442</tr> 
     443<tr> 
     444<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__caCertFilePath">__caCertFilePath</a><br /> 
     445<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     446<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__serverSSLCertVerify">__serverSSLCertVerify</a><br /> 
     447<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     448<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getServerDN">_getServerDN()</a><br /> 
     449<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     450</tr> 
     451<tr> 
     452<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html#__call__">__call__()</a><br /> 
     453<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a>)</span></td> 
     454<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_caDirPat">_caDirPat</a><br /> 
     455<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     456<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getServerSSLCertVerify">_getServerSSLCertVerify()</a><br /> 
     457<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     458</tr> 
     459<tr> 
     460<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__cfg">__cfg</a><br /> 
     461<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     462<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_certReqDNParamName">_certReqDNParamName</a><br /> 
     463<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     464<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_gridCASubDir">_gridCASubDir</a><br /> 
     465<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     466</tr> 
     467<tr> 
     468<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__hostname">__hostname</a><br /> 
     469<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     470<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_createCertReq">_createCertReq()</a><br /> 
     471<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     472<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_hostCertSubDirPath">_hostCertSubDirPath</a><br /> 
     473<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     474</tr> 
     475<tr> 
     476<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__init__">__init__()</a><br /> 
     477<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     478<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_createKeyPair">_createKeyPair()</a><br /> 
     479<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     480<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath">_hostKeySubDirPath</a><br /> 
     481<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     482</tr> 
     483<tr> 
     484<td width="33%" class="link-index"><a href="myproxy.client.MyProxyServerSSLCertVerification-class.html#__init__">__init__()</a><br /> 
     485<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a>)</span></td> 
     486<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_deserializeCerts">_deserializeCerts()</a><br /> 
     487<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     488<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_initConnection">_initConnection()</a><br /> 
     489<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     490</tr> 
     491<tr> 
     492<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#__init__">__init__()</a><br /> 
     493<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     494<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_deserializeResponse">_deserializeResponse()</a><br /> 
     495<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     496<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient._MyProxyClientTestCase-class.html">_MyProxyClientTestCase</a><br /> 
     497<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a>)</span></td> 
     498</tr> 
     499<tr> 
     500<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__openSSLConfFilePath">__openSSLConfFilePath</a><br /> 
     501<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     502<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_filtOptVal">_filtOptVal()</a><br /> 
     503<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     504<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setCACertDir">_setCACertDir()</a><br /> 
     505<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     506</tr> 
     507<tr> 
     508<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__openSSLConfig">__openSSLConfig</a><br /> 
     509<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     510<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getCACertDir">_getCACertDir()</a><br /> 
     511<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     512<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setCACertFilePath">_setCACertFilePath()</a><br /> 
     513<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     514</tr> 
     515<tr> 
     516<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__port">__port</a><br /> 
     517<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    346518<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getCACertFilePath">_getCACertFilePath()</a><br /> 
    347519<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    348 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_openSSLConfFilePath">_openSSLConfFilePath</a><br /> 
    349 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    350 </tr> 
    351 <tr> 
    352 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__init__">__init__()</a><br /> 
     520<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_setFilePath">_setFilePath()</a><br /> 
     521<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
     522</tr> 
     523<tr> 
     524<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__proxyCertLifetime">__proxyCertLifetime</a><br /> 
    353525<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    354526<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_getCADir">_getCADir()</a><br /> 
    355527<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    356 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_openSSLConfig">_openSSLConfig</a><br /> 
    357 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    358 </tr> 
    359 <tr> 
    360 <td width="33%" class="link-index"><a href="myproxy.client._HostCheck-class.html#__init__">__init__()</a><br /> 
    361 <span class="index-where">(in&nbsp;<a href="myproxy.client._HostCheck-class.html" onclick="show_private();">_HostCheck</a>)</span></td> 
     528<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setHostname">_setHostname()</a><br /> 
     529<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     530</tr> 
     531<tr> 
     532<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#__proxyCertMaxLifetime">__proxyCertMaxLifetime</a><br /> 
     533<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    362534<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_getFilePath">_getFilePath()</a><br /> 
    363535<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    364 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_port">_port</a><br /> 
    365 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    366 </tr> 
    367 <tr> 
    368 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#__init__">__init__()</a><br /> 
    369 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    370 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getHostname">_getHostname()</a><br /> 
    371 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    372 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_proxyCertLifetime">_proxyCertLifetime</a><br /> 
     536<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath">_setOpenSSLConfFilePath()</a><br /> 
    373537<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    374538</tr> 
     
    376540<td width="33%" class="link-index"><a href="myproxy-module.html#__revision__">__revision__</a><br /> 
    377541<span class="index-where">(in&nbsp;<a href="myproxy-module.html">myproxy</a>)</span></td> 
     542<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getHostname">_getHostname()</a><br /> 
     543<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     544<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setPort">_setPort()</a><br /> 
     545<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     546</tr> 
     547<tr> 
     548<td width="33%" class="link-index"><a href="myproxy.client-module.html#__revision__">__revision__</a><br /> 
     549<span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    378550<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath">_getOpenSSLConfFilePath()</a><br /> 
    379551<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    380 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_proxyCertMaxLifetime">_proxyCertMaxLifetime</a><br /> 
    381 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    382 </tr> 
    383 <tr> 
    384 <td width="33%" class="link-index"><a href="myproxy.client-module.html#__revision__">__revision__</a><br /> 
    385 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
     552<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime">_setProxyCertLifetime()</a><br /> 
     553<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     554</tr> 
     555<tr> 
     556<td width="33%" class="link-index"><a href="myproxy.test-module.html#__revision__">__revision__</a><br /> 
     557<span class="index-where">(in&nbsp;<a href="myproxy.test-module.html">myproxy.test</a>)</span></td> 
    386558<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig">_getOpenSSLConfig()</a><br /> 
    387559<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    388 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_serverCNPrefix">_serverCNPrefix</a><br /> 
    389 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     560<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime">_setProxyCertMaxLifetime()</a><br /> 
     561<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     562</tr> 
     563<tr> 
     564<td width="33%" class="link-index"><a href="myproxy.test.test_myproxyclient-module.html#__revision__">__revision__</a><br /> 
     565<span class="index-where">(in&nbsp;<a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a>)</span></td> 
     566<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getPort">_getPort()</a><br /> 
     567<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     568<td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_setReqDN">_setReqDN()</a><br /> 
     569<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    390570</tr> 
    391571<tr> 
    392572<td width="33%" class="link-index"><a href="myproxy.utils-module.html#__revision__">__revision__</a><br /> 
    393573<span class="index-where">(in&nbsp;<a href="myproxy.utils-module.html">myproxy.utils</a>)</span></td> 
    394 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getPort">_getPort()</a><br /> 
    395 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    396 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_serverDN">_serverDN</a><br /> 
     574<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime">_getProxyCertLifetime()</a><br /> 
     575<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
     576<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setServerDN">_setServerDN()</a><br /> 
    397577<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    398578</tr> 
     
    400580<td width="33%" class="link-index"><a href="myproxy.utils.openssl-module.html#__revision__">__revision__</a><br /> 
    401581<span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl-module.html">myproxy.utils.openssl</a>)</span></td> 
    402 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime">_getProxyCertLifetime()</a><br /> 
    403 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    404 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setCACertDir">_setCACertDir()</a><br /> 
    405 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    406 </tr> 
    407 <tr> 
    408 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_caCertDir">_caCertDir</a><br /> 
    409 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    410582<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime">_getProxyCertMaxLifetime()</a><br /> 
    411583<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    412 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setCACertFilePath">_setCACertFilePath()</a><br /> 
    413 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    414 </tr> 
    415 <tr> 
    416 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_caCertFilePath">_caCertFilePath</a><br /> 
    417 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    418 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_getReqDN">_getReqDN()</a><br /> 
    419 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    420 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_setFilePath">_setFilePath()</a><br /> 
    421 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    422 </tr> 
    423 <tr> 
    424 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_caDirPat">_caDirPat</a><br /> 
    425 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    426 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getServerCNPrefix">_getServerCNPrefix()</a><br /> 
    427 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    428 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setHostname">_setHostname()</a><br /> 
    429 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    430 </tr> 
    431 <tr> 
    432 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_certReqDNParamName">_certReqDNParamName</a><br /> 
    433 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    434 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getServerDN">_getServerDN()</a><br /> 
    435 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    436 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath">_setOpenSSLConfFilePath()</a><br /> 
    437 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    438 </tr> 
    439 <tr> 
    440 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_cfg">_cfg</a><br /> 
    441 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    442 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_gridCASubDir">_gridCASubDir</a><br /> 
    443 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    444 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setPort">_setPort()</a><br /> 
    445 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    446 </tr> 
    447 <tr> 
    448 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_createCertReq">_createCertReq()</a><br /> 
    449 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    450 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_hostCertSubDirPath">_hostCertSubDirPath</a><br /> 
    451 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    452 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime">_setProxyCertLifetime()</a><br /> 
    453 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    454 </tr> 
    455 <tr> 
    456 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_deserializeCerts">_deserializeCerts()</a><br /> 
    457 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    458 <td width="33%" class="link-index"><a href="myproxy.client._HostCheck-class.html">_HostCheck</a><br /> 
    459 <span class="index-where">(in&nbsp;<a href="myproxy.client-module.html">myproxy.client</a>)</span></td> 
    460 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime">_setProxyCertMaxLifetime()</a><br /> 
    461 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    462 </tr> 
    463 <tr> 
    464 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_deserializeResponse">_deserializeResponse()</a><br /> 
    465 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    466 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath">_hostKeySubDirPath</a><br /> 
    467 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    468 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_setReqDN">_setReqDN()</a><br /> 
    469 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    470 </tr> 
    471 <tr> 
    472 <td width="33%" class="link-index"><a href="myproxy.utils.openssl.OpenSSLConfig-class.html#_filtOptVal">_filtOptVal()</a><br /> 
    473 <span class="index-where">(in&nbsp;<a href="myproxy.utils.openssl.OpenSSLConfig-class.html">OpenSSLConfig</a>)</span></td> 
    474 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_hostname">_hostname</a><br /> 
    475 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    476 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setServerCNPrefix">_setServerCNPrefix()</a><br /> 
    477 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    478 </tr> 
    479 <tr> 
    480 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_getCACertDir">_getCACertDir()</a><br /> 
    481 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    482 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_initConnection">_initConnection()</a><br /> 
    483 <span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    484 <td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setServerDN">_setServerDN()</a><br /> 
     584<td width="33%" class="link-index"><a href="myproxy.client.MyProxyClient-class.html#_setServerSSLCertVerify">_setServerSSLCertVerify()</a><br /> 
    485585<span class="index-where">(in&nbsp;<a href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a>)</span></td> 
    486586</tr> 
     
    520620    <td align="left" class="footer"> 
    521621    <a href="epydoc-log.html">Generated by Epydoc 
    522     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     622    3.0.1 on Mon Apr 26 13:55:44 2010</a> 
    523623    </td> 
    524624    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/index.html

    r5050 r6845  
    9797  <ul class="nomargin"> 
    9898    <li> <strong class="uidlink"><a href="myproxy.client-module.html">myproxy.client</a></strong>: <em class="summary">MyProxy Client interface</em>    </li> 
     99    <li> <strong class="uidlink"><a href="myproxy.test-module.html">myproxy.test</a></strong>: <em class="summary">MyProxy client unit test package</em> 
     100    <ul> 
     101    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a></strong>: <em class="summary">MyProxy Client unit tests</em>    </li> 
     102    </ul> 
     103    </li> 
    99104    <li> <strong class="uidlink"><a href="myproxy.utils-module.html">myproxy.utils</a></strong>: <em class="summary">MyProxy client utils package - contains openssl module for parsing  
    100105        OpenSSL config files.</em> 
     
    129134      <span class="summary-type">&nbsp;</span> 
    130135    </td><td class="summary"> 
    131         <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id$'"><code class="variable-quote">'</code><code class="variable-string">$Id$</code><code class="variable-quote">'</code></code> 
     136        <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id: $'"><code class="variable-quote">'</code><code class="variable-string">$Id: $</code><code class="variable-quote">'</code></code> 
    132137    </td> 
    133138  </tr> 
     
    165170    <td align="left" class="footer"> 
    166171    <a href="epydoc-log.html">Generated by Epydoc 
    167     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     172    3.0.1 on Mon Apr 26 13:55:45 2010</a> 
    168173    </td> 
    169174    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/module-tree.html

    r5050 r6845  
    6161    <ul> 
    6262    <li> <strong class="uidlink"><a href="myproxy.client-module.html">myproxy.client</a></strong>: <em class="summary">MyProxy Client interface</em>    </li> 
     63    <li> <strong class="uidlink"><a href="myproxy.test-module.html">myproxy.test</a></strong>: <em class="summary">MyProxy client unit test package</em> 
     64    <ul> 
     65    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a></strong>: <em class="summary">MyProxy Client unit tests</em>    </li> 
     66    </ul> 
     67    </li> 
    6368    <li> <strong class="uidlink"><a href="myproxy.utils-module.html">myproxy.utils</a></strong>: <em class="summary">MyProxy client utils package - contains openssl module for parsing  
    6469        OpenSSL config files.</em> 
     
    103108    <td align="left" class="footer"> 
    104109    <a href="epydoc-log.html">Generated by Epydoc 
    105     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     110    3.0.1 on Mon Apr 26 13:55:44 2010</a> 
    106111    </td> 
    107112    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/myproxy-module.html

    r5050 r6845  
    9797  <ul class="nomargin"> 
    9898    <li> <strong class="uidlink"><a href="myproxy.client-module.html">myproxy.client</a></strong>: <em class="summary">MyProxy Client interface</em>    </li> 
     99    <li> <strong class="uidlink"><a href="myproxy.test-module.html">myproxy.test</a></strong>: <em class="summary">MyProxy client unit test package</em> 
     100    <ul> 
     101    <li> <strong class="uidlink"><a href="myproxy.test.test_myproxyclient-module.html">myproxy.test.test_myproxyclient</a></strong>: <em class="summary">MyProxy Client unit tests</em>    </li> 
     102    </ul> 
     103    </li> 
    99104    <li> <strong class="uidlink"><a href="myproxy.utils-module.html">myproxy.utils</a></strong>: <em class="summary">MyProxy client utils package - contains openssl module for parsing  
    100105        OpenSSL config files.</em> 
     
    129134      <span class="summary-type">&nbsp;</span> 
    130135    </td><td class="summary"> 
    131         <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id$'"><code class="variable-quote">'</code><code class="variable-string">$Id$</code><code class="variable-quote">'</code></code> 
     136        <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id: $'"><code class="variable-quote">'</code><code class="variable-string">$Id: $</code><code class="variable-quote">'</code></code> 
    132137    </td> 
    133138  </tr> 
     
    165170    <td align="left" class="footer"> 
    166171    <a href="epydoc-log.html">Generated by Epydoc 
    167     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     172    3.0.1 on Mon Apr 26 13:55:45 2010</a> 
    168173    </td> 
    169174    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/myproxy-pysrc.html

    r5050 r6845  
    6767<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> <tt class="py-string">"""BSD - See LICENSE file in top-level directory"""</tt> </tt> 
    6868<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-name">__contact__</tt> <tt class="py-op">=</tt> <tt class="py-string">"Philip.Kershaw@stfc.ac.uk"</tt> </tt> 
    69 <a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable myproxy.__revision__=myproxy-module.html#__revision__,Variable myproxy.client.__revision__=myproxy.client-module.html#__revision__,Variable myproxy.utils.__revision__=myproxy.utils-module.html#__revision__,Variable myproxy.utils.openssl.__revision__=myproxy.utils.openssl-module.html#__revision__"><a title="myproxy.__revision__ 
     69<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable myproxy.__revision__=myproxy-module.html#__revision__,Variable myproxy.client.__revision__=myproxy.client-module.html#__revision__,Variable myproxy.test.__revision__=myproxy.test-module.html#__revision__,Variable myproxy.test.test_myproxyclient.__revision__=myproxy.test.test_myproxyclient-module.html#__revision__,Variable myproxy.utils.__revision__=myproxy.utils-module.html#__revision__,Variable myproxy.utils.openssl.__revision__=myproxy.utils.openssl-module.html#__revision__"><a title="myproxy.__revision__ 
    7070myproxy.client.__revision__ 
     71myproxy.test.__revision__ 
     72myproxy.test.test_myproxyclient.__revision__ 
    7173myproxy.utils.__revision__ 
    72 myproxy.utils.openssl.__revision__" class="py-name" href="#" onclick="return doclink('link-0', '__revision__', 'link-0');">__revision__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Id$'</tt> </tt> 
     74myproxy.utils.openssl.__revision__" class="py-name" href="#" onclick="return doclink('link-0', '__revision__', 'link-0');">__revision__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Id: $'</tt> </tt> 
    7375<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"> </tt><script type="text/javascript"> 
    7476<!-- 
     
    110112    <td align="left" class="footer"> 
    111113    <a href="epydoc-log.html">Generated by Epydoc 
    112     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     114    3.0.1 on Mon Apr 26 13:55:46 2010</a> 
    113115    </td> 
    114116    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/myproxy.client-module.html

    r5050 r6845  
    6161  <p>Developed for the NERC DataGrid Project: http://ndg.nerc.ac.uk/</p> 
    6262  <p>Major re-write of an original class.   This updated version implements 
    63   methods with SSL calls with M2Crypto rather use calls to myproxy client  
     63  methods with SSL calls with PyOpenSSL rather use calls to myproxy client  
    6464  executables as in the original.  This version is adapted and extended  
    6565  from an original program myproxy_logon by Tom Uram  
     
    7777      </p> 
    7878      <p><strong>Copyright:</strong> 
    79         (C) 2009 Science and Technology Facilities Council 
     79        (C) 2010 Science and Technology Facilities Council 
    8080      </p> 
    8181      <p><strong>License:</strong> 
     
    111111      <span class="summary-type">&nbsp;</span> 
    112112    </td><td class="summary"> 
    113         <a href="myproxy.client.CaseSensitiveConfigParser-class.html" class="summary-name">CaseSensitiveConfigParser</a><br /> 
    114       Subclass the SafeConfigParser - to preserve the original string  
    115         case of config section names 
    116     </td> 
    117   </tr> 
    118 <tr class="private"> 
    119     <td width="15%" align="right" valign="top" class="summary"> 
    120       <span class="summary-type">&nbsp;</span> 
    121     </td><td class="summary"> 
    122         <a href="myproxy.client._HostCheck-class.html" class="summary-name" onclick="show_private();">_HostCheck</a><br /> 
    123       Override SSL.Checker.Checker to allow additional check of MyProxy  
    124         server identity. 
     113        <a href="myproxy.client.MyProxyServerSSLCertVerification-class.html" class="summary-name">MyProxyServerSSLCertVerification</a><br /> 
     114      Check MyProxy server identity. 
    125115    </td> 
    126116  </tr> 
     
    155145        <a href="myproxy.client.MyProxyClientRetrieveError-class.html" class="summary-name">MyProxyClientRetrieveError</a><br /> 
    156146      Error recovering a response from MyProxy 
     147    </td> 
     148  </tr> 
     149<tr> 
     150    <td width="15%" align="right" valign="top" class="summary"> 
     151      <span class="summary-type">&nbsp;</span> 
     152    </td><td class="summary"> 
     153        <a href="myproxy.client.MyProxyCredentialsAlreadyExist-class.html" class="summary-name">MyProxyCredentialsAlreadyExist</a><br /> 
     154      Attempting to upload credentials to the server which already exist. 
     155    </td> 
     156  </tr> 
     157<tr> 
     158    <td width="15%" align="right" valign="top" class="summary"> 
     159      <span class="summary-type">&nbsp;</span> 
     160    </td><td class="summary"> 
     161        <a href="myproxy.client.MyProxyClientGetTrustRootsError-class.html" class="summary-name">MyProxyClientGetTrustRootsError</a><br /> 
     162      Error retrieving trust roots 
    157163    </td> 
    158164  </tr> 
     
    187193      <span class="summary-type">&nbsp;</span> 
    188194    </td><td class="summary"> 
    189         <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id$'"><code class="variable-quote">'</code><code class="variable-string">$Id$</code><code class="variable-quote">'</code></code> 
     195        <a name="__revision__"></a><span class="summary-name">__revision__</span> = <code title="'$Id: $'"><code class="variable-quote">'</code><code class="variable-string">$Id: $</code><code class="variable-quote">'</code></code> 
    190196    </td> 
    191197  </tr> 
     
    230236    <td align="left" class="footer"> 
    231237    <a href="epydoc-log.html">Generated by Epydoc 
    232     3.0.1 on Fri Feb 27 13:59:02 2009</a> 
     238    3.0.1 on Mon Apr 26 13:55:45 2010</a> 
    233239    </td> 
    234240    <td align="right" class="footer"> 
  • TI12-security/trunk/MyProxyClient/documentation/myproxy.client-pysrc.html

    r5050 r6845  
    6363<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    6464<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-docstring">Major re-write of an original class.   This updated version implements methods</tt> </tt> 
    65 <a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-docstring">with SSL calls with M2Crypto rather use calls to myproxy client executables as</tt> </tt> 
     65<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-docstring">with SSL calls with PyOpenSSL rather use calls to myproxy client executables as</tt> </tt> 
    6666<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-docstring">in the original.  This version is adapted and extended from an original </tt> </tt> 
    6767<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-docstring">program myproxy_logon by Tom Uram &lt;turam@mcs.anl.gov&gt;</tt> </tt> 
     
    6969<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">"P J Kershaw"</tt> </tt> 
    7070<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-name">__date__</tt> <tt class="py-op">=</tt> <tt class="py-string">"02/06/05"</tt> </tt> 
    71 <a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-name">__copyright__</tt> <tt class="py-op">=</tt> <tt class="py-string">"(C) 2009 Science and Technology Facilities Council"</tt> </tt> 
     71<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-name">__copyright__</tt> <tt class="py-op">=</tt> <tt class="py-string">"(C) 2010 Science and Technology Facilities Council"</tt> </tt> 
    7272<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> <tt class="py-string">"""BSD - See LICENSE file in top-level directory</tt> </tt> 
    7373<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt> 
     
    7878<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-string">certain rights."""</tt> </tt> 
    7979<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-name">__contact__</tt> <tt class="py-op">=</tt> <tt class="py-string">"Philip.Kershaw@stfc.ac.uk"</tt> </tt> 
    80 <a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable myproxy.__revision__=myproxy-module.html#__revision__,Variable myproxy.client.__revision__=myproxy.client-module.html#__revision__,Variable myproxy.utils.__revision__=myproxy.utils-module.html#__revision__,Variable myproxy.utils.openssl.__revision__=myproxy.utils.openssl-module.html#__revision__"><a title="myproxy.__revision__ 
     80<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable myproxy.__revision__=myproxy-module.html#__revision__,Variable myproxy.client.__revision__=myproxy.client-module.html#__revision__,Variable myproxy.test.__revision__=myproxy.test-module.html#__revision__,Variable myproxy.test.test_myproxyclient.__revision__=myproxy.test.test_myproxyclient-module.html#__revision__,Variable myproxy.utils.__revision__=myproxy.utils-module.html#__revision__,Variable myproxy.utils.openssl.__revision__=myproxy.utils.openssl-module.html#__revision__"><a title="myproxy.__revision__ 
    8181myproxy.client.__revision__ 
     82myproxy.test.__revision__ 
     83myproxy.test.test_myproxyclient.__revision__ 
    8284myproxy.utils.__revision__ 
    83 myproxy.utils.openssl.__revision__" class="py-name" href="#" onclick="return doclink('link-0', '__revision__', 'link-0');">__revision__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Id$'</tt> </tt> 
     85myproxy.utils.openssl.__revision__" class="py-name" href="#" onclick="return doclink('link-0', '__revision__', 'link-0');">__revision__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Id: $'</tt> </tt> 
    8486<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> 
    8587<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable myproxy.client.log=myproxy.client-module.html#log"><a title="myproxy.client.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-1');">log</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt> 
     
    8890<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> 
    8991<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt> 
    90 <a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">M2Crypto</tt> <tt class="py-keyword">import</tt> <tt class="py-name">X509</tt><tt class="py-op">,</tt> <tt class="py-name">RSA</tt><tt class="py-op">,</tt> <tt class="py-name">EVP</tt><tt class="py-op">,</tt> <tt class="py-name">m2</tt><tt class="py-op">,</tt> <tt class="py-name">BIO</tt><tt class="py-op">,</tt> <tt class="py-name">SSL</tt> </tt> 
    91 <a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt> 
    92 <a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">ConfigParser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SafeConfigParser</tt> </tt> 
     92<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt> 
     93<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt> </tt> 
     94<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt> 
    9395<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"> </tt> 
    94 <a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package myproxy=myproxy-module.html"><a title="myproxy" class="py-name" href="#" onclick="return doclink('link-2', 'myproxy', 'link-2');">myproxy</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Package myproxy.utils=myproxy.utils-module.html"><a title="myproxy.utils" class="py-name" href="#" onclick="return doclink('link-3', 'utils', 'link-3');">utils</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module myproxy.utils.openssl=myproxy.utils.openssl-module.html"><a title="myproxy.utils.openssl" class="py-name" href="#" onclick="return doclink('link-4', 'openssl', 'link-4');">openssl</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class myproxy.utils.openssl.OpenSSLConfig=myproxy.utils.openssl.OpenSSLConfig-class.html"><a title="myproxy.utils.openssl.OpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-5', 'OpenSSLConfig', 'link-5');">OpenSSLConfig</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Class myproxy.utils.openssl.OpenSSLConfigError=myproxy.utils.openssl.OpenSSLConfigError-class.html"><a title="myproxy.utils.openssl.OpenSSLConfigError" class="py-name" href="#" onclick="return doclink('link-6', 'OpenSSLConfigError', 'link-6');">OpenSSLConfigError</a></tt> </tt> 
    95 <a name="CaseSensitiveConfigParser"></a><div id="CaseSensitiveConfigParser-def"><a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"> </tt> 
    96 <a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"> </tt> 
    97 <a name="L35"></a><tt class="py-lineno">  35</tt> <a class="py-toggle" href="#" id="CaseSensitiveConfigParser-toggle" onclick="return toggle('CaseSensitiveConfigParser');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.CaseSensitiveConfigParser-class.html">CaseSensitiveConfigParser</a><tt class="py-op">(</tt><tt class="py-base-class">SafeConfigParser</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    98 </div><div id="CaseSensitiveConfigParser-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="CaseSensitiveConfigParser-expanded"><a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line">    <tt class="py-docstring">'''Subclass the SafeConfigParser - to preserve the original string case of </tt> </tt> 
    99 <a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">    config section names</tt> </tt> 
    100 <a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring">    '''</tt>    </tt> 
    101 <a name="CaseSensitiveConfigParser.optionxform"></a><div id="CaseSensitiveConfigParser.optionxform-def"><a name="L39"></a><tt class="py-lineno">  39</tt> <a class="py-toggle" href="#" id="CaseSensitiveConfigParser.optionxform-toggle" onclick="return toggle('CaseSensitiveConfigParser.optionxform');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.CaseSensitiveConfigParser-class.html#optionxform">optionxform</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">optionstr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    102 </div><div id="CaseSensitiveConfigParser.optionxform-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CaseSensitiveConfigParser.optionxform-expanded"><a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line">        <tt class="py-docstring">'''Extend SafeConfigParser.optionxform to preserve case of option names</tt> </tt> 
    103 <a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">        '''</tt> </tt> 
    104 <a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">optionstr</tt> </tt> 
    105 </div></div><a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt> 
    106 <a name="_HostCheck"></a><div id="_HostCheck-def"><a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"> </tt> 
    107 <a name="L45"></a><tt class="py-lineno">  45</tt> <a class="py-toggle" href="#" id="_HostCheck-toggle" onclick="return toggle('_HostCheck');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client._HostCheck-class.html">_HostCheck</a><tt class="py-op">(</tt><tt class="py-base-class">SSL</tt><tt class="py-op">.</tt><tt class="py-base-class">Checker</tt><tt class="py-op">.</tt><tt class="py-base-class">Checker</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    108 </div><div id="_HostCheck-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_HostCheck-expanded"><a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line">    <tt class="py-docstring">"""Override SSL.Checker.Checker to allow additional check of MyProxy </tt> </tt> 
    109 <a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">    server identity.  If hostname doesn't match, allow match of host's  </tt> </tt> 
    110 <a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    Distinguished Name against MYPROXY_SERVER_DN setting"""</tt> </tt> 
    111 <a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"> </tt> 
    112 <a name="_HostCheck.__init__"></a><div id="_HostCheck.__init__-def"><a name="L50"></a><tt class="py-lineno">  50</tt> <a class="py-toggle" href="#" id="_HostCheck.__init__-toggle" onclick="return toggle('_HostCheck.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client._HostCheck-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt>  </tt> 
    113 <a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line">                 <tt class="py-param">myProxyServerDN</tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_DN'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> 
    114 <a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line">                 <tt class="py-param">cnHostPfx</tt><tt class="py-op">=</tt><tt class="py-string">'host/'</tt><tt class="py-op">,</tt> </tt> 
    115 <a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    116 </div><div id="_HostCheck.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HostCheck.__init__-expanded"><a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">        <tt class="py-docstring">"""Override parent class __init__ to enable setting of myProxyServerDN</tt> </tt> 
    117 <a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">        setting</tt> </tt> 
    118 <a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    119 <a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">        @type myProxyServerDN: string</tt> </tt> 
    120 <a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">        @param myProxyServerDN: Set the expected Distinguished Name of the</tt> </tt> 
    121 <a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">        MyProxy server to avoid errors matching hostnames.  This is useful</tt> </tt> 
    122 <a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        where the hostname is not fully qualified</tt> </tt> 
    123 <a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    124 <a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">        @type cnHostPfx: string</tt> </tt> 
    125 <a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">        @param cnHostPfx: globus host certificates are </tt> </tt> 
    126 <a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">        generated by default with a 'host/' prefix to the host name.  Set</tt> </tt> 
    127 <a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">        this keyword to '' or None to override and omit the prefix"""</tt> </tt> 
    128 <a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">         </tt> 
    129 <a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">        <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Checker</tt><tt class="py-op">.</tt><tt class="py-name">Checker</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Method myproxy.client.MyProxyClient.__init__()=myproxy.client.MyProxyClient-class.html#__init__,Method myproxy.client._HostCheck.__init__()=myproxy.client._HostCheck-class.html#__init__,Method myproxy.utils.openssl.OpenSSLConfig.__init__()=myproxy.utils.openssl.OpenSSLConfig-class.html#__init__"><a title="myproxy.client.MyProxyClient.__init__ 
    130 myproxy.client._HostCheck.__init__ 
    131 myproxy.utils.openssl.OpenSSLConfig.__init__" class="py-name" href="#" onclick="return doclink('link-7', '__init__', 'link-7');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt> 
     96<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">OpenSSL</tt> <tt class="py-keyword">import</tt> <tt class="py-name">crypto</tt><tt class="py-op">,</tt> <tt class="py-name">SSL</tt> </tt> 
     97<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"> </tt> 
     98<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package myproxy=myproxy-module.html"><a title="myproxy" class="py-name" href="#" onclick="return doclink('link-2', 'myproxy', 'link-2');">myproxy</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Package myproxy.utils=myproxy.utils-module.html"><a title="myproxy.utils" class="py-name" href="#" onclick="return doclink('link-3', 'utils', 'link-3');">utils</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module myproxy.utils.openssl=myproxy.utils.openssl-module.html"><a title="myproxy.utils.openssl" class="py-name" href="#" onclick="return doclink('link-4', 'openssl', 'link-4');">openssl</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class myproxy.utils.openssl.OpenSSLConfig=myproxy.utils.openssl.OpenSSLConfig-class.html"><a title="myproxy.utils.openssl.OpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-5', 'OpenSSLConfig', 'link-5');">OpenSSLConfig</a></tt> </tt> 
     99<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="myproxy" class="py-name" href="#" onclick="return doclink('link-6', 'myproxy', 'link-2');">myproxy</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="myproxy.utils" class="py-name" href="#" onclick="return doclink('link-7', 'utils', 'link-3');">utils</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Class myproxy.utils.CaseSensitiveConfigParser=myproxy.utils.CaseSensitiveConfigParser-class.html"><a title="myproxy.utils.CaseSensitiveConfigParser" class="py-name" href="#" onclick="return doclink('link-8', 'CaseSensitiveConfigParser', 'link-8');">CaseSensitiveConfigParser</a></tt> </tt> 
     100<a name="MyProxyServerSSLCertVerification"></a><div id="MyProxyServerSSLCertVerification-def"><a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"> </tt> 
     101<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"> </tt> 
     102<a name="L38"></a><tt class="py-lineno">  38</tt> <a class="py-toggle" href="#" id="MyProxyServerSSLCertVerification-toggle" onclick="return toggle('MyProxyServerSSLCertVerification');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyServerSSLCertVerification-class.html">MyProxyServerSSLCertVerification</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     103</div><div id="MyProxyServerSSLCertVerification-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyServerSSLCertVerification-expanded"><a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line">    <tt class="py-docstring">"""Check MyProxy server identity.  If hostname doesn't match, allow match of</tt> </tt> 
     104<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">    host's Distinguished Name against MYPROXY_SERVER_DN setting"""</tt> </tt> 
     105<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line">    <tt id="link-9" class="py-name" targets="Variable myproxy.client.MyProxyServerSSLCertVerification.DN_LUT=myproxy.client.MyProxyServerSSLCertVerification-class.html#DN_LUT"><a title="myproxy.client.MyProxyServerSSLCertVerification.DN_LUT" class="py-name" href="#" onclick="return doclink('link-9', 'DN_LUT', 'link-9');">DN_LUT</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> 
     106<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line">        <tt class="py-string">'commonName'</tt><tt class="py-op">:</tt>               <tt class="py-string">'CN'</tt><tt class="py-op">,</tt> </tt> 
     107<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line">        <tt class="py-string">'organisationalUnitName'</tt><tt class="py-op">:</tt>   <tt class="py-string">'OU'</tt><tt class="py-op">,</tt> </tt> 
     108<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line">        <tt class="py-string">'organisation'</tt><tt class="py-op">:</tt>             <tt class="py-string">'O'</tt><tt class="py-op">,</tt> </tt> 
     109<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">        <tt class="py-string">'countryName'</tt><tt class="py-op">:</tt>              <tt class="py-string">'C'</tt><tt class="py-op">,</tt> </tt> 
     110<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line">        <tt class="py-string">'emailAddress'</tt><tt class="py-op">:</tt>             <tt class="py-string">'EMAILADDRESS'</tt><tt class="py-op">,</tt> </tt> 
     111<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">        <tt class="py-string">'localityName'</tt><tt class="py-op">:</tt>             <tt class="py-string">'L'</tt><tt class="py-op">,</tt> </tt> 
     112<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line">        <tt class="py-string">'stateOrProvinceName'</tt><tt class="py-op">:</tt>      <tt class="py-string">'ST'</tt><tt class="py-op">,</tt> </tt> 
     113<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line">        <tt class="py-string">'streetAddress'</tt><tt class="py-op">:</tt>            <tt class="py-string">'STREET'</tt><tt class="py-op">,</tt> </tt> 
     114<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line">        <tt class="py-string">'domainComponent'</tt><tt class="py-op">:</tt>          <tt class="py-string">'DC'</tt><tt class="py-op">,</tt> </tt> 
     115<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line">        <tt class="py-string">'userid'</tt><tt class="py-op">:</tt>                   <tt class="py-string">'UID'</tt> </tt> 
     116<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt> 
     117<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">    <tt id="link-10" class="py-name" targets="Variable myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE_STR=myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE_STR"><a title="myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE_STR" class="py-name" href="#" onclick="return doclink('link-10', 'PARSER_RE_STR', 'link-10');">PARSER_RE_STR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'/(%s)='</tt> <tt class="py-op">%</tt> <tt class="py-string">'|'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-11" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification.DN_LUT" class="py-name" href="#" onclick="return doclink('link-11', 'DN_LUT', 'link-9');">DN_LUT</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-12" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification.DN_LUT" class="py-name" href="#" onclick="return doclink('link-12', 'DN_LUT', 'link-9');">DN_LUT</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     118<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">    <tt id="link-13" class="py-name" targets="Variable myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE=myproxy.client.MyProxyServerSSLCertVerification-class.html#PARSER_RE"><a title="myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE" class="py-name" href="#" onclick="return doclink('link-13', 'PARSER_RE', 'link-13');">PARSER_RE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE_STR" class="py-name" href="#" onclick="return doclink('link-14', 'PARSER_RE_STR', 'link-10');">PARSER_RE_STR</a></tt><tt class="py-op">)</tt>     </tt> 
     119<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line">     </tt> 
     120<a name="MyProxyServerSSLCertVerification.__init__"></a><div id="MyProxyServerSSLCertVerification.__init__-def"><a name="L56"></a><tt class="py-lineno">  56</tt> <a class="py-toggle" href="#" id="MyProxyServerSSLCertVerification.__init__-toggle" onclick="return toggle('MyProxyServerSSLCertVerification.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyServerSSLCertVerification-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">myProxyServerDN</tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_DN'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     121</div><div id="MyProxyServerSSLCertVerification.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyServerSSLCertVerification.__init__-expanded"><a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">        <tt class="py-docstring">"""Override parent class __init__ to enable setting of myProxyServerDN</tt> </tt> 
     122<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">        setting</tt> </tt> 
     123<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     124<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">        @type myProxyServerDN: string</tt> </tt> 
     125<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">        @param myProxyServerDN: Set the expected Distinguished Name of the</tt> </tt> 
     126<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">        MyProxy server to avoid errors matching hostnames.  This is useful</tt> </tt> 
     127<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">        where the hostname is not fully qualified</tt> </tt> 
     128<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     129<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">         </tt> 
     130<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">        <tt class="py-comment"># Allow for quoted DN</tt> </tt> 
     131<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">myProxyServerDN</tt> <tt class="py-op">=</tt> <tt class="py-name">myProxyServerDN</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> 
    132132<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">         </tt> 
    133 <a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">myProxyServerDN</tt> <tt class="py-op">=</tt> <tt class="py-name">myProxyServerDN</tt> </tt> 
    134 <a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cnHostPfx</tt> <tt class="py-op">=</tt> <tt class="py-name">cnHostPfx</tt> </tt> 
    135 </div><a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">         </tt> 
    136 <a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">         </tt> 
    137 <a name="_HostCheck.__call__"></a><div id="_HostCheck.__call__-def"><a name="L73"></a><tt class="py-lineno">  73</tt> <a class="py-toggle" href="#" id="_HostCheck.__call__-toggle" onclick="return toggle('_HostCheck.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client._HostCheck-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">peerCert</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    138 </div><div id="_HostCheck.__call__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_HostCheck.__call__-expanded"><a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">        <tt class="py-docstring">"""Carry out checks on server ID</tt> </tt> 
    139 <a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">        @type peerCert: basestring</tt> </tt> 
    140 <a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">        @param peerCert: MyProxy server host certificate as M2Crypto.X509.X509</tt> </tt> 
    141 <a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">        instance</tt> </tt> 
    142 <a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">        @type host: basestring</tt> </tt> 
    143 <a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">        @param host: name of host to check</tt> </tt> 
    144 <a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    145 <a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">        </tt> 
    146 <a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">        <tt class="py-comment"># Globus host certificate has a "host/" prefix - see explanation in</tt> </tt> 
    147 <a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># __init__.__doc__</tt> </tt> 
    148 <a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">cnHostPfx</tt> <tt class="py-op">=</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cnHostPfx</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> \ </tt> 
    149 <a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line">                    <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cnHostPfx</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt> </tt> 
    150 <a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">        <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">cnHostPfx</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt> </tt> 
    151 <a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        </tt> 
    152 <a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    153 <a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">            <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Checker</tt><tt class="py-op">.</tt><tt class="py-name">Checker</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method myproxy.client._HostCheck.__call__()=myproxy.client._HostCheck-class.html#__call__"><a title="myproxy.client._HostCheck.__call__" class="py-name" href="#" onclick="return doclink('link-8', '__call__', 'link-8');">__call__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">peerCert</tt><tt class="py-op">,</tt> <tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">host</tt><tt class="py-op">)</tt> </tt> 
    154 <a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">            </tt> 
    155 <a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Checker</tt><tt class="py-op">.</tt><tt class="py-name">WrongHost</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> 
    156 <a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">            <tt class="py-comment"># Try match against DN set from MYPROXY_SERVER_DN / config</tt> </tt> 
    157 <a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># file setting</tt> </tt> 
    158 <a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">peerCertDN</tt> <tt class="py-op">=</tt> <tt class="py-string">'/'</tt><tt class="py-op">+</tt><tt class="py-name">peerCert</tt><tt class="py-op">.</tt><tt class="py-name">get_subject</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">as_text</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">', '</tt><tt class="py-op">,</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt> 
    159 <a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">            </tt> 
    160 <a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">            <tt class="py-comment"># If they match drop the exception and return all OK instead</tt> </tt> 
    161 <a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">peerCertDN</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">myProxyServerDN</tt><tt class="py-op">:</tt> </tt> 
    162 <a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt> 
    163 <a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">             </tt> 
    164 <a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt> 
    165 </div></div><a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">    </tt> 
    166 <a name="MyProxyClientError"></a><div id="MyProxyClientError-def"><a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">     </tt> 
    167 <a name="L103"></a><tt class="py-lineno"> 103</tt> <a class="py-toggle" href="#" id="MyProxyClientError-toggle" onclick="return toggle('MyProxyClientError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientError-class.html">MyProxyClientError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    168 </div><div id="MyProxyClientError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientError-expanded"><a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base exception class for MyProxyClient exceptions"""</tt> </tt> 
    169 </div><a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"> </tt> 
    170 <a name="MyProxyClientConfigError"></a><div id="MyProxyClientConfigError-def"><a name="L106"></a><tt class="py-lineno"> 106</tt> <a class="py-toggle" href="#" id="MyProxyClientConfigError-toggle" onclick="return toggle('MyProxyClientConfigError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientConfigError-class.html">MyProxyClientConfigError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    171 </div><div id="MyProxyClientConfigError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientConfigError-expanded"><a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt class="py-docstring">"""Error with configuration"""</tt> </tt> 
    172 </div><a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">      </tt> 
    173 <a name="MyProxyClientGetError"></a><div id="MyProxyClientGetError-def"><a name="L109"></a><tt class="py-lineno"> 109</tt> <a class="py-toggle" href="#" id="MyProxyClientGetError-toggle" onclick="return toggle('MyProxyClientGetError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientGetError-class.html">MyProxyClientGetError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    174 </div><div id="MyProxyClientGetError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientGetError-expanded"><a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exceptions arising from get request to server"""</tt> </tt> 
    175 </div><a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">    </tt> 
    176 <a name="MyProxyClientRetrieveError"></a><div id="MyProxyClientRetrieveError-def"><a name="L112"></a><tt class="py-lineno"> 112</tt> <a class="py-toggle" href="#" id="MyProxyClientRetrieveError-toggle" onclick="return toggle('MyProxyClientRetrieveError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientRetrieveError-class.html">MyProxyClientRetrieveError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    177 </div><div id="MyProxyClientRetrieveError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientRetrieveError-expanded"><a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">    <tt class="py-docstring">"""Error recovering a response from MyProxy"""</tt> </tt> 
    178 </div><a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">            </tt> 
    179 <a name="MyProxyClient"></a><div id="MyProxyClient-def"><a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">         </tt> 
    180 <a name="L116"></a><tt class="py-lineno"> 116</tt> <a class="py-toggle" href="#" id="MyProxyClient-toggle" onclick="return toggle('MyProxyClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    181 </div><div id="MyProxyClient-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClient-expanded"><a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">    <tt class="py-docstring">"""MyProxy client interface </tt> </tt> 
    182 <a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    183 <a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-docstring">    Based on protocol definitions in: </tt> </tt> 
    184 <a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    185 <a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring">    http://grid.ncsa.uiuc.edu/myproxy/protocol/</tt> </tt> 
    186 <a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    187 <a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring">    @type getCmd: string</tt> </tt> 
    188 <a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar getCmd: get command string</tt> </tt> 
    189 <a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    190 <a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-docstring">    @type infoCmd: string</tt> </tt> 
    191 <a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar infoCmd: info command string</tt> </tt> 
    192 <a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    193 <a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-docstring">    @type destroyCmd: string</tt> </tt> 
    194 <a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar destroyCmd: destroy command string</tt> </tt> 
    195 <a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    196 <a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"><tt class="py-docstring">    @type changePassphraseCmd: string</tt> </tt> 
    197 <a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar changePassphraseCmd: command string to change cred pass-phrase</tt> </tt> 
    198 <a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    199 <a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">    @type storeCmd: string</tt> </tt> 
    200 <a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar storeCmd: store command string</tt> </tt> 
    201 <a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    202 <a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">    @type _hostCertSubDirPath: string</tt> </tt> 
    203 <a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _hostCertSubDirPath: sub-directory path host certificate (as tuple)</tt> </tt> 
    204 <a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    205 <a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-docstring">    @type _hostKeySubDirPath: string</tt> </tt> 
    206 <a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _hostKeySubDirPath: sub-directory path to host key (as tuple)</tt> </tt> 
    207 <a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    208 <a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring">    @type propertyDefaults: tuple</tt> </tt> 
    209 <a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar propertyDefaults: sets permissable element names for MyProxy config </tt> </tt> 
    210 <a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-docstring">    file</tt> </tt> 
    211 <a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt> 
    212 <a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">      </tt> 
    213 <a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">    <tt id="link-9" class="py-name" targets="Variable myproxy.client.MyProxyClient.getCmd=myproxy.client.MyProxyClient-class.html#getCmd"><a title="myproxy.client.MyProxyClient.getCmd" class="py-name" href="#" onclick="return doclink('link-9', 'getCmd', 'link-9');">getCmd</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
    214 <a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-string">COMMAND=0</tt> </tt> 
    215 <a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
    216 <a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=%s</tt> </tt> 
    217 <a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=%d"""</tt> </tt> 
    218 <a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">  </tt> 
    219 <a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">    <tt id="link-10" class="py-name" targets="Variable myproxy.client.MyProxyClient.infoCmd=myproxy.client.MyProxyClient-class.html#infoCmd"><a title="myproxy.client.MyProxyClient.infoCmd" class="py-name" href="#" onclick="return doclink('link-10', 'infoCmd', 'link-10');">infoCmd</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
    220 <a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-string">COMMAND=2</tt> </tt> 
    221 <a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
    222 <a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=PASSPHRASE</tt> </tt> 
    223 <a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=0"""</tt> </tt> 
    224 <a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">  </tt> 
    225 <a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">    <tt id="link-11" class="py-name" targets="Variable myproxy.client.MyProxyClient.destroyCmd=myproxy.client.MyProxyClient-class.html#destroyCmd"><a title="myproxy.client.MyProxyClient.destroyCmd" class="py-name" href="#" onclick="return doclink('link-11', 'destroyCmd', 'link-11');">destroyCmd</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
    226 <a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-string">COMMAND=3</tt> </tt> 
    227 <a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
    228 <a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=PASSPHRASE</tt> </tt> 
    229 <a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=0"""</tt> </tt> 
    230 <a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"> </tt> 
    231 <a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">    <tt id="link-12" class="py-name" targets="Variable myproxy.client.MyProxyClient.changePassphraseCmd=myproxy.client.MyProxyClient-class.html#changePassphraseCmd"><a title="myproxy.client.MyProxyClient.changePassphraseCmd" class="py-name" href="#" onclick="return doclink('link-12', 'changePassphraseCmd', 'link-12');">changePassphraseCmd</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
    232 <a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-string"> COMMAND=4</tt> </tt> 
    233 <a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-string"> USERNAME=%s</tt> </tt> 
    234 <a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-string"> PASSPHRASE=%s</tt> </tt> 
    235 <a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-string"> NEW_PHRASE=%s</tt> </tt> 
    236 <a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-string"> LIFETIME=0"""</tt> </tt> 
    237 <a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">    </tt> 
    238 <a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">    <tt id="link-13" class="py-name" targets="Variable myproxy.client.MyProxyClient.storeCmd=myproxy.client.MyProxyClient-class.html#storeCmd"><a title="myproxy.client.MyProxyClient.storeCmd" class="py-name" href="#" onclick="return doclink('link-13', 'storeCmd', 'link-13');">storeCmd</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
    239 <a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-string">COMMAND=5</tt> </tt> 
    240 <a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
    241 <a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=</tt> </tt> 
    242 <a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=%d"""</tt> </tt> 
    243 <a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"> </tt> 
    244 <a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable myproxy.client.MyProxyClient._hostCertSubDirPath=myproxy.client.MyProxyClient-class.html#_hostCertSubDirPath"><a title="myproxy.client.MyProxyClient._hostCertSubDirPath" class="py-name" href="#" onclick="return doclink('link-14', '_hostCertSubDirPath', 'link-14');">_hostCertSubDirPath</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'etc'</tt><tt class="py-op">,</tt> <tt class="py-string">'hostcert.pem'</tt><tt class="py-op">)</tt> </tt> 
    245 <a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">    <tt id="link-15" class="py-name" targets="Variable myproxy.client.MyProxyClient._hostKeySubDirPath=myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath"><a title="myproxy.client.MyProxyClient._hostKeySubDirPath" class="py-name" href="#" onclick="return doclink('link-15', '_hostKeySubDirPath', 'link-15');">_hostKeySubDirPath</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'etc'</tt><tt class="py-op">,</tt> <tt class="py-string">'hostkey.pem'</tt><tt class="py-op">)</tt> </tt> 
    246 <a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">    </tt> 
    247 <a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">    <tt class="py-comment"># Work out default location of proxy file if it exists.  This is set if a</tt> </tt> 
    248 <a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># call has been made previously to logon / get-delegation</tt> </tt> 
    249 <a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-16" class="py-name" targets="Variable myproxy.client.MyProxyClient.defProxyFile=myproxy.client.MyProxyClient-class.html#defProxyFile"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-16', 'defProxyFile', 'link-16');">defProxyFile</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'proxy'</tt> <tt class="py-keyword">or</tt> \ </tt> 
    250 <a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'linux2'</tt><tt class="py-op">,</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'/tmp/x509up_u%s'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getuid</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> \ </tt> 
    251 <a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">    <tt class="py-keyword">or</tt> <tt class="py-name">None</tt>      </tt> 
    252 <a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">    </tt> 
    253 <a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">    <tt class="py-comment"># valid configuration property keywords</tt> </tt> 
    254 <a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-17" class="py-name" targets="Variable myproxy.client.MyProxyClient.propertyDefaults=myproxy.client.MyProxyClient-class.html#propertyDefaults"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-17', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> 
    255 <a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">       <tt class="py-string">'hostname'</tt><tt class="py-op">:</tt>              <tt class="py-string">'localhost'</tt><tt class="py-op">,</tt> </tt> 
    256 <a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">       <tt class="py-string">'port'</tt><tt class="py-op">:</tt>                  <tt class="py-number">7512</tt><tt class="py-op">,</tt> </tt> 
    257 <a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">       <tt class="py-string">'serverDN'</tt><tt class="py-op">:</tt>              <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    258 <a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">       <tt class="py-string">'serverCNPrefix'</tt><tt class="py-op">:</tt>        <tt class="py-string">'host/'</tt><tt class="py-op">,</tt> </tt> 
    259 <a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">       <tt class="py-string">'openSSLConfFilePath'</tt><tt class="py-op">:</tt>   <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    260 <a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">       <tt class="py-string">'proxyCertMaxLifetime'</tt><tt class="py-op">:</tt>  <tt class="py-number">43200</tt><tt class="py-op">,</tt> </tt> 
    261 <a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">       <tt class="py-string">'proxyCertLifetime'</tt><tt class="py-op">:</tt>     <tt class="py-number">43200</tt><tt class="py-op">,</tt> </tt> 
    262 <a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">       <tt class="py-string">'caCertFilePath'</tt><tt class="py-op">:</tt>        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    263 <a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">       <tt class="py-string">'caCertDir'</tt><tt class="py-op">:</tt>             <tt class="py-name">None</tt> </tt> 
    264 <a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt> 
    265 <a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">    </tt> 
    266 <a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">    <tt class="py-comment"># Restrict attributes to the above properties, their equivalent </tt> </tt> 
    267 <a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># protected values + extra OpenSSL config object.</tt> </tt> 
    268 <a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-18', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    269 <a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">+</tt><tt id="link-19" class="py-name" targets="Variable myproxy.client.MyProxyClient.k=myproxy.client.MyProxyClient-class.html#k"><a title="myproxy.client.MyProxyClient.k" class="py-name" href="#" onclick="return doclink('link-19', 'k', 'link-19');">k</a></tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name" targets="Variable myproxy.client.MyProxyClient.v=myproxy.client.MyProxyClient-class.html#v"><a title="myproxy.client.MyProxyClient.v" class="py-name" href="#" onclick="return doclink('link-20', 'v', 'link-20');">v</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-21" class="py-name"><a title="myproxy.client.MyProxyClient.k" class="py-name" href="#" onclick="return doclink('link-21', 'k', 'link-19');">k</a></tt><tt class="py-op">,</tt><tt id="link-22" class="py-name"><a title="myproxy.client.MyProxyClient.v" class="py-name" href="#" onclick="return doclink('link-22', 'v', 'link-20');">v</a></tt> <tt class="py-keyword">in</tt> <tt id="link-23" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-23', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> </tt> 
    270 <a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">                          <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'_openSSLConfig'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> 
    271 <a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">                           <tt class="py-op">(</tt><tt class="py-string">'_cfg'</tt><tt class="py-op">,</tt>           <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt> 
    272 <a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">                          <tt class="py-op">)</tt> </tt> 
    273 <a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">                     <tt class="py-op">)</tt> </tt> 
    274 <a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">         </tt> 
    275 <a name="MyProxyClient.__init__"></a><div id="MyProxyClient.__init__-def"><a name="L211"></a><tt class="py-lineno"> 211</tt> <a class="py-toggle" href="#" id="MyProxyClient.__init__-toggle" onclick="return toggle('MyProxyClient.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cfgFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">prop</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    276 </div><div id="MyProxyClient.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.__init__-expanded"><a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-docstring">"""Make any initial settings for client connections to MyProxy</tt> </tt> 
    277 <a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    278 <a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring">        Settings are held in a dictionary which can be set from **prop,</tt> </tt> 
    279 <a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">        a call to setProperties() or by passing settings in an XML file</tt> </tt> 
    280 <a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring">        given by cfgFilePath</tt> </tt> 
    281 <a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    282 <a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">        @param cfgFilePath:   set properties via a configuration file</tt> </tt> 
    283 <a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-docstring">        @param **prop:         set properties via keywords - see </tt> </tt> 
    284 <a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-docstring">        propertyDefaults class variable for a list of these</tt> </tt> 
    285 <a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    286 <a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">         </tt> 
    287 <a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">        <tt class="py-comment"># Default settings.  Nb. '_' - override property methods in order to </tt> </tt> 
    288 <a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># set defaults</tt> </tt> 
    289 <a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt id="link-24" class="py-name" targets="Class myproxy.client.MyProxyClient=myproxy.client.MyProxyClient-class.html"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-24', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-25', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    290 <a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_'</tt><tt class="py-op">+</tt><tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    291 <a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"> </tt> 
    292 <a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-comment"># Configuration file used to get default subject when generating a</tt> </tt> 
    293 <a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># new proxy certificate request</tt> </tt> 
    294 <a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Variable myproxy.client.MyProxyClient._openSSLConfig=myproxy.client.MyProxyClient-class.html#_openSSLConfig"><a title="myproxy.client.MyProxyClient._openSSLConfig" class="py-name" href="#" onclick="return doclink('link-26', '_openSSLConfig', 'link-26');">_openSSLConfig</a></tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-27', 'OpenSSLConfig', 'link-5');">OpenSSLConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    295 <a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">        </tt> 
    296 <a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-comment"># Server host name - take from environment variable if available</tt> </tt> 
    297 <a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Variable myproxy.client.MyProxyClient.hostname=myproxy.client.MyProxyClient-class.html#hostname"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-28', 'hostname', 'link-28');">hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER'</tt><tt class="py-op">,</tt> </tt> 
    298 <a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">                                    <tt id="link-29" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-29', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-30', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">[</tt><tt class="py-string">'hostname'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    299 <a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">             </tt> 
    300 <a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-comment"># ... and port number</tt> </tt> 
    301 <a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Variable myproxy.client.MyProxyClient.port=myproxy.client.MyProxyClient-class.html#port"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-31', 'port', 'link-31');">port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_PORT'</tt><tt class="py-op">,</tt> </tt> 
    302 <a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">                                       <tt id="link-32" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-32', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-33', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">[</tt><tt class="py-string">'port'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    303 <a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"> </tt> 
    304 <a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">        <tt class="py-comment"># Server Distinguished Name</tt> </tt> 
    305 <a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Variable myproxy.client.MyProxyClient.serverDN=myproxy.client.MyProxyClient-class.html#serverDN"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-34', 'serverDN', 'link-34');">serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_DN'</tt><tt class="py-op">,</tt> </tt> 
    306 <a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">                                    <tt id="link-35" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-35', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="myproxy.client.MyProxyClient.propertyDefaults" class="py-name" href="#" onclick="return doclink('link-36', 'propertyDefaults', 'link-17');">propertyDefaults</a></tt><tt class="py-op">[</tt><tt class="py-string">'serverDN'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    307 <a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">            </tt> 
    308 <a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-comment"># keyword settings</tt> </tt> 
    309 <a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">prop</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    310 <a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    311 <a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">         </tt> 
    312 <a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">        <tt class="py-comment"># If properties file is set any parameters settings in file will</tt> </tt> 
    313 <a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># override those set by input keyword</tt> </tt> 
    314 <a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cfgFilePath</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    315 <a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method myproxy.client.MyProxyClient.parseConfig()=myproxy.client.MyProxyClient-class.html#parseConfig"><a title="myproxy.client.MyProxyClient.parseConfig" class="py-name" href="#" onclick="return doclink('link-37', 'parseConfig', 'link-37');">parseConfig</a></tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">=</tt><tt class="py-name">cfgFilePath</tt><tt class="py-op">)</tt> </tt> 
    316 </div><a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"> </tt> 
    317 <a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"> </tt> 
    318 <a name="MyProxyClient.parseConfig"></a><div id="MyProxyClient.parseConfig-def"><a name="L254"></a><tt class="py-lineno"> 254</tt> <a class="py-toggle" href="#" id="MyProxyClient.parseConfig-toggle" onclick="return toggle('MyProxyClient.parseConfig');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#parseConfig">parseConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cfg</tt><tt class="py-op">,</tt> <tt class="py-param">section</tt><tt class="py-op">=</tt><tt class="py-string">'DEFAULT'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    319 </div><div id="MyProxyClient.parseConfig-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.parseConfig-expanded"><a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-docstring">'''Extract parameters from _cfg config object'''</tt> </tt> 
    320 <a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">        </tt> 
    321 <a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    322 <a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">            <tt class="py-name">cfgFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">)</tt> </tt> 
    323 <a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Variable myproxy.client.MyProxyClient._cfg=myproxy.client.MyProxyClient-class.html#_cfg"><a title="myproxy.client.MyProxyClient._cfg" class="py-name" href="#" onclick="return doclink('link-38', '_cfg', 'link-38');">_cfg</a></tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Class myproxy.client.CaseSensitiveConfigParser=myproxy.client.CaseSensitiveConfigParser-class.html"><a title="myproxy.client.CaseSensitiveConfigParser" class="py-name" href="#" onclick="return doclink('link-39', 'CaseSensitiveConfigParser', 'link-39');">CaseSensitiveConfigParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    324 <a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="myproxy.client.MyProxyClient._cfg" class="py-name" href="#" onclick="return doclink('link-40', '_cfg', 'link-38');">_cfg</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method myproxy.utils.openssl.OpenSSLConfig.read()=myproxy.utils.openssl.OpenSSLConfig-class.html#read"><a title="myproxy.utils.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-41', 'read', 'link-41');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">cfgFilePath</tt><tt class="py-op">)</tt> </tt> 
    325 <a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    326 <a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">            <tt class="py-name">cfgFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    327 <a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="myproxy.client.MyProxyClient._cfg" class="py-name" href="#" onclick="return doclink('link-42', '_cfg', 'link-38');">_cfg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt> </tt> 
    328 <a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">         </tt> 
    329 <a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="myproxy.client.MyProxyClient._cfg" class="py-name" href="#" onclick="return doclink('link-43', '_cfg', 'link-38');">_cfg</a></tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-name">section</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    330 <a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    331 </div><a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        </tt> 
    332 <a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">    <tt class="py-comment"># Get/Set Property methods</tt> </tt> 
    333 <a name="MyProxyClient._getHostname"></a><div id="MyProxyClient._getHostname-def"><a name="L269"></a><tt class="py-lineno"> 269</tt> <a class="py-toggle" href="#" id="MyProxyClient._getHostname-toggle" onclick="return toggle('MyProxyClient._getHostname');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getHostname">_getHostname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    334 </div><div id="MyProxyClient._getHostname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getHostname-expanded"><a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Variable myproxy.client.MyProxyClient._hostname=myproxy.client.MyProxyClient-class.html#_hostname"><a title="myproxy.client.MyProxyClient._hostname" class="py-name" href="#" onclick="return doclink('link-44', '_hostname', 'link-44');">_hostname</a></tt> </tt> 
    335 </div><a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">     </tt> 
    336 <a name="MyProxyClient._setHostname"></a><div id="MyProxyClient._setHostname-def"><a name="L272"></a><tt class="py-lineno"> 272</tt> <a class="py-toggle" href="#" id="MyProxyClient._setHostname-toggle" onclick="return toggle('MyProxyClient._setHostname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setHostname">_setHostname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    337 </div><div id="MyProxyClient._setHostname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setHostname-expanded"><a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    338 <a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for hostname "</tt> </tt> 
    339 <a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    340 <a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="myproxy.client.MyProxyClient._hostname" class="py-name" href="#" onclick="return doclink('link-45', '_hostname', 'link-44');">_hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    341 </div><a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        </tt> 
    342 <a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">    <tt id="link-46" class="py-name"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-46', 'hostname', 'link-28');">hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-47" class="py-name" targets="Method myproxy.client.MyProxyClient._getHostname()=myproxy.client.MyProxyClient-class.html#_getHostname"><a title="myproxy.client.MyProxyClient._getHostname" class="py-name" href="#" onclick="return doclink('link-47', '_getHostname', 'link-47');">_getHostname</a></tt><tt class="py-op">,</tt> </tt> 
    343 <a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                        <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-48" class="py-name" targets="Method myproxy.client.MyProxyClient._setHostname()=myproxy.client.MyProxyClient-class.html#_setHostname"><a title="myproxy.client.MyProxyClient._setHostname" class="py-name" href="#" onclick="return doclink('link-48', '_setHostname', 'link-48');">_setHostname</a></tt><tt class="py-op">,</tt> </tt> 
    344 <a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                        <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"hostname of MyProxy server"</tt><tt class="py-op">)</tt> </tt> 
    345 <a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">    </tt> 
    346 <a name="MyProxyClient._getPort"></a><div id="MyProxyClient._getPort-def"><a name="L282"></a><tt class="py-lineno"> 282</tt> <a class="py-toggle" href="#" id="MyProxyClient._getPort-toggle" onclick="return toggle('MyProxyClient._getPort');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getPort">_getPort</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    347 </div><div id="MyProxyClient._getPort-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getPort-expanded"><a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Variable myproxy.client.MyProxyClient._port=myproxy.client.MyProxyClient-class.html#_port"><a title="myproxy.client.MyProxyClient._port" class="py-name" href="#" onclick="return doclink('link-49', '_port', 'link-49');">_port</a></tt> </tt> 
    348 </div><a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">    </tt> 
    349 <a name="MyProxyClient._setPort"></a><div id="MyProxyClient._setPort-def"><a name="L285"></a><tt class="py-lineno"> 285</tt> <a class="py-toggle" href="#" id="MyProxyClient._setPort-toggle" onclick="return toggle('MyProxyClient._setPort');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setPort">_setPort</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    350 </div><div id="MyProxyClient._setPort-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setPort-expanded"><a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    351 <a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="myproxy.client.MyProxyClient._port" class="py-name" href="#" onclick="return doclink('link-50', '_port', 'link-49');">_port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    352 <a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    353 <a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="myproxy.client.MyProxyClient._port" class="py-name" href="#" onclick="return doclink('link-51', '_port', 'link-49');">_port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    354 <a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    355 <a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for port attribute"</tt><tt class="py-op">)</tt> </tt> 
    356 </div><a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">    </tt> 
    357 <a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt id="link-52" class="py-name"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-52', 'port', 'link-31');">port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-53" class="py-name" targets="Method myproxy.client.MyProxyClient._getPort()=myproxy.client.MyProxyClient-class.html#_getPort"><a title="myproxy.client.MyProxyClient._getPort" class="py-name" href="#" onclick="return doclink('link-53', '_getPort', 'link-53');">_getPort</a></tt><tt class="py-op">,</tt> </tt> 
    358 <a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">                    <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-54" class="py-name" targets="Method myproxy.client.MyProxyClient._setPort()=myproxy.client.MyProxyClient-class.html#_setPort"><a title="myproxy.client.MyProxyClient._setPort" class="py-name" href="#" onclick="return doclink('link-54', '_setPort', 'link-54');">_setPort</a></tt><tt class="py-op">,</tt> </tt> 
    359 <a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">                    <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Port number for MyProxy server"</tt><tt class="py-op">)</tt> </tt> 
    360 <a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">     </tt> 
    361 <a name="MyProxyClient._getServerDN"></a><div id="MyProxyClient._getServerDN-def"><a name="L297"></a><tt class="py-lineno"> 297</tt> <a class="py-toggle" href="#" id="MyProxyClient._getServerDN-toggle" onclick="return toggle('MyProxyClient._getServerDN');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getServerDN">_getServerDN</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    362 </div><div id="MyProxyClient._getServerDN-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getServerDN-expanded"><a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Variable myproxy.client.MyProxyClient._serverDN=myproxy.client.MyProxyClient-class.html#_serverDN"><a title="myproxy.client.MyProxyClient._serverDN" class="py-name" href="#" onclick="return doclink('link-55', '_serverDN', 'link-55');">_serverDN</a></tt> </tt> 
    363 </div><a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">    </tt> 
    364 <a name="MyProxyClient._setServerDN"></a><div id="MyProxyClient._setServerDN-def"><a name="L300"></a><tt class="py-lineno"> 300</tt> <a class="py-toggle" href="#" id="MyProxyClient._setServerDN-toggle" onclick="return toggle('MyProxyClient._setServerDN');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setServerDN">_setServerDN</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    365 </div><div id="MyProxyClient._setServerDN-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setServerDN-expanded"><a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    366 <a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for serverDN "</tt> </tt> 
    367 <a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    368 <a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="myproxy.client.MyProxyClient._serverDN" class="py-name" href="#" onclick="return doclink('link-56', '_serverDN', 'link-55');">_serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    369 </div><a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">    </tt> 
    370 <a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">    <tt id="link-57" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-57', 'serverDN', 'link-34');">serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-58" class="py-name" targets="Method myproxy.client.MyProxyClient._getServerDN()=myproxy.client.MyProxyClient-class.html#_getServerDN"><a title="myproxy.client.MyProxyClient._getServerDN" class="py-name" href="#" onclick="return doclink('link-58', '_getServerDN', 'link-58');">_getServerDN</a></tt><tt class="py-op">,</tt> </tt> 
    371 <a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">                        <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-59" class="py-name" targets="Method myproxy.client.MyProxyClient._setServerDN()=myproxy.client.MyProxyClient-class.html#_setServerDN"><a title="myproxy.client.MyProxyClient._setServerDN" class="py-name" href="#" onclick="return doclink('link-59', '_setServerDN', 'link-59');">_setServerDN</a></tt><tt class="py-op">,</tt> </tt> 
    372 <a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">                        <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Distinguished Name for MyProxy Server "</tt> </tt> 
    373 <a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">                            <tt class="py-string">"Certificate"</tt><tt class="py-op">)</tt> </tt> 
    374 <a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">     </tt> 
    375 <a name="MyProxyClient._getServerCNPrefix"></a><div id="MyProxyClient._getServerCNPrefix-def"><a name="L311"></a><tt class="py-lineno"> 311</tt> <a class="py-toggle" href="#" id="MyProxyClient._getServerCNPrefix-toggle" onclick="return toggle('MyProxyClient._getServerCNPrefix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getServerCNPrefix">_getServerCNPrefix</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    376 </div><div id="MyProxyClient._getServerCNPrefix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getServerCNPrefix-expanded"><a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Variable myproxy.client.MyProxyClient._serverCNPrefix=myproxy.client.MyProxyClient-class.html#_serverCNPrefix"><a title="myproxy.client.MyProxyClient._serverCNPrefix" class="py-name" href="#" onclick="return doclink('link-60', '_serverCNPrefix', 'link-60');">_serverCNPrefix</a></tt> </tt> 
    377 </div><a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">     </tt> 
    378 <a name="MyProxyClient._setServerCNPrefix"></a><div id="MyProxyClient._setServerCNPrefix-def"><a name="L314"></a><tt class="py-lineno"> 314</tt> <a class="py-toggle" href="#" id="MyProxyClient._setServerCNPrefix-toggle" onclick="return toggle('MyProxyClient._setServerCNPrefix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setServerCNPrefix">_setServerCNPrefix</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    379 </div><div id="MyProxyClient._setServerCNPrefix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setServerCNPrefix-expanded"><a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    380 <a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for serverCNPrefix "</tt> </tt> 
    381 <a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    382 <a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="myproxy.client.MyProxyClient._serverCNPrefix" class="py-name" href="#" onclick="return doclink('link-61', '_serverCNPrefix', 'link-60');">_serverCNPrefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    383 </div><a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">     </tt> 
    384 <a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">    <tt id="link-62" class="py-name" targets="Variable myproxy.client.MyProxyClient.serverCNPrefix=myproxy.client.MyProxyClient-class.html#serverCNPrefix"><a title="myproxy.client.MyProxyClient.serverCNPrefix" class="py-name" href="#" onclick="return doclink('link-62', 'serverCNPrefix', 'link-62');">serverCNPrefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-63" class="py-name" targets="Method myproxy.client.MyProxyClient._getServerCNPrefix()=myproxy.client.MyProxyClient-class.html#_getServerCNPrefix"><a title="myproxy.client.MyProxyClient._getServerCNPrefix" class="py-name" href="#" onclick="return doclink('link-63', '_getServerCNPrefix', 'link-63');">_getServerCNPrefix</a></tt><tt class="py-op">,</tt> </tt> 
    385 <a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">                              <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-64" class="py-name" targets="Method myproxy.client.MyProxyClient._setServerCNPrefix()=myproxy.client.MyProxyClient-class.html#_setServerCNPrefix"><a title="myproxy.client.MyProxyClient._setServerCNPrefix" class="py-name" href="#" onclick="return doclink('link-64', '_setServerCNPrefix', 'link-64');">_setServerCNPrefix</a></tt><tt class="py-op">,</tt> </tt> 
    386 <a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">                              <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Prefix if any for Server Certificate DN "</tt> </tt> 
    387 <a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">                                  <tt class="py-string">"Common Name e.g. 'host/'"</tt><tt class="py-op">)</tt> </tt> 
    388 <a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">     </tt> 
    389 <a name="MyProxyClient._getOpenSSLConfFilePath"></a><div id="MyProxyClient._getOpenSSLConfFilePath-def"><a name="L325"></a><tt class="py-lineno"> 325</tt> <a class="py-toggle" href="#" id="MyProxyClient._getOpenSSLConfFilePath-toggle" onclick="return toggle('MyProxyClient._getOpenSSLConfFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath">_getOpenSSLConfFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    390 </div><div id="MyProxyClient._getOpenSSLConfFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getOpenSSLConfFilePath-expanded"><a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Variable myproxy.client.MyProxyClient._openSSLConfFilePath=myproxy.client.MyProxyClient-class.html#_openSSLConfFilePath"><a title="myproxy.client.MyProxyClient._openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-65', '_openSSLConfFilePath', 'link-65');">_openSSLConfFilePath</a></tt> </tt> 
    391 </div><a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">     </tt> 
    392 <a name="MyProxyClient._setOpenSSLConfFilePath"></a><div id="MyProxyClient._setOpenSSLConfFilePath-def"><a name="L328"></a><tt class="py-lineno"> 328</tt> <a class="py-toggle" href="#" id="MyProxyClient._setOpenSSLConfFilePath-toggle" onclick="return toggle('MyProxyClient._setOpenSSLConfFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath">_setOpenSSLConfFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    393 </div><div id="MyProxyClient._setOpenSSLConfFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setOpenSSLConfFilePath-expanded"><a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    394 <a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for "</tt> </tt> 
    395 <a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">                                 <tt class="py-string">"openSSLConfFilePath attribute"</tt><tt class="py-op">)</tt> </tt> 
    396 <a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-66', '_openSSLConfFilePath', 'link-65');">_openSSLConfFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    397 <a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfig" class="py-name" href="#" onclick="return doclink('link-67', '_openSSLConfig', 'link-26');">_openSSLConfig</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Variable myproxy.utils.openssl.OpenSSLConfig.filePath=myproxy.utils.openssl.OpenSSLConfig-class.html#filePath"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-68', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-69', '_openSSLConfFilePath', 'link-65');">_openSSLConfFilePath</a></tt> </tt> 
    398 <a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfig" class="py-name" href="#" onclick="return doclink('link-70', '_openSSLConfig', 'link-26');">_openSSLConfig</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-71', 'read', 'link-41');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt> 
    399 </div><a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">     </tt> 
    400 <a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">    <tt id="link-72" class="py-name" targets="Variable myproxy.client.MyProxyClient.openSSLConfFilePath=myproxy.client.MyProxyClient-class.html#openSSLConfFilePath"><a title="myproxy.client.MyProxyClient.openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-72', 'openSSLConfFilePath', 'link-72');">openSSLConfFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-73" class="py-name" targets="Method myproxy.client.MyProxyClient._getOpenSSLConfFilePath()=myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath"><a title="myproxy.client.MyProxyClient._getOpenSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-73', '_getOpenSSLConfFilePath', 'link-73');">_getOpenSSLConfFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    401 <a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">                                   <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-74" class="py-name" targets="Method myproxy.client.MyProxyClient._setOpenSSLConfFilePath()=myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath"><a title="myproxy.client.MyProxyClient._setOpenSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-74', '_setOpenSSLConfFilePath', 'link-74');">_setOpenSSLConfFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    402 <a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                                   <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"file path for OpenSSL config file"</tt><tt class="py-op">)</tt> </tt> 
    403 <a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">    </tt> 
    404 <a name="MyProxyClient._getProxyCertMaxLifetime"></a><div id="MyProxyClient._getProxyCertMaxLifetime-def"><a name="L340"></a><tt class="py-lineno"> 340</tt> <a class="py-toggle" href="#" id="MyProxyClient._getProxyCertMaxLifetime-toggle" onclick="return toggle('MyProxyClient._getProxyCertMaxLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime">_getProxyCertMaxLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    405 </div><div id="MyProxyClient._getProxyCertMaxLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getProxyCertMaxLifetime-expanded"><a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Variable myproxy.client.MyProxyClient._proxyCertMaxLifetime=myproxy.client.MyProxyClient-class.html#_proxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient._proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-75', '_proxyCertMaxLifetime', 'link-75');">_proxyCertMaxLifetime</a></tt> </tt> 
    406 </div><a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">    </tt> 
    407 <a name="MyProxyClient._setProxyCertMaxLifetime"></a><div id="MyProxyClient._setProxyCertMaxLifetime-def"><a name="L343"></a><tt class="py-lineno"> 343</tt> <a class="py-toggle" href="#" id="MyProxyClient._setProxyCertMaxLifetime-toggle" onclick="return toggle('MyProxyClient._setProxyCertMaxLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime">_setProxyCertMaxLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    408 </div><div id="MyProxyClient._setProxyCertMaxLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setProxyCertMaxLifetime-expanded"><a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    409 <a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="myproxy.client.MyProxyClient._proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-76', '_proxyCertMaxLifetime', 'link-75');">_proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    410 <a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">            </tt> 
    411 <a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    412 <a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="myproxy.client.MyProxyClient._proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-77', '_proxyCertMaxLifetime', 'link-75');">_proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    413 <a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    414 <a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for proxyCertMaxLifetime "</tt> </tt> 
    415 <a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    416 </div><a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">    </tt> 
    417 <a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt id="link-78" class="py-name" targets="Variable myproxy.client.MyProxyClient.proxyCertMaxLifetime=myproxy.client.MyProxyClient-class.html#proxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient.proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-78', 'proxyCertMaxLifetime', 'link-78');">proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-79" class="py-name" targets="Method myproxy.client.MyProxyClient._getProxyCertMaxLifetime()=myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient._getProxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-79', '_getProxyCertMaxLifetime', 'link-79');">_getProxyCertMaxLifetime</a></tt><tt class="py-op">,</tt> </tt> 
    418 <a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">                                    <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-80" class="py-name" targets="Method myproxy.client.MyProxyClient._setProxyCertMaxLifetime()=myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient._setProxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-80', '_setProxyCertMaxLifetime', 'link-80');">_setProxyCertMaxLifetime</a></tt><tt class="py-op">,</tt> </tt> 
    419 <a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                                    <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Default max. lifetime allowed for "</tt> </tt> 
    420 <a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                                        <tt class="py-string">"Proxy Certificate retrieved - used "</tt> </tt> 
    421 <a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                                        <tt class="py-string">"by store method"</tt><tt class="py-op">)</tt> </tt> 
    422 <a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">     </tt> 
    423 <a name="MyProxyClient._getProxyCertLifetime"></a><div id="MyProxyClient._getProxyCertLifetime-def"><a name="L359"></a><tt class="py-lineno"> 359</tt> <a class="py-toggle" href="#" id="MyProxyClient._getProxyCertLifetime-toggle" onclick="return toggle('MyProxyClient._getProxyCertLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime">_getProxyCertLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    424 </div><div id="MyProxyClient._getProxyCertLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getProxyCertLifetime-expanded"><a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Variable myproxy.client.MyProxyClient._proxyCertLifetime=myproxy.client.MyProxyClient-class.html#_proxyCertLifetime"><a title="myproxy.client.MyProxyClient._proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-81', '_proxyCertLifetime', 'link-81');">_proxyCertLifetime</a></tt> </tt> 
    425 </div><a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">    </tt> 
    426 <a name="MyProxyClient._setProxyCertLifetime"></a><div id="MyProxyClient._setProxyCertLifetime-def"><a name="L362"></a><tt class="py-lineno"> 362</tt> <a class="py-toggle" href="#" id="MyProxyClient._setProxyCertLifetime-toggle" onclick="return toggle('MyProxyClient._setProxyCertLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime">_setProxyCertLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    427 </div><div id="MyProxyClient._setProxyCertLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setProxyCertLifetime-expanded"><a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    428 <a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="myproxy.client.MyProxyClient._proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-82', '_proxyCertLifetime', 'link-81');">_proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    429 <a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    430 <a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="myproxy.client.MyProxyClient._proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-83', '_proxyCertLifetime', 'link-81');">_proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    431 <a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    432 <a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for proxyCertLifetime "</tt> </tt> 
    433 <a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    434 </div><a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">    </tt> 
    435 <a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">    <tt id="link-84" class="py-name" targets="Variable myproxy.client.MyProxyClient.proxyCertLifetime=myproxy.client.MyProxyClient-class.html#proxyCertLifetime"><a title="myproxy.client.MyProxyClient.proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-84', 'proxyCertLifetime', 'link-84');">proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-85" class="py-name" targets="Method myproxy.client.MyProxyClient._getProxyCertLifetime()=myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime"><a title="myproxy.client.MyProxyClient._getProxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-85', '_getProxyCertLifetime', 'link-85');">_getProxyCertLifetime</a></tt><tt class="py-op">,</tt> </tt> 
    436 <a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">                                 <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-86" class="py-name" targets="Method myproxy.client.MyProxyClient._setProxyCertLifetime()=myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime"><a title="myproxy.client.MyProxyClient._setProxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-86', '_setProxyCertLifetime', 'link-86');">_setProxyCertLifetime</a></tt><tt class="py-op">,</tt> </tt> 
    437 <a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                                 <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Default proxy cert. lifetime used in "</tt> </tt> 
    438 <a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">                                     <tt class="py-string">"logon request"</tt><tt class="py-op">)</tt> </tt> 
    439 <a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">     </tt> 
    440 <a name="MyProxyClient._getCACertFilePath"></a><div id="MyProxyClient._getCACertFilePath-def"><a name="L376"></a><tt class="py-lineno"> 376</tt> <a class="py-toggle" href="#" id="MyProxyClient._getCACertFilePath-toggle" onclick="return toggle('MyProxyClient._getCACertFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getCACertFilePath">_getCACertFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    441 </div><div id="MyProxyClient._getCACertFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getCACertFilePath-expanded"><a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Variable myproxy.client.MyProxyClient._caCertFilePath=myproxy.client.MyProxyClient-class.html#_caCertFilePath"><a title="myproxy.client.MyProxyClient._caCertFilePath" class="py-name" href="#" onclick="return doclink('link-87', '_caCertFilePath', 'link-87');">_caCertFilePath</a></tt> </tt> 
    442 </div><a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">     </tt> 
    443 <a name="MyProxyClient._setCACertFilePath"></a><div id="MyProxyClient._setCACertFilePath-def"><a name="L379"></a><tt class="py-lineno"> 379</tt> <a class="py-toggle" href="#" id="MyProxyClient._setCACertFilePath-toggle" onclick="return toggle('MyProxyClient._setCACertFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setCACertFilePath">_setCACertFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    444 </div><div id="MyProxyClient._setCACertFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setCACertFilePath-expanded"><a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">        <tt class="py-docstring">'''@type val: basestring</tt> </tt> 
    445 <a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">        @param val: file path for CA certificate to be used to verify </tt> </tt> 
    446 <a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">        MyProxy server certificate'''</tt> </tt> 
    447 <a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">        </tt> 
    448 <a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    449 <a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> 
    450 <a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="myproxy.client.MyProxyClient._caCertFilePath" class="py-name" href="#" onclick="return doclink('link-88', '_caCertFilePath', 'link-87');">_caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    451 <a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    452 <a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="myproxy.client.MyProxyClient._caCertFilePath" class="py-name" href="#" onclick="return doclink('link-89', '_caCertFilePath', 'link-87');">_caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    453 <a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">                </tt> 
    454 <a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    455 <a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for caCertFilePath "</tt> </tt> 
    456 <a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt>        </tt> 
    457 </div><a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">         </tt> 
    458 <a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt id="link-90" class="py-name" targets="Variable myproxy.client.MyProxyClient.caCertFilePath=myproxy.client.MyProxyClient-class.html#caCertFilePath"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-90', 'caCertFilePath', 'link-90');">caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-91" class="py-name" targets="Method myproxy.client.MyProxyClient._getCACertFilePath()=myproxy.client.MyProxyClient-class.html#_getCACertFilePath"><a title="myproxy.client.MyProxyClient._getCACertFilePath" class="py-name" href="#" onclick="return doclink('link-91', '_getCACertFilePath', 'link-91');">_getCACertFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    459 <a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                              <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-92" class="py-name" targets="Method myproxy.client.MyProxyClient._setCACertFilePath()=myproxy.client.MyProxyClient-class.html#_setCACertFilePath"><a title="myproxy.client.MyProxyClient._setCACertFilePath" class="py-name" href="#" onclick="return doclink('link-92', '_setCACertFilePath', 'link-92');">_setCACertFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    460 <a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">                              <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"CA certificate file path - MyProxy server "</tt> </tt> 
    461 <a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">                                  <tt class="py-string">"certificate must validate against it and/"</tt> </tt> 
    462 <a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">                                  <tt class="py-string">"or any present in caCertDir"</tt><tt class="py-op">)</tt> </tt> 
    463 <a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"> </tt> 
    464 <a name="MyProxyClient._getCACertDir"></a><div id="MyProxyClient._getCACertDir-def"><a name="L400"></a><tt class="py-lineno"> 400</tt> <a class="py-toggle" href="#" id="MyProxyClient._getCACertDir-toggle" onclick="return toggle('MyProxyClient._getCACertDir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getCACertDir">_getCACertDir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    465 </div><div id="MyProxyClient._getCACertDir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getCACertDir-expanded"><a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Variable myproxy.client.MyProxyClient._caCertDir=myproxy.client.MyProxyClient-class.html#_caCertDir"><a title="myproxy.client.MyProxyClient._caCertDir" class="py-name" href="#" onclick="return doclink('link-93', '_caCertDir', 'link-93');">_caCertDir</a></tt> </tt> 
    466 </div><a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"> </tt> 
    467 <a name="MyProxyClient._setCACertDir"></a><div id="MyProxyClient._setCACertDir-def"><a name="L403"></a><tt class="py-lineno"> 403</tt> <a class="py-toggle" href="#" id="MyProxyClient._setCACertDir-toggle" onclick="return toggle('MyProxyClient._setCACertDir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setCACertDir">_setCACertDir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    468 </div><div id="MyProxyClient._setCACertDir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setCACertDir-expanded"><a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">        <tt class="py-docstring">'''Specify a directory containing PEM encoded CA certs. used for </tt> </tt> 
    469 <a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"><tt class="py-docstring">        validation of MyProxy server certificate.</tt> </tt> 
    470 <a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    471 <a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"><tt class="py-docstring">        Set to None to make M2Crypto.SSL.Context.load_verify_locations ignore</tt> </tt> 
    472 <a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-docstring">        this parameter</tt> </tt> 
    473 <a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    474 <a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-docstring">        @type val: basestring/None</tt> </tt> 
    475 <a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-docstring">        @param val: directory path'''</tt> </tt> 
    476 <a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">        </tt> 
    477 <a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    478 <a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> 
    479 <a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="myproxy.client.MyProxyClient._caCertDir" class="py-name" href="#" onclick="return doclink('link-94', '_caCertDir', 'link-93');">_caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    480 <a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    481 <a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="myproxy.client.MyProxyClient._caCertDir" class="py-name" href="#" onclick="return doclink('link-95', '_caCertDir', 'link-93');">_caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
    482 <a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">                 </tt> 
    483 <a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    484 <a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="myproxy.client.MyProxyClient._caCertDir" class="py-name" href="#" onclick="return doclink('link-96', '_caCertDir', 'link-93');">_caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt>    </tt> 
    485 <a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    486 <a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string or None type for caCertDir "</tt> </tt> 
    487 <a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
    488 </div><a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        </tt> 
    489 <a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">    <tt id="link-97" class="py-name" targets="Variable myproxy.client.MyProxyClient.caCertDir=myproxy.client.MyProxyClient-class.html#caCertDir"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-97', 'caCertDir', 'link-97');">caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-98" class="py-name" targets="Method myproxy.client.MyProxyClient._getCACertDir()=myproxy.client.MyProxyClient-class.html#_getCACertDir"><a title="myproxy.client.MyProxyClient._getCACertDir" class="py-name" href="#" onclick="return doclink('link-98', '_getCACertDir', 'link-98');">_getCACertDir</a></tt><tt class="py-op">,</tt> </tt> 
    490 <a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">                         <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-99" class="py-name" targets="Method myproxy.client.MyProxyClient._setCACertDir()=myproxy.client.MyProxyClient-class.html#_setCACertDir"><a title="myproxy.client.MyProxyClient._setCACertDir" class="py-name" href="#" onclick="return doclink('link-99', '_setCACertDir', 'link-99');">_setCACertDir</a></tt><tt class="py-op">,</tt> </tt> 
    491 <a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">                         <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"directory containing PEM encoded CA "</tt> </tt> 
    492 <a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">                             <tt class="py-string">"certificates.  Use along with caCertFilePath "</tt> </tt> 
    493 <a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">                             <tt class="py-string">"setting to validate MyProxy server certificate"</tt><tt class="py-op">)</tt> </tt> 
    494 <a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"> </tt> 
    495 <a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"> </tt> 
    496 <a name="MyProxyClient._getOpenSSLConfig"></a><div id="MyProxyClient._getOpenSSLConfig-def"><a name="L432"></a><tt class="py-lineno"> 432</tt> <a class="py-toggle" href="#" id="MyProxyClient._getOpenSSLConfig-toggle" onclick="return toggle('MyProxyClient._getOpenSSLConfig');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig">_getOpenSSLConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    497 </div><div id="MyProxyClient._getOpenSSLConfig-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getOpenSSLConfig-expanded"><a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-docstring">"Get OpenSSLConfig object property method"</tt> </tt> 
    498 <a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfig" class="py-name" href="#" onclick="return doclink('link-100', '_openSSLConfig', 'link-26');">_openSSLConfig</a></tt> </tt> 
    499 </div><a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">    </tt> 
    500 <a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">    <tt id="link-101" class="py-name" targets="Variable myproxy.client.MyProxyClient.openSSLConfig=myproxy.client.MyProxyClient-class.html#openSSLConfig"><a title="myproxy.client.MyProxyClient.openSSLConfig" class="py-name" href="#" onclick="return doclink('link-101', 'openSSLConfig', 'link-101');">openSSLConfig</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-102" class="py-name" targets="Method myproxy.client.MyProxyClient._getOpenSSLConfig()=myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig"><a title="myproxy.client.MyProxyClient._getOpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-102', '_getOpenSSLConfig', 'link-102');">_getOpenSSLConfig</a></tt><tt class="py-op">,</tt> </tt> 
    501 <a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">                             <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"OpenSSLConfig object"</tt><tt class="py-op">)</tt> </tt> 
    502 <a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"> </tt> 
    503 <a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">           </tt> 
    504 <a name="MyProxyClient._initConnection"></a><div id="MyProxyClient._initConnection-def"><a name="L440"></a><tt class="py-lineno"> 440</tt> <a class="py-toggle" href="#" id="MyProxyClient._initConnection-toggle" onclick="return toggle('MyProxyClient._initConnection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_initConnection">_initConnection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
    505 <a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">                        <tt class="py-param">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    506 <a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">                        <tt class="py-param">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    507 <a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">                        <tt class="py-param">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    508 </div><div id="MyProxyClient._initConnection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._initConnection-expanded"><a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialise connection setting up SSL context and client and</tt> </tt> 
    509 <a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-docstring">        server side identity checks</tt> </tt> 
    510 <a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    511 <a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerCertFile: basestring</tt> </tt> 
    512 <a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerCertFile: client certificate and owner of credential</tt> </tt> 
    513 <a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-docstring">        to be acted on.  Can be a proxy cert + proxy's signing cert.  Cert</tt> </tt> 
    514 <a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-docstring">        and private key are not necessary for getDelegation / logon calls</tt> </tt> 
    515 <a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerKeyFile: basestring</tt> </tt> 
    516 <a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerKeyFile: client private key file</tt> </tt> 
    517 <a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerPassphrase: basestring</tt> </tt> 
    518 <a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerPassphrase: pass-phrase protecting private key if set - </tt> </tt> 
    519 <a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-docstring">        not needed in the case of a proxy private key</tt> </tt> 
    520 <a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    521 <a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"> </tt> 
    522 <a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-comment"># Must be version 3 for MyProxy</tt> </tt> 
    523 <a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Context</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">=</tt><tt class="py-string">'sslv3'</tt><tt class="py-op">)</tt> </tt> 
    524 <a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"> </tt> 
    525 <a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-103', 'caCertFilePath', 'link-90');">caCertFilePath</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-104', 'caCertDir', 'link-97');">caCertDir</a></tt><tt class="py-op">:</tt> </tt> 
    526 <a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">load_verify_locations</tt><tt class="py-op">(</tt><tt class="py-name">cafile</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-105', 'caCertFilePath', 'link-90');">caCertFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    527 <a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                                          <tt class="py-name">capath</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-106', 'caCertDir', 'link-97');">caCertDir</a></tt><tt class="py-op">)</tt> </tt> 
    528 <a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">                            </tt> 
    529 <a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">            <tt class="py-comment"># Stop if peer's certificate can't be verified</tt> </tt> 
    530 <a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_allow_unknown_ca</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt> 
    531 <a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    532 <a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_allow_unknown_ca</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    533 <a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">            </tt> 
    534 <a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ownerCertFile</tt><tt class="py-op">:</tt> </tt> 
    535 <a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    536 <a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">                <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">load_cert_chain</tt><tt class="py-op">(</tt><tt class="py-name">ownerCertFile</tt><tt class="py-op">,</tt> </tt> 
    537 <a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">                                    <tt class="py-name">keyfile</tt><tt class="py-op">=</tt><tt class="py-name">ownerKeyFile</tt><tt class="py-op">,</tt> </tt> 
    538 <a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">                                    <tt class="py-name">callback</tt><tt class="py-op">=</tt><tt class="py-keyword">lambda</tt> <tt class="py-op">*</tt><tt class="py-name">ar</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">:</tt> <tt class="py-name">ownerPassphrase</tt><tt class="py-op">)</tt> </tt> 
    539 <a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> 
    540 <a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-107" class="py-name" targets="Class myproxy.client.MyProxyClientConfigError=myproxy.client.MyProxyClientConfigError-class.html"><a title="myproxy.client.MyProxyClientConfigError" class="py-name" href="#" onclick="return doclink('link-107', 'MyProxyClientConfigError', 'link-107');">MyProxyClientConfigError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Loading certificate "</tt> </tt> 
    541 <a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                                               <tt class="py-string">"and private key for SSL "</tt> </tt> 
    542 <a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">                                               <tt class="py-string">"connection [also check CA "</tt> </tt> 
    543 <a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                                               <tt class="py-string">"certificate settings]: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt>  </tt> 
    544 <a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">             </tt> 
    545 <a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">            <tt class="py-comment"># Verify peer's certificate</tt> </tt> 
    546 <a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_verify</tt><tt class="py-op">(</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">verify_peer</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt> 
    547 <a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">         </tt> 
    548 <a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            </tt> 
    549 <a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">        <tt class="py-comment"># Disable for compatibility with myproxy server (er, globus)</tt> </tt> 
    550 <a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># globus doesn't handle this case, apparently, and instead</tt> </tt> 
    551 <a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># chokes in proxy delegation code</tt> </tt> 
    552 <a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_options</tt><tt class="py-op">(</tt><tt class="py-name">m2</tt><tt class="py-op">.</tt><tt class="py-name">SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS</tt><tt class="py-op">)</tt> </tt> 
    553 <a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        </tt> 
    554 <a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">        <tt class="py-comment"># connect to myproxy server</tt> </tt> 
    555 <a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">sock</tt><tt class="py-op">=</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    556 <a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">        </tt> 
    557 <a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">        <tt class="py-comment"># Check server host identity - if host doesn't match use explicit</tt> </tt> 
    558 <a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 'serverDN' </tt> </tt> 
    559 <a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># host/&lt;hostname&gt; one</tt> </tt> 
    560 <a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">hostCheck</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name" targets="Class myproxy.client._HostCheck=myproxy.client._HostCheck-class.html"><a title="myproxy.client._HostCheck" class="py-name" href="#" onclick="return doclink('link-108', '_HostCheck', 'link-108');">_HostCheck</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-109', 'hostname', 'link-28');">hostname</a></tt><tt class="py-op">,</tt> </tt> 
    561 <a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">                               <tt class="py-name">myProxyServerDN</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-110', 'serverDN', 'link-34');">serverDN</a></tt><tt class="py-op">,</tt> </tt> 
    562 <a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">                               <tt class="py-name">cnHostPfx</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="myproxy.client.MyProxyClient.serverCNPrefix" class="py-name" href="#" onclick="return doclink('link-111', 'serverCNPrefix', 'link-62');">serverCNPrefix</a></tt><tt class="py-op">)</tt> </tt> 
    563 <a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">set_post_connection_check_callback</tt><tt class="py-op">(</tt><tt class="py-name">hostCheck</tt><tt class="py-op">)</tt> </tt> 
    564 <a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">        </tt> 
    565 <a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">conn</tt> </tt> 
    566 </div><a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">    </tt> 
    567 <a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">            </tt> 
    568 <a name="MyProxyClient._createCertReq"></a><div id="MyProxyClient._createCertReq-def"><a name="L504"></a><tt class="py-lineno"> 504</tt> <a class="py-toggle" href="#" id="MyProxyClient._createCertReq-toggle" onclick="return toggle('MyProxyClient._createCertReq');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_createCertReq">_createCertReq</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">CN</tt><tt class="py-op">,</tt> <tt class="py-param">nBitsForKey</tt><tt class="py-op">=</tt><tt class="py-number">1024</tt><tt class="py-op">,</tt> <tt class="py-param">messageDigest</tt><tt class="py-op">=</tt><tt class="py-string">"md5"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    569 </div><div id="MyProxyClient._createCertReq-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._createCertReq-expanded"><a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt> 
    570 <a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring">        Create a certificate request.</tt> </tt> 
    571 <a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    572 <a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring">        @type CN: basestring</tt> </tt> 
    573 <a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">        @param CN: Common Name for certificate - effectively the same as the</tt> </tt> 
    574 <a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        username for the MyProxy credential</tt> </tt> 
    575 <a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">        @type nBitsForKey: int</tt> </tt> 
    576 <a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">        @param nBitsForKey: number of bits for private key generation - </tt> </tt> 
    577 <a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">        default is 1024</tt> </tt> 
    578 <a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">        @type messageDigest: basestring</tt> </tt> 
    579 <a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        @param messageDigest: message digest type - default is MD5</tt> </tt> 
    580 <a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: tuple</tt> </tt> 
    581 <a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">        @return certificate request PEM text and private key PEM text</tt> </tt> 
    582 <a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    583 <a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        </tt> 
    584 <a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-comment"># Check all required certifcate request DN parameters are set                </tt> </tt> 
    585 <a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Create certificate request</tt> </tt> 
    586 <a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">req</tt> <tt class="py-op">=</tt> <tt class="py-name">X509</tt><tt class="py-op">.</tt><tt class="py-name">Request</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    587 <a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">    </tt> 
    588 <a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">        <tt class="py-comment"># Generate keys</tt> </tt> 
    589 <a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">gen_key</tt><tt class="py-op">(</tt><tt class="py-name">nBitsForKey</tt><tt class="py-op">,</tt> <tt class="py-name">m2</tt><tt class="py-op">.</tt><tt class="py-name">RSA_F4</tt><tt class="py-op">)</tt> </tt> 
    590 <a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">     </tt> 
    591 <a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">        <tt class="py-comment"># Create public key object</tt> </tt> 
    592 <a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pubKey</tt> <tt class="py-op">=</tt> <tt class="py-name">EVP</tt><tt class="py-op">.</tt><tt class="py-name">PKey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    593 <a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">        <tt class="py-name">pubKey</tt><tt class="py-op">.</tt><tt class="py-name">assign_rsa</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> 
    594 <a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        </tt> 
    595 <a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">        <tt class="py-comment"># Add the public key to the request</tt> </tt> 
    596 <a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">set_version</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt> 
    597 <a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">set_pubkey</tt><tt class="py-op">(</tt><tt class="py-name">pubKey</tt><tt class="py-op">)</tt> </tt> 
    598 <a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        </tt> 
    599 <a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">        <tt class="py-name">defaultReqDN</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="myproxy.client.MyProxyClient._openSSLConfig" class="py-name" href="#" onclick="return doclink('link-112', '_openSSLConfig', 'link-26');">_openSSLConfig</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Variable myproxy.utils.openssl.OpenSSLConfig.reqDN=myproxy.utils.openssl.OpenSSLConfig-class.html#reqDN"><a title="myproxy.utils.openssl.OpenSSLConfig.reqDN" class="py-name" href="#" onclick="return doclink('link-113', 'reqDN', 'link-113');">reqDN</a></tt> </tt> 
    600 <a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">              </tt> 
    601 <a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">        <tt class="py-comment"># Set DN</tt> </tt> 
    602 <a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">x509Name</tt> <tt class="py-op">=</tt> <tt class="py-name">X509</tt><tt class="py-op">.</tt><tt class="py-name">X509_Name</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    603 <a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">        <tt class="py-name">x509Name</tt><tt class="py-op">.</tt><tt class="py-name">CN</tt> <tt class="py-op">=</tt> <tt class="py-name">CN</tt> </tt> 
    604 <a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        </tt> 
    605 <a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">defaultReqDN</tt><tt class="py-op">:</tt> </tt> 
    606 <a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">            <tt class="py-name">x509Name</tt><tt class="py-op">.</tt><tt class="py-name">OU</tt> <tt class="py-op">=</tt> <tt class="py-name">defaultReqDN</tt><tt class="py-op">[</tt><tt class="py-string">'OU'</tt><tt class="py-op">]</tt> </tt> 
    607 <a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">            <tt class="py-name">x509Name</tt><tt class="py-op">.</tt><tt class="py-name">O</tt> <tt class="py-op">=</tt> <tt class="py-name">defaultReqDN</tt><tt class="py-op">[</tt><tt class="py-string">'O'</tt><tt class="py-op">]</tt> </tt> 
    608 <a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">                         </tt> 
    609 <a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">set_subject_name</tt><tt class="py-op">(</tt><tt class="py-name">x509Name</tt><tt class="py-op">)</tt> </tt> 
    610 <a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">         </tt> 
    611 <a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">pubKey</tt><tt class="py-op">,</tt> <tt class="py-name">messageDigest</tt><tt class="py-op">)</tt> </tt> 
    612 <a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"> </tt> 
    613 <a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">as_der</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">as_pem</tt><tt class="py-op">(</tt><tt class="py-name">cipher</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    614 </div><a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">    </tt> 
    615 <a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">     </tt> 
    616 <a name="MyProxyClient._deserializeResponse"></a><div id="MyProxyClient._deserializeResponse-def"><a name="L552"></a><tt class="py-lineno"> 552</tt> <a class="py-toggle" href="#" id="MyProxyClient._deserializeResponse-toggle" onclick="return toggle('MyProxyClient._deserializeResponse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_deserializeResponse">_deserializeResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">fieldNames</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    617 </div><div id="MyProxyClient._deserializeResponse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._deserializeResponse-expanded"><a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">        <tt class="py-docstring">"""</tt> </tt> 
    618 <a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">        Deserialize a MyProxy server response</tt> </tt> 
    619 <a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    620 <a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">        @param msg: string response message from MyProxy server</tt> </tt> 
    621 <a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">        @*fieldNames: the content of additional fields can be returned by </tt> </tt> 
    622 <a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">        specifying the field name or names as additional arguments e.g. info</tt> </tt> 
    623 <a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">        method passes 'CRED_START_TIME', 'CRED_END_TIME' and 'CRED_OWNER'</tt> </tt> 
    624 <a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">        field names.  The content of fields is returned as an extra element</tt> </tt> 
    625 <a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        in the tuple response.  This element is itself a dictionary indexed</tt> </tt> 
    626 <a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">        by field name.</tt> </tt> 
    627 <a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">        @return tuple of integer response and errorTxt string (if any)</tt> </tt> 
    628 <a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    629 <a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">         </tt> 
    630 <a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> </tt> 
    631 <a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">         </tt> 
    632 <a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-comment"># get response value</tt> </tt> 
    633 <a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">responselines</tt> <tt class="py-op">=</tt> <tt class="py-name">filter</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'RESPONSE'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">lines</tt><tt class="py-op">)</tt> </tt> 
    634 <a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt class="py-name">responseline</tt> <tt class="py-op">=</tt> <tt class="py-name">responselines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> 
    635 <a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-name">respCode</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">responseline</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    636 <a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">         </tt> 
    637 <a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt class="py-comment"># get error text</tt> </tt> 
    638 <a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">errorTxt</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt> 
    639 <a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">        <tt class="py-name">errorlines</tt> <tt class="py-op">=</tt> <tt class="py-name">filter</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'ERROR'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">lines</tt><tt class="py-op">)</tt> </tt> 
    640 <a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">e</tt> <tt class="py-keyword">in</tt> <tt class="py-name">errorlines</tt><tt class="py-op">:</tt> </tt> 
    641 <a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">            <tt class="py-name">etext</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> 
    642 <a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">            <tt class="py-name">errorTxt</tt> <tt class="py-op">+=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">linesep</tt> <tt class="py-op">+</tt> <tt class="py-name">etext</tt> </tt> 
    643 <a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">        </tt> 
    644 <a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">fieldNames</tt><tt class="py-op">:</tt> </tt> 
    645 <a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">            <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
    646 <a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                         </tt> 
    647 <a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">fieldName</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fieldNames</tt><tt class="py-op">:</tt> </tt> 
    648 <a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                <tt class="py-name">fieldlines</tt> <tt class="py-op">=</tt> <tt class="py-name">filter</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-name">fieldName</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">lines</tt><tt class="py-op">)</tt> </tt> 
    649 <a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    650 <a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">                    <tt class="py-comment"># Nb. '1' arg to split ensures owner DN is not split up.</tt> </tt> 
    651 <a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">field</tt> <tt class="py-op">=</tt> <tt class="py-name">fieldlines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'='</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt> 
    652 <a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">                    <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-name">fieldName</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">field</tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">field</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">field</tt> </tt> 
    653 <a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"> </tt> 
    654 <a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt> 
    655 <a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">                    <tt class="py-comment"># Ignore fields that aren't found</tt> </tt> 
    656 <a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">pass</tt> </tt> 
    657 <a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">                </tt> 
    658 <a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">respCode</tt><tt class="py-op">,</tt> <tt class="py-name">errorTxt</tt><tt class="py-op">,</tt> <tt class="py-name">fields</tt> </tt> 
    659 <a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    660 <a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">respCode</tt><tt class="py-op">,</tt> <tt class="py-name">errorTxt</tt> </tt> 
    661 </div><a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">    </tt> 
    662 <a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">   </tt> 
    663 <a name="MyProxyClient._deserializeCerts"></a><div id="MyProxyClient._deserializeCerts-def"><a name="L599"></a><tt class="py-lineno"> 599</tt> <a class="py-toggle" href="#" id="MyProxyClient._deserializeCerts-toggle" onclick="return toggle('MyProxyClient._deserializeCerts');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_deserializeCerts">_deserializeCerts</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">inputDat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    664 </div><div id="MyProxyClient._deserializeCerts-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._deserializeCerts-expanded"><a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-docstring">"""Unpack certificates returned from a get delegation call to the</tt> </tt> 
    665 <a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">        server</tt> </tt> 
    666 <a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    667 <a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">        @param inputDat: string containing the proxy cert and private key</tt> </tt> 
    668 <a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        and signing cert all in DER format</tt> </tt> 
    669 <a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    670 <a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        @return list containing the equivalent to the input in PEM format"""</tt> </tt> 
    671 <a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">        <tt class="py-name">pemCerts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt>        </tt> 
    672 <a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-name">dat</tt> <tt class="py-op">=</tt> <tt class="py-name">inputDat</tt> </tt> 
    673 <a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        </tt> 
    674 <a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">dat</tt><tt class="py-op">:</tt>    </tt> 
    675 <a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">            <tt class="py-comment"># find start of cert, get length        </tt> </tt> 
    676 <a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">ind</tt> <tt class="py-op">=</tt> <tt class="py-name">dat</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'\x30\x82'</tt><tt class="py-op">)</tt> </tt> 
    677 <a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">ind</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> 
    678 <a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt> 
    679 <a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">                </tt> 
    680 <a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">            <tt class="py-name">len</tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt><tt class="py-op">*</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">dat</tt><tt class="py-op">[</tt><tt class="py-name">ind</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">dat</tt><tt class="py-op">[</tt><tt class="py-name">ind</tt><tt class="py-op">+</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    681 <a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">    </tt> 
    682 <a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">            <tt class="py-comment"># extract der-format cert, and convert to pem</tt> </tt> 
    683 <a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">derCert</tt> <tt class="py-op">=</tt> <tt class="py-name">dat</tt><tt class="py-op">[</tt><tt class="py-name">ind</tt><tt class="py-op">:</tt><tt class="py-name">ind</tt><tt class="py-op">+</tt><tt class="py-name">len</tt><tt class="py-op">+</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt> 
    684 <a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">            </tt> 
    685 <a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">            <tt class="py-name">x509</tt> <tt class="py-op">=</tt> <tt class="py-name">X509</tt><tt class="py-op">.</tt><tt class="py-name">load_cert_der_string</tt><tt class="py-op">(</tt><tt class="py-name">derCert</tt><tt class="py-op">)</tt> </tt> 
    686 <a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">            <tt class="py-name">pemCert</tt> <tt class="py-op">=</tt> <tt class="py-name">x509</tt><tt class="py-op">.</tt><tt class="py-name">as_pem</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    687 <a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">            </tt> 
    688 <a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">            <tt class="py-name">pemCerts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">pemCert</tt><tt class="py-op">)</tt> </tt> 
    689 <a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">     </tt> 
    690 <a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">            <tt class="py-comment"># trim cert from data</tt> </tt> 
    691 <a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">dat</tt> <tt class="py-op">=</tt> <tt class="py-name">dat</tt><tt class="py-op">[</tt><tt class="py-name">ind</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt> <tt class="py-op">+</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> 
    692 <a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">            </tt> 
    693 <a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">pemCerts</tt> </tt> 
    694 </div><a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">    </tt> 
    695 <a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">    </tt> 
    696 <a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> 
    697 <a name="MyProxyClient.writeProxyFile"></a><div id="MyProxyClient.writeProxyFile-def"><a name="L633"></a><tt class="py-lineno"> 633</tt> <a class="py-toggle" href="#" id="MyProxyClient.writeProxyFile-toggle" onclick="return toggle('MyProxyClient.writeProxyFile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#writeProxyFile">writeProxyFile</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt><tt class="py-param">proxyCert</tt><tt class="py-op">,</tt><tt class="py-param">proxyPriKey</tt><tt class="py-op">,</tt><tt class="py-param">userX509Cert</tt><tt class="py-op">,</tt><tt class="py-param">filePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    698 </div><div id="MyProxyClient.writeProxyFile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.writeProxyFile-expanded"><a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write out proxy cert to file in the same way as myproxy-logon - </tt> </tt> 
    699 <a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">        proxy cert, private key, user cert.  Nb. output from logon can be</tt> </tt> 
    700 <a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">        passed direct into this method</tt> </tt> 
    701 <a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    702 <a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">        @type proxyCert: string </tt> </tt> 
    703 <a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">        @param proxyCert: proxy certificate</tt> </tt> 
    704 <a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">        @type proxyPriKey: string</tt> </tt> 
    705 <a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">        @param proxyPriKey: private key for proxy</tt> </tt> 
    706 <a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring">        @type userX509Cert: string</tt> </tt> 
    707 <a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line"><tt class="py-docstring">        @param userX509Cert: user certificate which issued the proxy</tt> </tt> 
    708 <a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"><tt class="py-docstring">        @type filePath: string</tt> </tt> 
    709 <a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line"><tt class="py-docstring">        @param filePath: set to override the default filePath"""</tt> </tt> 
    710 <a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        </tt> 
    711 <a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-114" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-114', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    712 <a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">            <tt id="link-115" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-115', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-116', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-117', 'defProxyFile', 'link-16');">defProxyFile</a></tt> </tt> 
    713 <a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">            </tt> 
    714 <a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-118" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-118', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    715 <a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">            <tt id="link-119" class="py-name"><a title="myproxy.client.MyProxyClientConfigError" class="py-name" href="#" onclick="return doclink('link-119', 'MyProxyClientConfigError', 'link-107');">MyProxyClientConfigError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error setting proxy file path - invalid "</tt> </tt> 
    716 <a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">                                     <tt class="py-string">"platform?"</tt><tt class="py-op">)</tt> </tt> 
    717 <a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">         </tt> 
    718 <a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt class="py-name">outStr</tt> <tt class="py-op">=</tt> <tt class="py-name">proxyCert</tt> <tt class="py-op">+</tt> <tt class="py-name">proxyPriKey</tt> <tt class="py-op">+</tt> <tt class="py-name">userX509Cert</tt>        </tt> 
    719 <a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-120', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-121', 'defProxyFile', 'link-16');">defProxyFile</a></tt><tt class="py-op">,</tt> <tt class="py-string">'w'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">outStr</tt><tt class="py-op">)</tt> </tt> 
    720 <a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    721 <a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure permissions are set correctly</tt> </tt> 
    722 <a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chmod</tt><tt class="py-op">(</tt><tt id="link-122" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-122', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-123', 'defProxyFile', 'link-16');">defProxyFile</a></tt><tt class="py-op">,</tt> <tt class="py-number">0600</tt><tt class="py-op">)</tt> </tt> 
    723 <a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> 
    724 <a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">            <tt class="py-comment"># Don't leave the file lying around if couldn't change it's</tt> </tt> 
    725 <a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># permissions</tt> </tt> 
    726 <a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-124', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-125', 'defProxyFile', 'link-16');">defProxyFile</a></tt><tt class="py-op">)</tt> </tt> 
    727 <a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">            </tt> 
    728 <a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">            <tt id="link-126" class="py-name"><a title="myproxy.client.log" class="py-name" href="#" onclick="return doclink('link-126', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Unable to set 0600 permissions for proxy file "%s": %s'</tt><tt class="py-op">%</tt> </tt> 
    729 <a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">                      <tt class="py-op">(</tt><tt id="link-127" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-127', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-128', 'defProxyFile', 'link-16');">defProxyFile</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    730 <a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt> 
    731 </div><a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"> </tt> 
    732 <a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt> 
    733 <a name="MyProxyClient.readProxyFile"></a><div id="MyProxyClient.readProxyFile-def"><a name="L669"></a><tt class="py-lineno"> 669</tt> <a class="py-toggle" href="#" id="MyProxyClient.readProxyFile-toggle" onclick="return toggle('MyProxyClient.readProxyFile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#readProxyFile">readProxyFile</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">filePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    734 </div><div id="MyProxyClient.readProxyFile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.readProxyFile-expanded"><a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-docstring">"""Read proxy cert file following the format used by myproxy-logon - </tt> </tt> 
    735 <a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"><tt class="py-docstring">        proxy, cert, private key, user cert.</tt> </tt> 
    736 <a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    737 <a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: tuple</tt> </tt> 
    738 <a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-docstring">        @return: tuple containing proxy cert, private key, user cert"""</tt> </tt> 
    739 <a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-129" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-129', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    740 <a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">            <tt id="link-130" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-130', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-131', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-132', 'defProxyFile', 'link-16');">defProxyFile</a></tt> </tt> 
    741 <a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">             </tt> 
    742 <a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-133" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-133', 'filePath', 'link-68');">filePath</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    743 <a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">            <tt id="link-134" class="py-name"><a title="myproxy.client.MyProxyClientConfigError" class="py-name" href="#" onclick="return doclink('link-134', 'MyProxyClientConfigError', 'link-107');">MyProxyClientConfigError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Error setting proxy file path - invalid "</tt> </tt> 
    744 <a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">                                     <tt class="py-string">"platform?"</tt><tt class="py-op">)</tt> </tt> 
    745 <a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                </tt> 
    746 <a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-name">proxy</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-135', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="myproxy.client.MyProxyClient.defProxyFile" class="py-name" href="#" onclick="return doclink('link-136', 'defProxyFile', 'link-16');">defProxyFile</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-137', 'read', 'link-41');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    747 <a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">         </tt> 
    748 <a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">        <tt class="py-comment"># Split certs and key into separate tuple items</tt> </tt> 
    749 <a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'-----BEGIN'</tt><tt class="py-op">+</tt><tt class="py-name">i</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">proxy</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-----BEGIN'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    750 </div><a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">    </tt> 
    751 <a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"> </tt> 
    752 <a name="MyProxyClient.info"></a><div id="MyProxyClient.info-def"><a name="L688"></a><tt class="py-lineno"> 688</tt> <a class="py-toggle" href="#" id="MyProxyClient.info-toggle" onclick="return toggle('MyProxyClient.info');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#info">info</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
    753 <a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">             <tt class="py-param">username</tt><tt class="py-op">,</tt>  </tt> 
    754 <a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">             <tt class="py-param">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    755 <a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">             <tt class="py-param">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    756 <a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">             <tt class="py-param">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    757 </div><div id="MyProxyClient.info-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.info-expanded"><a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">        <tt class="py-docstring">"""return True/False whether credentials exist on the server for a </tt> </tt> 
    758 <a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">        given username</tt> </tt> 
    759 <a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    760 <a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientGetError:</tt> </tt> 
    761 <a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientRetrieveError:</tt> </tt> 
    762 <a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    763 <a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">        @type username: string</tt> </tt> 
    764 <a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">        @param username: username selected for credential</tt> </tt> 
    765 <a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerCertFile: string</tt> </tt> 
    766 <a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerCertFile: certificate used for client authentication with</tt> </tt> 
    767 <a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring">        the MyProxy server SSL connection.  This ID will be set as the owner</tt> </tt> 
    768 <a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">        of the stored credentials.  Only the owner can later remove </tt> </tt> 
    769 <a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">        credentials with myproxy-destroy or the destroy method.  If not set,</tt> </tt> 
    770 <a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">        this argument defaults to $GLOBUS_LOCATION/etc/hostcert.pem </tt> </tt> 
    771 <a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerKeyFile: string </tt> </tt> 
    772 <a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerKeyFile: corresponding private key file.  See explanation</tt> </tt> 
    773 <a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring">        for ownerCertFile</tt> </tt> 
    774 <a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring">        @type ownerPassphrase: string</tt> </tt> 
    775 <a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerPassphrase: passphrase for ownerKeyFile.  Omit if the</tt> </tt> 
    776 <a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-docstring">        private key is not password protected.</tt> </tt> 
    777 <a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    778 <a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">        <tt class="py-name">globusLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'GLOBUS_LOCATION'</tt><tt class="py-op">)</tt> </tt> 
    779 <a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ownerCertFile</tt><tt class="py-op">:</tt> </tt> 
    780 <a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">globusLoc</tt><tt class="py-op">:</tt> </tt> 
    781 <a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">                <tt class="py-name">ownerCertFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt> </tt> 
    782 <a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">                                            <tt class="py-op">*</tt><tt id="link-138" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-138', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="myproxy.client.MyProxyClient._hostCertSubDirPath" class="py-name" href="#" onclick="return doclink('link-139', '_hostCertSubDirPath', 'link-14');">_hostCertSubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    783 <a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">                <tt class="py-name">ownerKeyFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt>  </tt> 
    784 <a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">                                            <tt class="py-op">*</tt><tt id="link-140" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-140', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="myproxy.client.MyProxyClient._hostKeySubDirPath" class="py-name" href="#" onclick="return doclink('link-141', '_hostKeySubDirPath', 'link-15');">_hostKeySubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    785 <a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    786 <a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-142" class="py-name" targets="Class myproxy.client.MyProxyClientError=myproxy.client.MyProxyClientError-class.html"><a title="myproxy.client.MyProxyClientError" class="py-name" href="#" onclick="return doclink('link-142', 'MyProxyClientError', 'link-142');">MyProxyClientError</a></tt><tt class="py-op">(</tt> </tt> 
    787 <a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">            <tt class="py-string">"No client authentication cert. and private key file were given"</tt><tt class="py-op">)</tt> </tt> 
    788 <a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"> </tt> 
    789 <a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">        <tt class="py-comment"># Set-up SSL connection</tt> </tt> 
    790 <a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method myproxy.client.MyProxyClient._initConnection()=myproxy.client.MyProxyClient-class.html#_initConnection"><a title="myproxy.client.MyProxyClient._initConnection" class="py-name" href="#" onclick="return doclink('link-143', '_initConnection', 'link-143');">_initConnection</a></tt><tt class="py-op">(</tt><tt class="py-name">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">ownerCertFile</tt><tt class="py-op">,</tt> </tt> 
    791 <a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">                                    <tt class="py-name">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">ownerKeyFile</tt><tt class="py-op">,</tt> </tt> 
    792 <a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">                                    <tt class="py-name">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">ownerPassphrase</tt><tt class="py-op">)</tt> </tt> 
    793 <a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        </tt> 
    794 <a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">connect</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-144', 'hostname', 'link-28');">hostname</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-145', 'port', 'link-31');">port</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    795 <a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">         </tt> 
    796 <a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-comment"># send globus compatibility stuff</tt> </tt> 
    797 <a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'0'</tt><tt class="py-op">)</tt> </tt> 
    798 <a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">     </tt> 
    799 <a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-comment"># send info command - ensure conversion from unicode before writing</tt> </tt> 
    800 <a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-146', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="myproxy.client.MyProxyClient.infoCmd" class="py-name" href="#" onclick="return doclink('link-147', 'infoCmd', 'link-10');">infoCmd</a></tt> <tt class="py-op">%</tt> <tt class="py-name">username</tt> </tt> 
    801 <a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    802 <a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">    </tt> 
    803 <a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">        <tt class="py-comment"># process server response</tt> </tt> 
    804 <a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">dat</tt> <tt class="py-op">=</tt> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">recv</tt><tt class="py-op">(</tt><tt class="py-number">8192</tt><tt class="py-op">)</tt> </tt> 
    805 <a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">          </tt> 
    806 <a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">        <tt class="py-comment"># Pass in the names of fields to return in the dictionary 'field' </tt> </tt> 
    807 <a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">respCode</tt><tt class="py-op">,</tt> <tt class="py-name">errorTxt</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method myproxy.client.MyProxyClient._deserializeResponse()=myproxy.client.MyProxyClient-class.html#_deserializeResponse"><a title="myproxy.client.MyProxyClient._deserializeResponse" class="py-name" href="#" onclick="return doclink('link-148', '_deserializeResponse', 'link-148');">_deserializeResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">dat</tt><tt class="py-op">,</tt> </tt> 
    808 <a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">                                                             <tt class="py-string">'CRED_START_TIME'</tt><tt class="py-op">,</tt> </tt> 
    809 <a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">                                                             <tt class="py-string">'CRED_END_TIME'</tt><tt class="py-op">,</tt>  </tt> 
    810 <a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">                                                             <tt class="py-string">'CRED_OWNER'</tt><tt class="py-op">)</tt> </tt> 
    811 <a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"> </tt> 
    812 <a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">respCode</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">errorTxt</tt><tt class="py-op">,</tt> <tt class="py-name">field</tt> </tt> 
    813 </div><a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"> </tt> 
    814 <a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"> </tt> 
    815 <a name="MyProxyClient.changePassphrase"></a><div id="MyProxyClient.changePassphrase-def"><a name="L751"></a><tt class="py-lineno"> 751</tt> <a class="py-toggle" href="#" id="MyProxyClient.changePassphrase-toggle" onclick="return toggle('MyProxyClient.changePassphrase');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#changePassphrase">changePassphrase</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
    816 <a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">                         <tt class="py-param">username</tt><tt class="py-op">,</tt> </tt> 
    817 <a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                         <tt class="py-param">passphrase</tt><tt class="py-op">,</tt> </tt> 
    818 <a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                         <tt class="py-param">newPassphrase</tt><tt class="py-op">,</tt> </tt> 
    819 <a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                         <tt class="py-param">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    820 <a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">                         <tt class="py-param">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    821 <a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                         <tt class="py-param">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    822 </div><div id="MyProxyClient.changePassphrase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.changePassphrase-expanded"><a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-docstring">"""change pass-phrase protecting the credentials for a given username</tt> </tt> 
    823 <a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    824 <a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientGetError:</tt> </tt> 
    825 <a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientRetrieveError:</tt> </tt> 
    826 <a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    827 <a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line"><tt class="py-docstring">        @param username: username of credential</tt> </tt> 
    828 <a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line"><tt class="py-docstring">        @param passphrase: existing pass-phrase for credential</tt> </tt> 
    829 <a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"><tt class="py-docstring">        @param newPassphrase: new pass-phrase to replace the existing one.</tt> </tt> 
    830 <a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerCertFile: certificate used for client authentication with</tt> </tt> 
    831 <a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"><tt class="py-docstring">        the MyProxy server SSL connection.  This ID will be set as the owner</tt> </tt> 
    832 <a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-docstring">        of the stored credentials.  Only the owner can later remove </tt> </tt> 
    833 <a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line"><tt class="py-docstring">        credentials with myproxy-destroy or the destroy method.  If not set,</tt> </tt> 
    834 <a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"><tt class="py-docstring">        this argument defaults to $GLOBUS_LOCATION/etc/hostcert.pem </tt> </tt> 
    835 <a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerKeyFile: corresponding private key file.  See explanation</tt> </tt> 
    836 <a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line"><tt class="py-docstring">        for ownerCertFile</tt> </tt> 
    837 <a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerPassphrase: passphrase for ownerKeyFile.  Omit if the</tt> </tt> 
    838 <a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"><tt class="py-docstring">        private key is not password protected.  </tt> </tt> 
    839 <a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"><tt class="py-docstring">        @return none</tt> </tt> 
    840 <a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    841 <a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-name">globusLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'GLOBUS_LOCATION'</tt><tt class="py-op">)</tt> </tt> 
    842 <a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ownerCertFile</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ownerKeyFile</tt><tt class="py-op">:</tt> </tt> 
    843 <a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">globusLoc</tt><tt class="py-op">:</tt> </tt> 
    844 <a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">                <tt class="py-name">ownerCertFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt> </tt> 
    845 <a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">                                         <tt class="py-op">*</tt><tt id="link-149" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-149', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="myproxy.client.MyProxyClient._hostCertSubDirPath" class="py-name" href="#" onclick="return doclink('link-150', '_hostCertSubDirPath', 'link-14');">_hostCertSubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    846 <a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">                <tt class="py-name">ownerKeyFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt> </tt> 
    847 <a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">                                         <tt class="py-op">*</tt><tt id="link-151" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-151', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="myproxy.client.MyProxyClient._hostKeySubDirPath" class="py-name" href="#" onclick="return doclink('link-152', '_hostKeySubDirPath', 'link-15');">_hostKeySubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    848 <a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    849 <a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-153" class="py-name"><a title="myproxy.client.MyProxyClientError" class="py-name" href="#" onclick="return doclink('link-153', 'MyProxyClientError', 'link-142');">MyProxyClientError</a></tt><tt class="py-op">(</tt> </tt> 
    850 <a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">            <tt class="py-string">"No client authentication cert. and private key file were given"</tt><tt class="py-op">)</tt> </tt> 
    851 <a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        </tt> 
    852 <a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">        <tt class="py-comment"># Set-up SSL connection</tt> </tt> 
    853 <a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="myproxy.client.MyProxyClient._initConnection" class="py-name" href="#" onclick="return doclink('link-154', '_initConnection', 'link-143');">_initConnection</a></tt><tt class="py-op">(</tt><tt class="py-name">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">ownerCertFile</tt><tt class="py-op">,</tt> </tt> 
    854 <a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">                                    <tt class="py-name">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">ownerKeyFile</tt><tt class="py-op">,</tt> </tt> 
    855 <a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">                                    <tt class="py-name">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">ownerPassphrase</tt><tt class="py-op">)</tt> </tt> 
    856 <a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line"> </tt> 
    857 <a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">connect</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-155', 'hostname', 'link-28');">hostname</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-156', 'port', 'link-31');">port</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    858 <a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        </tt> 
    859 <a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-comment"># send globus compatibility stuff</tt> </tt> 
    860 <a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'0'</tt><tt class="py-op">)</tt> </tt> 
    861 <a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">     </tt> 
    862 <a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">        <tt class="py-comment"># send command - ensure conversion from unicode before writing</tt> </tt> 
    863 <a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">cmd</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-157', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="myproxy.client.MyProxyClient.changePassphraseCmd" class="py-name" href="#" onclick="return doclink('link-158', 'changePassphraseCmd', 'link-12');">changePassphraseCmd</a></tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">username</tt><tt class="py-op">,</tt> </tt> 
    864 <a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">                                                   <tt class="py-name">passphrase</tt><tt class="py-op">,</tt> </tt> 
    865 <a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">                                                   <tt class="py-name">newPassphrase</tt><tt class="py-op">)</tt> </tt> 
    866 <a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">cmd</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    867 <a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">    </tt> 
    868 <a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-comment"># process server response</tt> </tt> 
    869 <a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">dat</tt> <tt class="py-op">=</tt> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">recv</tt><tt class="py-op">(</tt><tt class="py-number">8192</tt><tt class="py-op">)</tt> </tt> 
    870 <a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">             </tt> 
    871 <a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-name">respCode</tt><tt class="py-op">,</tt> <tt class="py-name">errorTxt</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="myproxy.client.MyProxyClient._deserializeResponse" class="py-name" href="#" onclick="return doclink('link-159', '_deserializeResponse', 'link-148');">_deserializeResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">dat</tt><tt class="py-op">)</tt> </tt> 
    872 <a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">respCode</tt><tt class="py-op">:</tt> </tt> 
    873 <a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-160" class="py-name" targets="Class myproxy.client.MyProxyClientGetError=myproxy.client.MyProxyClientGetError-class.html"><a title="myproxy.client.MyProxyClientGetError" class="py-name" href="#" onclick="return doclink('link-160', 'MyProxyClientGetError', 'link-160');">MyProxyClientGetError</a></tt><tt class="py-op">(</tt><tt class="py-name">errorTxt</tt><tt class="py-op">)</tt> </tt> 
    874 </div><a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt> 
    875 <a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line"> </tt> 
    876 <a name="MyProxyClient.destroy"></a><div id="MyProxyClient.destroy-def"><a name="L812"></a><tt class="py-lineno"> 812</tt> <a class="py-toggle" href="#" id="MyProxyClient.destroy-toggle" onclick="return toggle('MyProxyClient.destroy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
    877 <a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">                <tt class="py-param">username</tt><tt class="py-op">,</tt> </tt> 
    878 <a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">                <tt class="py-param">ownerCertFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    879 <a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">                <tt class="py-param">ownerKeyFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    880 <a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">                <tt class="py-param">ownerPassphrase</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    881 </div><div id="MyProxyClient.destroy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.destroy-expanded"><a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-docstring">"""destroy credentials from the server for a given username</tt> </tt> 
    882 <a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    883 <a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientGetError:</tt> </tt> 
    884 <a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line"><tt class="py-docstring">        @raise MyProxyClientRetrieveError:</tt> </tt> 
    885 <a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    886 <a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"><tt class="py-docstring">        @param username: username selected for credential</tt> </tt> 
    887 <a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerCertFile: certificate used for client authentication with</tt> </tt> 
    888 <a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line"><tt class="py-docstring">        the MyProxy server SSL connection.  This ID will be set as the owner</tt> </tt> 
    889 <a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line"><tt class="py-docstring">        of the stored credentials.  Only the owner can later remove </tt> </tt> 
    890 <a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-docstring">        credentials with myproxy-destroy or the destroy method.  If not set,</tt> </tt> 
    891 <a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"><tt class="py-docstring">        this argument defaults to $GLOBUS_LOCATION/etc/hostcert.pem </tt> </tt> 
    892 <a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerKeyFile: corresponding private key file.  See explanation</tt> </tt> 
    893 <a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-docstring">        for ownerCertFile</tt> </tt> 
    894 <a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt class="py-docstring">        @param ownerPassphrase: passphrase for ownerKeyFile.  Omit if the</tt> </tt> 
    895 <a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"><tt class="py-docstring">        private key is not password protected.  </tt> </tt> 
    896 <a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-docstring">        @return none</tt> </tt> 
    897 <a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    898 <a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">globusLoc</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'GLOBUS_LOCATION'</tt><tt class="py-op">)</tt> </tt> 
    899 <a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ownerCertFile</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ownerKeyFile</tt><tt class="py-op">:</tt> </tt> 
    900 <a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">globusLoc</tt><tt class="py-op">:</tt> </tt> 
    901 <a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">                <tt class="py-name">ownerCertFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt> </tt> 
    902 <a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">                                         <tt class="py-op">*</tt><tt id="link-161" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-161', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="myproxy.client.MyProxyClient._hostCertSubDirPath" class="py-name" href="#" onclick="return doclink('link-162', '_hostCertSubDirPath', 'link-14');">_hostCertSubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    903 <a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">                <tt class="py-name">ownerKeyFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">globusLoc</tt><tt class="py-op">,</tt>  </tt> 
    904 <a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">                                         <tt class="py-op">*</tt><tt id="link-163" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-163', 'MyProxyClient', 'link-24');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="myproxy.client.MyProxyClient._hostKeySubDirPath" class="py-name" href="#" onclick="return doclink('link-164', '_hostKeySubDirPath', 'link-15');">_hostKeySubDirPath</a></tt><tt class="py-op">)</tt> </tt> 
    905 <a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    906 <a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-165" class="py-name"><a title="myproxy.client.MyProxyClientError" class="py-name" href="#" onclick="return doclink('link-165', 'MyProxyClientError', 'link-142');">MyProxyClientError</a></tt><tt class="py-op">(</tt> </tt> 
    907 <a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-string">"No client authentication cert. and private key file were given"</tt><tt class="py-op">)</tt> </tt> 
     133<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line">        <tt class="py-name">dnFields</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification.PARSER_RE" class="py-name" href="#" onclick="return doclink('link-15', 'PARSER_RE', 'link-13');">PARSER_RE</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">myProxyServerDN</tt><tt class="py-op">)</tt> </tt> 
     134<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dnFields</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt> 
     135<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-16" class="py-name" targets="Class myproxy.client.MyProxyClientError=myproxy.client.MyProxyClientError-class.html"><a title="myproxy.client.MyProxyClientError" class="py-name" href="#" onclick="return doclink('link-16', 'MyProxyClientError', 'link-16');">MyProxyClientError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Error parsing DN string: "%s"'</tt> <tt class="py-op">%</tt>  </tt> 
     136<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">                                     <tt class="py-name">myProxyServerDN</tt><tt class="py-op">)</tt> </tt> 
     137<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"> </tt> 
     138<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">myProxyServerDN</tt> <tt class="py-op">=</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">dnFields</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">dnFields</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     139<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">myProxyServerDN</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>        </tt> 
     140</div><a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">        </tt> 
     141<a name="MyProxyServerSSLCertVerification.__call__"></a><div id="MyProxyServerSSLCertVerification.__call__-def"><a name="L77"></a><tt class="py-lineno">  77</tt> <a class="py-toggle" href="#" id="MyProxyServerSSLCertVerification.__call__-toggle" onclick="return toggle('MyProxyServerSSLCertVerification.__call__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyServerSSLCertVerification-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">connection</tt><tt class="py-op">,</tt> <tt class="py-param">peerCert</tt><tt class="py-op">,</tt> <tt class="py-param">errorStatus</tt><tt class="py-op">,</tt> <tt class="py-param">errorDepth</tt><tt class="py-op">,</tt> </tt> 
     142<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">                 <tt class="py-param">successStatus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     143</div><div id="MyProxyServerSSLCertVerification.__call__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyServerSSLCertVerification.__call__-expanded"><a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">        <tt class="py-docstring">"""Verify MyProxy server certificate</tt> </tt> 
     144<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     145<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">        @type connection: OpenSSL.SSL.Connection</tt> </tt> 
     146<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">        @param connection: SSL connection object</tt> </tt> 
     147<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">        @type peerCert: basestring</tt> </tt> 
     148<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">        @param peerCert: MyProxy server host certificate as OpenSSL.crypto.X509</tt> </tt> 
     149<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">        instance</tt> </tt> 
     150<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">        @type errorStatus: int</tt> </tt> 
     151<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-docstring">        @param errorStatus: error code to return if verification fails</tt> </tt> 
     152<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">        @type errorDepth: int</tt> </tt> 
     153<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">        @param errorDepth: </tt> </tt> 
     154<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring">        @type successStatus: int</tt> </tt> 
     155<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">        @param successStatus: </tt> </tt> 
     156<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: int</tt> </tt> 
     157<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">        @return: status code</tt> </tt> 
     158<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     159<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">peerCert</tt><tt class="py-op">.</tt><tt class="py-name">has_expired</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     160<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">            <tt class="py-comment"># Any expired certificate in the chain should result in an error</tt> </tt> 
     161<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt id="link-17" class="py-name"><a title="myproxy.client.log" class="py-name" href="#" onclick="return doclink('link-17', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">getEffectiveLevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">:</tt> </tt> 
     162<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">                <tt id="link-18" class="py-name"><a title="myproxy.client.log" class="py-name" href="#" onclick="return doclink('link-18', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Certificate %r in peer certificate chain has '</tt><tt class="py-op">,</tt> </tt> 
     163<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">                          <tt class="py-string">'expired'</tt><tt class="py-op">,</tt> <tt class="py-name">peerCert</tt><tt class="py-op">.</tt><tt class="py-name">get_subject</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     164<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">                </tt> 
     165<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">errorStatus</tt> </tt> 
     166<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">             </tt> 
     167<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">errorDepth</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt> 
     168<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">            <tt class="py-comment"># Only interested in DN of last certificate in the chain - this must </tt> </tt> 
     169<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># match the expected MyProxy Server DN setting</tt> </tt> 
     170<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">peerCertDN</tt> <tt class="py-op">=</tt> <tt class="py-name">peerCert</tt><tt class="py-op">.</tt><tt class="py-name">get_subject</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">get_components</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     171<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">            <tt class="py-name">peerCertDN</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     172<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"> </tt> 
     173<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">peerCertDN</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">myProxyServerDN</tt><tt class="py-op">:</tt> </tt> 
     174<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">successStatus</tt> </tt> 
     175<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     176<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">errorStatus</tt> </tt> 
     177<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     178<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">successStatus</tt> </tt> 
     179</div></div><a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">             </tt> 
     180<a name="MyProxyClientError"></a><div id="MyProxyClientError-def"><a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">    </tt> 
     181<a name="L117"></a><tt class="py-lineno"> 117</tt> <a class="py-toggle" href="#" id="MyProxyClientError-toggle" onclick="return toggle('MyProxyClientError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientError-class.html">MyProxyClientError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     182</div><div id="MyProxyClientError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientError-expanded"><a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base exception class for MyProxyClient exceptions"""</tt> </tt> 
     183</div><a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"> </tt> 
     184<a name="MyProxyClientConfigError"></a><div id="MyProxyClientConfigError-def"><a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"> </tt> 
     185<a name="L121"></a><tt class="py-lineno"> 121</tt> <a class="py-toggle" href="#" id="MyProxyClientConfigError-toggle" onclick="return toggle('MyProxyClientConfigError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientConfigError-class.html">MyProxyClientConfigError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     186</div><div id="MyProxyClientConfigError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientConfigError-expanded"><a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">    <tt class="py-docstring">"""Error with configuration"""</tt> </tt> 
     187</div><a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">      </tt> 
     188<a name="MyProxyClientGetError"></a><div id="MyProxyClientGetError-def"><a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">      </tt> 
     189<a name="L125"></a><tt class="py-lineno"> 125</tt> <a class="py-toggle" href="#" id="MyProxyClientGetError-toggle" onclick="return toggle('MyProxyClientGetError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientGetError-class.html">MyProxyClientGetError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     190</div><div id="MyProxyClientGetError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientGetError-expanded"><a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exceptions arising from get request to server"""</tt> </tt> 
     191</div><a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">    </tt> 
     192<a name="MyProxyClientRetrieveError"></a><div id="MyProxyClientRetrieveError-def"><a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">    </tt> 
     193<a name="L129"></a><tt class="py-lineno"> 129</tt> <a class="py-toggle" href="#" id="MyProxyClientRetrieveError-toggle" onclick="return toggle('MyProxyClientRetrieveError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientRetrieveError-class.html">MyProxyClientRetrieveError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     194</div><div id="MyProxyClientRetrieveError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientRetrieveError-expanded"><a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">    <tt class="py-docstring">"""Error recovering a response from MyProxy"""</tt> </tt> 
     195</div><a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"> </tt> 
     196<a name="MyProxyCredentialsAlreadyExist"></a><div id="MyProxyCredentialsAlreadyExist-def"><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line"> </tt> 
     197<a name="L133"></a><tt class="py-lineno"> 133</tt> <a class="py-toggle" href="#" id="MyProxyCredentialsAlreadyExist-toggle" onclick="return toggle('MyProxyCredentialsAlreadyExist');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyCredentialsAlreadyExist-class.html">MyProxyCredentialsAlreadyExist</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     198</div><div id="MyProxyCredentialsAlreadyExist-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyCredentialsAlreadyExist-expanded"><a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">    <tt class="py-docstring">"""Attempting to upload credentials to the server which already exist.  -</tt> </tt> 
     199<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">    See MyProxyClient.store</tt> </tt> 
     200<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt> 
     201</div><a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">    </tt> 
     202<a name="MyProxyClientGetTrustRootsError"></a><div id="MyProxyClientGetTrustRootsError-def"><a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">    </tt> 
     203<a name="L139"></a><tt class="py-lineno"> 139</tt> <a class="py-toggle" href="#" id="MyProxyClientGetTrustRootsError-toggle" onclick="return toggle('MyProxyClientGetTrustRootsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClientGetTrustRootsError-class.html">MyProxyClientGetTrustRootsError</a><tt class="py-op">(</tt><tt class="py-base-class">MyProxyClientError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     204</div><div id="MyProxyClientGetTrustRootsError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClientGetTrustRootsError-expanded"><a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">    <tt class="py-docstring">"""Error retrieving trust roots"""</tt> </tt> 
     205</div><a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">            </tt> 
     206<a name="MyProxyClient"></a><div id="MyProxyClient-def"><a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        </tt> 
     207<a name="L143"></a><tt class="py-lineno"> 143</tt> <a class="py-toggle" href="#" id="MyProxyClient-toggle" onclick="return toggle('MyProxyClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html">MyProxyClient</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     208</div><div id="MyProxyClient-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MyProxyClient-expanded"><a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">    <tt class="py-docstring">"""MyProxy client interface </tt> </tt> 
     209<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     210<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-docstring">    Based on protocol definitions in: </tt> </tt> 
     211<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     212<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-docstring">    http://grid.ncsa.uiuc.edu/myproxy/protocol/</tt> </tt> 
     213<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     214<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-docstring">    @type GET_CMD: string</tt> </tt> 
     215<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar GET_CMD: get command string</tt> </tt> 
     216<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     217<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">    @type INFO_CMD: string</tt> </tt> 
     218<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar INFO_CMD: info command string</tt> </tt> 
     219<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     220<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">    @type DESTROY_CMD: string</tt> </tt> 
     221<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar DESTROY_CMD: destroy command string</tt> </tt> 
     222<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     223<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-docstring">    @type CHANGE_PASSPHRASE_CMD: string</tt> </tt> 
     224<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar CHANGE_PASSPHRASE_CMD: command string to change cred pass-phrase</tt> </tt> 
     225<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     226<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-docstring">    @type STORE_CMD: string</tt> </tt> 
     227<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar STORE_CMD: store command string</tt> </tt> 
     228<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     229<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-docstring">    @type GET_TRUST_ROOTS_CMD: string</tt> </tt> 
     230<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar GET_TRUST_ROOTS_CMD: get trust roots command string</tt> </tt> 
     231<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     232<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-docstring">    @type _hostCertSubDirPath: string</tt> </tt> 
     233<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _hostCertSubDirPath: sub-directory path host certificate (as tuple)</tt> </tt> 
     234<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     235<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-docstring">    @type _hostKeySubDirPath: string</tt> </tt> 
     236<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar _hostKeySubDirPath: sub-directory path to host key (as tuple)</tt> </tt> 
     237<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     238<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-docstring">    @type PRIKEY_NBITS: int</tt> </tt> 
     239<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PRIKEY_NBITS: default number of bits for private key generated</tt> </tt> 
     240<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     241<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line"><tt class="py-docstring">    @type MESSAGE_DIGEST_TYPE: string</tt> </tt> 
     242<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar MESSAGE_DIGEST_TYPE: message digest type is MD5</tt> </tt> 
     243<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     244<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"><tt class="py-docstring">    @type SERVER_RESP_BLK_SIZE: int</tt> </tt> 
     245<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar SERVER_RESP_BLK_SIZE: block size for retrievals from server</tt> </tt> 
     246<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     247<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">    @type MAX_RECV_TRIES: int</tt> </tt> 
     248<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar MAX_RECV_TRIES: maximum number of retrievals of size </tt> </tt> 
     249<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">    SERVER_RESP_BLK_SIZE before this client gives up</tt> </tt> 
     250<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     251<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">    @type DEF_PROXY_FILEPATH: string</tt> </tt> 
     252<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar DEF_PROXY_FILEPATH: default location for proxy file to be written to</tt> </tt> 
     253<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     254<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">    @type PROXY_FILE_PERMISSIONS: int</tt> </tt> 
     255<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PROXY_FILE_PERMISSIONS: file permissions returned proxy file is </tt> </tt> 
     256<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    created with</tt> </tt> 
     257<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     258<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">    @type PROPERTY_DEFAULTS: tuple</tt> </tt> 
     259<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar PROPERTY_DEFAULTS: sets permissable element names for MyProxy config </tt> </tt> 
     260<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">    file</tt> </tt> 
     261<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt> 
     262<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">       </tt> 
     263<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">    <tt id="link-19" class="py-name" targets="Variable myproxy.client.MyProxyClient.GET_CMD=myproxy.client.MyProxyClient-class.html#GET_CMD"><a title="myproxy.client.MyProxyClient.GET_CMD" class="py-name" href="#" onclick="return doclink('link-19', 'GET_CMD', 'link-19');">GET_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     264<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-string">COMMAND=0</tt> </tt> 
     265<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     266<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=%s</tt> </tt> 
     267<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=%d"""</tt> </tt> 
     268<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"> </tt> 
     269<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">    <tt id="link-20" class="py-name" targets="Variable myproxy.client.MyProxyClient.PUT_CMD=myproxy.client.MyProxyClient-class.html#PUT_CMD"><a title="myproxy.client.MyProxyClient.PUT_CMD" class="py-name" href="#" onclick="return doclink('link-20', 'PUT_CMD', 'link-20');">PUT_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     270<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-string">COMMAND=1</tt> </tt> 
     271<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     272<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=&lt;pass phrase&gt;</tt> </tt> 
     273<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=%d"""</tt> </tt> 
     274<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">      </tt> 
     275<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">    <tt id="link-21" class="py-name" targets="Variable myproxy.client.MyProxyClient.INFO_CMD=myproxy.client.MyProxyClient-class.html#INFO_CMD"><a title="myproxy.client.MyProxyClient.INFO_CMD" class="py-name" href="#" onclick="return doclink('link-21', 'INFO_CMD', 'link-21');">INFO_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     276<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line"><tt class="py-string">COMMAND=2</tt> </tt> 
     277<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     278<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=PASSPHRASE</tt> </tt> 
     279<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=0"""</tt> </tt> 
     280<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">  </tt> 
     281<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">    <tt id="link-22" class="py-name" targets="Variable myproxy.client.MyProxyClient.DESTROY_CMD=myproxy.client.MyProxyClient-class.html#DESTROY_CMD"><a title="myproxy.client.MyProxyClient.DESTROY_CMD" class="py-name" href="#" onclick="return doclink('link-22', 'DESTROY_CMD', 'link-22');">DESTROY_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     282<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-string">COMMAND=3</tt> </tt> 
     283<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     284<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=PASSPHRASE</tt> </tt> 
     285<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=0"""</tt> </tt> 
     286<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt> 
     287<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">    <tt id="link-23" class="py-name" targets="Variable myproxy.client.MyProxyClient.CHANGE_PASSPHRASE_CMD=myproxy.client.MyProxyClient-class.html#CHANGE_PASSPHRASE_CMD"><a title="myproxy.client.MyProxyClient.CHANGE_PASSPHRASE_CMD" class="py-name" href="#" onclick="return doclink('link-23', 'CHANGE_PASSPHRASE_CMD', 'link-23');">CHANGE_PASSPHRASE_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     288<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line"><tt class="py-string"> COMMAND=4</tt> </tt> 
     289<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line"><tt class="py-string"> USERNAME=%s</tt> </tt> 
     290<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-string"> PASSPHRASE=%s</tt> </tt> 
     291<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-string"> NEW_PHRASE=%s</tt> </tt> 
     292<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line"><tt class="py-string"> LIFETIME=0"""</tt> </tt> 
     293<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">    </tt> 
     294<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">    <tt id="link-24" class="py-name" targets="Variable myproxy.client.MyProxyClient.STORE_CMD=myproxy.client.MyProxyClient-class.html#STORE_CMD"><a title="myproxy.client.MyProxyClient.STORE_CMD" class="py-name" href="#" onclick="return doclink('link-24', 'STORE_CMD', 'link-24');">STORE_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     295<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"><tt class="py-string">COMMAND=5</tt> </tt> 
     296<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     297<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=</tt> </tt> 
     298<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=%d"""</tt> </tt> 
     299<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt> 
     300<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">    <tt id="link-25" class="py-name" targets="Variable myproxy.client.MyProxyClient.GET_TRUST_ROOTS_CMD=myproxy.client.MyProxyClient-class.html#GET_TRUST_ROOTS_CMD"><a title="myproxy.client.MyProxyClient.GET_TRUST_ROOTS_CMD" class="py-name" href="#" onclick="return doclink('link-25', 'GET_TRUST_ROOTS_CMD', 'link-25');">GET_TRUST_ROOTS_CMD</a></tt><tt class="py-op">=</tt><tt class="py-string">"""VERSION=MYPROXYv2</tt> </tt> 
     301<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line"><tt class="py-string">COMMAND=7</tt> </tt> 
     302<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-string">USERNAME=%s</tt> </tt> 
     303<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-string">PASSPHRASE=%s</tt> </tt> 
     304<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-string">LIFETIME=0</tt> </tt> 
     305<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-string">TRUSTED_CERTS=1"""</tt> </tt> 
     306<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"> </tt> 
     307<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">    <tt id="link-26" class="py-name" targets="Variable myproxy.client.MyProxyClient._hostCertSubDirPath=myproxy.client.MyProxyClient-class.html#_hostCertSubDirPath"><a title="myproxy.client.MyProxyClient._hostCertSubDirPath" class="py-name" href="#" onclick="return doclink('link-26', '_hostCertSubDirPath', 'link-26');">_hostCertSubDirPath</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'etc'</tt><tt class="py-op">,</tt> <tt class="py-string">'hostcert.pem'</tt><tt class="py-op">)</tt> </tt> 
     308<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">    <tt id="link-27" class="py-name" targets="Variable myproxy.client.MyProxyClient._hostKeySubDirPath=myproxy.client.MyProxyClient-class.html#_hostKeySubDirPath"><a title="myproxy.client.MyProxyClient._hostKeySubDirPath" class="py-name" href="#" onclick="return doclink('link-27', '_hostKeySubDirPath', 'link-27');">_hostKeySubDirPath</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'etc'</tt><tt class="py-op">,</tt> <tt class="py-string">'hostkey.pem'</tt><tt class="py-op">)</tt> </tt> 
     309<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">    </tt> 
     310<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">    <tt id="link-28" class="py-name" targets="Variable myproxy.client.MyProxyClient.PROXY_FILE_PERMISSIONS=myproxy.client.MyProxyClient-class.html#PROXY_FILE_PERMISSIONS"><a title="myproxy.client.MyProxyClient.PROXY_FILE_PERMISSIONS" class="py-name" href="#" onclick="return doclink('link-28', 'PROXY_FILE_PERMISSIONS', 'link-28');">PROXY_FILE_PERMISSIONS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0600</tt> </tt> 
     311<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">     </tt> 
     312<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">    <tt class="py-comment"># Work out default location of proxy file if it exists.  This is set if a</tt> </tt> 
     313<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># call has been made previously to logon / get-delegation</tt> </tt> 
     314<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-29" class="py-name" targets="Variable myproxy.client.MyProxyClient.DEF_PROXY_FILEPATH=myproxy.client.MyProxyClient-class.html#DEF_PROXY_FILEPATH"><a title="myproxy.client.MyProxyClient.DEF_PROXY_FILEPATH" class="py-name" href="#" onclick="return doclink('link-29', 'DEF_PROXY_FILEPATH', 'link-29');">DEF_PROXY_FILEPATH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-string">'win32'</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'proxy'</tt> <tt class="py-keyword">or</tt> </tt> 
     315<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">                                    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'linux2'</tt><tt class="py-op">,</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt> 
     316<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">                                    <tt class="py-string">'/tmp/x509up_u%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getuid</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     317<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">                                    <tt class="py-keyword">or</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt>   </tt> 
     318<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    </tt> 
     319<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">    <tt id="link-30" class="py-name" targets="Variable myproxy.client.MyProxyClient.PRIKEY_NBITS=myproxy.client.MyProxyClient-class.html#PRIKEY_NBITS"><a title="myproxy.client.MyProxyClient.PRIKEY_NBITS" class="py-name" href="#" onclick="return doclink('link-30', 'PRIKEY_NBITS', 'link-30');">PRIKEY_NBITS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4096</tt> </tt> 
     320<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">    <tt id="link-31" class="py-name" targets="Variable myproxy.client.MyProxyClient.MESSAGE_DIGEST_TYPE=myproxy.client.MyProxyClient-class.html#MESSAGE_DIGEST_TYPE"><a title="myproxy.client.MyProxyClient.MESSAGE_DIGEST_TYPE" class="py-name" href="#" onclick="return doclink('link-31', 'MESSAGE_DIGEST_TYPE', 'link-31');">MESSAGE_DIGEST_TYPE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"md5"</tt> </tt> 
     321<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">    <tt id="link-32" class="py-name" targets="Variable myproxy.client.MyProxyClient.SERVER_RESP_BLK_SIZE=myproxy.client.MyProxyClient-class.html#SERVER_RESP_BLK_SIZE"><a title="myproxy.client.MyProxyClient.SERVER_RESP_BLK_SIZE" class="py-name" href="#" onclick="return doclink('link-32', 'SERVER_RESP_BLK_SIZE', 'link-32');">SERVER_RESP_BLK_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">8192</tt> </tt> 
     322<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">    <tt id="link-33" class="py-name" targets="Variable myproxy.client.MyProxyClient.MAX_RECV_TRIES=myproxy.client.MyProxyClient-class.html#MAX_RECV_TRIES"><a title="myproxy.client.MyProxyClient.MAX_RECV_TRIES" class="py-name" href="#" onclick="return doclink('link-33', 'MAX_RECV_TRIES', 'link-33');">MAX_RECV_TRIES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt> 
     323<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">     </tt> 
     324<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">    <tt class="py-comment"># valid configuration property keywords</tt> </tt> 
     325<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-34" class="py-name" targets="Variable myproxy.client.MyProxyClient.PROPERTY_DEFAULTS=myproxy.client.MyProxyClient-class.html#PROPERTY_DEFAULTS"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-34', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt> 
     326<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">       <tt class="py-string">'hostname'</tt><tt class="py-op">:</tt>              <tt class="py-string">'localhost'</tt><tt class="py-op">,</tt> </tt> 
     327<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">       <tt class="py-string">'port'</tt><tt class="py-op">:</tt>                  <tt class="py-number">7512</tt><tt class="py-op">,</tt> </tt> 
     328<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">       <tt class="py-string">'serverDN'</tt><tt class="py-op">:</tt>              <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     329<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">       <tt class="py-string">'openSSLConfFilePath'</tt><tt class="py-op">:</tt>   <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     330<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">       <tt class="py-string">'proxyCertMaxLifetime'</tt><tt class="py-op">:</tt>  <tt class="py-number">43200</tt><tt class="py-op">,</tt> </tt> 
     331<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">       <tt class="py-string">'proxyCertLifetime'</tt><tt class="py-op">:</tt>     <tt class="py-number">43200</tt><tt class="py-op">,</tt> </tt> 
     332<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">       <tt class="py-string">'caCertFilePath'</tt><tt class="py-op">:</tt>        <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     333<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">       <tt class="py-string">'caCertDir'</tt><tt class="py-op">:</tt>             <tt class="py-name">None</tt> </tt> 
     334<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt> 
     335<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">     </tt> 
     336<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-comment"># Restrict attributes to the above properties, their equivalent </tt> </tt> 
     337<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># protected values + extra OpenSSL config object.</tt> </tt> 
     338<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'__'</tt> <tt class="py-op">+</tt> <tt id="link-35" class="py-name" targets="Variable myproxy.client.MyProxyClient.k=myproxy.client.MyProxyClient-class.html#k"><a title="myproxy.client.MyProxyClient.k" class="py-name" href="#" onclick="return doclink('link-35', 'k', 'link-35');">k</a></tt> <tt class="py-keyword">for</tt> <tt id="link-36" class="py-name"><a title="myproxy.client.MyProxyClient.k" class="py-name" href="#" onclick="return doclink('link-36', 'k', 'link-35');">k</a></tt> <tt class="py-keyword">in</tt> <tt id="link-37" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-37', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     339<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-string">'__openSSLConfig'</tt><tt class="py-op">,</tt> <tt class="py-string">'__cfg'</tt><tt class="py-op">,</tt> <tt class="py-string">'__serverSSLCertVerify'</tt><tt class="py-op">)</tt> </tt> 
     340<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"> </tt> 
     341<a name="MyProxyClient.__init__"></a><div id="MyProxyClient.__init__-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="MyProxyClient.__init__-toggle" onclick="return toggle('MyProxyClient.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cfgFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">prop</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     342</div><div id="MyProxyClient.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.__init__-expanded"><a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">        <tt class="py-docstring">"""Make any initial settings for client connections to MyProxy</tt> </tt> 
     343<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     344<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-docstring">        Settings are held in a dictionary which can be set from **prop,</tt> </tt> 
     345<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"><tt class="py-docstring">        a call to setProperties() or by passing settings in an XML file</tt> </tt> 
     346<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"><tt class="py-docstring">        given by cfgFilePath</tt> </tt> 
     347<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     348<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line"><tt class="py-docstring">        @param cfgFilePath: set properties via a configuration file</tt> </tt> 
     349<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-docstring">        @type cfgFilePath: basestring</tt> </tt> 
     350<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-docstring">        @param **prop: set properties via keywords - see </tt> </tt> 
     351<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"><tt class="py-docstring">        PROPERTY_DEFAULTS class variable for a list of these</tt> </tt> 
     352<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"><tt class="py-docstring">        @type **prop: dict</tt> </tt> 
     353<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     354<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Variable myproxy.client.MyProxyClient.__hostname=myproxy.client.MyProxyClient-class.html#__hostname"><a title="myproxy.client.MyProxyClient.__hostname" class="py-name" href="#" onclick="return doclink('link-38', '__hostname', 'link-38');">__hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     355<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Variable myproxy.client.MyProxyClient.__port=myproxy.client.MyProxyClient-class.html#__port"><a title="myproxy.client.MyProxyClient.__port" class="py-name" href="#" onclick="return doclink('link-39', '__port', 'link-39');">__port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     356<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable myproxy.client.MyProxyClient.__serverDN=myproxy.client.MyProxyClient-class.html#__serverDN"><a title="myproxy.client.MyProxyClient.__serverDN" class="py-name" href="#" onclick="return doclink('link-40', '__serverDN', 'link-40');">__serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     357<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Variable myproxy.client.MyProxyClient.__openSSLConfFilePath=myproxy.client.MyProxyClient-class.html#__openSSLConfFilePath"><a title="myproxy.client.MyProxyClient.__openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-41', '__openSSLConfFilePath', 'link-41');">__openSSLConfFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     358<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Variable myproxy.client.MyProxyClient.__proxyCertMaxLifetime=myproxy.client.MyProxyClient-class.html#__proxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient.__proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-42', '__proxyCertMaxLifetime', 'link-42');">__proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Class myproxy.client.MyProxyClient=myproxy.client.MyProxyClient-class.html"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-43', 'MyProxyClient', 'link-43');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-44', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">[</tt> </tt> 
     359<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">                                                        <tt class="py-string">'proxyCertMaxLifetime'</tt><tt class="py-op">]</tt> </tt> 
     360<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Variable myproxy.client.MyProxyClient.__proxyCertLifetime=myproxy.client.MyProxyClient-class.html#__proxyCertLifetime"><a title="myproxy.client.MyProxyClient.__proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-45', '__proxyCertLifetime', 'link-45');">__proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-46', 'MyProxyClient', 'link-43');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-47', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">[</tt> </tt> 
     361<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">                                                        <tt class="py-string">'proxyCertLifetime'</tt><tt class="py-op">]</tt> </tt> 
     362<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Variable myproxy.client.MyProxyClient.__caCertFilePath=myproxy.client.MyProxyClient-class.html#__caCertFilePath"><a title="myproxy.client.MyProxyClient.__caCertFilePath" class="py-name" href="#" onclick="return doclink('link-48', '__caCertFilePath', 'link-48');">__caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     363<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Variable myproxy.client.MyProxyClient.__caCertDir=myproxy.client.MyProxyClient-class.html#__caCertDir"><a title="myproxy.client.MyProxyClient.__caCertDir" class="py-name" href="#" onclick="return doclink('link-49', '__caCertDir', 'link-49');">__caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     364<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">        </tt> 
     365<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Variable myproxy.client.MyProxyClient.__cfg=myproxy.client.MyProxyClient-class.html#__cfg"><a title="myproxy.client.MyProxyClient.__cfg" class="py-name" href="#" onclick="return doclink('link-50', '__cfg', 'link-50');">__cfg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     366<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">         </tt> 
     367<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"> </tt> 
     368<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-comment"># Configuration file used to get default subject when generating a</tt> </tt> 
     369<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># new proxy certificate request</tt> </tt> 
     370<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Variable myproxy.client.MyProxyClient.__openSSLConfig=myproxy.client.MyProxyClient-class.html#__openSSLConfig"><a title="myproxy.client.MyProxyClient.__openSSLConfig" class="py-name" href="#" onclick="return doclink('link-51', '__openSSLConfig', 'link-51');">__openSSLConfig</a></tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-52', 'OpenSSLConfig', 'link-5');">OpenSSLConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     371<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">         </tt> 
     372<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-comment"># Server host name - take from environment variable if available</tt> </tt> 
     373<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Variable myproxy.client.MyProxyClient.hostname=myproxy.client.MyProxyClient-class.html#hostname"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-53', 'hostname', 'link-53');">hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER'</tt><tt class="py-op">,</tt> </tt> 
     374<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">                                    <tt id="link-54" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-54', 'MyProxyClient', 'link-43');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-55', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">[</tt><tt class="py-string">'hostname'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     375<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">            </tt> 
     376<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-comment"># ... and port number</tt> </tt> 
     377<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Variable myproxy.client.MyProxyClient.port=myproxy.client.MyProxyClient-class.html#port"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-56', 'port', 'link-56');">port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_PORT'</tt><tt class="py-op">,</tt>  </tt> 
     378<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                                       <tt id="link-57" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-57', 'MyProxyClient', 'link-43');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-58', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">[</tt><tt class="py-string">'port'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     379<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"> </tt> 
     380<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-comment"># Server Distinguished Name</tt> </tt> 
     381<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Variable myproxy.client.MyProxyClient.serverDN=myproxy.client.MyProxyClient-class.html#serverDN"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-59', 'serverDN', 'link-59');">serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">get</tt><tt class="py-op">(</tt><tt class="py-string">'MYPROXY_SERVER_DN'</tt><tt class="py-op">,</tt> </tt> 
     382<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">                                    <tt id="link-60" class="py-name"><a title="myproxy.client.MyProxyClient" class="py-name" href="#" onclick="return doclink('link-60', 'MyProxyClient', 'link-43');">MyProxyClient</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="myproxy.client.MyProxyClient.PROPERTY_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-61', 'PROPERTY_DEFAULTS', 'link-34');">PROPERTY_DEFAULTS</a></tt><tt class="py-op">[</tt><tt class="py-string">'serverDN'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     383<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">         </tt> 
     384<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">        <tt class="py-comment"># Environment variable may be quoted</tt> </tt> 
     385<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-62', 'serverDN', 'link-59');">serverDN</a></tt><tt class="py-op">:</tt> </tt> 
     386<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-63', 'serverDN', 'link-59');">serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-64', 'serverDN', 'link-59');">serverDN</a></tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt> 
     387<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">             </tt> 
     388<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-comment"># Any keyword settings override the defaults above</tt> </tt> 
     389<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">prop</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     390<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">opt</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     391<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">         </tt> 
     392<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-comment"># If properties file is set any parameters settings in file will</tt> </tt> 
     393<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># override those set by input keyword or the defaults</tt> </tt> 
     394<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cfgFilePath</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
     395<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method myproxy.client.MyProxyClient.parseConfig()=myproxy.client.MyProxyClient-class.html#parseConfig"><a title="myproxy.client.MyProxyClient.parseConfig" class="py-name" href="#" onclick="return doclink('link-65', 'parseConfig', 'link-65');">parseConfig</a></tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">=</tt><tt class="py-name">cfgFilePath</tt><tt class="py-op">)</tt> </tt> 
     396<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">            </tt> 
     397<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable myproxy.client.MyProxyClient.__serverSSLCertVerify=myproxy.client.MyProxyClient-class.html#__serverSSLCertVerify"><a title="myproxy.client.MyProxyClient.__serverSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-66', '__serverSSLCertVerify', 'link-66');">__serverSSLCertVerify</a></tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name" targets="Class myproxy.client.MyProxyServerSSLCertVerification=myproxy.client.MyProxyServerSSLCertVerification-class.html"><a title="myproxy.client.MyProxyServerSSLCertVerification" class="py-name" href="#" onclick="return doclink('link-67', 'MyProxyServerSSLCertVerification', 'link-67');">MyProxyServerSSLCertVerification</a></tt><tt class="py-op">(</tt> </tt> 
     398<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                                                <tt class="py-name">myProxyServerDN</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-68', 'serverDN', 'link-59');">serverDN</a></tt><tt class="py-op">)</tt> </tt> 
     399</div><a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"> </tt> 
     400<a name="MyProxyClient._getServerSSLCertVerify"></a><div id="MyProxyClient._getServerSSLCertVerify-def"><a name="L336"></a><tt class="py-lineno"> 336</tt> <a class="py-toggle" href="#" id="MyProxyClient._getServerSSLCertVerify-toggle" onclick="return toggle('MyProxyClient._getServerSSLCertVerify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getServerSSLCertVerify">_getServerSSLCertVerify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     401</div><div id="MyProxyClient._getServerSSLCertVerify-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getServerSSLCertVerify-expanded"><a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="myproxy.client.MyProxyClient.__serverSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-69', '__serverSSLCertVerify', 'link-66');">__serverSSLCertVerify</a></tt> </tt> 
     402</div><a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"> </tt> 
     403<a name="MyProxyClient._setServerSSLCertVerify"></a><div id="MyProxyClient._setServerSSLCertVerify-def"><a name="L339"></a><tt class="py-lineno"> 339</tt> <a class="py-toggle" href="#" id="MyProxyClient._setServerSSLCertVerify-toggle" onclick="return toggle('MyProxyClient._setServerSSLCertVerify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setServerSSLCertVerify">_setServerSSLCertVerify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     404</div><div id="MyProxyClient._setServerSSLCertVerify-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setServerSSLCertVerify-expanded"><a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification" class="py-name" href="#" onclick="return doclink('link-70', 'MyProxyServerSSLCertVerification', 'link-67');">MyProxyServerSSLCertVerification</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     405<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Expecting %r derived type for '</tt> </tt> 
     406<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                            <tt class="py-string">'"serverSSLCertVerify" attribute; got %r'</tt> <tt class="py-op">%</tt> </tt> 
     407<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">                            <tt id="link-71" class="py-name"><a title="myproxy.client.MyProxyServerSSLCertVerification" class="py-name" href="#" onclick="return doclink('link-71', 'MyProxyServerSSLCertVerification', 'link-67');">MyProxyServerSSLCertVerification</a></tt><tt class="py-op">,</tt> </tt> 
     408<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                            <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt> 
     409<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="myproxy.client.MyProxyClient.__serverSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-72', '__serverSSLCertVerify', 'link-66');">__serverSSLCertVerify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt> 
     410</div><a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"> </tt> 
     411<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">    <tt id="link-73" class="py-name" targets="Variable myproxy.client.MyProxyClient.serverSSLCertVerify=myproxy.client.MyProxyClient-class.html#serverSSLCertVerify"><a title="myproxy.client.MyProxyClient.serverSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-73', 'serverSSLCertVerify', 'link-73');">serverSSLCertVerify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-74" class="py-name" targets="Method myproxy.client.MyProxyClient._getServerSSLCertVerify()=myproxy.client.MyProxyClient-class.html#_getServerSSLCertVerify"><a title="myproxy.client.MyProxyClient._getServerSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-74', '_getServerSSLCertVerify', 'link-74');">_getServerSSLCertVerify</a></tt><tt class="py-op">,</tt> </tt> 
     412<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">                                   <tt id="link-75" class="py-name" targets="Method myproxy.client.MyProxyClient._setServerSSLCertVerify()=myproxy.client.MyProxyClient-class.html#_setServerSSLCertVerify"><a title="myproxy.client.MyProxyClient._setServerSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-75', '_setServerSSLCertVerify', 'link-75');">_setServerSSLCertVerify</a></tt><tt class="py-op">,</tt> </tt> 
     413<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">                                   <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Class with a __call__ method which is "</tt> </tt> 
     414<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                                       <tt class="py-string">"passed to the SSL context to verify "</tt> </tt> 
     415<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                                       <tt class="py-string">"the peer (MyProxy server) certificate "</tt> </tt> 
     416<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                                       <tt class="py-string">"in the SSL handshake between this "</tt> </tt> 
     417<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                                       <tt class="py-string">"client and the MyProxy server"</tt><tt class="py-op">)</tt> </tt> 
     418<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"> </tt> 
     419<a name="MyProxyClient.parseConfig"></a><div id="MyProxyClient.parseConfig-def"><a name="L355"></a><tt class="py-lineno"> 355</tt> <a class="py-toggle" href="#" id="MyProxyClient.parseConfig-toggle" onclick="return toggle('MyProxyClient.parseConfig');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#parseConfig">parseConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cfg</tt><tt class="py-op">,</tt> <tt class="py-param">section</tt><tt class="py-op">=</tt><tt class="py-string">'DEFAULT'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     420</div><div id="MyProxyClient.parseConfig-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient.parseConfig-expanded"><a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">        <tt class="py-docstring">'''Extract parameters from _cfg config object'''</tt> </tt> 
     421<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">         </tt> 
     422<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     423<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">            <tt class="py-name">cfgFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">cfg</tt><tt class="py-op">)</tt> </tt> 
     424<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="myproxy.client.MyProxyClient.__cfg" class="py-name" href="#" onclick="return doclink('link-76', '__cfg', 'link-50');">__cfg</a></tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="myproxy.utils.CaseSensitiveConfigParser" class="py-name" href="#" onclick="return doclink('link-77', 'CaseSensitiveConfigParser', 'link-8');">CaseSensitiveConfigParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     425<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="myproxy.client.MyProxyClient.__cfg" class="py-name" href="#" onclick="return doclink('link-78', '__cfg', 'link-50');">__cfg</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method myproxy.utils.openssl.OpenSSLConfig.read()=myproxy.utils.openssl.OpenSSLConfig-class.html#read"><a title="myproxy.utils.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-79', 'read', 'link-79');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">cfgFilePath</tt><tt class="py-op">)</tt> </tt> 
     426<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     427<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">            <tt class="py-name">cfgFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     428<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="myproxy.client.MyProxyClient.__cfg" class="py-name" href="#" onclick="return doclink('link-80', '__cfg', 'link-50');">__cfg</a></tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt> </tt> 
     429<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        </tt> 
     430<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="myproxy.client.MyProxyClient.__cfg" class="py-name" href="#" onclick="return doclink('link-81', '__cfg', 'link-50');">__cfg</a></tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-name">section</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     431<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     432</div><a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">        </tt> 
     433<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">    <tt class="py-comment"># Get/Set Property methods</tt> </tt> 
     434<a name="MyProxyClient._getHostname"></a><div id="MyProxyClient._getHostname-def"><a name="L370"></a><tt class="py-lineno"> 370</tt> <a class="py-toggle" href="#" id="MyProxyClient._getHostname-toggle" onclick="return toggle('MyProxyClient._getHostname');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getHostname">_getHostname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     435</div><div id="MyProxyClient._getHostname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getHostname-expanded"><a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="myproxy.client.MyProxyClient.__hostname" class="py-name" href="#" onclick="return doclink('link-82', '__hostname', 'link-38');">__hostname</a></tt> </tt> 
     436</div><a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">    </tt> 
     437<a name="MyProxyClient._setHostname"></a><div id="MyProxyClient._setHostname-def"><a name="L373"></a><tt class="py-lineno"> 373</tt> <a class="py-toggle" href="#" id="MyProxyClient._setHostname-toggle" onclick="return toggle('MyProxyClient._setHostname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setHostname">_setHostname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     438</div><div id="MyProxyClient._setHostname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setHostname-expanded"><a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     439<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for hostname "</tt> </tt> 
     440<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
     441<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="myproxy.client.MyProxyClient.__hostname" class="py-name" href="#" onclick="return doclink('link-83', '__hostname', 'link-38');">__hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     442</div><a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">         </tt> 
     443<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">    <tt id="link-84" class="py-name"><a title="myproxy.client.MyProxyClient.hostname" class="py-name" href="#" onclick="return doclink('link-84', 'hostname', 'link-53');">hostname</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-85" class="py-name" targets="Method myproxy.client.MyProxyClient._getHostname()=myproxy.client.MyProxyClient-class.html#_getHostname"><a title="myproxy.client.MyProxyClient._getHostname" class="py-name" href="#" onclick="return doclink('link-85', '_getHostname', 'link-85');">_getHostname</a></tt><tt class="py-op">,</tt> </tt> 
     444<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                        <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-86" class="py-name" targets="Method myproxy.client.MyProxyClient._setHostname()=myproxy.client.MyProxyClient-class.html#_setHostname"><a title="myproxy.client.MyProxyClient._setHostname" class="py-name" href="#" onclick="return doclink('link-86', '_setHostname', 'link-86');">_setHostname</a></tt><tt class="py-op">,</tt> </tt> 
     445<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">                        <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"hostname of MyProxy server"</tt><tt class="py-op">)</tt> </tt> 
     446<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">    </tt> 
     447<a name="MyProxyClient._getPort"></a><div id="MyProxyClient._getPort-def"><a name="L383"></a><tt class="py-lineno"> 383</tt> <a class="py-toggle" href="#" id="MyProxyClient._getPort-toggle" onclick="return toggle('MyProxyClient._getPort');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getPort">_getPort</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     448</div><div id="MyProxyClient._getPort-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getPort-expanded"><a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="myproxy.client.MyProxyClient.__port" class="py-name" href="#" onclick="return doclink('link-87', '__port', 'link-39');">__port</a></tt> </tt> 
     449</div><a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">    </tt> 
     450<a name="MyProxyClient._setPort"></a><div id="MyProxyClient._setPort-def"><a name="L386"></a><tt class="py-lineno"> 386</tt> <a class="py-toggle" href="#" id="MyProxyClient._setPort-toggle" onclick="return toggle('MyProxyClient._setPort');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setPort">_setPort</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     451</div><div id="MyProxyClient._setPort-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setPort-expanded"><a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     452<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="myproxy.client.MyProxyClient.__port" class="py-name" href="#" onclick="return doclink('link-88', '__port', 'link-39');">__port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     453<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     454<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="myproxy.client.MyProxyClient.__port" class="py-name" href="#" onclick="return doclink('link-89', '__port', 'link-39');">__port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     455<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     456<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for port attribute"</tt><tt class="py-op">)</tt> </tt> 
     457</div><a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">     </tt> 
     458<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt id="link-90" class="py-name"><a title="myproxy.client.MyProxyClient.port" class="py-name" href="#" onclick="return doclink('link-90', 'port', 'link-56');">port</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-91" class="py-name" targets="Method myproxy.client.MyProxyClient._getPort()=myproxy.client.MyProxyClient-class.html#_getPort"><a title="myproxy.client.MyProxyClient._getPort" class="py-name" href="#" onclick="return doclink('link-91', '_getPort', 'link-91');">_getPort</a></tt><tt class="py-op">,</tt> </tt> 
     459<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                    <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-92" class="py-name" targets="Method myproxy.client.MyProxyClient._setPort()=myproxy.client.MyProxyClient-class.html#_setPort"><a title="myproxy.client.MyProxyClient._setPort" class="py-name" href="#" onclick="return doclink('link-92', '_setPort', 'link-92');">_setPort</a></tt><tt class="py-op">,</tt> </tt> 
     460<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">                    <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Port number for MyProxy server"</tt><tt class="py-op">)</tt> </tt> 
     461<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">     </tt> 
     462<a name="MyProxyClient._getServerDN"></a><div id="MyProxyClient._getServerDN-def"><a name="L398"></a><tt class="py-lineno"> 398</tt> <a class="py-toggle" href="#" id="MyProxyClient._getServerDN-toggle" onclick="return toggle('MyProxyClient._getServerDN');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getServerDN">_getServerDN</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     463</div><div id="MyProxyClient._getServerDN-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getServerDN-expanded"><a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="myproxy.client.MyProxyClient.__serverDN" class="py-name" href="#" onclick="return doclink('link-93', '__serverDN', 'link-40');">__serverDN</a></tt> </tt> 
     464</div><a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    </tt> 
     465<a name="MyProxyClient._setServerDN"></a><div id="MyProxyClient._setServerDN-def"><a name="L401"></a><tt class="py-lineno"> 401</tt> <a class="py-toggle" href="#" id="MyProxyClient._setServerDN-toggle" onclick="return toggle('MyProxyClient._setServerDN');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setServerDN">_setServerDN</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     466</div><div id="MyProxyClient._setServerDN-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setServerDN-expanded"><a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     467<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for serverDN "</tt> </tt> 
     468<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
     469<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="myproxy.client.MyProxyClient.__serverDN" class="py-name" href="#" onclick="return doclink('link-94', '__serverDN', 'link-40');">__serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     470</div><a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">    </tt> 
     471<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt id="link-95" class="py-name"><a title="myproxy.client.MyProxyClient.serverDN" class="py-name" href="#" onclick="return doclink('link-95', 'serverDN', 'link-59');">serverDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-96" class="py-name" targets="Method myproxy.client.MyProxyClient._getServerDN()=myproxy.client.MyProxyClient-class.html#_getServerDN"><a title="myproxy.client.MyProxyClient._getServerDN" class="py-name" href="#" onclick="return doclink('link-96', '_getServerDN', 'link-96');">_getServerDN</a></tt><tt class="py-op">,</tt> </tt> 
     472<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">                        <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-97" class="py-name" targets="Method myproxy.client.MyProxyClient._setServerDN()=myproxy.client.MyProxyClient-class.html#_setServerDN"><a title="myproxy.client.MyProxyClient._setServerDN" class="py-name" href="#" onclick="return doclink('link-97', '_setServerDN', 'link-97');">_setServerDN</a></tt><tt class="py-op">,</tt> </tt> 
     473<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                        <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Distinguished Name for MyProxy Server "</tt> </tt> 
     474<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">                            <tt class="py-string">"Certificate"</tt><tt class="py-op">)</tt> </tt> 
     475<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">    </tt> 
     476<a name="MyProxyClient._getOpenSSLConfFilePath"></a><div id="MyProxyClient._getOpenSSLConfFilePath-def"><a name="L412"></a><tt class="py-lineno"> 412</tt> <a class="py-toggle" href="#" id="MyProxyClient._getOpenSSLConfFilePath-toggle" onclick="return toggle('MyProxyClient._getOpenSSLConfFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath">_getOpenSSLConfFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     477</div><div id="MyProxyClient._getOpenSSLConfFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getOpenSSLConfFilePath-expanded"><a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-98', '__openSSLConfFilePath', 'link-41');">__openSSLConfFilePath</a></tt> </tt> 
     478</div><a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">    </tt> 
     479<a name="MyProxyClient._setOpenSSLConfFilePath"></a><div id="MyProxyClient._setOpenSSLConfFilePath-def"><a name="L415"></a><tt class="py-lineno"> 415</tt> <a class="py-toggle" href="#" id="MyProxyClient._setOpenSSLConfFilePath-toggle" onclick="return toggle('MyProxyClient._setOpenSSLConfFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath">_setOpenSSLConfFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     480</div><div id="MyProxyClient._setOpenSSLConfFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setOpenSSLConfFilePath-expanded"><a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     481<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for "</tt> </tt> 
     482<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">                                 <tt class="py-string">"openSSLConfFilePath attribute"</tt><tt class="py-op">)</tt> </tt> 
     483<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-99', '__openSSLConfFilePath', 'link-41');">__openSSLConfFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     484<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfig" class="py-name" href="#" onclick="return doclink('link-100', '__openSSLConfig', 'link-51');">__openSSLConfig</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Variable myproxy.utils.openssl.OpenSSLConfig.filePath=myproxy.utils.openssl.OpenSSLConfig-class.html#filePath"><a title="myproxy.utils.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-101', 'filePath', 'link-101');">filePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-102', '__openSSLConfFilePath', 'link-41');">__openSSLConfFilePath</a></tt> </tt> 
     485<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfig" class="py-name" href="#" onclick="return doclink('link-103', '__openSSLConfig', 'link-51');">__openSSLConfig</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="myproxy.utils.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-104', 'read', 'link-79');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt> 
     486</div><a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    </tt> 
     487<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">    <tt id="link-105" class="py-name" targets="Variable myproxy.client.MyProxyClient.openSSLConfFilePath=myproxy.client.MyProxyClient-class.html#openSSLConfFilePath"><a title="myproxy.client.MyProxyClient.openSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-105', 'openSSLConfFilePath', 'link-105');">openSSLConfFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-106" class="py-name" targets="Method myproxy.client.MyProxyClient._getOpenSSLConfFilePath()=myproxy.client.MyProxyClient-class.html#_getOpenSSLConfFilePath"><a title="myproxy.client.MyProxyClient._getOpenSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-106', '_getOpenSSLConfFilePath', 'link-106');">_getOpenSSLConfFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     488<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">                                   <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-107" class="py-name" targets="Method myproxy.client.MyProxyClient._setOpenSSLConfFilePath()=myproxy.client.MyProxyClient-class.html#_setOpenSSLConfFilePath"><a title="myproxy.client.MyProxyClient._setOpenSSLConfFilePath" class="py-name" href="#" onclick="return doclink('link-107', '_setOpenSSLConfFilePath', 'link-107');">_setOpenSSLConfFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     489<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                                   <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"file path for OpenSSL config file"</tt><tt class="py-op">)</tt> </tt> 
     490<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">     </tt> 
     491<a name="MyProxyClient._getProxyCertMaxLifetime"></a><div id="MyProxyClient._getProxyCertMaxLifetime-def"><a name="L427"></a><tt class="py-lineno"> 427</tt> <a class="py-toggle" href="#" id="MyProxyClient._getProxyCertMaxLifetime-toggle" onclick="return toggle('MyProxyClient._getProxyCertMaxLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime">_getProxyCertMaxLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     492</div><div id="MyProxyClient._getProxyCertMaxLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getProxyCertMaxLifetime-expanded"><a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-108', '__proxyCertMaxLifetime', 'link-42');">__proxyCertMaxLifetime</a></tt> </tt> 
     493</div><a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">    </tt> 
     494<a name="MyProxyClient._setProxyCertMaxLifetime"></a><div id="MyProxyClient._setProxyCertMaxLifetime-def"><a name="L430"></a><tt class="py-lineno"> 430</tt> <a class="py-toggle" href="#" id="MyProxyClient._setProxyCertMaxLifetime-toggle" onclick="return toggle('MyProxyClient._setProxyCertMaxLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime">_setProxyCertMaxLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     495</div><div id="MyProxyClient._setProxyCertMaxLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setProxyCertMaxLifetime-expanded"><a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     496<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-109', '__proxyCertMaxLifetime', 'link-42');">__proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     497<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">            </tt> 
     498<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     499<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-110', '__proxyCertMaxLifetime', 'link-42');">__proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     500<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     501<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for proxyCertMaxLifetime "</tt> </tt> 
     502<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
     503</div><a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">     </tt> 
     504<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">    <tt id="link-111" class="py-name" targets="Variable myproxy.client.MyProxyClient.proxyCertMaxLifetime=myproxy.client.MyProxyClient-class.html#proxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient.proxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-111', 'proxyCertMaxLifetime', 'link-111');">proxyCertMaxLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-112" class="py-name" targets="Method myproxy.client.MyProxyClient._getProxyCertMaxLifetime()=myproxy.client.MyProxyClient-class.html#_getProxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient._getProxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-112', '_getProxyCertMaxLifetime', 'link-112');">_getProxyCertMaxLifetime</a></tt><tt class="py-op">,</tt> </tt> 
     505<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">                                    <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-113" class="py-name" targets="Method myproxy.client.MyProxyClient._setProxyCertMaxLifetime()=myproxy.client.MyProxyClient-class.html#_setProxyCertMaxLifetime"><a title="myproxy.client.MyProxyClient._setProxyCertMaxLifetime" class="py-name" href="#" onclick="return doclink('link-113', '_setProxyCertMaxLifetime', 'link-113');">_setProxyCertMaxLifetime</a></tt><tt class="py-op">,</tt> </tt> 
     506<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">                                    <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Default max. lifetime allowed for "</tt> </tt> 
     507<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">                                        <tt class="py-string">"Proxy Certificate retrieved - used "</tt> </tt> 
     508<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">                                        <tt class="py-string">"by store method"</tt><tt class="py-op">)</tt> </tt> 
     509<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">    </tt> 
     510<a name="MyProxyClient._getProxyCertLifetime"></a><div id="MyProxyClient._getProxyCertLifetime-def"><a name="L446"></a><tt class="py-lineno"> 446</tt> <a class="py-toggle" href="#" id="MyProxyClient._getProxyCertLifetime-toggle" onclick="return toggle('MyProxyClient._getProxyCertLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime">_getProxyCertLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     511</div><div id="MyProxyClient._getProxyCertLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getProxyCertLifetime-expanded"><a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-114', '__proxyCertLifetime', 'link-45');">__proxyCertLifetime</a></tt> </tt> 
     512</div><a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">    </tt> 
     513<a name="MyProxyClient._setProxyCertLifetime"></a><div id="MyProxyClient._setProxyCertLifetime-def"><a name="L449"></a><tt class="py-lineno"> 449</tt> <a class="py-toggle" href="#" id="MyProxyClient._setProxyCertLifetime-toggle" onclick="return toggle('MyProxyClient._setProxyCertLifetime');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime">_setProxyCertLifetime</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     514</div><div id="MyProxyClient._setProxyCertLifetime-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setProxyCertLifetime-expanded"><a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     515<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-115', '__proxyCertLifetime', 'link-45');">__proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     516<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">int</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     517<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="myproxy.client.MyProxyClient.__proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-116', '__proxyCertLifetime', 'link-45');">__proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     518<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     519<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting int type for proxyCertLifetime "</tt> </tt> 
     520<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
     521</div><a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">    </tt> 
     522<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">    <tt id="link-117" class="py-name" targets="Variable myproxy.client.MyProxyClient.proxyCertLifetime=myproxy.client.MyProxyClient-class.html#proxyCertLifetime"><a title="myproxy.client.MyProxyClient.proxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-117', 'proxyCertLifetime', 'link-117');">proxyCertLifetime</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-118" class="py-name" targets="Method myproxy.client.MyProxyClient._getProxyCertLifetime()=myproxy.client.MyProxyClient-class.html#_getProxyCertLifetime"><a title="myproxy.client.MyProxyClient._getProxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-118', '_getProxyCertLifetime', 'link-118');">_getProxyCertLifetime</a></tt><tt class="py-op">,</tt> </tt> 
     523<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">                                 <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-119" class="py-name" targets="Method myproxy.client.MyProxyClient._setProxyCertLifetime()=myproxy.client.MyProxyClient-class.html#_setProxyCertLifetime"><a title="myproxy.client.MyProxyClient._setProxyCertLifetime" class="py-name" href="#" onclick="return doclink('link-119', '_setProxyCertLifetime', 'link-119');">_setProxyCertLifetime</a></tt><tt class="py-op">,</tt> </tt> 
     524<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                                 <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Default proxy cert. lifetime used in "</tt> </tt> 
     525<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                                     <tt class="py-string">"logon request"</tt><tt class="py-op">)</tt> </tt> 
     526<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">     </tt> 
     527<a name="MyProxyClient._getCACertFilePath"></a><div id="MyProxyClient._getCACertFilePath-def"><a name="L463"></a><tt class="py-lineno"> 463</tt> <a class="py-toggle" href="#" id="MyProxyClient._getCACertFilePath-toggle" onclick="return toggle('MyProxyClient._getCACertFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getCACertFilePath">_getCACertFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     528</div><div id="MyProxyClient._getCACertFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getCACertFilePath-expanded"><a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertFilePath" class="py-name" href="#" onclick="return doclink('link-120', '__caCertFilePath', 'link-48');">__caCertFilePath</a></tt> </tt> 
     529</div><a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">    </tt> 
     530<a name="MyProxyClient._setCACertFilePath"></a><div id="MyProxyClient._setCACertFilePath-def"><a name="L466"></a><tt class="py-lineno"> 466</tt> <a class="py-toggle" href="#" id="MyProxyClient._setCACertFilePath-toggle" onclick="return toggle('MyProxyClient._setCACertFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setCACertFilePath">_setCACertFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     531</div><div id="MyProxyClient._setCACertFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setCACertFilePath-expanded"><a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">        <tt class="py-docstring">'''@type val: basestring</tt> </tt> 
     532<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">        @param val: file path for CA certificate to be used to verify </tt> </tt> 
     533<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring">        MyProxy server certificate'''</tt> </tt> 
     534<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">        </tt> 
     535<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     536<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> 
     537<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertFilePath" class="py-name" href="#" onclick="return doclink('link-121', '__caCertFilePath', 'link-48');">__caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     538<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     539<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertFilePath" class="py-name" href="#" onclick="return doclink('link-122', '__caCertFilePath', 'link-48');">__caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     540<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">                </tt> 
     541<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     542<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string type for caCertFilePath "</tt> </tt> 
     543<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt>        </tt> 
     544</div><a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">         </tt> 
     545<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">    <tt id="link-123" class="py-name" targets="Variable myproxy.client.MyProxyClient.caCertFilePath=myproxy.client.MyProxyClient-class.html#caCertFilePath"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-123', 'caCertFilePath', 'link-123');">caCertFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-124" class="py-name" targets="Method myproxy.client.MyProxyClient._getCACertFilePath()=myproxy.client.MyProxyClient-class.html#_getCACertFilePath"><a title="myproxy.client.MyProxyClient._getCACertFilePath" class="py-name" href="#" onclick="return doclink('link-124', '_getCACertFilePath', 'link-124');">_getCACertFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     546<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                              <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-125" class="py-name" targets="Method myproxy.client.MyProxyClient._setCACertFilePath()=myproxy.client.MyProxyClient-class.html#_setCACertFilePath"><a title="myproxy.client.MyProxyClient._setCACertFilePath" class="py-name" href="#" onclick="return doclink('link-125', '_setCACertFilePath', 'link-125');">_setCACertFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     547<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">                              <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"CA certificate file path - MyProxy server "</tt> </tt> 
     548<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                                  <tt class="py-string">"certificate must validate against it and/"</tt> </tt> 
     549<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                                  <tt class="py-string">"or any present in caCertDir"</tt><tt class="py-op">)</tt> </tt> 
     550<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"> </tt> 
     551<a name="MyProxyClient._getCACertDir"></a><div id="MyProxyClient._getCACertDir-def"><a name="L487"></a><tt class="py-lineno"> 487</tt> <a class="py-toggle" href="#" id="MyProxyClient._getCACertDir-toggle" onclick="return toggle('MyProxyClient._getCACertDir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getCACertDir">_getCACertDir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     552</div><div id="MyProxyClient._getCACertDir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getCACertDir-expanded"><a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertDir" class="py-name" href="#" onclick="return doclink('link-126', '__caCertDir', 'link-49');">__caCertDir</a></tt> </tt> 
     553</div><a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"> </tt> 
     554<a name="MyProxyClient._setCACertDir"></a><div id="MyProxyClient._setCACertDir-def"><a name="L490"></a><tt class="py-lineno"> 490</tt> <a class="py-toggle" href="#" id="MyProxyClient._setCACertDir-toggle" onclick="return toggle('MyProxyClient._setCACertDir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_setCACertDir">_setCACertDir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     555</div><div id="MyProxyClient._setCACertDir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._setCACertDir-expanded"><a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-docstring">'''Specify a directory containing PEM encoded CA certs. used for </tt> </tt> 
     556<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">        validation of MyProxy server certificate.</tt> </tt> 
     557<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     558<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring">        Set to None to make OpenSSL.SSL.Context.load_verify_locations ignore</tt> </tt> 
     559<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">        this parameter</tt> </tt> 
     560<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     561<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">        @type val: basestring/None</tt> </tt> 
     562<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring">        @param val: directory path'''</tt> </tt> 
     563<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        </tt> 
     564<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     565<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-string">''</tt><tt class="py-op">:</tt> </tt> 
     566<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertDir" class="py-name" href="#" onclick="return doclink('link-127', '__caCertDir', 'link-49');">__caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     567<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     568<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertDir" class="py-name" href="#" onclick="return doclink('link-128', '__caCertDir', 'link-49');">__caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expandvars</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     569<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">                </tt> 
     570<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     571<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="myproxy.client.MyProxyClient.__caCertDir" class="py-name" href="#" onclick="return doclink('link-129', '__caCertDir', 'link-49');">__caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt>    </tt> 
     572<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     573<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting string or None type for caCertDir "</tt> </tt> 
     574<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">                                 <tt class="py-string">"attribute"</tt><tt class="py-op">)</tt> </tt> 
     575</div><a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        </tt> 
     576<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">    <tt id="link-130" class="py-name" targets="Variable myproxy.client.MyProxyClient.caCertDir=myproxy.client.MyProxyClient-class.html#caCertDir"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-130', 'caCertDir', 'link-130');">caCertDir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-131" class="py-name" targets="Method myproxy.client.MyProxyClient._getCACertDir()=myproxy.client.MyProxyClient-class.html#_getCACertDir"><a title="myproxy.client.MyProxyClient._getCACertDir" class="py-name" href="#" onclick="return doclink('link-131', '_getCACertDir', 'link-131');">_getCACertDir</a></tt><tt class="py-op">,</tt> </tt> 
     577<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">                         <tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-132" class="py-name" targets="Method myproxy.client.MyProxyClient._setCACertDir()=myproxy.client.MyProxyClient-class.html#_setCACertDir"><a title="myproxy.client.MyProxyClient._setCACertDir" class="py-name" href="#" onclick="return doclink('link-132', '_setCACertDir', 'link-132');">_setCACertDir</a></tt><tt class="py-op">,</tt> </tt> 
     578<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">                         <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"directory containing PEM encoded CA "</tt> </tt> 
     579<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">                             <tt class="py-string">"certificates.  Use along with caCertFilePath "</tt> </tt> 
     580<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">                             <tt class="py-string">"setting to validate MyProxy server certificate"</tt><tt class="py-op">)</tt> </tt> 
     581<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"> </tt> 
     582<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"> </tt> 
     583<a name="MyProxyClient._getOpenSSLConfig"></a><div id="MyProxyClient._getOpenSSLConfig-def"><a name="L519"></a><tt class="py-lineno"> 519</tt> <a class="py-toggle" href="#" id="MyProxyClient._getOpenSSLConfig-toggle" onclick="return toggle('MyProxyClient._getOpenSSLConfig');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig">_getOpenSSLConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     584</div><div id="MyProxyClient._getOpenSSLConfig-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._getOpenSSLConfig-expanded"><a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">        <tt class="py-docstring">"Get OpenSSLConfig object property method"</tt> </tt> 
     585<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="myproxy.client.MyProxyClient.__openSSLConfig" class="py-name" href="#" onclick="return doclink('link-133', '__openSSLConfig', 'link-51');">__openSSLConfig</a></tt> </tt> 
     586</div><a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">    </tt> 
     587<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">    <tt id="link-134" class="py-name" targets="Variable myproxy.client.MyProxyClient.openSSLConfig=myproxy.client.MyProxyClient-class.html#openSSLConfig"><a title="myproxy.client.MyProxyClient.openSSLConfig" class="py-name" href="#" onclick="return doclink('link-134', 'openSSLConfig', 'link-134');">openSSLConfig</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-135" class="py-name" targets="Method myproxy.client.MyProxyClient._getOpenSSLConfig()=myproxy.client.MyProxyClient-class.html#_getOpenSSLConfig"><a title="myproxy.client.MyProxyClient._getOpenSSLConfig" class="py-name" href="#" onclick="return doclink('link-135', '_getOpenSSLConfig', 'link-135');">_getOpenSSLConfig</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"OpenSSLConfig object"</tt><tt class="py-op">)</tt> </tt> 
     588<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"> </tt> 
     589<a name="MyProxyClient._initConnection"></a><div id="MyProxyClient._initConnection-def"><a name="L525"></a><tt class="py-lineno"> 525</tt> <a class="py-toggle" href="#" id="MyProxyClient._initConnection-toggle" onclick="return toggle('MyProxyClient._initConnection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_initConnection">_initConnection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
     590<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">                        <tt class="py-param">certFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  </tt> 
     591<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">                        <tt class="py-param">keyFile</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     592<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">                        <tt class="py-param">keyFilePassphrase</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     593</div><div id="MyProxyClient._initConnection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._initConnection-expanded"><a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialise connection setting up SSL context and client and</tt> </tt> 
     594<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-docstring">        server side identity checks</tt> </tt> 
     595<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     596<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"><tt class="py-docstring">        @type sslCertFile: basestring</tt> </tt> 
     597<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-docstring">        @param sslCertFile: certificate for SSL client authentication.  It may</tt> </tt> 
     598<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line"><tt class="py-docstring">        be owner of a credential to be acted on or the concatenated proxy </tt> </tt> 
     599<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-docstring">        certificate + proxy's signing cert.  SSL client authentication is not </tt> </tt> 
     600<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring">        necessary for getDelegation / logon calls</tt> </tt> 
     601<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-docstring">        @type sslKeyFile: basestring</tt> </tt> 
     602<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-docstring">        @param sslKeyFile: client private key file</tt> </tt> 
     603<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring">        @type keyFilePassphrase: basestring</tt> </tt> 
     604<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">        @param keyFilePassphrase: pass-phrase protecting private key if set</tt> </tt> 
     605<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     606<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-comment"># Must be version 3 for MyProxy</tt> </tt> 
     607<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Context</tt><tt class="py-op">(</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">SSLv3_METHOD</tt><tt class="py-op">)</tt> </tt> 
     608<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">         </tt> 
     609<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-136', 'caCertFilePath', 'link-123');">caCertFilePath</a></tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-137', 'caCertDir', 'link-130');">caCertDir</a></tt><tt class="py-op">:</tt> </tt> 
     610<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">            <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">load_verify_locations</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="myproxy.client.MyProxyClient.caCertFilePath" class="py-name" href="#" onclick="return doclink('link-138', 'caCertFilePath', 'link-123');">caCertFilePath</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="myproxy.client.MyProxyClient.caCertDir" class="py-name" href="#" onclick="return doclink('link-139', 'caCertDir', 'link-130');">caCertDir</a></tt><tt class="py-op">)</tt> </tt> 
     611<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">            </tt> 
     612<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">certFile</tt><tt class="py-op">:</tt> </tt> 
     613<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     614<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">                <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">use_certificate_chain_file</tt><tt class="py-op">(</tt><tt class="py-name">certFile</tt><tt class="py-op">)</tt> </tt> 
     615<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">pwdCallback</tt><tt class="py-op">(</tt><tt class="py-param">passphraseMaxLen</tt><tt class="py-op">,</tt>  </tt> 
     616<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">                                <tt class="py-param">promptPassphraseTwice</tt><tt class="py-op">,</tt> </tt> 
     617<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">                                <tt class="py-param">passphrase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     618<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">passphrase</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">passphraseMaxLen</tt><tt class="py-op">:</tt> </tt> 
     619<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">                        <tt id="link-140" class="py-name"><a title="myproxy.client.log" class="py-name" href="#" onclick="return doclink('link-140', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Passphrase length %d is greater than the '</tt> </tt> 
     620<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">                                  <tt class="py-string">'maximum length allowed %d'</tt><tt class="py-op">,</tt> </tt> 
     621<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">                                  <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">passphrase</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">passphraseMaxLen</tt><tt class="py-op">)</tt> </tt> 
     622<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">                        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt> 
     623<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">                        </tt> 
     624<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">passphrase</tt> </tt> 
     625</div><a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">                    </tt> 
     626<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">keyFilePassphrase</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
     627<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                    <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_passwd_cb</tt><tt class="py-op">(</tt><tt class="py-name">pwdCallback</tt><tt class="py-op">,</tt> <tt class="py-name">keyFilePassphrase</tt><tt class="py-op">)</tt> </tt> 
     628<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">                    </tt> 
     629<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">                <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">use_privatekey_file</tt><tt class="py-op">(</tt><tt class="py-name">keyFile</tt><tt class="py-op">)</tt> </tt> 
     630<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt> 
     631<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-141" class="py-name" targets="Class myproxy.client.MyProxyClientConfigError=myproxy.client.MyProxyClientConfigError-class.html"><a title="myproxy.client.MyProxyClientConfigError" class="py-name" href="#" onclick="return doclink('link-141', 'MyProxyClientConfigError', 'link-141');">MyProxyClientConfigError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Loading certificate "</tt> </tt> 
     632<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">                                               <tt class="py-string">"and private key for SSL "</tt> </tt> 
     633<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">                                               <tt class="py-string">"connection [also check CA "</tt> </tt> 
     634<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">                                               <tt class="py-string">"certificate settings]: %s"</tt> <tt class="py-op">%</tt> </tt> 
     635<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">                                               <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">format_exc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     636<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">             </tt> 
     637<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt class="py-comment"># Verify peer's (MyProxy server) certificate</tt> </tt> 
     638<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_verify</tt><tt class="py-op">(</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">VERIFY_PEER</tt><tt class="py-op">|</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">VERIFY_FAIL_IF_NO_PEER_CERT</tt><tt class="py-op">,</tt> </tt> 
     639<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                           <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="myproxy.client.MyProxyClient.__serverSSLCertVerify" class="py-name" href="#" onclick="return doclink('link-142', '__serverSSLCertVerify', 'link-66');">__serverSSLCertVerify</a></tt><tt class="py-op">)</tt> </tt> 
     640<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">        </tt> 
     641<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">            </tt> 
     642<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">        <tt class="py-comment"># Disable for compatibility with myproxy server (er, globus)</tt> </tt> 
     643<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># globus doesn't handle this case, apparently, and instead</tt> </tt> 
     644<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># chokes in proxy delegation code</tt> </tt> 
     645<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">context</tt><tt class="py-op">.</tt><tt class="py-name">set_options</tt><tt class="py-op">(</tt><tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">OP_DONT_INSERT_EMPTY_FRAGMENTS</tt><tt class="py-op">)</tt> </tt> 
     646<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">         </tt> 
     647<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">        <tt class="py-comment"># connect to myproxy server</tt> </tt> 
     648<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">conn</tt> <tt class="py-op">=</tt> <tt class="py-name">SSL</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     649<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">         </tt> 
     650<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">conn</tt> </tt> 
     651</div><a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        </tt> 
     652<a name="MyProxyClient._createKeyPair"></a><div id="MyProxyClient._createKeyPair-def"><a name="L588"></a><tt class="py-lineno"> 588</tt> <a class="py-toggle" href="#" id="MyProxyClient._createKeyPair-toggle" onclick="return toggle('MyProxyClient._createKeyPair');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_createKeyPair">_createKeyPair</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">nBitsForKey</tt><tt class="py-op">=</tt><tt id="link-143" class="py-name"><a title="myproxy.client.MyProxyClient.PRIKEY_NBITS" class="py-name" href="#" onclick="return doclink('link-143', 'PRIKEY_NBITS', 'link-30');">PRIKEY_NBITS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     653</div><div id="MyProxyClient._createKeyPair-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._createKeyPair-expanded"><a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">        <tt class="py-docstring">"""Generate key pair and return as PEM encoded string</tt> </tt> 
     654<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring">        @type nBitsForKey: int</tt> </tt> 
     655<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring">        @param nBitsForKey: number of bits for private key generation - </tt> </tt> 
     656<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-docstring">        default is 2048</tt> </tt> 
     657<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: string</tt> </tt> 
     658<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-docstring">        @return: public/private key pair</tt> </tt> 
     659<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     660<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-name">keyPair</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">PKey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     661<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">        <tt class="py-name">keyPair</tt><tt class="py-op">.</tt><tt class="py-name">generate_key</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">TYPE_RSA</tt><tt class="py-op">,</tt> <tt class="py-name">nBitsForKey</tt><tt class="py-op">)</tt> </tt> 
     662<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">         </tt> 
     663<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">keyPair</tt> </tt> 
     664</div><a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">            </tt> 
     665<a name="MyProxyClient._createCertReq"></a><div id="MyProxyClient._createCertReq-def"><a name="L601"></a><tt class="py-lineno"> 601</tt> <a class="py-toggle" href="#" id="MyProxyClient._createCertReq-toggle" onclick="return toggle('MyProxyClient._createCertReq');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="myproxy.client.MyProxyClient-class.html#_createCertReq">_createCertReq</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">CN</tt><tt class="py-op">,</tt> <tt class="py-param">keyPair</tt><tt class="py-op">,</tt> <tt class="py-param">messageDigest</tt><tt class="py-op">=</tt><tt id="link-144" class="py-name"><a title="myproxy.client.MyProxyClient.MESSAGE_DIGEST_TYPE" class="py-name" href="#" onclick="return doclink('link-144', 'MESSAGE_DIGEST_TYPE', 'link-31');">MESSAGE_DIGEST_TYPE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     666</div><div id="MyProxyClient._createCertReq-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="MyProxyClient._createCertReq-expanded"><a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a certificate request.</tt> </tt> 
     667<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     668<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        @type CN: basestring</tt> </tt> 
     669<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">        @param CN: Common Name for certificate - effectively the same as the</tt> </tt> 
     670<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        username for the MyProxy credential</tt> </tt> 
     671<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">        @type keyPair: string/None</tt> </tt> 
     672<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        @param keyPair: public/private key pair</tt> </tt> 
     673<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">        @type messageDigest: basestring</tt> </tt> 
     674<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">        @param messageDigest: message digest type - default is MD5</tt> </tt> 
     675<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: tuple</tt> </tt> 
     676<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-docstring">        @return certificate request PEM text and private key PEM text</tt> </tt> 
     677<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     678<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">         </tt> 
     679<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-comment"># Check all required certifcate request DN parameters are set                </tt> </tt> 
     680<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Create certificate request</tt> </tt> 
     681<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">certReq</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">X509Req</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     682<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">         </tt> 
     683<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">        <tt class="py-comment"># Create public key object</tt> </tt> 
     684<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">certReq</tt><tt class="py-op">.</tt><tt class="py-name">set_pubkey</tt><tt class="py-op">(</tt><tt class="py-name">keyPair</tt><tt class="py-op">)</tt> </tt> 
     685<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">         </tt> 
     686<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-comment"># Add the public key to the request</tt> </tt> 
     687<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">certReq</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">keyPair</tt><tt class="py-op">,</tt> <tt class="py-name">messageDigest</tt><tt class="py-op">)</tt> </tt>