Ignore:
Timestamp:
29/09/08 16:05:29 (11 years ago)
Author:
pjkersha
Message:

Working unit tests for WSGI based Attribute Authority.

  • Altered so that all Attribute Config is picked up from the Paste ini file. Separate cfg or xml based config file is still supported.

TODO:

  • Simplify unit test config for client.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/documentation/epydoc/ndg.security.server.AttAuthority-pysrc.html

    r3153 r4245  
    6060<h1 class="epydoc">Source Code for <a href="ndg.security.server.AttAuthority-module.html">Package ndg.security.server.AttAuthority</a></h1> 
    6161<pre class="py-src"> 
    62 <a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-docstring">"""NDG Attribute Authority server side code</tt> </tt> 
    63 <a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    64 <a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-docstring">handles security user attribute (role) allocation</tt> </tt> 
    65 <a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    66 <a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-docstring">NERC Data Grid Project</tt> </tt> 
    67 <a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> 
    68 <a name="L7"></a><tt class="py-lineno">   7</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> 
    69 <a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-name">__date__</tt> <tt class="py-op">=</tt> <tt class="py-string">"15/04/05"</tt> </tt> 
    70 <a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-name">__copyright__</tt> <tt class="py-op">=</tt> <tt class="py-string">"(C) 2007 STFC &amp; NERC"</tt> </tt> 
    71 <a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> \ </tt> 
    72 <a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-string">"""This software may be distributed under the terms of the Q Public </tt> </tt> 
    73 <a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-string">License, version 1.0 or later."""</tt> </tt> 
    74 <a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-name">__contact__</tt> <tt class="py-op">=</tt> <tt class="py-string">"P.J.Kershaw@rl.ac.uk"</tt> </tt> 
    75 <a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable ndg.__revision__=ndg-module.html#__revision__,Variable ndg.security.__revision__=ndg.security-module.html#__revision__,Variable ndg.security.client.LogClient.__revision__=ndg.security.client.LogClient-module.html#__revision__,Variable ndg.security.client.SimpleCAClient.__revision__=ndg.security.client.SimpleCAClient-module.html#__revision__,Variable ndg.security.client.__revision__=ndg.security.client-module.html#__revision__,Variable ndg.security.client.ndgSessionClient.__revision__=ndg.security.client.ndgSessionClient-module.html#__revision__,Variable ndg.security.common.AttAuthority.__revision__=ndg.security.common.AttAuthority-module.html#__revision__,Variable ndg.security.common.AttCert.__revision__=ndg.security.common.AttCert-module.html#__revision__,Variable ndg.security.common.CredWallet.__revision__=ndg.security.common.CredWallet-module.html#__revision__,Variable ndg.security.common.SQLObject.__revision__=ndg.security.common.SQLObject-module.html#__revision__,Variable ndg.security.common.SecurityCGI.__revision__=ndg.security.common.SecurityCGI-module.html#__revision__,Variable ndg.security.common.SessionCookie.__revision__=ndg.security.common.SessionCookie-module.html#__revision__,Variable ndg.security.common.SessionMgr.__revision__=ndg.security.common.SessionMgr-module.html#__revision__,Variable ndg.security.common.X509.__revision__=ndg.security.common.X509-module.html#__revision__,Variable ndg.security.common.XMLSec.__revision__=ndg.security.common.XMLSec-module.html#__revision__,Variable ndg.security.common.__revision__=ndg.security.common-module.html#__revision__,Variable ndg.security.common.ca.__revision__=ndg.security.common.ca-module.html#__revision__,Variable ndg.security.common.gatekeeper.__revision__=ndg.security.common.gatekeeper-module.html#__revision__,Variable ndg.security.common.logService.__revision__=ndg.security.common.logService-module.html#__revision__,Variable ndg.security.common.logService.log_services_server.__revision__=ndg.security.common.logService.log_services_server-module.html#__revision__,Variable ndg.security.common.m2CryptoSSLUtility.__revision__=ndg.security.common.m2CryptoSSLUtility-module.html#__revision__,Variable ndg.security.common.openssl.__revision__=ndg.security.common.openssl-module.html#__revision__,Variable ndg.security.common.sessionCookie.__revision__=ndg.security.common.sessionCookie-module.html#__revision__,Variable ndg.security.common.wsSecurity.__revision__=ndg.security.common.wsSecurity-module.html#__revision__,Variable ndg.security.server.AttAuthority.__revision__=ndg.security.server.AttAuthority-module.html#__revision__,Variable ndg.security.server.Log.__revision__=ndg.security.server.Log-module.html#__revision__,Variable ndg.security.server.MyProxy.__revision__=ndg.security.server.MyProxy-module.html#__revision__,Variable ndg.security.server.SessionMgr.__revision__=ndg.security.server.SessionMgr-module.html#__revision__,Variable ndg.security.server.__revision__=ndg.security.server-module.html#__revision__,Variable ndg.security.server.ca.__revision__=ndg.security.server.ca-module.html#__revision__,Variable ndg.security.server.conf.__revision__=ndg.security.server.conf-module.html#__revision__,Variable ndg.security.server.conf.attCertLog.__revision__=ndg.security.server.conf.attCertLog-module.html#__revision__,Variable ndg.security.server.conf.certs.__revision__=ndg.security.server.conf.certs-module.html#__revision__,Variable ndg.security.server.conf.certs.ca.__revision__=ndg.security.server.conf.certs.ca-module.html#__revision__,Variable ndg.security.server.conf.userRoles.__revision__=ndg.security.server.conf.userRoles-module.html#__revision__,Variable ndg.security.server.initCredReposDb.__revision__=ndg.security.server.initCredReposDb-module.html#__revision__,Variable ndg.security.server.log.__revision__=ndg.security.server.log-module.html#__revision__,Variable ndg.security.server.share.__revision__=ndg.security.server.share-module.html#__revision__,Variable ndg.security.server.twisted.__revision__=ndg.security.server.twisted-module.html#__revision__,Variable ndg.security.test.Log.LogTest.__revision__=ndg.security.test.Log.LogTest-module.html#__revision__,Variable ndg.security.test.Log.__revision__=ndg.security.test.Log-module.html#__revision__,Variable ndg.security.test.SecurityCGItest.__revision__=ndg.security.test.SecurityCGItest-module.html#__revision__,Variable ndg.security.test.X509.X509Test.__revision__=ndg.security.test.X509.X509Test-module.html#__revision__,Variable ndg.security.test.X509.__revision__=ndg.security.test.X509-module.html#__revision__,Variable ndg.security.test.XMLSecDoc.__revision__=ndg.security.test.XMLSecDoc-module.html#__revision__,Variable ndg.security.test.XMLSecDoc.xmlSecDocTest.__revision__=ndg.security.test.XMLSecDoc.xmlSecDocTest-module.html#__revision__,Variable ndg.security.test.__revision__=ndg.security.test-module.html#__revision__,Variable ndg.security.test.attAuthority.AttAuthorityClientTest.__revision__=ndg.security.test.attAuthority.AttAuthorityClientTest-module.html#__revision__,Variable ndg.security.test.attAuthority.__revision__=ndg.security.test.attAuthority-module.html#__revision__,Variable ndg.security.test.attAuthority.attCertLog.__revision__=ndg.security.test.attAuthority.attCertLog-module.html#__revision__,Variable ndg.security.test.attAuthority.ca.__revision__=ndg.security.test.attAuthority.ca-module.html#__revision__,Variable ndg.security.test.attAuthority.siteAUserRoles.__revision__=ndg.security.test.attAuthority.siteAUserRoles-module.html#__revision__,Variable ndg.security.test.attAuthority.siteBUserRoles.__revision__=ndg.security.test.attAuthority.siteBUserRoles-module.html#__revision__,Variable ndg.security.test.attCert.AttCertTest.__revision__=ndg.security.test.attCert.AttCertTest-module.html#__revision__,Variable ndg.security.test.attCert.__revision__=ndg.security.test.attCert-module.html#__revision__,Variable ndg.security.test.ca.__revision__=ndg.security.test.ca-module.html#__revision__,Variable ndg.security.test.ca.caClientTest.__revision__=ndg.security.test.ca.caClientTest-module.html#__revision__,Variable ndg.security.test.gatekeeper.TestGatekeeperResrc.__revision__=ndg.security.test.gatekeeper.TestGatekeeperResrc-module.html#__revision__,Variable ndg.security.test.gatekeeper.__revision__=ndg.security.test.gatekeeper-module.html#__revision__,Variable ndg.security.test.myProxy.MyProxyClientTest.__revision__=ndg.security.test.myProxy.MyProxyClientTest-module.html#__revision__,Variable ndg.security.test.myProxy.__revision__=ndg.security.test.myProxy-module.html#__revision__,Variable ndg.security.test.sessionCookie.SessionCookieTest.__revision__=ndg.security.test.sessionCookie.SessionCookieTest-module.html#__revision__,Variable ndg.security.test.sessionCookie.__revision__=ndg.security.test.sessionCookie-module.html#__revision__,Variable ndg.security.test.sessionMgr.__revision__=ndg.security.test.sessionMgr-module.html#__revision__,Variable ndg.security.test.sessionMgr.ca.__revision__=ndg.security.test.sessionMgr.ca-module.html#__revision__,Variable ndg.security.test.sessionMgr.test.__revision__=ndg.security.test.sessionMgr.test-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.SessionMgrClientTest.__revision__=ndg.security.test.sessionMgrClient.SessionMgrClientTest-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.__revision__=ndg.security.test.sessionMgrClient-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.ca.__revision__=ndg.security.test.sessionMgrClient.ca-module.html#__revision__,Variable ndg.security.test.wsSecurity.__revision__=ndg.security.test.wsSecurity-module.html#__revision__,Variable ndg.security.test.wsSecurity.client.__revision__=ndg.security.test.wsSecurity.client-module.html#__revision__,Variable ndg.security.test.wsSecurity.server.__revision__=ndg.security.test.wsSecurity.server-module.html#__revision__"><a title="ndg.__revision__ 
     62<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-docstring">"""NDG Attribute Authority server side code</tt> </tt> 
     63<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     64<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring">handles security user attribute (role) allocation</tt> </tt> 
     65<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     66<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-docstring">NERC Data Grid Project</tt> </tt> 
     67<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt> 
     68<a name="L7"></a><tt class="py-lineno">  7</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> 
     69<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-name">__date__</tt> <tt class="py-op">=</tt> <tt class="py-string">"15/04/05"</tt> </tt> 
     70<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-name">__copyright__</tt> <tt class="py-op">=</tt> <tt class="py-string">"(C) 2007 STFC &amp; NERC"</tt> </tt> 
     71<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> \ </tt> 
     72<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-string">"""This software may be distributed under the terms of the Q Public </tt> </tt> 
     73<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-string">License, version 1.0 or later."""</tt> </tt> 
     74<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-name">__contact__</tt> <tt class="py-op">=</tt> <tt class="py-string">"P.J.Kershaw@rl.ac.uk"</tt> </tt> 
     75<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable ndg.__revision__=ndg-module.html#__revision__,Variable ndg.security.__revision__=ndg.security-module.html#__revision__,Variable ndg.security.__revision__=ndg.security-module.html#__revision__,Variable ndg.security.client.LogClient.__revision__=ndg.security.client.LogClient-module.html#__revision__,Variable ndg.security.client.SimpleCAClient.__revision__=ndg.security.client.SimpleCAClient-module.html#__revision__,Variable ndg.security.client.__revision__=ndg.security.client-module.html#__revision__,Variable ndg.security.client.ndgSessionClient.__revision__=ndg.security.client.ndgSessionClient-module.html#__revision__,Variable ndg.security.common.AttAuthority.__revision__=ndg.security.common.AttAuthority-module.html#__revision__,Variable ndg.security.common.AttCert.__revision__=ndg.security.common.AttCert-module.html#__revision__,Variable ndg.security.common.CredWallet.__revision__=ndg.security.common.CredWallet-module.html#__revision__,Variable ndg.security.common.SQLObject.__revision__=ndg.security.common.SQLObject-module.html#__revision__,Variable ndg.security.common.SecurityCGI.__revision__=ndg.security.common.SecurityCGI-module.html#__revision__,Variable ndg.security.common.SessionMgr.__revision__=ndg.security.common.SessionMgr-module.html#__revision__,Variable ndg.security.common.X509.__revision__=ndg.security.common.X509-module.html#__revision__,Variable ndg.security.common.XMLSec.__revision__=ndg.security.common.XMLSec-module.html#__revision__,Variable ndg.security.common.__revision__=ndg.security.common-module.html#__revision__,Variable ndg.security.common.authz.__revision__=ndg.security.common.authz-module.html#__revision__,Variable ndg.security.common.authz.pdp.__revision__=ndg.security.common.authz.pdp-module.html#__revision__,Variable ndg.security.common.authz.pdp.browse.__revision__=ndg.security.common.authz.pdp.browse-module.html#__revision__,Variable ndg.security.common.authz.pdp.proftp.__revision__=ndg.security.common.authz.pdp.proftp-module.html#__revision__,Variable ndg.security.common.authz.pep.__revision__=ndg.security.common.authz.pep-module.html#__revision__,Variable ndg.security.common.ca.__revision__=ndg.security.common.ca-module.html#__revision__,Variable ndg.security.common.gatekeeper.__revision__=ndg.security.common.gatekeeper-module.html#__revision__,Variable ndg.security.common.logService.__revision__=ndg.security.common.logService-module.html#__revision__,Variable ndg.security.common.logService.log_services_server.__revision__=ndg.security.common.logService.log_services_server-module.html#__revision__,Variable ndg.security.common.m2CryptoSSLUtility.__revision__=ndg.security.common.m2CryptoSSLUtility-module.html#__revision__,Variable ndg.security.common.openssl.__revision__=ndg.security.common.openssl-module.html#__revision__,Variable ndg.security.common.pylons.security_util.__revision__=ndg.security.common.pylons.security_util-module.html#__revision__,Variable ndg.security.common.saml.__revision__=ndg.security.common.saml-module.html#__revision__,Variable ndg.security.common.sessionCookie.__revision__=ndg.security.common.sessionCookie-module.html#__revision__,Variable ndg.security.common.utils.ClassFactory.__revision__=ndg.security.common.utils.ClassFactory-module.html#__revision__,Variable ndg.security.common.utils.ConfigFileParsers.__revision__=ndg.security.common.utils.ConfigFileParsers-module.html#__revision__,Variable ndg.security.common.wssecurity.BaseSignatureHandler.__revision__=ndg.security.common.wssecurity.BaseSignatureHandler-module.html#__revision__,Variable ndg.security.common.wssecurity.__revision__=ndg.security.common.wssecurity-module.html#__revision__,Variable ndg.security.common.wssecurity.dom.__revision__=ndg.security.common.wssecurity.dom-module.html#__revision__,Variable ndg.security.common.wssecurity.etree.__revision__=ndg.security.common.wssecurity.etree-module.html#__revision__,Variable ndg.security.common.xmlsec.__revision__=ndg.security.common.xmlsec-module.html#__revision__,Variable ndg.security.common.xmlsec.dom.__revision__=ndg.security.common.xmlsec.dom-module.html#__revision__,Variable ndg.security.common.xmlsec.etree.__revision__=ndg.security.common.xmlsec.etree-module.html#__revision__,Variable ndg.security.common.zsi_utils.httpproxy.__revision__=ndg.security.common.zsi_utils.httpproxy-module.html#__revision__,Variable ndg.security.server.AttAuthority.__revision__=ndg.security.server.AttAuthority-module.html#__revision__,Variable ndg.security.server.Log.__revision__=ndg.security.server.Log-module.html#__revision__,Variable ndg.security.server.SessionMgr.__revision__=ndg.security.server.SessionMgr-module.html#__revision__,Variable ndg.security.server.__revision__=ndg.security.server-module.html#__revision__,Variable ndg.security.server.authenservice.MyProxy.__revision__=ndg.security.server.authenservice.MyProxy-module.html#__revision__,Variable ndg.security.server.authenservice.__revision__=ndg.security.server.authenservice-module.html#__revision__,Variable ndg.security.server.authenservice.session_mgr_my_proxy_client.__revision__=ndg.security.server.authenservice.session_mgr_my_proxy_client-module.html#__revision__,Variable ndg.security.server.ca.__revision__=ndg.security.server.ca-module.html#__revision__,Variable ndg.security.server.conf.__revision__=ndg.security.server.conf-module.html#__revision__,Variable ndg.security.server.conf.attCertLog.__revision__=ndg.security.server.conf.attCertLog-module.html#__revision__,Variable ndg.security.server.conf.certs.__revision__=ndg.security.server.conf.certs-module.html#__revision__,Variable ndg.security.server.conf.certs.ca.__revision__=ndg.security.server.conf.certs.ca-module.html#__revision__,Variable ndg.security.server.conf.userRoles.__revision__=ndg.security.server.conf.userRoles-module.html#__revision__,Variable ndg.security.server.initCredReposDb.__revision__=ndg.security.server.initCredReposDb-module.html#__revision__,Variable ndg.security.server.log.__revision__=ndg.security.server.log-module.html#__revision__,Variable ndg.security.server.pylons.container.lib.openid_provider_util.__revision__=ndg.security.server.pylons.container.lib.openid_provider_util-module.html#__revision__,Variable ndg.security.server.share.__revision__=ndg.security.server.share-module.html#__revision__,Variable ndg.security.server.twisted.__revision__=ndg.security.server.twisted-module.html#__revision__,Variable ndg.security.server.wsgi.openid_provider.__revision__=ndg.security.server.wsgi.openid_provider-module.html#__revision__,Variable ndg.security.server.wsgi.soap.__revision__=ndg.security.server.wsgi.soap-module.html#__revision__,Variable ndg.security.server.wsgi.wssecurity.__revision__=ndg.security.server.wsgi.wssecurity-module.html#__revision__,Variable ndg.security.test.Log.LogTest.__revision__=ndg.security.test.Log.LogTest-module.html#__revision__,Variable ndg.security.test.Log.__revision__=ndg.security.test.Log-module.html#__revision__,Variable ndg.security.test.X509.X509Test.__revision__=ndg.security.test.X509.X509Test-module.html#__revision__,Variable ndg.security.test.X509.__revision__=ndg.security.test.X509-module.html#__revision__,Variable ndg.security.test.XMLSecDoc.__revision__=ndg.security.test.XMLSecDoc-module.html#__revision__,Variable ndg.security.test.XMLSecDoc.xmlSecDocTest.__revision__=ndg.security.test.XMLSecDoc.xmlSecDocTest-module.html#__revision__,Variable ndg.security.test.__revision__=ndg.security.test-module.html#__revision__,Variable ndg.security.test.attAuthority.AttAuthorityClientTest.__revision__=ndg.security.test.attAuthority.AttAuthorityClientTest-module.html#__revision__,Variable ndg.security.test.attAuthority.__revision__=ndg.security.test.attAuthority-module.html#__revision__,Variable ndg.security.test.attAuthority.attCertLog.__revision__=ndg.security.test.attAuthority.attCertLog-module.html#__revision__,Variable ndg.security.test.attAuthority.ca.__revision__=ndg.security.test.attAuthority.ca-module.html#__revision__,Variable ndg.security.test.attAuthority.siteAServer.__revision__=ndg.security.test.attAuthority.siteAServer-module.html#__revision__,Variable ndg.security.test.attAuthority.siteAUserRoles.__revision__=ndg.security.test.attAuthority.siteAUserRoles-module.html#__revision__,Variable ndg.security.test.attAuthority.siteBServer.__revision__=ndg.security.test.attAuthority.siteBServer-module.html#__revision__,Variable ndg.security.test.attAuthority.siteBUserRoles.__revision__=ndg.security.test.attAuthority.siteBUserRoles-module.html#__revision__,Variable ndg.security.test.attCert.AttCertTest.__revision__=ndg.security.test.attCert.AttCertTest-module.html#__revision__,Variable ndg.security.test.attCert.__revision__=ndg.security.test.attCert-module.html#__revision__,Variable ndg.security.test.authenservice.__revision__=ndg.security.test.authenservice-module.html#__revision__,Variable ndg.security.test.authenservice.test_authen_service.__revision__=ndg.security.test.authenservice.test_authen_service-module.html#__revision__,Variable ndg.security.test.authz.pdp.testProftPDP.__revision__=ndg.security.test.authz.pdp.testProftPDP-module.html#__revision__,Variable ndg.security.test.ca.__revision__=ndg.security.test.ca-module.html#__revision__,Variable ndg.security.test.ca.caClientTest.__revision__=ndg.security.test.ca.caClientTest-module.html#__revision__,Variable ndg.security.test.myProxy.MyProxyClientTest.__revision__=ndg.security.test.myProxy.MyProxyClientTest-module.html#__revision__,Variable ndg.security.test.myProxy.__revision__=ndg.security.test.myProxy-module.html#__revision__,Variable ndg.security.test.saml.__revision__=ndg.security.test.saml-module.html#__revision__,Variable ndg.security.test.sessionCookie.SessionCookieTest.__revision__=ndg.security.test.sessionCookie.SessionCookieTest-module.html#__revision__,Variable ndg.security.test.sessionCookie.__revision__=ndg.security.test.sessionCookie-module.html#__revision__,Variable ndg.security.test.sessionMgr.__revision__=ndg.security.test.sessionMgr-module.html#__revision__,Variable ndg.security.test.sessionMgr.ca.__revision__=ndg.security.test.sessionMgr.ca-module.html#__revision__,Variable ndg.security.test.sessionMgr.test.__revision__=ndg.security.test.sessionMgr.test-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.SessionMgrClientTest.__revision__=ndg.security.test.sessionMgrClient.SessionMgrClientTest-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.__revision__=ndg.security.test.sessionMgrClient-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.ca.__revision__=ndg.security.test.sessionMgrClient.ca-module.html#__revision__,Variable ndg.security.test.sessionMgrClient.server.__revision__=ndg.security.test.sessionMgrClient.server-module.html#__revision__,Variable ndg.security.test.wsSecurity.__revision__=ndg.security.test.wsSecurity-module.html#__revision__,Variable ndg.security.test.wsSecurity.client.__revision__=ndg.security.test.wsSecurity.client-module.html#__revision__,Variable ndg.security.test.wsSecurity.server.__revision__=ndg.security.test.wsSecurity.server-module.html#__revision__,Variable ndg.security.test.xmlsec.__revision__=ndg.security.test.xmlsec-module.html#__revision__,Variable ndg.security.test.xmlsec.dom.__revision__=ndg.security.test.xmlsec.dom-module.html#__revision__,Variable ndg.security.test.xmlsec.etree.test_etree.__revision__=ndg.security.test.xmlsec.etree.test_etree-module.html#__revision__"><a title="ndg.__revision__ 
     76ndg.security.__revision__ 
    7677ndg.security.__revision__ 
    7778ndg.security.client.LogClient.__revision__ 
     
    8485ndg.security.common.SQLObject.__revision__ 
    8586ndg.security.common.SecurityCGI.__revision__ 
    86 ndg.security.common.SessionCookie.__revision__ 
    8787ndg.security.common.SessionMgr.__revision__ 
    8888ndg.security.common.X509.__revision__ 
    8989ndg.security.common.XMLSec.__revision__ 
    9090ndg.security.common.__revision__ 
     91ndg.security.common.authz.__revision__ 
     92ndg.security.common.authz.pdp.__revision__ 
     93ndg.security.common.authz.pdp.browse.__revision__ 
     94ndg.security.common.authz.pdp.proftp.__revision__ 
     95ndg.security.common.authz.pep.__revision__ 
    9196ndg.security.common.ca.__revision__ 
    9297ndg.security.common.gatekeeper.__revision__ 
     
    95100ndg.security.common.m2CryptoSSLUtility.__revision__ 
    96101ndg.security.common.openssl.__revision__ 
     102ndg.security.common.pylons.security_util.__revision__ 
     103ndg.security.common.saml.__revision__ 
    97104ndg.security.common.sessionCookie.__revision__ 
    98 ndg.security.common.wsSecurity.__revision__ 
     105ndg.security.common.utils.ClassFactory.__revision__ 
     106ndg.security.common.utils.ConfigFileParsers.__revision__ 
     107ndg.security.common.wssecurity.BaseSignatureHandler.__revision__ 
     108ndg.security.common.wssecurity.__revision__ 
     109ndg.security.common.wssecurity.dom.__revision__ 
     110ndg.security.common.wssecurity.etree.__revision__ 
     111ndg.security.common.xmlsec.__revision__ 
     112ndg.security.common.xmlsec.dom.__revision__ 
     113ndg.security.common.xmlsec.etree.__revision__ 
     114ndg.security.common.zsi_utils.httpproxy.__revision__ 
    99115ndg.security.server.AttAuthority.__revision__ 
    100116ndg.security.server.Log.__revision__ 
    101 ndg.security.server.MyProxy.__revision__ 
    102117ndg.security.server.SessionMgr.__revision__ 
    103118ndg.security.server.__revision__ 
     119ndg.security.server.authenservice.MyProxy.__revision__ 
     120ndg.security.server.authenservice.__revision__ 
     121ndg.security.server.authenservice.session_mgr_my_proxy_client.__revision__ 
    104122ndg.security.server.ca.__revision__ 
    105123ndg.security.server.conf.__revision__ 
     
    110128ndg.security.server.initCredReposDb.__revision__ 
    111129ndg.security.server.log.__revision__ 
     130ndg.security.server.pylons.container.lib.openid_provider_util.__revision__ 
    112131ndg.security.server.share.__revision__ 
    113132ndg.security.server.twisted.__revision__ 
     133ndg.security.server.wsgi.openid_provider.__revision__ 
     134ndg.security.server.wsgi.soap.__revision__ 
     135ndg.security.server.wsgi.wssecurity.__revision__ 
    114136ndg.security.test.Log.LogTest.__revision__ 
    115137ndg.security.test.Log.__revision__ 
    116 ndg.security.test.SecurityCGItest.__revision__ 
    117138ndg.security.test.X509.X509Test.__revision__ 
    118139ndg.security.test.X509.__revision__ 
     
    124145ndg.security.test.attAuthority.attCertLog.__revision__ 
    125146ndg.security.test.attAuthority.ca.__revision__ 
     147ndg.security.test.attAuthority.siteAServer.__revision__ 
    126148ndg.security.test.attAuthority.siteAUserRoles.__revision__ 
     149ndg.security.test.attAuthority.siteBServer.__revision__ 
    127150ndg.security.test.attAuthority.siteBUserRoles.__revision__ 
    128151ndg.security.test.attCert.AttCertTest.__revision__ 
    129152ndg.security.test.attCert.__revision__ 
     153ndg.security.test.authenservice.__revision__ 
     154ndg.security.test.authenservice.test_authen_service.__revision__ 
     155ndg.security.test.authz.pdp.testProftPDP.__revision__ 
    130156ndg.security.test.ca.__revision__ 
    131157ndg.security.test.ca.caClientTest.__revision__ 
    132 ndg.security.test.gatekeeper.TestGatekeeperResrc.__revision__ 
    133 ndg.security.test.gatekeeper.__revision__ 
    134158ndg.security.test.myProxy.MyProxyClientTest.__revision__ 
    135159ndg.security.test.myProxy.__revision__ 
     160ndg.security.test.saml.__revision__ 
    136161ndg.security.test.sessionCookie.SessionCookieTest.__revision__ 
    137162ndg.security.test.sessionCookie.__revision__ 
     
    142167ndg.security.test.sessionMgrClient.__revision__ 
    143168ndg.security.test.sessionMgrClient.ca.__revision__ 
     169ndg.security.test.sessionMgrClient.server.__revision__ 
    144170ndg.security.test.wsSecurity.__revision__ 
    145171ndg.security.test.wsSecurity.client.__revision__ 
    146 ndg.security.test.wsSecurity.server.__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: __init__.py 3135 2007-12-12 14:40:04Z pjkersha $'</tt> </tt> 
    147 <a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"> </tt> 
    148 <a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Variable ZSI.schema.SchemaInstanceType.types=ZSI.schema.SchemaInstanceType-class.html#types"><a title="ZSI.schema.SchemaInstanceType.types" class="py-name" href="#" onclick="return doclink('link-1', 'types', 'link-1');">types</a></tt> </tt> 
    149 <a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"> </tt> 
    150 <a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"> </tt> 
    151 <a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-comment"># Create unique names for attribute certificates</tt> </tt> 
    152 <a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">tempfile</tt> </tt> 
    153 <a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> 
    154 <a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"> </tt> 
    155 <a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-comment"># Alter system path for dynamic import of user roles class</tt> </tt> 
    156 <a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt> 
    157 <a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"> </tt> 
    158 <a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-comment"># For parsing of properties file</tt> </tt> 
    159 <a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-comment"># python 2.5</tt> </tt> 
    160 <a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">etree</tt> <tt class="py-keyword">import</tt> <tt class="py-name">cElementTree</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ElementTree</tt> </tt> 
    161 <a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> 
    162 <a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line">    <tt class="py-comment"># if you've installed it yourself it comes this way</tt> </tt> 
    163 <a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">import</tt> <tt class="py-name">cElementTree</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ElementTree</tt> </tt> 
    164 <a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"> </tt> 
    165 <a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> 
    166 <a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable ndg.security.common.CredWallet.log=ndg.security.common.CredWallet-module.html#log,Variable ndg.security.common.gatekeeper.log=ndg.security.common.gatekeeper-module.html#log,Class ndg.security.common.logService.log_services_server.log=ndg.security.common.logService.log_services_server.log-class.html,Variable ndg.security.server.AttAuthority.log=ndg.security.server.AttAuthority-module.html#log,Variable ndg.security.server.Log.log=ndg.security.server.Log-module.html#log,Variable ndg.security.server.SessionMgr.log=ndg.security.server.SessionMgr-module.html#log,Package ndg.security.server.log=ndg.security.server.log-module.html,Variable ndg.security.test.Log.LogTest.log=ndg.security.test.Log.LogTest-module.html#log,Variable ndg.security.test.sessionMgr.test.log=ndg.security.test.sessionMgr.test-module.html#log"><a title="ndg.security.common.CredWallet.log 
     172ndg.security.test.wsSecurity.server.__revision__ 
     173ndg.security.test.xmlsec.__revision__ 
     174ndg.security.test.xmlsec.dom.__revision__ 
     175ndg.security.test.xmlsec.etree.test_etree.__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: __init__.py 4158 2008-09-01 13:37:03Z cbyrom $'</tt> </tt> 
     176<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt> 
     177<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Variable ZSI.schema.SchemaInstanceType.types=ZSI.schema.SchemaInstanceType-class.html#types"><a title="ZSI.schema.SchemaInstanceType.types" class="py-name" href="#" onclick="return doclink('link-1', 'types', 'link-1');">types</a></tt> </tt> 
     178<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt> 
     179<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"> </tt> 
     180<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"># Create unique names for attribute certificates</tt> </tt> 
     181<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">tempfile</tt> </tt> 
     182<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt> 
     183<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt> 
     184<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"># Alter system path for dynamic import of user roles class</tt> </tt> 
     185<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt> 
     186<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt> 
     187<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-comment"># For parsing of properties file</tt> </tt> 
     188<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> <tt class="py-comment"># python 2.5</tt> </tt> 
     189<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Variable ndg.security.test.xmlsec.etree.parsetest.xml=ndg.security.test.xmlsec.etree.parsetest-module.html#xml"><a title="ndg.security.test.xmlsec.etree.parsetest.xml" class="py-name" href="#" onclick="return doclink('link-2', 'xml', 'link-2');">xml</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module ndg.security.common.wssecurity.etree=ndg.security.common.wssecurity.etree-module.html,Module ndg.security.common.xmlsec.etree=ndg.security.common.xmlsec.etree-module.html,Package ndg.security.test.xmlsec.etree=ndg.security.test.xmlsec.etree-module.html"><a title="ndg.security.common.wssecurity.etree 
     190ndg.security.common.xmlsec.etree 
     191ndg.security.test.xmlsec.etree" class="py-name" href="#" onclick="return doclink('link-3', 'etree', 'link-3');">etree</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">cElementTree</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ElementTree</tt> </tt> 
     192<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt> 
     193<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">    <tt class="py-comment"># if you've installed it yourself it comes this way</tt> </tt> 
     194<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">import</tt> <tt class="py-name">cElementTree</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ElementTree</tt> </tt> 
     195<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt> 
     196<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt> 
     197<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware-module.html#log,Variable ndg.security.client.ssoclient.ssoclient.controllers.logout.log=ndg.security.client.ssoclient.ssoclient.controllers.logout-module.html#log,Variable ndg.security.client.ssoclient.ssoclient.controllers.test1.log=ndg.security.client.ssoclient.ssoclient.controllers.test1-module.html#log,Variable ndg.security.client.ssoclient.ssoclient.lib.base.log=ndg.security.client.ssoclient.ssoclient.lib.base-module.html#log,Variable ndg.security.client.ssoclient.ssoclient.websetup.log=ndg.security.client.ssoclient.ssoclient.websetup-module.html#log,Variable ndg.security.common.AttAuthority.log=ndg.security.common.AttAuthority-module.html#log,Variable ndg.security.common.CredWallet.log=ndg.security.common.CredWallet-module.html#log,Variable ndg.security.common.SessionMgr.log=ndg.security.common.SessionMgr-module.html#log,Variable ndg.security.common.authz.pdp.browse.log=ndg.security.common.authz.pdp.browse-module.html#log,Variable ndg.security.common.authz.pdp.log=ndg.security.common.authz.pdp-module.html#log,Variable ndg.security.common.authz.pdp.proftp.log=ndg.security.common.authz.pdp.proftp-module.html#log,Variable ndg.security.common.authz.pep.log=ndg.security.common.authz.pep-module.html#log,Variable ndg.security.common.gatekeeper.log=ndg.security.common.gatekeeper-module.html#log,Class ndg.security.common.logService.log_services_server.log=ndg.security.common.logService.log_services_server.log-class.html,Variable ndg.security.common.pylons.security_util.log=ndg.security.common.pylons.security_util-module.html#log,Variable ndg.security.common.saml.log=ndg.security.common.saml-module.html#log,Variable ndg.security.common.utils.ClassFactory.log=ndg.security.common.utils.ClassFactory-module.html#log,Variable ndg.security.common.utils.ConfigFileParsers.log=ndg.security.common.utils.ConfigFileParsers-module.html#log,Variable ndg.security.common.wssecurity.BaseSignatureHandler.log=ndg.security.common.wssecurity.BaseSignatureHandler-module.html#log,Variable ndg.security.common.wssecurity.dom.log=ndg.security.common.wssecurity.dom-module.html#log,Variable ndg.security.common.wssecurity.etree.log=ndg.security.common.wssecurity.etree-module.html#log,Variable ndg.security.common.xmlsec.etree.log=ndg.security.common.xmlsec.etree-module.html#log,Variable ndg.security.server.AttAuthority.log=ndg.security.server.AttAuthority-module.html#log,Variable ndg.security.server.Log.log=ndg.security.server.Log-module.html#log,Variable ndg.security.server.SessionMgr.log=ndg.security.server.SessionMgr-module.html#log,Package ndg.security.server.log=ndg.security.server.log-module.html,Variable ndg.security.server.pylons.container.controllers.hello.log=ndg.security.server.pylons.container.controllers.hello-module.html#log,Variable ndg.security.server.pylons.container.lib.openid_provider_util.log=ndg.security.server.pylons.container.lib.openid_provider_util-module.html#log,Variable ndg.security.server.pylons.container.websetup.log=ndg.security.server.pylons.container.websetup-module.html#log,Variable ndg.security.server.sso.sso.config.middleware.log=ndg.security.server.sso.sso.config.middleware-module.html#log,Variable ndg.security.server.sso.sso.config.ssoServiceMiddleware.log=ndg.security.server.sso.sso.config.ssoServiceMiddleware-module.html#log,Variable ndg.security.server.sso.sso.controllers.login.log=ndg.security.server.sso.sso.controllers.login-module.html#log,Variable ndg.security.server.sso.sso.controllers.logout.log=ndg.security.server.sso.sso.controllers.logout-module.html#log,Variable ndg.security.server.sso.sso.controllers.test1.log=ndg.security.server.sso.sso.controllers.test1-module.html#log,Variable ndg.security.server.sso.sso.controllers.wayf.log=ndg.security.server.sso.sso.controllers.wayf-module.html#log,Variable ndg.security.server.sso.sso.lib.base.log=ndg.security.server.sso.sso.lib.base-module.html#log,Variable ndg.security.server.sso.sso.lib.openid_util.log=ndg.security.server.sso.sso.lib.openid_util-module.html#log,Variable ndg.security.server.sso.sso.websetup.log=ndg.security.server.sso.sso.websetup-module.html#log,Variable ndg.security.server.wsgi.openid_provider.log=ndg.security.server.wsgi.openid_provider-module.html#log,Variable ndg.security.server.wsgi.soap.log=ndg.security.server.wsgi.soap-module.html#log,Variable ndg.security.server.wsgi.wssecurity.log=ndg.security.server.wsgi.wssecurity-module.html#log,Variable ndg.security.server.zsi.attributeauthority.log=ndg.security.server.zsi.attributeauthority-module.html#log,Variable ndg.security.test.Log.LogTest.log=ndg.security.test.Log.LogTest-module.html#log,Variable ndg.security.test.authenservice.test_authen_service.log=ndg.security.test.authenservice.test_authen_service-module.html#log,Variable ndg.security.test.wsSecurity.server.echoServer.log=ndg.security.test.wsSecurity.server.echoServer-module.html#log,Variable ndg.security.test.xmlsec.etree.test_etree.log=ndg.security.test.xmlsec.etree.test_etree-module.html#log"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     198ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     199ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     200ndg.security.client.ssoclient.ssoclient.lib.base.log 
     201ndg.security.client.ssoclient.ssoclient.websetup.log 
     202ndg.security.common.AttAuthority.log 
     203ndg.security.common.CredWallet.log 
     204ndg.security.common.SessionMgr.log 
     205ndg.security.common.authz.pdp.browse.log 
     206ndg.security.common.authz.pdp.log 
     207ndg.security.common.authz.pdp.proftp.log 
     208ndg.security.common.authz.pep.log 
    167209ndg.security.common.gatekeeper.log 
    168210ndg.security.common.logService.log_services_server.log 
     211ndg.security.common.pylons.security_util.log 
     212ndg.security.common.saml.log 
     213ndg.security.common.utils.ClassFactory.log 
     214ndg.security.common.utils.ConfigFileParsers.log 
     215ndg.security.common.wssecurity.BaseSignatureHandler.log 
     216ndg.security.common.wssecurity.dom.log 
     217ndg.security.common.wssecurity.etree.log 
     218ndg.security.common.xmlsec.etree.log 
    169219ndg.security.server.AttAuthority.log 
    170220ndg.security.server.Log.log 
    171221ndg.security.server.SessionMgr.log 
    172222ndg.security.server.log 
     223ndg.security.server.pylons.container.controllers.hello.log 
     224ndg.security.server.pylons.container.lib.openid_provider_util.log 
     225ndg.security.server.pylons.container.websetup.log 
     226ndg.security.server.sso.sso.config.middleware.log 
     227ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     228ndg.security.server.sso.sso.controllers.login.log 
     229ndg.security.server.sso.sso.controllers.logout.log 
     230ndg.security.server.sso.sso.controllers.test1.log 
     231ndg.security.server.sso.sso.controllers.wayf.log 
     232ndg.security.server.sso.sso.lib.base.log 
     233ndg.security.server.sso.sso.lib.openid_util.log 
     234ndg.security.server.sso.sso.websetup.log 
     235ndg.security.server.wsgi.openid_provider.log 
     236ndg.security.server.wsgi.soap.log 
     237ndg.security.server.wsgi.wssecurity.log 
     238ndg.security.server.zsi.attributeauthority.log 
    173239ndg.security.test.Log.LogTest.log 
    174 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">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> 
    175 <a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"> </tt> 
    176 <a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-comment"># X509 Certificate handling</tt> </tt> 
    177 <a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Package ndg=ndg-module.html"><a title="ndg" class="py-name" href="#" onclick="return doclink('link-3', 'ndg', 'link-3');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Package ndg.security=ndg.security-module.html"><a title="ndg.security" class="py-name" href="#" onclick="return doclink('link-4', 'security', 'link-4');">security</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Package ndg.security.common=ndg.security.common-module.html"><a title="ndg.security.common" class="py-name" href="#" onclick="return doclink('link-5', 'common', 'link-5');">common</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module ndg.security.common.X509=ndg.security.common.X509-module.html,Package ndg.security.test.X509=ndg.security.test.X509-module.html"><a title="ndg.security.common.X509 
    178 ndg.security.test.X509" class="py-name" href="#" onclick="return doclink('link-6', 'X509', 'link-6');">X509</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> 
    179 <a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"> </tt> 
    180 <a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment"># NDG Attribute Certificate</tt> </tt> 
    181 <a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="ndg" class="py-name" href="#" onclick="return doclink('link-7', 'ndg', 'link-3');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="ndg.security" class="py-name" href="#" onclick="return doclink('link-8', 'security', 'link-4');">security</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="ndg.security.common" class="py-name" href="#" onclick="return doclink('link-9', 'common', 'link-5');">common</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module ndg.security.common.AttCert=ndg.security.common.AttCert-module.html,Class ndg.security.common.AttCert.AttCert=ndg.security.common.AttCert.AttCert-class.html"><a title="ndg.security.common.AttCert 
    182 ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-10', 'AttCert', 'link-10');">AttCert</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> 
    183 <a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"> </tt> 
    184 <a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"> </tt> 
    185 <a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
    186 <a name="AttAuthorityError"></a><div id="AttAuthorityError-def"><a name="L44"></a><tt class="py-lineno">  44</tt> <a class="py-toggle" href="#" id="AttAuthorityError-toggle" onclick="return toggle('AttAuthorityError');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityError-class.html">AttAuthorityError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    187 </div><div id="AttAuthorityError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AttAuthorityError-expanded"><a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exception handling for NDG Attribute Authority class."""</tt> </tt> 
    188 <a name="AttAuthorityError.__init__"></a><div id="AttAuthorityError.__init__-def"><a name="L46"></a><tt class="py-lineno">  46</tt> <a class="py-toggle" href="#" id="AttAuthorityError.__init__-toggle" onclick="return toggle('AttAuthorityError.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityError-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">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    189 </div><div id="AttAuthorityError.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthorityError.__init__-expanded"><a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">        <tt id="link-11" class="py-name"><a title="ndg.security.common.CredWallet.log 
     240ndg.security.test.authenservice.test_authen_service.log 
     241ndg.security.test.wsSecurity.server.echoServer.log 
     242ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-4', 'log', 'link-4');">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> 
     243<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt> 
     244<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"># X509 Certificate handling</tt> </tt> 
     245<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name" targets="Package ndg=ndg-module.html,Class ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg-class.html,Package ndg.security.client.ssoclient.ssoclient.templates.ndg=ndg.security.client.ssoclient.ssoclient.templates.ndg-module.html,Package ndg.security.server.pylons.container.templates.bak.ndg=ndg.security.server.pylons.container.templates.bak.ndg-module.html,Package ndg.security.server.pylons.container.templates.ndg=ndg.security.server.pylons.container.templates.ndg-module.html,Class ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg=ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg-class.html,Package ndg.security.server.sso.sso.templates.ndg=ndg.security.server.sso.sso.templates.ndg-module.html"><a title="ndg 
     246ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg 
     247ndg.security.client.ssoclient.ssoclient.templates.ndg 
     248ndg.security.server.pylons.container.templates.bak.ndg 
     249ndg.security.server.pylons.container.templates.ndg 
     250ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg 
     251ndg.security.server.sso.sso.templates.ndg" class="py-name" href="#" onclick="return doclink('link-5', 'ndg', 'link-5');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Package ndg.security=ndg.security-module.html,Package ndg.security=ndg.security-module.html,Class ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security-class.html,Package ndg.security.client.ssoclient.ssoclient.templates.ndg.security=ndg.security.client.ssoclient.ssoclient.templates.ndg.security-module.html,Package ndg.security.server.pylons.container.templates.bak.ndg.security=ndg.security.server.pylons.container.templates.bak.ndg.security-module.html,Package ndg.security.server.pylons.container.templates.ndg.security=ndg.security.server.pylons.container.templates.ndg.security-module.html,Class ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security=ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security-class.html,Package ndg.security.server.sso.sso.templates.ndg.security=ndg.security.server.sso.sso.templates.ndg.security-module.html"><a title="ndg.security 
     252ndg.security 
     253ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security 
     254ndg.security.client.ssoclient.ssoclient.templates.ndg.security 
     255ndg.security.server.pylons.container.templates.bak.ndg.security 
     256ndg.security.server.pylons.container.templates.ndg.security 
     257ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security 
     258ndg.security.server.sso.sso.templates.ndg.security" class="py-name" href="#" onclick="return doclink('link-6', 'security', 'link-6');">security</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Class ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common-class.html,Package ndg.security.common=ndg.security.common-module.html,Class ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common=ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common-class.html"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common 
     259ndg.security.common 
     260ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common" class="py-name" href="#" onclick="return doclink('link-7', 'common', 'link-7');">common</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Variable ZSI.wstools.Namespaces.OASIS.X509TOKEN.X509=ZSI.wstools.Namespaces.OASIS.X509TOKEN-class.html#X509,Module ndg.security.common.X509=ndg.security.common.X509-module.html,Package ndg.security.test.X509=ndg.security.test.X509-module.html"><a title="ZSI.wstools.Namespaces.OASIS.X509TOKEN.X509 
     261ndg.security.common.X509 
     262ndg.security.test.X509" class="py-name" href="#" onclick="return doclink('link-8', 'X509', 'link-8');">X509</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> 
     263<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt> 
     264<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"># NDG Attribute Certificate</tt> </tt> 
     265<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="ndg 
     266ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg 
     267ndg.security.client.ssoclient.ssoclient.templates.ndg 
     268ndg.security.server.pylons.container.templates.bak.ndg 
     269ndg.security.server.pylons.container.templates.ndg 
     270ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg 
     271ndg.security.server.sso.sso.templates.ndg" class="py-name" href="#" onclick="return doclink('link-9', 'ndg', 'link-5');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="ndg.security 
     272ndg.security 
     273ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security 
     274ndg.security.client.ssoclient.ssoclient.templates.ndg.security 
     275ndg.security.server.pylons.container.templates.bak.ndg.security 
     276ndg.security.server.pylons.container.templates.ndg.security 
     277ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security 
     278ndg.security.server.sso.sso.templates.ndg.security" class="py-name" href="#" onclick="return doclink('link-10', 'security', 'link-6');">security</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common 
     279ndg.security.common 
     280ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common" class="py-name" href="#" onclick="return doclink('link-11', 'common', 'link-7');">common</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module ndg.security.common.AttCert=ndg.security.common.AttCert-module.html,Class ndg.security.common.AttCert.AttCert=ndg.security.common.AttCert.AttCert-class.html"><a title="ndg.security.common.AttCert 
     281ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-12', 'AttCert', 'link-12');">AttCert</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> </tt> 
     282<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt> 
     283<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="ndg 
     284ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg 
     285ndg.security.client.ssoclient.ssoclient.templates.ndg 
     286ndg.security.server.pylons.container.templates.bak.ndg 
     287ndg.security.server.pylons.container.templates.ndg 
     288ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg 
     289ndg.security.server.sso.sso.templates.ndg" class="py-name" href="#" onclick="return doclink('link-13', 'ndg', 'link-5');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="ndg.security 
     290ndg.security 
     291ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security 
     292ndg.security.client.ssoclient.ssoclient.templates.ndg.security 
     293ndg.security.server.pylons.container.templates.bak.ndg.security 
     294ndg.security.server.pylons.container.templates.ndg.security 
     295ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security 
     296ndg.security.server.sso.sso.templates.ndg.security" class="py-name" href="#" onclick="return doclink('link-14', 'security', 'link-6');">security</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common 
     297ndg.security.common 
     298ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common" class="py-name" href="#" onclick="return doclink('link-15', 'common', 'link-7');">common</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package ndg.security.common.utils=ndg.security.common.utils-module.html"><a title="ndg.security.common.utils" class="py-name" href="#" onclick="return doclink('link-16', 'utils', 'link-16');">utils</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Module ndg.security.common.utils.ConfigFileParsers=ndg.security.common.utils.ConfigFileParsers-module.html"><a title="ndg.security.common.utils.ConfigFileParsers" class="py-name" href="#" onclick="return doclink('link-17', 'ConfigFileParsers', 'link-17');">ConfigFileParsers</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Function ndg.security.common.utils.ConfigFileParsers.readAndValidateProperties()=ndg.security.common.utils.ConfigFileParsers-module.html#readAndValidateProperties"><a title="ndg.security.common.utils.ConfigFileParsers.readAndValidateProperties" class="py-name" href="#" onclick="return doclink('link-18', 'readAndValidateProperties', 'link-18');">readAndValidateProperties</a></tt> </tt> 
     299<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="ndg 
     300ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg 
     301ndg.security.client.ssoclient.ssoclient.templates.ndg 
     302ndg.security.server.pylons.container.templates.bak.ndg 
     303ndg.security.server.pylons.container.templates.ndg 
     304ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg 
     305ndg.security.server.sso.sso.templates.ndg" class="py-name" href="#" onclick="return doclink('link-19', 'ndg', 'link-5');">ndg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="ndg.security 
     306ndg.security 
     307ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security 
     308ndg.security.client.ssoclient.ssoclient.templates.ndg.security 
     309ndg.security.server.pylons.container.templates.bak.ndg.security 
     310ndg.security.server.pylons.container.templates.ndg.security 
     311ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security 
     312ndg.security.server.sso.sso.templates.ndg.security" class="py-name" href="#" onclick="return doclink('link-20', 'security', 'link-6');">security</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.ndg.security.common 
     313ndg.security.common 
     314ndg.security.server.sso.sso.config.ssoServiceMiddleware.ndg.security.common" class="py-name" href="#" onclick="return doclink('link-21', 'common', 'link-7');">common</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="ndg.security.common.utils" class="py-name" href="#" onclick="return doclink('link-22', 'utils', 'link-16');">utils</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Module ndg.security.common.utils.ClassFactory=ndg.security.common.utils.ClassFactory-module.html"><a title="ndg.security.common.utils.ClassFactory" class="py-name" href="#" onclick="return doclink('link-23', 'ClassFactory', 'link-23');">ClassFactory</a></tt> <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Function ndg.security.common.utils.ClassFactory.instantiateClass()=ndg.security.common.utils.ClassFactory-module.html#instantiateClass"><a title="ndg.security.common.utils.ClassFactory.instantiateClass" class="py-name" href="#" onclick="return doclink('link-24', 'instantiateClass', 'link-24');">instantiateClass</a></tt> </tt> 
     315<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt> 
     316<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
     317<a name="AttAuthorityError"></a><div id="AttAuthorityError-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="AttAuthorityError-toggle" onclick="return toggle('AttAuthorityError');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityError-class.html">AttAuthorityError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     318</div><div id="AttAuthorityError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AttAuthorityError-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-docstring">"""Exception handling for NDG Attribute Authority class."""</tt> </tt> 
     319<a name="AttAuthorityError.__init__"></a><div id="AttAuthorityError.__init__-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="AttAuthorityError.__init__-toggle" onclick="return toggle('AttAuthorityError.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityError-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">msg</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     320</div><div id="AttAuthorityError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthorityError.__init__-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt id="link-25" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     321ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     322ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     323ndg.security.client.ssoclient.ssoclient.lib.base.log 
     324ndg.security.client.ssoclient.ssoclient.websetup.log 
     325ndg.security.common.AttAuthority.log 
     326ndg.security.common.CredWallet.log 
     327ndg.security.common.SessionMgr.log 
     328ndg.security.common.authz.pdp.browse.log 
     329ndg.security.common.authz.pdp.log 
     330ndg.security.common.authz.pdp.proftp.log 
     331ndg.security.common.authz.pep.log 
    190332ndg.security.common.gatekeeper.log 
    191333ndg.security.common.logService.log_services_server.log 
     334ndg.security.common.pylons.security_util.log 
     335ndg.security.common.saml.log 
     336ndg.security.common.utils.ClassFactory.log 
     337ndg.security.common.utils.ConfigFileParsers.log 
     338ndg.security.common.wssecurity.BaseSignatureHandler.log 
     339ndg.security.common.wssecurity.dom.log 
     340ndg.security.common.wssecurity.etree.log 
     341ndg.security.common.xmlsec.etree.log 
    192342ndg.security.server.AttAuthority.log 
    193343ndg.security.server.Log.log 
    194344ndg.security.server.SessionMgr.log 
    195345ndg.security.server.log 
     346ndg.security.server.pylons.container.controllers.hello.log 
     347ndg.security.server.pylons.container.lib.openid_provider_util.log 
     348ndg.security.server.pylons.container.websetup.log 
     349ndg.security.server.sso.sso.config.middleware.log 
     350ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     351ndg.security.server.sso.sso.controllers.login.log 
     352ndg.security.server.sso.sso.controllers.logout.log 
     353ndg.security.server.sso.sso.controllers.test1.log 
     354ndg.security.server.sso.sso.controllers.wayf.log 
     355ndg.security.server.sso.sso.lib.base.log 
     356ndg.security.server.sso.sso.lib.openid_util.log 
     357ndg.security.server.sso.sso.websetup.log 
     358ndg.security.server.wsgi.openid_provider.log 
     359ndg.security.server.wsgi.soap.log 
     360ndg.security.server.wsgi.wssecurity.log 
     361ndg.security.server.zsi.attributeauthority.log 
    196362ndg.security.test.Log.LogTest.log 
    197 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-11', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.error()=ndg.security.client.LogClient.LogClient-class.html#error,Method ndg.security.common.logService.log_services.logBindingSOAP.error()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#error"><a title="ndg.security.client.LogClient.LogClient.error 
    198 ndg.security.common.logService.log_services.logBindingSOAP.error" class="py-name" href="#" onclick="return doclink('link-12', 'error', 'link-12');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> 
    199 <a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line">        <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method ndg.security.client.GatekeeperClient.GatekeeperClient.__init__()=ndg.security.client.GatekeeperClient.GatekeeperClient-class.html#__init__,Method ndg.security.client.GatekeeperClient.GatekeeperClientError.__init__()=ndg.security.client.GatekeeperClient.GatekeeperClientError-class.html#__init__,Method ndg.security.client.LogClient.LogClient.__init__()=ndg.security.client.LogClient.LogClient-class.html#__init__,Method ndg.security.client.LogClient.LogClientError.__init__()=ndg.security.client.LogClient.LogClientError-class.html#__init__,Method ndg.security.client.LogClient.SOAPHandler.__init__()=ndg.security.client.LogClient.SOAPHandler-class.html#__init__,Method ndg.security.client.SimpleCAClient.SimpleCAClient.__init__()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#__init__,Method ndg.security.client.SimpleCAClient.SimpleCAClientError.__init__()=ndg.security.client.SimpleCAClient.SimpleCAClientError-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthorityClient.__init__()=ndg.security.common.AttAuthority.AttAuthorityClient-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP.__init__()=ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.HostInfo_Def.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.HostInfo_Def-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCertResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCertResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCert_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCert_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509CertResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509CertResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509Cert_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509Cert_Dec-class.html#__init__,Method ndg.security.common.AttCert.AttCert.__init__()=ndg.security.common.AttCert.AttCert-class.html#__init__,Method ndg.security.common.AttCert.AttCertReadOnlyDict.__init__()=ndg.security.common.AttCert.AttCertReadOnlyDict-class.html#__init__,Method ndg.security.common.CredWallet.CredRepos.__init__()=ndg.security.common.CredWallet.CredRepos-class.html#__init__,Method ndg.security.common.CredWallet.CredWallet.__init__()=ndg.security.common.CredWallet.CredWallet-class.html#__init__,Method ndg.security.common.CredWallet.CredWalletAttributeRequestDenied.__init__()=ndg.security.common.CredWallet.CredWalletAttributeRequestDenied-class.html#__init__,Method ndg.security.common.CredWallet.NullCredRepos.__init__()=ndg.security.common.CredWallet.NullCredRepos-class.html#__init__,Method ndg.security.common.CredWallet._CredWalletException.__init__()=ndg.security.common.CredWallet._CredWalletException-class.html#__init__,Method ndg.security.common.SQLObject.CredRepos.__init__()=ndg.security.common.SQLObject.CredRepos-class.html#__init__,Method ndg.security.common.SecurityCGI.IdentityProviderSecurityCGI.__init__()=ndg.security.common.SecurityCGI.IdentityProviderSecurityCGI-class.html#__init__,Method ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI.__init__()=ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI-class.html#__init__,Method ndg.security.common.SecurityCGI._SecurityCGI.__init__()=ndg.security.common.SecurityCGI._SecurityCGI-class.html#__init__,Method ndg.security.common.SessionCookie.SessionCookie.__init__()=ndg.security.common.SessionCookie.SessionCookie-class.html#__init__,Method ndg.security.common.SessionMgr.AttributeRequestDenied.__init__()=ndg.security.common.SessionMgr.AttributeRequestDenied-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgrClient.__init__()=ndg.security.common.SessionMgr.SessionMgrClient-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services.SessionMgrBindingSOAP.__init__()=ndg.security.common.SessionMgr.SessionMgr_services.SessionMgrBindingSOAP-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connectResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connectResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connect_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connect_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnectResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnectResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnect_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnect_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCertResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCertResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCert_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCert_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatusResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatusResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatus_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatus_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509CertResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509CertResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509Cert_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509Cert_Dec-class.html#__init__,Method ndg.security.common.X509.X500DN.__init__()=ndg.security.common.X509.X500DN-class.html#__init__,Method ndg.security.common.X509.X509Cert.__init__()=ndg.security.common.X509.X509Cert-class.html#__init__,Method ndg.security.common.X509.X509Stack.__init__()=ndg.security.common.X509.X509Stack-class.html#__init__,Method ndg.security.common.XMLSec.XMLSecDoc.__init__()=ndg.security.common.XMLSec.XMLSecDoc-class.html#__init__,Method ndg.security.common.ca.CertificateAuthorityClient.__init__()=ndg.security.common.ca.CertificateAuthorityClient-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP.__init__()=ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRLResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRLResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRL_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRL_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCertResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCertResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCert_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCert_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCertResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCertResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCert_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCert_Dec-class.html#__init__,Method ndg.security.common.gatekeeper.Gatekeeper.__init__()=ndg.security.common.gatekeeper.Gatekeeper-class.html#__init__,Method ndg.security.common.gatekeeper.GatekeeperError.__init__()=ndg.security.common.gatekeeper.GatekeeperError-class.html#__init__,Method ndg.security.common.gatekeeper.GatekeeperResrc.__init__()=ndg.security.common.gatekeeper.GatekeeperResrc-class.html#__init__,Method ndg.security.common.gatekeeper.PullModelHandler.__init__()=ndg.security.common.gatekeeper.PullModelHandler-class.html#__init__,Method ndg.security.common.logService.log_services.debugRequest.__init__()=ndg.security.common.logService.log_services.debugRequest-class.html#__init__,Method ndg.security.common.logService.log_services.debugRequestWrapper.__init__()=ndg.security.common.logService.log_services.debugRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.debugResponse.__init__()=ndg.security.common.logService.log_services.debugResponse-class.html#__init__,Method ndg.security.common.logService.log_services.debugResponseWrapper.__init__()=ndg.security.common.logService.log_services.debugResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.errorRequest.__init__()=ndg.security.common.logService.log_services.errorRequest-class.html#__init__,Method ndg.security.common.logService.log_services.errorRequestWrapper.__init__()=ndg.security.common.logService.log_services.errorRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.errorResponse.__init__()=ndg.security.common.logService.log_services.errorResponse-class.html#__init__,Method ndg.security.common.logService.log_services.errorResponseWrapper.__init__()=ndg.security.common.logService.log_services.errorResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.infoRequest.__init__()=ndg.security.common.logService.log_services.infoRequest-class.html#__init__,Method ndg.security.common.logService.log_services.infoRequestWrapper.__init__()=ndg.security.common.logService.log_services.infoRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.infoResponse.__init__()=ndg.security.common.logService.log_services.infoResponse-class.html#__init__,Method ndg.security.common.logService.log_services.infoResponseWrapper.__init__()=ndg.security.common.logService.log_services.infoResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.logBindingSOAP.__init__()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#__init__,Method ndg.security.common.logService.log_services.warningRequest.__init__()=ndg.security.common.logService.log_services.warningRequest-class.html#__init__,Method ndg.security.common.logService.log_services.warningRequestWrapper.__init__()=ndg.security.common.logService.log_services.warningRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.warningResponse.__init__()=ndg.security.common.logService.log_services.warningResponse-class.html#__init__,Method ndg.security.common.logService.log_services.warningResponseWrapper.__init__()=ndg.security.common.logService.log_services.warningResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services_server.log.__init__()=ndg.security.common.logService.log_services_server.log-class.html#__init__,Method ndg.security.common.m2CryptoSSLUtility.HTTPSConnection.__init__()=ndg.security.common.m2CryptoSSLUtility.HTTPSConnection-class.html#__init__,Method ndg.security.common.m2CryptoSSLUtility.HostCheck.__init__()=ndg.security.common.m2CryptoSSLUtility.HostCheck-class.html#__init__,Method ndg.security.common.openssl.OpenSSLConfig.__init__()=ndg.security.common.openssl.OpenSSLConfig-class.html#__init__,Method ndg.security.common.sessionCookie.SessionCookie.__init__()=ndg.security.common.sessionCookie.SessionCookie-class.html#__init__,Method ndg.security.common.wsSecurity.EncryptionHandler.__init__()=ndg.security.common.wsSecurity.EncryptionHandler-class.html#__init__,Method ndg.security.common.wsSecurity.SignatureHandler.__init__()=ndg.security.common.wsSecurity.SignatureHandler-class.html#__init__,Method ndg.security.server.AttAuthority.AAUserRoles.__init__()=ndg.security.server.AttAuthority.AAUserRoles-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthority.__init__()=ndg.security.server.AttAuthority.AttAuthority-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthorityError.__init__()=ndg.security.server.AttAuthority.AttAuthorityError-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthority_services_server.AttAuthorityService.__init__()=ndg.security.server.AttAuthority.AttAuthority_services_server.AttAuthorityService-class.html#__init__,Method ndg.security.server.AttAuthority.AttCertLog.__init__()=ndg.security.server.AttAuthority.AttCertLog-class.html#__init__,Method ndg.security.server.Log.Log.__init__()=ndg.security.server.Log.Log-class.html#__init__,Method ndg.security.server.MyProxy.CmdLineClient.__init__()=ndg.security.server.MyProxy.CmdLineClient-class.html#__init__,Method ndg.security.server.MyProxy.MyProxyClient.__init__()=ndg.security.server.MyProxy.MyProxyClient-class.html#__init__,Method ndg.security.server.MyProxy._HostCheck.__init__()=ndg.security.server.MyProxy._HostCheck-class.html#__init__,Method ndg.security.server.SessionMgr.SessionMgr.__init__()=ndg.security.server.SessionMgr.SessionMgr-class.html#__init__,Method ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService.__init__()=ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService-class.html#__init__,Method ndg.security.server.SessionMgr.UserSession.__init__()=ndg.security.server.SessionMgr.UserSession-class.html#__init__,Method ndg.security.server.SessionMgr._SessionMgrException.__init__()=ndg.security.server.SessionMgr._SessionMgrException-class.html#__init__,Method ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService.__init__()=ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService-class.html#__init__,Method ndg.security.server.ca.SimpleCA.__init__()=ndg.security.server.ca.SimpleCA-class.html#__init__,Method ndg.security.server.conf.userRoles.UserRoles.__init__()=ndg.security.server.conf.userRoles.UserRoles-class.html#__init__,Method ndg.security.test.Log.LogTest.LogTestSuite.__init__()=ndg.security.test.Log.LogTest.LogTestSuite-class.html#__init__,Method ndg.security.test.SecurityCGItest.SecurityCGItestSuite.__init__()=ndg.security.test.SecurityCGItest.SecurityCGItestSuite-class.html#__init__,Method ndg.security.test.X509.X509Test.X509TestSuite.__init__()=ndg.security.test.X509.X509Test.X509TestSuite-class.html#__init__,Method ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite.__init__()=ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite-class.html#__init__,Method ndg.security.test.attAuthority.AttAuthorityClientTest.AttAuthorityClientTestSuite.__init__()=ndg.security.test.attAuthority.AttAuthorityClientTest.AttAuthorityClientTestSuite-class.html#__init__,Method ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.__init__()=ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles-class.html#__init__,Method ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.__init__()=ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles-class.html#__init__,Method ndg.security.test.attCert.AttCertTest.AttCertTestSuite.__init__()=ndg.security.test.attCert.AttCertTest.AttCertTestSuite-class.html#__init__,Method ndg.security.test.ca.caClientTest.CAClientTestSuite.__init__()=ndg.security.test.ca.caClientTest.CAClientTestSuite-class.html#__init__,Method ndg.security.test.gatekeeper.TestGatekeeperResrc.TestGatekeeperResrc.__init__()=ndg.security.test.gatekeeper.TestGatekeeperResrc.TestGatekeeperResrc-class.html#__init__,Method ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite.__init__()=ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite-class.html#__init__,Method ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite.__init__()=ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite-class.html#__init__,Method ndg.security.test.sessionMgr.test.SessionMgrTestSuite.__init__()=ndg.security.test.sessionMgr.test.SessionMgrTestSuite-class.html#__init__,Method ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite.__init__()=ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite-class.html#__init__,Method ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP.__init__()=ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP-class.html#__init__,Method ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite.__init__()=ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP.__init__()=ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService.__init__()=ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.EchoResponse_Dec.__init__()=ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.EchoResponse_Dec-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.Echo_Dec.__init__()=ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.Echo_Dec-class.html#__init__,Method ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__()=ndg.security.test.wsSecurity.server.echoServer.EchoService-class.html#__init__"><a title="ndg.security.client.GatekeeperClient.GatekeeperClient.__init__ 
     363ndg.security.test.authenservice.test_authen_service.log 
     364ndg.security.test.wsSecurity.server.echoServer.log 
     365ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-25', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.error()=ndg.security.client.LogClient.LogClient-class.html#error,Module ndg.security.client.ssoclient.ssoclient.controllers.error=ndg.security.client.ssoclient.ssoclient.controllers.error-module.html,Method ndg.security.common.logService.log_services.logBindingSOAP.error()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#error,Module ndg.security.server.pylons.container.controllers.error=ndg.security.server.pylons.container.controllers.error-module.html,Module ndg.security.server.sso.sso.controllers.error=ndg.security.server.sso.sso.controllers.error-module.html"><a title="ndg.security.client.LogClient.LogClient.error 
     366ndg.security.client.ssoclient.ssoclient.controllers.error 
     367ndg.security.common.logService.log_services.logBindingSOAP.error 
     368ndg.security.server.pylons.container.controllers.error 
     369ndg.security.server.sso.sso.controllers.error" class="py-name" href="#" onclick="return doclink('link-26', 'error', 'link-26');">error</a></tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> 
     370<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method ndg.security.client.GatekeeperClient.GatekeeperClient.__init__()=ndg.security.client.GatekeeperClient.GatekeeperClient-class.html#__init__,Method ndg.security.client.GatekeeperClient.GatekeeperClientError.__init__()=ndg.security.client.GatekeeperClient.GatekeeperClientError-class.html#__init__,Method ndg.security.client.LogClient.LogClient.__init__()=ndg.security.client.LogClient.LogClient-class.html#__init__,Method ndg.security.client.LogClient.LogClientError.__init__()=ndg.security.client.LogClient.LogClientError-class.html#__init__,Method ndg.security.client.LogClient.SOAPHandler.__init__()=ndg.security.client.LogClient.SOAPHandler-class.html#__init__,Method ndg.security.client.SimpleCAClient.SimpleCAClient.__init__()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#__init__,Method ndg.security.client.SimpleCAClient.SimpleCAClientError.__init__()=ndg.security.client.SimpleCAClient.SimpleCAClientError-class.html#__init__,Method ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.__init__()=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig-class.html#__init__,Method ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOMiddleware.__init__()=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOMiddleware-class.html#__init__,Method ndg.security.client.ssoclient.ssoclient.lib.app_globals.Globals.__init__()=ndg.security.client.ssoclient.ssoclient.lib.app_globals.Globals-class.html#__init__,Method ndg.security.client.ssoclient.ssoclient.tests.TestController.__init__()=ndg.security.client.ssoclient.ssoclient.tests.TestController-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthorityClient.__init__()=ndg.security.common.AttAuthority.AttAuthorityClient-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP.__init__()=ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.HostInfo_Def.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.HostInfo_Def-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAllHostsInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCertResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCertResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCert_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getAttCert_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getHostInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfoResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfoResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfo_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getTrustedHostInfo_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509CertResponse_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509CertResponse_Dec-class.html#__init__,Method ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509Cert_Dec.__init__()=ndg.security.common.AttAuthority.AttAuthority_services_types.ns0.getX509Cert_Dec-class.html#__init__,Method ndg.security.common.AttCert.AttCert.__init__()=ndg.security.common.AttCert.AttCert-class.html#__init__,Method ndg.security.common.AttCert.AttCertReadOnlyDict.__init__()=ndg.security.common.AttCert.AttCertReadOnlyDict-class.html#__init__,Method ndg.security.common.CredWallet.CredRepos.__init__()=ndg.security.common.CredWallet.CredRepos-class.html#__init__,Method ndg.security.common.CredWallet.CredWallet.__init__()=ndg.security.common.CredWallet.CredWallet-class.html#__init__,Method ndg.security.common.CredWallet.CredWalletAttributeRequestDenied.__init__()=ndg.security.common.CredWallet.CredWalletAttributeRequestDenied-class.html#__init__,Method ndg.security.common.CredWallet.NullCredRepos.__init__()=ndg.security.common.CredWallet.NullCredRepos-class.html#__init__,Method ndg.security.common.CredWallet._CredWalletException.__init__()=ndg.security.common.CredWallet._CredWalletException-class.html#__init__,Method ndg.security.common.SQLObject.CredRepos.__init__()=ndg.security.common.SQLObject.CredRepos-class.html#__init__,Method ndg.security.common.SecurityCGI.IdentityProviderSecurityCGI.__init__()=ndg.security.common.SecurityCGI.IdentityProviderSecurityCGI-class.html#__init__,Method ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI.__init__()=ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI-class.html#__init__,Method ndg.security.common.SecurityCGI._SecurityCGI.__init__()=ndg.security.common.SecurityCGI._SecurityCGI-class.html#__init__,Method ndg.security.common.SessionMgr.AttributeRequestDenied.__init__()=ndg.security.common.SessionMgr.AttributeRequestDenied-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgrClient.__init__()=ndg.security.common.SessionMgr.SessionMgrClient-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services.SessionMgrBindingSOAP.__init__()=ndg.security.common.SessionMgr.SessionMgr_services.SessionMgrBindingSOAP-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connectResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connectResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connect_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.connect_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnectResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnectResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnect_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.disconnect_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCertResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCertResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCert_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getAttCert_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatusResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatusResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatus_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getSessionStatus_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509CertResponse_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509CertResponse_Dec-class.html#__init__,Method ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509Cert_Dec.__init__()=ndg.security.common.SessionMgr.SessionMgr_services_types.ns0.getX509Cert_Dec-class.html#__init__,Method ndg.security.common.X509.X500DN.__init__()=ndg.security.common.X509.X500DN-class.html#__init__,Method ndg.security.common.X509.X509Cert.__init__()=ndg.security.common.X509.X509Cert-class.html#__init__,Method ndg.security.common.X509.X509Stack.__init__()=ndg.security.common.X509.X509Stack-class.html#__init__,Method ndg.security.common.XMLSec.XMLSecDoc.__init__()=ndg.security.common.XMLSec.XMLSecDoc-class.html#__init__,Method ndg.security.common.authz.pdp.PDPInterface.__init__()=ndg.security.common.authz.pdp.PDPInterface-class.html#__init__,Method ndg.security.common.authz.pdp.PDPMissingResourceConstraints.__init__()=ndg.security.common.authz.pdp.PDPMissingResourceConstraints-class.html#__init__,Method ndg.security.common.authz.pdp.PDPMissingUserHandleAttr.__init__()=ndg.security.common.authz.pdp.PDPMissingUserHandleAttr-class.html#__init__,Method ndg.security.common.authz.pdp.PDPUnknownResourceType.__init__()=ndg.security.common.authz.pdp.PDPUnknownResourceType-class.html#__init__,Method ndg.security.common.authz.pdp.PDPUserAccessDenied.__init__()=ndg.security.common.authz.pdp.PDPUserAccessDenied-class.html#__init__,Method ndg.security.common.authz.pdp.PDPUserInsufficientPrivileges.__init__()=ndg.security.common.authz.pdp.PDPUserInsufficientPrivileges-class.html#__init__,Method ndg.security.common.authz.pdp.PDPUserNotLoggedIn.__init__()=ndg.security.common.authz.pdp.PDPUserNotLoggedIn-class.html#__init__,Method ndg.security.common.authz.pdp.browse.AttributeCertificateRequestError.__init__()=ndg.security.common.authz.pdp.browse.AttributeCertificateRequestError-class.html#__init__,Method ndg.security.common.authz.pdp.browse.BrowsePDP.__init__()=ndg.security.common.authz.pdp.browse.BrowsePDP-class.html#__init__,Method ndg.security.common.authz.pdp.browse.InitSessionCtxError.__init__()=ndg.security.common.authz.pdp.browse.InitSessionCtxError-class.html#__init__,Method ndg.security.common.authz.pdp.browse.InvalidAttributeCertificate.__init__()=ndg.security.common.authz.pdp.browse.InvalidAttributeCertificate-class.html#__init__,Method ndg.security.common.authz.pdp.browse.InvalidSessionMsg.__init__()=ndg.security.common.authz.pdp.browse.InvalidSessionMsg-class.html#__init__,Method ndg.security.common.authz.pdp.browse.SessionExpiredMsg.__init__()=ndg.security.common.authz.pdp.browse.SessionExpiredMsg-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.AttributeCertificateRequestError.__init__()=ndg.security.common.authz.pdp.proftp.AttributeCertificateRequestError-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.FTPAccess.__init__()=ndg.security.common.authz.pdp.proftp.FTPAccess-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.InitSessionCtxError.__init__()=ndg.security.common.authz.pdp.proftp.InitSessionCtxError-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.InvalidAttributeCertificate.__init__()=ndg.security.common.authz.pdp.proftp.InvalidAttributeCertificate-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.InvalidSessionMsg.__init__()=ndg.security.common.authz.pdp.proftp.InvalidSessionMsg-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.ProftpPDP.__init__()=ndg.security.common.authz.pdp.proftp.ProftpPDP-class.html#__init__,Method ndg.security.common.authz.pdp.proftp.SessionExpiredMsg.__init__()=ndg.security.common.authz.pdp.proftp.SessionExpiredMsg-class.html#__init__,Method ndg.security.common.authz.pep.PEP.__init__()=ndg.security.common.authz.pep.PEP-class.html#__init__,Method ndg.security.common.ca.CertificateAuthorityClient.__init__()=ndg.security.common.ca.CertificateAuthorityClient-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP.__init__()=ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRLResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRLResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRL_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.getCRL_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCertResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCertResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCert_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.issueCert_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCertResponse_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCertResponse_Dec-class.html#__init__,Method ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCert_Dec.__init__()=ndg.security.common.ca.CertificateAuthority_services_types.ns0.revokeCert_Dec-class.html#__init__,Method ndg.security.common.gatekeeper.Gatekeeper.__init__()=ndg.security.common.gatekeeper.Gatekeeper-class.html#__init__,Method ndg.security.common.gatekeeper.GatekeeperError.__init__()=ndg.security.common.gatekeeper.GatekeeperError-class.html#__init__,Method ndg.security.common.gatekeeper.GatekeeperResrc.__init__()=ndg.security.common.gatekeeper.GatekeeperResrc-class.html#__init__,Method ndg.security.common.gatekeeper.PullModelHandler.__init__()=ndg.security.common.gatekeeper.PullModelHandler-class.html#__init__,Method ndg.security.common.logService.log_services.debugRequest.__init__()=ndg.security.common.logService.log_services.debugRequest-class.html#__init__,Method ndg.security.common.logService.log_services.debugRequestWrapper.__init__()=ndg.security.common.logService.log_services.debugRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.debugResponse.__init__()=ndg.security.common.logService.log_services.debugResponse-class.html#__init__,Method ndg.security.common.logService.log_services.debugResponseWrapper.__init__()=ndg.security.common.logService.log_services.debugResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.errorRequest.__init__()=ndg.security.common.logService.log_services.errorRequest-class.html#__init__,Method ndg.security.common.logService.log_services.errorRequestWrapper.__init__()=ndg.security.common.logService.log_services.errorRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.errorResponse.__init__()=ndg.security.common.logService.log_services.errorResponse-class.html#__init__,Method ndg.security.common.logService.log_services.errorResponseWrapper.__init__()=ndg.security.common.logService.log_services.errorResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.infoRequest.__init__()=ndg.security.common.logService.log_services.infoRequest-class.html#__init__,Method ndg.security.common.logService.log_services.infoRequestWrapper.__init__()=ndg.security.common.logService.log_services.infoRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.infoResponse.__init__()=ndg.security.common.logService.log_services.infoResponse-class.html#__init__,Method ndg.security.common.logService.log_services.infoResponseWrapper.__init__()=ndg.security.common.logService.log_services.infoResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.logBindingSOAP.__init__()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#__init__,Method ndg.security.common.logService.log_services.warningRequest.__init__()=ndg.security.common.logService.log_services.warningRequest-class.html#__init__,Method ndg.security.common.logService.log_services.warningRequestWrapper.__init__()=ndg.security.common.logService.log_services.warningRequestWrapper-class.html#__init__,Method ndg.security.common.logService.log_services.warningResponse.__init__()=ndg.security.common.logService.log_services.warningResponse-class.html#__init__,Method ndg.security.common.logService.log_services.warningResponseWrapper.__init__()=ndg.security.common.logService.log_services.warningResponseWrapper-class.html#__init__,Method ndg.security.common.logService.log_services_server.log.__init__()=ndg.security.common.logService.log_services_server.log-class.html#__init__,Method ndg.security.common.m2CryptoSSLUtility.HTTPSConnection.__init__()=ndg.security.common.m2CryptoSSLUtility.HTTPSConnection-class.html#__init__,Method ndg.security.common.m2CryptoSSLUtility.HostCheck.__init__()=ndg.security.common.m2CryptoSSLUtility.HostCheck-class.html#__init__,Method ndg.security.common.openssl.OpenSSLConfig.__init__()=ndg.security.common.openssl.OpenSSLConfig-class.html#__init__,Method ndg.security.common.pylons.security_util.SecuritySession.__init__()=ndg.security.common.pylons.security_util.SecuritySession-class.html#__init__,Method ndg.security.common.saml.AttributeAssertion.__init__()=ndg.security.common.saml.AttributeAssertion-class.html#__init__,Method ndg.security.common.saml.AttributeAssertionReadOnlyDict.__init__()=ndg.security.common.saml.AttributeAssertionReadOnlyDict-class.html#__init__,Method ndg.security.common.sessionCookie.SessionCookie.__init__()=ndg.security.common.sessionCookie.SessionCookie-class.html#__init__,Method ndg.security.common.utils.ClassFactory.ClassFactoryError.__init__()=ndg.security.common.utils.ClassFactory.ClassFactoryError-class.html#__init__,Method ndg.security.common.wssecurity.BaseSignatureHandler.BaseSignatureHandler.__init__()=ndg.security.common.wssecurity.BaseSignatureHandler.BaseSignatureHandler-class.html#__init__,Method ndg.security.common.wssecurity.BaseSignatureHandler.WSSecurityError.__init__()=ndg.security.common.wssecurity.BaseSignatureHandler.WSSecurityError-class.html#__init__,Method ndg.security.common.wssecurity.WSSecurityConfig.__init__()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#__init__,Method ndg.security.common.wssecurity.dom.EncryptionHandler.__init__()=ndg.security.common.wssecurity.dom.EncryptionHandler-class.html#__init__,Method ndg.security.common.xmlsec.etree.XMLSecDoc.__init__()=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#__init__,Method ndg.security.common.zsi_utils.elementtreeproxy.ElementTreeProxy.__init__()=ndg.security.common.zsi_utils.elementtreeproxy.ElementTreeProxy-class.html#__init__,Method ndg.security.common.zsi_utils.httpproxy.ProxyHTTPConnection.__init__()=ndg.security.common.zsi_utils.httpproxy.ProxyHTTPConnection-class.html#__init__,Method ndg.security.server.AttAuthority.AAUserRoles.__init__()=ndg.security.server.AttAuthority.AAUserRoles-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthority.__init__()=ndg.security.server.AttAuthority.AttAuthority-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthorityError.__init__()=ndg.security.server.AttAuthority.AttAuthorityError-class.html#__init__,Method ndg.security.server.AttAuthority.AttAuthority_services_server.AttAuthorityService.__init__()=ndg.security.server.AttAuthority.AttAuthority_services_server.AttAuthorityService-class.html#__init__,Method ndg.security.server.AttAuthority.AttCertLog.__init__()=ndg.security.server.AttAuthority.AttCertLog-class.html#__init__,Method ndg.security.server.Log.Log.__init__()=ndg.security.server.Log.Log-class.html#__init__,Method ndg.security.server.SessionMgr.AbstractAutheNService.__init__()=ndg.security.server.SessionMgr.AbstractAutheNService-class.html#__init__,Method ndg.security.server.SessionMgr.SessionMgr.__init__()=ndg.security.server.SessionMgr.SessionMgr-class.html#__init__,Method ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService.__init__()=ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService-class.html#__init__,Method ndg.security.server.SessionMgr.UserSession.__init__()=ndg.security.server.SessionMgr.UserSession-class.html#__init__,Method ndg.security.server.SessionMgr._SessionMgrException.__init__()=ndg.security.server.SessionMgr._SessionMgrException-class.html#__init__,Method ndg.security.server.authenservice.MyProxy.CmdLineClient.__init__()=ndg.security.server.authenservice.MyProxy.CmdLineClient-class.html#__init__,Method ndg.security.server.authenservice.MyProxy.MyProxyClient.__init__()=ndg.security.server.authenservice.MyProxy.MyProxyClient-class.html#__init__,Method ndg.security.server.authenservice.MyProxy._HostCheck.__init__()=ndg.security.server.authenservice.MyProxy._HostCheck-class.html#__init__,Method ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService.__init__()=ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService-class.html#__init__,Method ndg.security.server.ca.SimpleCA.__init__()=ndg.security.server.ca.SimpleCA-class.html#__init__,Method ndg.security.server.conf.userRoles.UserRoles.__init__()=ndg.security.server.conf.userRoles.UserRoles-class.html#__init__,Method ndg.security.server.pylons.container.lib.app_globals.Globals.__init__()=ndg.security.server.pylons.container.lib.app_globals.Globals-class.html#__init__,Method ndg.security.server.pylons.container.lib.openid_provider_util.State.__init__()=ndg.security.server.pylons.container.lib.openid_provider_util.State-class.html#__init__,Method ndg.security.server.pylons.container.tests.TestController.__init__()=ndg.security.server.pylons.container.tests.TestController-class.html#__init__,Method ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOMiddleware.__init__()=ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOMiddleware-class.html#__init__,Method ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.__init__()=ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig-class.html#__init__,Method ndg.security.server.sso.sso.lib.app_globals.Globals.__init__()=ndg.security.server.sso.sso.lib.app_globals.Globals-class.html#__init__,Method ndg.security.server.sso.sso.tests.TestController.__init__()=ndg.security.server.sso.sso.tests.TestController-class.html#__init__,Method ndg.security.server.wsgi.openid_provider.OpenIDProviderMiddleware.__init__()=ndg.security.server.wsgi.openid_provider.OpenIDProviderMiddleware-class.html#__init__,Method ndg.security.server.wsgi.openid_provider.RenderingInterface.__init__()=ndg.security.server.wsgi.openid_provider.RenderingInterface-class.html#__init__,Method ndg.security.server.wsgi.soap.SOAPBindingMiddleware.__init__()=ndg.security.server.wsgi.soap.SOAPBindingMiddleware-class.html#__init__,Method ndg.security.server.wsgi.soap.SOAPMiddleware.__init__()=ndg.security.server.wsgi.soap.SOAPMiddleware-class.html#__init__,Method ndg.security.server.wsgi.wssecurity.WSSecurityFilter.__init__()=ndg.security.server.wsgi.wssecurity.WSSecurityFilter-class.html#__init__,Method ndg.security.server.wsgi.wssecurity.WSSecuritySignatureFilter.__init__()=ndg.security.server.wsgi.wssecurity.WSSecuritySignatureFilter-class.html#__init__,Method ndg.security.server.zsi.attributeauthority.AttributeAuthorityWS.__init__()=ndg.security.server.zsi.attributeauthority.AttributeAuthorityWS-class.html#__init__,Method ndg.security.test.Log.LogTest.LogTestSuite.__init__()=ndg.security.test.Log.LogTest.LogTestSuite-class.html#__init__,Method ndg.security.test.X509.X509Test.X509TestSuite.__init__()=ndg.security.test.X509.X509Test.X509TestSuite-class.html#__init__,Method ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite.__init__()=ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite-class.html#__init__,Method ndg.security.test.attAuthority.AttAuthorityClientTest.AttAuthorityClientTestSuite.__init__()=ndg.security.test.attAuthority.AttAuthorityClientTest.AttAuthorityClientTestSuite-class.html#__init__,Method ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.__init__()=ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles-class.html#__init__,Method ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.__init__()=ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles-class.html#__init__,Method ndg.security.test.attCert.AttCertTest.AttCertTestSuite.__init__()=ndg.security.test.attCert.AttCertTest.AttCertTestSuite-class.html#__init__,Method ndg.security.test.authenservice.test_authen_service.TestAutheNService.__init__()=ndg.security.test.authenservice.test_authen_service.TestAutheNService-class.html#__init__,Method ndg.security.test.authz.pdp.testProftPDP.ProftpPDPTestSuite.__init__()=ndg.security.test.authz.pdp.testProftPDP.ProftpPDPTestSuite-class.html#__init__,Method ndg.security.test.ca.caClientTest.CAClientTestSuite.__init__()=ndg.security.test.ca.caClientTest.CAClientTestSuite-class.html#__init__,Method ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite.__init__()=ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite-class.html#__init__,Method ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite.__init__()=ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite-class.html#__init__,Method ndg.security.test.sessionMgr.test.SessionMgrTestSuite.__init__()=ndg.security.test.sessionMgr.test.SessionMgrTestSuite-class.html#__init__,Method ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite.__init__()=ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite-class.html#__init__,Method ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP.__init__()=ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP-class.html#__init__,Method ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.EchoResponse_Dec.__init__()=ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.EchoResponse_Dec-class.html#__init__,Method ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.Echo_Dec.__init__()=ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.Echo_Dec-class.html#__init__,Method ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite.__init__()=ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP.__init__()=ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP-class.html#__init__,Method ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService.__init__()=ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService-class.html#__init__,Method ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__()=ndg.security.test.wsSecurity.server.echoServer.EchoService-class.html#__init__,Method ndg.security.test.xmlsec.etree.test_etree.XMLSecDocTestSuite.__init__()=ndg.security.test.xmlsec.etree.test_etree.XMLSecDocTestSuite-class.html#__init__"><a title="ndg.security.client.GatekeeperClient.GatekeeperClient.__init__ 
    200371ndg.security.client.GatekeeperClient.GatekeeperClientError.__init__ 
    201372ndg.security.client.LogClient.LogClient.__init__ 
     
    204375ndg.security.client.SimpleCAClient.SimpleCAClient.__init__ 
    205376ndg.security.client.SimpleCAClient.SimpleCAClientError.__init__ 
     377ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.__init__ 
     378ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOMiddleware.__init__ 
     379ndg.security.client.ssoclient.ssoclient.lib.app_globals.Globals.__init__ 
     380ndg.security.client.ssoclient.ssoclient.tests.TestController.__init__ 
    206381ndg.security.common.AttAuthority.AttAuthorityClient.__init__ 
    207382ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP.__init__ 
     
    228403ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI.__init__ 
    229404ndg.security.common.SecurityCGI._SecurityCGI.__init__ 
    230 ndg.security.common.SessionCookie.SessionCookie.__init__ 
    231405ndg.security.common.SessionMgr.AttributeRequestDenied.__init__ 
    232406ndg.security.common.SessionMgr.SessionMgrClient.__init__ 
     
    246420ndg.security.common.X509.X509Stack.__init__ 
    247421ndg.security.common.XMLSec.XMLSecDoc.__init__ 
     422ndg.security.common.authz.pdp.PDPInterface.__init__ 
     423ndg.security.common.authz.pdp.PDPMissingResourceConstraints.__init__ 
     424ndg.security.common.authz.pdp.PDPMissingUserHandleAttr.__init__ 
     425ndg.security.common.authz.pdp.PDPUnknownResourceType.__init__ 
     426ndg.security.common.authz.pdp.PDPUserAccessDenied.__init__ 
     427ndg.security.common.authz.pdp.PDPUserInsufficientPrivileges.__init__ 
     428ndg.security.common.authz.pdp.PDPUserNotLoggedIn.__init__ 
     429ndg.security.common.authz.pdp.browse.AttributeCertificateRequestError.__init__ 
     430ndg.security.common.authz.pdp.browse.BrowsePDP.__init__ 
     431ndg.security.common.authz.pdp.browse.InitSessionCtxError.__init__ 
     432ndg.security.common.authz.pdp.browse.InvalidAttributeCertificate.__init__ 
     433ndg.security.common.authz.pdp.browse.InvalidSessionMsg.__init__ 
     434ndg.security.common.authz.pdp.browse.SessionExpiredMsg.__init__ 
     435ndg.security.common.authz.pdp.proftp.AttributeCertificateRequestError.__init__ 
     436ndg.security.common.authz.pdp.proftp.FTPAccess.__init__ 
     437ndg.security.common.authz.pdp.proftp.InitSessionCtxError.__init__ 
     438ndg.security.common.authz.pdp.proftp.InvalidAttributeCertificate.__init__ 
     439ndg.security.common.authz.pdp.proftp.InvalidSessionMsg.__init__ 
     440ndg.security.common.authz.pdp.proftp.ProftpPDP.__init__ 
     441ndg.security.common.authz.pdp.proftp.SessionExpiredMsg.__init__ 
     442ndg.security.common.authz.pep.PEP.__init__ 
    248443ndg.security.common.ca.CertificateAuthorityClient.__init__ 
    249444ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP.__init__ 
     
    279474ndg.security.common.m2CryptoSSLUtility.HostCheck.__init__ 
    280475ndg.security.common.openssl.OpenSSLConfig.__init__ 
     476ndg.security.common.pylons.security_util.SecuritySession.__init__ 
     477ndg.security.common.saml.AttributeAssertion.__init__ 
     478ndg.security.common.saml.AttributeAssertionReadOnlyDict.__init__ 
    281479ndg.security.common.sessionCookie.SessionCookie.__init__ 
    282 ndg.security.common.wsSecurity.EncryptionHandler.__init__ 
    283 ndg.security.common.wsSecurity.SignatureHandler.__init__ 
     480ndg.security.common.utils.ClassFactory.ClassFactoryError.__init__ 
     481ndg.security.common.wssecurity.BaseSignatureHandler.BaseSignatureHandler.__init__ 
     482ndg.security.common.wssecurity.BaseSignatureHandler.WSSecurityError.__init__ 
     483ndg.security.common.wssecurity.WSSecurityConfig.__init__ 
     484ndg.security.common.wssecurity.dom.EncryptionHandler.__init__ 
     485ndg.security.common.xmlsec.etree.XMLSecDoc.__init__ 
     486ndg.security.common.zsi_utils.elementtreeproxy.ElementTreeProxy.__init__ 
     487ndg.security.common.zsi_utils.httpproxy.ProxyHTTPConnection.__init__ 
    284488ndg.security.server.AttAuthority.AAUserRoles.__init__ 
    285489ndg.security.server.AttAuthority.AttAuthority.__init__ 
     
    288492ndg.security.server.AttAuthority.AttCertLog.__init__ 
    289493ndg.security.server.Log.Log.__init__ 
    290 ndg.security.server.MyProxy.CmdLineClient.__init__ 
    291 ndg.security.server.MyProxy.MyProxyClient.__init__ 
    292 ndg.security.server.MyProxy._HostCheck.__init__ 
     494ndg.security.server.SessionMgr.AbstractAutheNService.__init__ 
    293495ndg.security.server.SessionMgr.SessionMgr.__init__ 
    294496ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService.__init__ 
    295497ndg.security.server.SessionMgr.UserSession.__init__ 
    296498ndg.security.server.SessionMgr._SessionMgrException.__init__ 
     499ndg.security.server.authenservice.MyProxy.CmdLineClient.__init__ 
     500ndg.security.server.authenservice.MyProxy.MyProxyClient.__init__ 
     501ndg.security.server.authenservice.MyProxy._HostCheck.__init__ 
    297502ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService.__init__ 
    298503ndg.security.server.ca.SimpleCA.__init__ 
    299504ndg.security.server.conf.userRoles.UserRoles.__init__ 
     505ndg.security.server.pylons.container.lib.app_globals.Globals.__init__ 
     506ndg.security.server.pylons.container.lib.openid_provider_util.State.__init__ 
     507ndg.security.server.pylons.container.tests.TestController.__init__ 
     508ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOMiddleware.__init__ 
     509ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.__init__ 
     510ndg.security.server.sso.sso.lib.app_globals.Globals.__init__ 
     511ndg.security.server.sso.sso.tests.TestController.__init__ 
     512ndg.security.server.wsgi.openid_provider.OpenIDProviderMiddleware.__init__ 
     513ndg.security.server.wsgi.openid_provider.RenderingInterface.__init__ 
     514ndg.security.server.wsgi.soap.SOAPBindingMiddleware.__init__ 
     515ndg.security.server.wsgi.soap.SOAPMiddleware.__init__ 
     516ndg.security.server.wsgi.wssecurity.WSSecurityFilter.__init__ 
     517ndg.security.server.wsgi.wssecurity.WSSecuritySignatureFilter.__init__ 
     518ndg.security.server.zsi.attributeauthority.AttributeAuthorityWS.__init__ 
    300519ndg.security.test.Log.LogTest.LogTestSuite.__init__ 
    301 ndg.security.test.SecurityCGItest.SecurityCGItestSuite.__init__ 
    302520ndg.security.test.X509.X509Test.X509TestSuite.__init__ 
    303521ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite.__init__ 
     
    306524ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.__init__ 
    307525ndg.security.test.attCert.AttCertTest.AttCertTestSuite.__init__ 
     526ndg.security.test.authenservice.test_authen_service.TestAutheNService.__init__ 
     527ndg.security.test.authz.pdp.testProftPDP.ProftpPDPTestSuite.__init__ 
    308528ndg.security.test.ca.caClientTest.CAClientTestSuite.__init__ 
    309 ndg.security.test.gatekeeper.TestGatekeeperResrc.TestGatekeeperResrc.__init__ 
    310529ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite.__init__ 
    311530ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite.__init__ 
     
    313532ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite.__init__ 
    314533ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP.__init__ 
     534ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.EchoResponse_Dec.__init__ 
     535ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.Echo_Dec.__init__ 
    315536ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite.__init__ 
    316537ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP.__init__ 
    317538ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService.__init__ 
    318 ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.EchoResponse_Dec.__init__ 
    319 ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.Echo_Dec.__init__ 
    320 ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> 
    321 </div></div><a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line">         </tt> 
    322 <a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"> </tt> 
    323 <a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
    324 <a name="AttAuthorityAccessDenied"></a><div id="AttAuthorityAccessDenied-def"><a name="L52"></a><tt class="py-lineno">  52</tt> <a class="py-toggle" href="#" id="AttAuthorityAccessDenied-toggle" onclick="return toggle('AttAuthorityAccessDenied');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityAccessDenied-class.html">AttAuthorityAccessDenied</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    325 </div><div id="AttAuthorityAccessDenied-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AttAuthorityAccessDenied-expanded"><a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">    <tt class="py-docstring">"""NDG Attribute Authority - access denied exception.</tt> </tt> 
    326 <a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    327 <a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">    Raise from getAttCert method where no roles are available for the user</tt> </tt> 
    328 <a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">    but that the request is otherwise valid.  In all other error cases raise</tt> </tt> 
    329 <a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">    AttAuthorityError"""</tt>    </tt> 
    330 </div><a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"> </tt> 
    331 <a name="AttAuthorityNoTrustedHosts"></a><div id="AttAuthorityNoTrustedHosts-def"><a name="L59"></a><tt class="py-lineno">  59</tt> <a class="py-toggle" href="#" id="AttAuthorityNoTrustedHosts-toggle" onclick="return toggle('AttAuthorityNoTrustedHosts');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityNoTrustedHosts-class.html">AttAuthorityNoTrustedHosts</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    332 </div><div id="AttAuthorityNoTrustedHosts-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AttAuthorityNoTrustedHosts-expanded"><a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line">    <tt class="py-docstring">"""Raise from getTrustedHosts if there are no trusted hosts defined in</tt> </tt> 
    333 <a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">    the map configuration"""</tt> </tt> 
    334 </div><a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"> </tt> 
    335 <a name="AttAuthorityNoMatchingRoleInTrustedHosts"></a><div id="AttAuthorityNoMatchingRoleInTrustedHosts-def"><a name="L63"></a><tt class="py-lineno">  63</tt> <a class="py-toggle" href="#" id="AttAuthorityNoMatchingRoleInTrustedHosts-toggle" onclick="return toggle('AttAuthorityNoMatchingRoleInTrustedHosts');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityNoMatchingRoleInTrustedHosts-class.html">AttAuthorityNoMatchingRoleInTrustedHosts</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    336 </div><div id="AttAuthorityNoMatchingRoleInTrustedHosts-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AttAuthorityNoMatchingRoleInTrustedHosts-expanded"><a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">    <tt class="py-docstring">"""Raise from getTrustedHosts if there is no mapping to any of the </tt> </tt> 
    337 <a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">    trusted hosts for the given input role name"""</tt> </tt> 
    338 </div><a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"> </tt> 
    339 <a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"> </tt> 
    340 <a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
    341 <a name="AttAuthority"></a><div id="AttAuthority-def"><a name="L69"></a><tt class="py-lineno">  69</tt> <a class="py-toggle" href="#" id="AttAuthority-toggle" onclick="return toggle('AttAuthority');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html">AttAuthority</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    342 </div><div id="AttAuthority-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AttAuthority-expanded"><a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line">    <tt class="py-docstring">"""NDG Attribute Authority - server for allocation of user authorization</tt> </tt> 
    343 <a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">    tokens - attribute certificates.</tt> </tt> 
    344 <a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    345 <a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">    @type __validKeys: dict</tt> </tt> 
    346 <a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __validKeys: valid configuration property keywords - properties file</tt> </tt> 
    347 <a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">    must contain these</tt> </tt> 
    348 <a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    349 <a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">    @type __confDir: string</tt> </tt> 
    350 <a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __confDir: configuration directory under $NDGSEC_DIR - default location</tt> </tt> 
    351 <a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">    for properties file </tt> </tt> 
    352 <a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
    353 <a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    @type __propFileName: string</tt> </tt> 
    354 <a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __propFileName: default file name for properties file under </tt> </tt> 
    355 <a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">    __confDir</tt> </tt> 
    356 <a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt> 
    357 <a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"> </tt> 
    358 <a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">    <tt class="py-comment"># Code designed from NERC Data Grid Enterprise and Information Viewpoint</tt> </tt> 
    359 <a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># documents.</tt> </tt> 
    360 <a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt> 
    361 <a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Also, draws from Neil Bennett's ACServer class used in the Java</tt> </tt> 
    362 <a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># implementation of NDG Security</tt> </tt> 
    363 <a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt> 
    364 <a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.__confDir=ndg.security.server.AttAuthority.AttAuthority-class.html#__confDir,Variable ndg.security.server.SessionMgr.SessionMgr.__confDir=ndg.security.server.SessionMgr.SessionMgr-class.html#__confDir,Variable ndg.security.server.ca.SimpleCA.__confDir=ndg.security.server.ca.SimpleCA-class.html#__confDir"><a title="ndg.security.server.AttAuthority.AttAuthority.__confDir 
     539ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__ 
     540ndg.security.test.xmlsec.etree.test_etree.XMLSecDocTestSuite.__init__" class="py-name" href="#" onclick="return doclink('link-27', '__init__', 'link-27');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt> 
     541</div></div><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">         </tt> 
     542<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt> 
     543<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
     544<a name="AttAuthorityAccessDenied"></a><div id="AttAuthorityAccessDenied-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="AttAuthorityAccessDenied-toggle" onclick="return toggle('AttAuthorityAccessDenied');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityAccessDenied-class.html">AttAuthorityAccessDenied</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     545</div><div id="AttAuthorityAccessDenied-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AttAuthorityAccessDenied-expanded"><a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-docstring">"""NDG Attribute Authority - access denied exception.</tt> </tt> 
     546<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     547<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    Raise from getAttCert method where no roles are available for the user</tt> </tt> 
     548<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    but that the request is otherwise valid.  In all other error cases raise</tt> </tt> 
     549<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    AttAuthorityError"""</tt>    </tt> 
     550</div><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt> 
     551<a name="AttAuthorityNoTrustedHosts"></a><div id="AttAuthorityNoTrustedHosts-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="AttAuthorityNoTrustedHosts-toggle" onclick="return toggle('AttAuthorityNoTrustedHosts');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityNoTrustedHosts-class.html">AttAuthorityNoTrustedHosts</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     552</div><div id="AttAuthorityNoTrustedHosts-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AttAuthorityNoTrustedHosts-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-docstring">"""Raise from getTrustedHosts if there are no trusted hosts defined in</tt> </tt> 
     553<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    the map configuration"""</tt> </tt> 
     554</div><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt> 
     555<a name="AttAuthorityNoMatchingRoleInTrustedHosts"></a><div id="AttAuthorityNoMatchingRoleInTrustedHosts-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="AttAuthorityNoMatchingRoleInTrustedHosts-toggle" onclick="return toggle('AttAuthorityNoMatchingRoleInTrustedHosts');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthorityNoMatchingRoleInTrustedHosts-class.html">AttAuthorityNoMatchingRoleInTrustedHosts</a><tt class="py-op">(</tt><tt class="py-base-class">AttAuthorityError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     556</div><div id="AttAuthorityNoMatchingRoleInTrustedHosts-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AttAuthorityNoMatchingRoleInTrustedHosts-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-docstring">"""Raise from getTrustedHosts if there is no mapping to any of the </tt> </tt> 
     557<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    trusted hosts for the given input role name"""</tt> </tt> 
     558</div><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"> </tt> 
     559<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt> 
     560<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment">#_____________________________________________________________________________</tt> </tt> 
     561<a name="AttAuthority"></a><div id="AttAuthority-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="AttAuthority-toggle" onclick="return toggle('AttAuthority');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html">AttAuthority</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     562</div><div id="AttAuthority-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AttAuthority-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-docstring">"""NDG Attribute Authority - server for allocation of user authorization</tt> </tt> 
     563<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    tokens - attribute certificates.</tt> </tt> 
     564<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     565<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    @type __validKeys: dict</tt> </tt> 
     566<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __validKeys: valid configuration property keywords - properties file</tt> </tt> 
     567<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    must contain these</tt> </tt> 
     568<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     569<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">    @type __confDir: string</tt> </tt> 
     570<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __confDir: configuration directory under $NDGSEC_DIR - default location</tt> </tt> 
     571<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">    for properties file </tt> </tt> 
     572<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">    </tt> </tt> 
     573<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    @type __propFileName: string</tt> </tt> 
     574<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">    @cvar __propFileName: default file name for properties file under </tt> </tt> 
     575<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">    __confDir</tt> </tt> 
     576<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt> 
     577<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt> 
     578<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-comment"># Code designed from NERC Data Grid Enterprise and Information Viewpoint</tt> </tt> 
     579<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># documents.</tt> </tt> 
     580<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt> 
     581<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Also, draws from Neil Bennett's ACServer class used in the Java</tt> </tt> 
     582<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># implementation of NDG Security</tt> </tt> 
     583<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt> 
     584<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">    <tt id="link-28" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.__confDir=ndg.security.server.AttAuthority.AttAuthority-class.html#__confDir,Variable ndg.security.server.SessionMgr.SessionMgr.__confDir=ndg.security.server.SessionMgr.SessionMgr-class.html#__confDir,Variable ndg.security.server.ca.SimpleCA.__confDir=ndg.security.server.ca.SimpleCA-class.html#__confDir"><a title="ndg.security.server.AttAuthority.AttAuthority.__confDir 
    365585ndg.security.server.SessionMgr.SessionMgr.__confDir 
    366 ndg.security.server.ca.SimpleCA.__confDir" class="py-name" href="#" onclick="return doclink('link-14', '__confDir', 'link-14');">__confDir</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"conf"</tt> </tt> 
    367 <a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">    <tt id="link-15" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.__propFileName=ndg.security.server.AttAuthority.AttAuthority-class.html#__propFileName,Variable ndg.security.server.SessionMgr.SessionMgr.__propFileName=ndg.security.server.SessionMgr.SessionMgr-class.html#__propFileName,Variable ndg.security.server.ca.SimpleCA.__propFileName=ndg.security.server.ca.SimpleCA-class.html#__propFileName"><a title="ndg.security.server.AttAuthority.AttAuthority.__propFileName 
     586ndg.security.server.ca.SimpleCA.__confDir" class="py-name" href="#" onclick="return doclink('link-28', '__confDir', 'link-28');">__confDir</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"conf"</tt> </tt> 
     587<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">    <tt id="link-29" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.__propFileName=ndg.security.server.AttAuthority.AttAuthority-class.html#__propFileName,Variable ndg.security.server.SessionMgr.SessionMgr.__propFileName=ndg.security.server.SessionMgr.SessionMgr-class.html#__propFileName,Variable ndg.security.server.ca.SimpleCA.__propFileName=ndg.security.server.ca.SimpleCA-class.html#__propFileName"><a title="ndg.security.server.AttAuthority.AttAuthority.__propFileName 
    368588ndg.security.server.SessionMgr.SessionMgr.__propFileName 
    369 ndg.security.server.ca.SimpleCA.__propFileName" class="py-name" href="#" onclick="return doclink('link-15', '__propFileName', 'link-15');">__propFileName</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"attAuthorityProperties.xml"</tt> </tt> 
    370 <a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">     </tt> 
    371 <a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">    <tt class="py-comment"># valid configuration property keywords</tt> </tt> 
    372 <a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-16" class="py-name" targets="Variable ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#__validKeys,Variable ndg.security.common.SQLObject.CredRepos.__validKeys=ndg.security.common.SQLObject.CredRepos-class.html#__validKeys,Variable ndg.security.common.gatekeeper.Gatekeeper.__validKeys=ndg.security.common.gatekeeper.Gatekeeper-class.html#__validKeys,Variable ndg.security.server.AttAuthority.AttAuthority.__validKeys=ndg.security.server.AttAuthority.AttAuthority-class.html#__validKeys,Variable ndg.security.server.MyProxy.MyProxyClient.__validKeys=ndg.security.server.MyProxy.MyProxyClient-class.html#__validKeys,Variable ndg.security.server.ca.SimpleCA.__validKeys=ndg.security.server.ca.SimpleCA-class.html#__validKeys"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys 
     589ndg.security.server.ca.SimpleCA.__propFileName" class="py-name" href="#" onclick="return doclink('link-29', '__propFileName', 'link-29');">__propFileName</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"attAuthorityProperties.xml"</tt> </tt> 
     590<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">     </tt> 
     591<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-comment"># valid configuration property keywords</tt> </tt> 
     592<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-30" class="py-name" targets="Variable ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#__validKeys,Variable ndg.security.common.SQLObject.CredRepos.__validKeys=ndg.security.common.SQLObject.CredRepos-class.html#__validKeys,Variable ndg.security.common.gatekeeper.Gatekeeper.__validKeys=ndg.security.common.gatekeeper.Gatekeeper-class.html#__validKeys,Variable ndg.security.server.AttAuthority.AttAuthority.__validKeys=ndg.security.server.AttAuthority.AttAuthority-class.html#__validKeys,Variable ndg.security.server.SessionMgr.AbstractAutheNService.__validKeys=ndg.security.server.SessionMgr.AbstractAutheNService-class.html#__validKeys,Variable ndg.security.server.authenservice.MyProxy.MyProxyClient.__validKeys=ndg.security.server.authenservice.MyProxy.MyProxyClient-class.html#__validKeys,Variable ndg.security.server.ca.SimpleCA.__validKeys=ndg.security.server.ca.SimpleCA-class.html#__validKeys"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys 
    373593ndg.security.common.SQLObject.CredRepos.__validKeys 
    374594ndg.security.common.gatekeeper.Gatekeeper.__validKeys 
    375595ndg.security.server.AttAuthority.AttAuthority.__validKeys 
    376 ndg.security.server.MyProxy.MyProxyClient.__validKeys 
    377 ndg.security.server.ca.SimpleCA.__validKeys" class="py-name" href="#" onclick="return doclink('link-16', '__validKeys', 'link-16');">__validKeys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-string">'name'</tt><tt class="py-op">:</tt>                <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    378 <a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">                    <tt class="py-string">'portNum'</tt><tt class="py-op">:</tt>             <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt> 
    379 <a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">                    <tt class="py-string">'useSSL'</tt><tt class="py-op">:</tt>              <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt> 
    380 <a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">                    <tt class="py-string">'sslCertFile'</tt><tt class="py-op">:</tt>         <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    381 <a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">                    <tt class="py-string">'sslKeyFile'</tt><tt class="py-op">:</tt>          <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    382 <a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">                    <tt class="py-string">'sslKeyPwd'</tt><tt class="py-op">:</tt>           <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    383 <a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">                    <tt class="py-string">'sslCACertDir'</tt><tt class="py-op">:</tt>        <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    384 <a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">                    <tt class="py-string">'useSignatureHandler'</tt><tt class="py-op">:</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt> 
    385 <a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">                    <tt class="py-string">'certFile'</tt><tt class="py-op">:</tt>            <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    386 <a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">                    <tt class="py-string">'keyFile'</tt><tt class="py-op">:</tt>             <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    387 <a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">                    <tt class="py-string">'keyPwd'</tt><tt class="py-op">:</tt>              <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    388 <a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">                    <tt class="py-string">'caCertFileList'</tt><tt class="py-op">:</tt>      <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    389 <a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">                    <tt class="py-string">'clntCertFile'</tt><tt class="py-op">:</tt>        <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    390 <a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">                    <tt class="py-string">'attCertLifetime'</tt><tt class="py-op">:</tt>     <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt> 
    391 <a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">                    <tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt> 
    392 <a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">                    <tt class="py-string">'attCertFileName'</tt><tt class="py-op">:</tt>     <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    393 <a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">                    <tt class="py-string">'attCertFileLogCnt'</tt><tt class="py-op">:</tt>   <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt> 
    394 <a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">                    <tt class="py-string">'mapConfigFile'</tt><tt class="py-op">:</tt>       <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    395 <a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">                    <tt class="py-string">'attCertDir'</tt><tt class="py-op">:</tt>          <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    396 <a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">                    <tt class="py-string">'dnSeparator'</tt><tt class="py-op">:</tt>         <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    397 <a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">:</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    398 <a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesModName'</tt><tt class="py-op">:</tt>    <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    399 <a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesClassName'</tt><tt class="py-op">:</tt>  <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
    400 <a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesPropFile'</tt><tt class="py-op">:</tt>   <tt class="py-string">''</tt><tt class="py-op">}</tt> </tt> 
    401 <a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">     </tt> 
    402 <a name="AttAuthority.__init__"></a><div id="AttAuthority.__init__-def"><a name="L121"></a><tt class="py-lineno"> 121</tt> <a class="py-toggle" href="#" id="AttAuthority.__init__-toggle" onclick="return toggle('AttAuthority.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-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">propFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">bReadMapConfig</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    403 </div><div id="AttAuthority.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.__init__-expanded"><a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create new NDG Attribute Authority instance</tt> </tt> 
    404 <a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    405 <a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-docstring">        @type propFilePath: string</tt> </tt> 
    406 <a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt class="py-docstring">        @param propFilePath: path to file containing Attribute Authority</tt> </tt> 
    407 <a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-docstring">        configuration parameters.  It defaults to $NDGSEC_AA_PROPFILEPATH or</tt> </tt> 
    408 <a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-docstring">        if not set, $NDGSEC_DIR/conf/attAuthorityProperties.xml</tt> </tt> 
    409 <a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-docstring">        @type bReadMapConfig: boolean</tt> </tt> 
    410 <a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line"><tt class="py-docstring">        @param bReadMapConfig: by default the Map Configuration file is </tt> </tt> 
    411 <a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"><tt class="py-docstring">        read.  Set this flag to False to override.</tt> </tt> 
    412 <a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    413 <a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt id="link-17" class="py-name"><a title="ndg.security.common.CredWallet.log 
     596ndg.security.server.SessionMgr.AbstractAutheNService.__validKeys 
     597ndg.security.server.authenservice.MyProxy.MyProxyClient.__validKeys 
     598ndg.security.server.ca.SimpleCA.__validKeys" class="py-name" href="#" onclick="return doclink('link-30', '__validKeys', 'link-30');">__validKeys</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-string">'name'</tt><tt class="py-op">:</tt>                <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     599<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                    <tt class="py-string">'portNum'</tt><tt class="py-op">:</tt>             <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt> 
     600<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                    <tt class="py-string">'useSSL'</tt><tt class="py-op">:</tt>              <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt> 
     601<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                    <tt class="py-string">'sslCertFile'</tt><tt class="py-op">:</tt>         <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     602<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                    <tt class="py-string">'sslKeyFile'</tt><tt class="py-op">:</tt>          <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     603<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                    <tt class="py-string">'sslKeyPwd'</tt><tt class="py-op">:</tt>           <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     604<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                    <tt class="py-string">'sslCACertDir'</tt><tt class="py-op">:</tt>        <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     605<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                    <tt class="py-string">'attCertLifetime'</tt><tt class="py-op">:</tt>     <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt> 
     606<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                    <tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt> 
     607<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                    <tt class="py-string">'attCertFileName'</tt><tt class="py-op">:</tt>     <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     608<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                    <tt class="py-string">'attCertFileLogCnt'</tt><tt class="py-op">:</tt>   <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt> 
     609<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                    <tt class="py-string">'mapConfigFile'</tt><tt class="py-op">:</tt>       <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     610<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">                    <tt class="py-string">'attCertDir'</tt><tt class="py-op">:</tt>          <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     611<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                    <tt class="py-string">'dnSeparator'</tt><tt class="py-op">:</tt>         <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     612<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">:</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     613<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesModName'</tt><tt class="py-op">:</tt>    <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     614<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesClassName'</tt><tt class="py-op">:</tt>  <tt class="py-string">''</tt><tt class="py-op">,</tt> </tt> 
     615<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                    <tt class="py-string">'userRolesPropFile'</tt><tt class="py-op">:</tt>   <tt class="py-string">''</tt> </tt> 
     616<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                    <tt class="py-op">}</tt> </tt> 
     617<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">     </tt> 
     618<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt id="link-31" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.WS_SETTINGS_KEY=ndg.security.server.AttAuthority.AttAuthority-class.html#WS_SETTINGS_KEY,Variable ndg.security.server.SessionMgr.SessionMgr.WS_SETTINGS_KEY=ndg.security.server.SessionMgr.SessionMgr-class.html#WS_SETTINGS_KEY"><a title="ndg.security.server.AttAuthority.AttAuthority.WS_SETTINGS_KEY 
     619ndg.security.server.SessionMgr.SessionMgr.WS_SETTINGS_KEY" class="py-name" href="#" onclick="return doclink('link-31', 'WS_SETTINGS_KEY', 'link-31');">WS_SETTINGS_KEY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'WS-Security'</tt> </tt> 
     620<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt> 
     621<a name="AttAuthority.__init__"></a><div id="AttAuthority.__init__-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="AttAuthority.__init__-toggle" onclick="return toggle('AttAuthority.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-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">propFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">bReadMapConfig</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     622</div><div id="AttAuthority.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.__init__-expanded"><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create new NDG Attribute Authority instance</tt> </tt> 
     623<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     624<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">        @type propFilePath: string</tt> </tt> 
     625<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">        @param propFilePath: path to file containing Attribute Authority</tt> </tt> 
     626<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">        configuration parameters.  It defaults to $NDGSEC_AA_PROPFILEPATH or</tt> </tt> 
     627<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-docstring">        if not set, $NDGSEC_DIR/conf/attAuthorityProperties.xml</tt> </tt> 
     628<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-docstring">        - if the filename ends with 'xml', it is assumed to be in the xml format</tt> </tt> 
     629<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring">        - otherwise it is assumed to be a flat text 'ini' type file</tt> </tt> 
     630<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">        @type bReadMapConfig: boolean</tt> </tt> 
     631<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-docstring">        @param bReadMapConfig: by default the Map Configuration file is </tt> </tt> 
     632<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring">        read.  Set this flag to False to override.</tt> </tt> 
     633<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     634<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     635ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     636ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     637ndg.security.client.ssoclient.ssoclient.lib.base.log 
     638ndg.security.client.ssoclient.ssoclient.websetup.log 
     639ndg.security.common.AttAuthority.log 
     640ndg.security.common.CredWallet.log 
     641ndg.security.common.SessionMgr.log 
     642ndg.security.common.authz.pdp.browse.log 
     643ndg.security.common.authz.pdp.log 
     644ndg.security.common.authz.pdp.proftp.log 
     645ndg.security.common.authz.pep.log 
    414646ndg.security.common.gatekeeper.log 
    415647ndg.security.common.logService.log_services_server.log 
     648ndg.security.common.pylons.security_util.log 
     649ndg.security.common.saml.log 
     650ndg.security.common.utils.ClassFactory.log 
     651ndg.security.common.utils.ConfigFileParsers.log 
     652ndg.security.common.wssecurity.BaseSignatureHandler.log 
     653ndg.security.common.wssecurity.dom.log 
     654ndg.security.common.wssecurity.etree.log 
     655ndg.security.common.xmlsec.etree.log 
    416656ndg.security.server.AttAuthority.log 
    417657ndg.security.server.Log.log 
    418658ndg.security.server.SessionMgr.log 
    419659ndg.security.server.log 
     660ndg.security.server.pylons.container.controllers.hello.log 
     661ndg.security.server.pylons.container.lib.openid_provider_util.log 
     662ndg.security.server.pylons.container.websetup.log 
     663ndg.security.server.sso.sso.config.middleware.log 
     664ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     665ndg.security.server.sso.sso.controllers.login.log 
     666ndg.security.server.sso.sso.controllers.logout.log 
     667ndg.security.server.sso.sso.controllers.test1.log 
     668ndg.security.server.sso.sso.controllers.wayf.log 
     669ndg.security.server.sso.sso.lib.base.log 
     670ndg.security.server.sso.sso.lib.openid_util.log 
     671ndg.security.server.sso.sso.websetup.log 
     672ndg.security.server.wsgi.openid_provider.log 
     673ndg.security.server.wsgi.soap.log 
     674ndg.security.server.wsgi.wssecurity.log 
     675ndg.security.server.zsi.attributeauthority.log 
    420676ndg.security.test.Log.LogTest.log 
    421 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-17', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.info()=ndg.security.client.LogClient.LogClient-class.html#info,Method ndg.security.common.logService.log_services.logBindingSOAP.info()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#info,Method ndg.security.server.MyProxy.MyProxyClient.info()=ndg.security.server.MyProxy.MyProxyClient-class.html#info"><a title="ndg.security.client.LogClient.LogClient.info 
     677ndg.security.test.authenservice.test_authen_service.log 
     678ndg.security.test.wsSecurity.server.echoServer.log 
     679ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-32', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.info()=ndg.security.client.LogClient.LogClient-class.html#info,Method ndg.security.common.logService.log_services.logBindingSOAP.info()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#info,Method ndg.security.server.authenservice.MyProxy.MyProxyClient.info()=ndg.security.server.authenservice.MyProxy.MyProxyClient-class.html#info,Method ndg.security.test.authenservice.test_authen_service.TestAutheNService.info()=ndg.security.test.authenservice.test_authen_service.TestAutheNService-class.html#info"><a title="ndg.security.client.LogClient.LogClient.info 
    422680ndg.security.common.logService.log_services.logBindingSOAP.info 
    423 ndg.security.server.MyProxy.MyProxyClient.info" class="py-name" href="#" onclick="return doclink('link-18', 'info', 'link-18');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Initialising service ... "</tt><tt class="py-op">)</tt> </tt> 
    424 <a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">         </tt> 
    425 <a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">        <tt class="py-comment"># Base class initialisation</tt> </tt> 
    426 <a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">dict</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="ndg.security.client.GatekeeperClient.GatekeeperClient.__init__ 
     681ndg.security.server.authenservice.MyProxy.MyProxyClient.info 
     682ndg.security.test.authenservice.test_authen_service.TestAutheNService.info" class="py-name" href="#" onclick="return doclink('link-33', 'info', 'link-33');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">"Initialising service ..."</tt><tt class="py-op">)</tt> </tt> 
     683<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">         </tt> 
     684<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-comment"># Base class initialisation</tt> </tt> 
     685<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">dict</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="ndg.security.client.GatekeeperClient.GatekeeperClient.__init__ 
    427686ndg.security.client.GatekeeperClient.GatekeeperClientError.__init__ 
    428687ndg.security.client.LogClient.LogClient.__init__ 
     
    431690ndg.security.client.SimpleCAClient.SimpleCAClient.__init__ 
    432691ndg.security.client.SimpleCAClient.SimpleCAClientError.__init__ 
     692ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.__init__ 
     693ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOMiddleware.__init__ 
     694ndg.security.client.ssoclient.ssoclient.lib.app_globals.Globals.__init__ 
     695ndg.security.client.ssoclient.ssoclient.tests.TestController.__init__ 
    433696ndg.security.common.AttAuthority.AttAuthorityClient.__init__ 
    434697ndg.security.common.AttAuthority.AttAuthority_services.AttAuthorityBindingSOAP.__init__ 
     
    455718ndg.security.common.SecurityCGI.ServiceProviderSecurityCGI.__init__ 
    456719ndg.security.common.SecurityCGI._SecurityCGI.__init__ 
    457 ndg.security.common.SessionCookie.SessionCookie.__init__ 
    458720ndg.security.common.SessionMgr.AttributeRequestDenied.__init__ 
    459721ndg.security.common.SessionMgr.SessionMgrClient.__init__ 
     
    473735ndg.security.common.X509.X509Stack.__init__ 
    474736ndg.security.common.XMLSec.XMLSecDoc.__init__ 
     737ndg.security.common.authz.pdp.PDPInterface.__init__ 
     738ndg.security.common.authz.pdp.PDPMissingResourceConstraints.__init__ 
     739ndg.security.common.authz.pdp.PDPMissingUserHandleAttr.__init__ 
     740ndg.security.common.authz.pdp.PDPUnknownResourceType.__init__ 
     741ndg.security.common.authz.pdp.PDPUserAccessDenied.__init__ 
     742ndg.security.common.authz.pdp.PDPUserInsufficientPrivileges.__init__ 
     743ndg.security.common.authz.pdp.PDPUserNotLoggedIn.__init__ 
     744ndg.security.common.authz.pdp.browse.AttributeCertificateRequestError.__init__ 
     745ndg.security.common.authz.pdp.browse.BrowsePDP.__init__ 
     746ndg.security.common.authz.pdp.browse.InitSessionCtxError.__init__ 
     747ndg.security.common.authz.pdp.browse.InvalidAttributeCertificate.__init__ 
     748ndg.security.common.authz.pdp.browse.InvalidSessionMsg.__init__ 
     749ndg.security.common.authz.pdp.browse.SessionExpiredMsg.__init__ 
     750ndg.security.common.authz.pdp.proftp.AttributeCertificateRequestError.__init__ 
     751ndg.security.common.authz.pdp.proftp.FTPAccess.__init__ 
     752ndg.security.common.authz.pdp.proftp.InitSessionCtxError.__init__ 
     753ndg.security.common.authz.pdp.proftp.InvalidAttributeCertificate.__init__ 
     754ndg.security.common.authz.pdp.proftp.InvalidSessionMsg.__init__ 
     755ndg.security.common.authz.pdp.proftp.ProftpPDP.__init__ 
     756ndg.security.common.authz.pdp.proftp.SessionExpiredMsg.__init__ 
     757ndg.security.common.authz.pep.PEP.__init__ 
    475758ndg.security.common.ca.CertificateAuthorityClient.__init__ 
    476759ndg.security.common.ca.CertificateAuthority_services.CertificateAuthorityBindingSOAP.__init__ 
     
    506789ndg.security.common.m2CryptoSSLUtility.HostCheck.__init__ 
    507790ndg.security.common.openssl.OpenSSLConfig.__init__ 
     791ndg.security.common.pylons.security_util.SecuritySession.__init__ 
     792ndg.security.common.saml.AttributeAssertion.__init__ 
     793ndg.security.common.saml.AttributeAssertionReadOnlyDict.__init__ 
    508794ndg.security.common.sessionCookie.SessionCookie.__init__ 
    509 ndg.security.common.wsSecurity.EncryptionHandler.__init__ 
    510 ndg.security.common.wsSecurity.SignatureHandler.__init__ 
     795ndg.security.common.utils.ClassFactory.ClassFactoryError.__init__ 
     796ndg.security.common.wssecurity.BaseSignatureHandler.BaseSignatureHandler.__init__ 
     797ndg.security.common.wssecurity.BaseSignatureHandler.WSSecurityError.__init__ 
     798ndg.security.common.wssecurity.WSSecurityConfig.__init__ 
     799ndg.security.common.wssecurity.dom.EncryptionHandler.__init__ 
     800ndg.security.common.xmlsec.etree.XMLSecDoc.__init__ 
     801ndg.security.common.zsi_utils.elementtreeproxy.ElementTreeProxy.__init__ 
     802ndg.security.common.zsi_utils.httpproxy.ProxyHTTPConnection.__init__ 
    511803ndg.security.server.AttAuthority.AAUserRoles.__init__ 
    512804ndg.security.server.AttAuthority.AttAuthority.__init__ 
     
    515807ndg.security.server.AttAuthority.AttCertLog.__init__ 
    516808ndg.security.server.Log.Log.__init__ 
    517 ndg.security.server.MyProxy.CmdLineClient.__init__ 
    518 ndg.security.server.MyProxy.MyProxyClient.__init__ 
    519 ndg.security.server.MyProxy._HostCheck.__init__ 
     809ndg.security.server.SessionMgr.AbstractAutheNService.__init__ 
    520810ndg.security.server.SessionMgr.SessionMgr.__init__ 
    521811ndg.security.server.SessionMgr.SessionMgr_services_server.SessionMgrService.__init__ 
    522812ndg.security.server.SessionMgr.UserSession.__init__ 
    523813ndg.security.server.SessionMgr._SessionMgrException.__init__ 
     814ndg.security.server.authenservice.MyProxy.CmdLineClient.__init__ 
     815ndg.security.server.authenservice.MyProxy.MyProxyClient.__init__ 
     816ndg.security.server.authenservice.MyProxy._HostCheck.__init__ 
    524817ndg.security.server.ca.CertificateAuthority_services_server.CertificateAuthorityService.__init__ 
    525818ndg.security.server.ca.SimpleCA.__init__ 
    526819ndg.security.server.conf.userRoles.UserRoles.__init__ 
     820ndg.security.server.pylons.container.lib.app_globals.Globals.__init__ 
     821ndg.security.server.pylons.container.lib.openid_provider_util.State.__init__ 
     822ndg.security.server.pylons.container.tests.TestController.__init__ 
     823ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOMiddleware.__init__ 
     824ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.__init__ 
     825ndg.security.server.sso.sso.lib.app_globals.Globals.__init__ 
     826ndg.security.server.sso.sso.tests.TestController.__init__ 
     827ndg.security.server.wsgi.openid_provider.OpenIDProviderMiddleware.__init__ 
     828ndg.security.server.wsgi.openid_provider.RenderingInterface.__init__ 
     829ndg.security.server.wsgi.soap.SOAPBindingMiddleware.__init__ 
     830ndg.security.server.wsgi.soap.SOAPMiddleware.__init__ 
     831ndg.security.server.wsgi.wssecurity.WSSecurityFilter.__init__ 
     832ndg.security.server.wsgi.wssecurity.WSSecuritySignatureFilter.__init__ 
     833ndg.security.server.zsi.attributeauthority.AttributeAuthorityWS.__init__ 
    527834ndg.security.test.Log.LogTest.LogTestSuite.__init__ 
    528 ndg.security.test.SecurityCGItest.SecurityCGItestSuite.__init__ 
    529835ndg.security.test.X509.X509Test.X509TestSuite.__init__ 
    530836ndg.security.test.XMLSecDoc.xmlSecDocTest.XMLSecDocTestSuite.__init__ 
     
    533839ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.__init__ 
    534840ndg.security.test.attCert.AttCertTest.AttCertTestSuite.__init__ 
     841ndg.security.test.authenservice.test_authen_service.TestAutheNService.__init__ 
     842ndg.security.test.authz.pdp.testProftPDP.ProftpPDPTestSuite.__init__ 
    535843ndg.security.test.ca.caClientTest.CAClientTestSuite.__init__ 
    536 ndg.security.test.gatekeeper.TestGatekeeperResrc.TestGatekeeperResrc.__init__ 
    537844ndg.security.test.myProxy.MyProxyClientTest.MyProxyClientTestSuite.__init__ 
    538845ndg.security.test.sessionCookie.SessionCookieTest.SessionCookieTestSuite.__init__ 
     
    540847ndg.security.test.sessionMgrClient.SessionMgrClientTest.SessionMgrClientTestSuite.__init__ 
    541848ndg.security.test.wsSecurity.client.EchoService_services.EchoBindingSOAP.__init__ 
     849ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.EchoResponse_Dec.__init__ 
     850ndg.security.test.wsSecurity.client.EchoService_services_types.ns0.Echo_Dec.__init__ 
    542851ndg.security.test.wsSecurity.client.echoClientTest.EchoClientTestSuite.__init__ 
    543852ndg.security.test.wsSecurity.server.EchoService_services.EchoBindingSOAP.__init__ 
    544853ndg.security.test.wsSecurity.server.EchoService_services_server.EchoService.__init__ 
    545 ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.EchoResponse_Dec.__init__ 
    546 ndg.security.test.wsSecurity.server.EchoService_services_types.ns0.Echo_Dec.__init__ 
    547 ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__" class="py-name" href="#" onclick="return doclink('link-19', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> 
    548 <a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"> </tt> 
    549 <a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-comment"># Set from input or use defaults based or environment variables</tt> </tt> 
    550 <a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.setPropFilePath()=ndg.security.server.AttAuthority.AttAuthority-class.html#setPropFilePath,Method ndg.security.server.SessionMgr.SessionMgr.setPropFilePath()=ndg.security.server.SessionMgr.SessionMgr-class.html#setPropFilePath,Method ndg.security.server.ca.SimpleCA.setPropFilePath()=ndg.security.server.ca.SimpleCA-class.html#setPropFilePath"><a title="ndg.security.server.AttAuthority.AttAuthority.setPropFilePath 
    551 ndg.security.server.SessionMgr.SessionMgr.setPropFilePath 
    552 ndg.security.server.ca.SimpleCA.setPropFilePath" class="py-name" href="#" onclick="return doclink('link-20', 'setPropFilePath', 'link-20');">setPropFilePath</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.propFilePath=ndg.security.server.AttAuthority.AttAuthority-class.html#propFilePath,Variable ndg.security.server.SessionMgr.SessionMgr.propFilePath=ndg.security.server.SessionMgr.SessionMgr-class.html#propFilePath,Variable ndg.security.server.ca.SimpleCA.propFilePath=ndg.security.server.ca.SimpleCA-class.html#propFilePath"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
     854ndg.security.test.wsSecurity.server.echoServer.EchoService.__init__ 
     855ndg.security.test.xmlsec.etree.test_etree.XMLSecDocTestSuite.__init__" class="py-name" href="#" onclick="return doclink('link-34', '__init__', 'link-27');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt> 
     856<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt> 
     857<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-comment"># Set from input or use defaults based or environment variables</tt> </tt> 
     858<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Variable ndg.security.server.AttAuthority.AttAuthority.propFilePath=ndg.security.server.AttAuthority.AttAuthority-class.html#propFilePath,Variable ndg.security.server.SessionMgr.SessionMgr.propFilePath=ndg.security.server.SessionMgr.SessionMgr-class.html#propFilePath,Variable ndg.security.server.ca.SimpleCA.propFilePath=ndg.security.server.ca.SimpleCA-class.html#propFilePath"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
    553859ndg.security.server.SessionMgr.SessionMgr.propFilePath 
    554 ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-21', 'propFilePath', 'link-21');">propFilePath</a></tt><tt class="py-op">)</tt> </tt> 
    555 <a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"> </tt> 
    556 <a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-comment"># Initialise role mapping look-ups - These are set in readMapConfig()</tt> </tt> 
    557 <a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    558 <a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__localRole2RemoteRole</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    559 <a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remoteRole2LocalRole</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
    560 <a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"> </tt> 
    561 <a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"> </tt> 
    562 <a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">        <tt class="py-comment"># Configuration file properties are held together in a dictionary</tt> </tt> 
    563 <a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
    564 <a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"> </tt> 
    565 <a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">        <tt class="py-comment"># Read Attribute Authority Properties file</tt> </tt> 
    566 <a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.readProperties()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#readProperties,Method ndg.security.common.SQLObject.CredRepos.readProperties()=ndg.security.common.SQLObject.CredRepos-class.html#readProperties,Method ndg.security.common.gatekeeper.Gatekeeper.readProperties()=ndg.security.common.gatekeeper.Gatekeeper-class.html#readProperties,Method ndg.security.server.AttAuthority.AttAuthority.readProperties()=ndg.security.server.AttAuthority.AttAuthority-class.html#readProperties,Method ndg.security.server.MyProxy.MyProxyClient.readProperties()=ndg.security.server.MyProxy.MyProxyClient-class.html#readProperties,Method ndg.security.server.SessionMgr.SessionMgr.readProperties()=ndg.security.server.SessionMgr.SessionMgr-class.html#readProperties,Method ndg.security.server.ca.SimpleCA.readProperties()=ndg.security.server.ca.SimpleCA-class.html#readProperties"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.readProperties 
     860ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-35', 'propFilePath', 'link-35');">propFilePath</a></tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
     861ndg.security.server.SessionMgr.SessionMgr.propFilePath 
     862ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-36', 'propFilePath', 'link-35');">propFilePath</a></tt> </tt> 
     863<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt> 
     864<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-comment"># Initialise role mapping look-ups - These are set in readMapConfig()</tt> </tt> 
     865<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     866<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__localRole2RemoteRole</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     867<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remoteRole2LocalRole</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt> 
     868<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt> 
     869<a name="L146"></a><tt class="py-lineno">146</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 ndg.security.client.SimpleCAClient.SimpleCAClient.readProperties()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#readProperties,Method ndg.security.common.SQLObject.CredRepos.readProperties()=ndg.security.common.SQLObject.CredRepos-class.html#readProperties,Method ndg.security.common.gatekeeper.Gatekeeper.readProperties()=ndg.security.common.gatekeeper.Gatekeeper-class.html#readProperties,Function ndg.security.common.utils.ConfigFileParsers.readProperties()=ndg.security.common.utils.ConfigFileParsers-module.html#readProperties,Method ndg.security.server.AttAuthority.AttAuthority.readProperties()=ndg.security.server.AttAuthority.AttAuthority-class.html#readProperties,Method ndg.security.server.SessionMgr.SessionMgr.readProperties()=ndg.security.server.SessionMgr.SessionMgr-class.html#readProperties,Method ndg.security.server.authenservice.MyProxy.MyProxyClient.readProperties()=ndg.security.server.authenservice.MyProxy.MyProxyClient-class.html#readProperties,Method ndg.security.server.ca.SimpleCA.readProperties()=ndg.security.server.ca.SimpleCA-class.html#readProperties"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.readProperties 
    567870ndg.security.common.SQLObject.CredRepos.readProperties 
    568871ndg.security.common.gatekeeper.Gatekeeper.readProperties 
     872ndg.security.common.utils.ConfigFileParsers.readProperties 
    569873ndg.security.server.AttAuthority.AttAuthority.readProperties 
    570 ndg.security.server.MyProxy.MyProxyClient.readProperties 
    571874ndg.security.server.SessionMgr.SessionMgr.readProperties 
    572 ndg.security.server.ca.SimpleCA.readProperties" class="py-name" href="#" onclick="return doclink('link-22', 'readProperties', 'link-22');">readProperties</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    573 <a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"> </tt> 
    574 <a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-comment"># Read the Map Configuration file</tt> </tt> 
    575 <a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">bReadMapConfig</tt><tt class="py-op">:</tt> </tt> 
    576 <a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.readMapConfig()=ndg.security.server.AttAuthority.AttAuthority-class.html#readMapConfig"><a title="ndg.security.server.AttAuthority.AttAuthority.readMapConfig" class="py-name" href="#" onclick="return doclink('link-23', 'readMapConfig', 'link-23');">readMapConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    577 <a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"> </tt> 
    578 <a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-comment"># Instantiate Certificate object</tt> </tt> 
    579 <a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-24" class="py-name"><a title="ndg.security.common.CredWallet.log 
     875ndg.security.server.authenservice.MyProxy.MyProxyClient.readProperties 
     876ndg.security.server.ca.SimpleCA.readProperties" class="py-name" href="#" onclick="return doclink('link-37', 'readProperties', 'link-37');">readProperties</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     877<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"> </tt> 
     878<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-comment"># Read the Map Configuration file</tt> </tt> 
     879<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">bReadMapConfig</tt><tt class="py-op">:</tt> </tt> 
     880<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.readMapConfig()=ndg.security.server.AttAuthority.AttAuthority-class.html#readMapConfig"><a title="ndg.security.server.AttAuthority.AttAuthority.readMapConfig" class="py-name" href="#" onclick="return doclink('link-38', 'readMapConfig', 'link-38');">readMapConfig</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     881<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"> </tt> 
     882<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-comment"># Instantiate Certificate object</tt> </tt> 
     883<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-39" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     884ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     885ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     886ndg.security.client.ssoclient.ssoclient.lib.base.log 
     887ndg.security.client.ssoclient.ssoclient.websetup.log 
     888ndg.security.common.AttAuthority.log 
     889ndg.security.common.CredWallet.log 
     890ndg.security.common.SessionMgr.log 
     891ndg.security.common.authz.pdp.browse.log 
     892ndg.security.common.authz.pdp.log 
     893ndg.security.common.authz.pdp.proftp.log 
     894ndg.security.common.authz.pep.log 
    580895ndg.security.common.gatekeeper.log 
    581896ndg.security.common.logService.log_services_server.log 
     897ndg.security.common.pylons.security_util.log 
     898ndg.security.common.saml.log 
     899ndg.security.common.utils.ClassFactory.log 
     900ndg.security.common.utils.ConfigFileParsers.log 
     901ndg.security.common.wssecurity.BaseSignatureHandler.log 
     902ndg.security.common.wssecurity.dom.log 
     903ndg.security.common.wssecurity.etree.log 
     904ndg.security.common.xmlsec.etree.log 
    582905ndg.security.server.AttAuthority.log 
    583906ndg.security.server.Log.log 
    584907ndg.security.server.SessionMgr.log 
    585908ndg.security.server.log 
     909ndg.security.server.pylons.container.controllers.hello.log 
     910ndg.security.server.pylons.container.lib.openid_provider_util.log 
     911ndg.security.server.pylons.container.websetup.log 
     912ndg.security.server.sso.sso.config.middleware.log 
     913ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     914ndg.security.server.sso.sso.controllers.login.log 
     915ndg.security.server.sso.sso.controllers.logout.log 
     916ndg.security.server.sso.sso.controllers.test1.log 
     917ndg.security.server.sso.sso.controllers.wayf.log 
     918ndg.security.server.sso.sso.lib.base.log 
     919ndg.security.server.sso.sso.lib.openid_util.log 
     920ndg.security.server.sso.sso.websetup.log 
     921ndg.security.server.wsgi.openid_provider.log 
     922ndg.security.server.wsgi.soap.log 
     923ndg.security.server.wsgi.wssecurity.log 
     924ndg.security.server.zsi.attributeauthority.log 
    586925ndg.security.test.Log.LogTest.log 
    587 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-24', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.debug()=ndg.security.client.LogClient.LogClient-class.html#debug,Method ndg.security.common.logService.log_services.logBindingSOAP.debug()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#debug"><a title="ndg.security.client.LogClient.LogClient.debug 
    588 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-25', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Reading and checking Attribute Authority X.509 cert. ..."</tt><tt class="py-op">)</tt> </tt> 
    589 <a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name" targets="Class ndg.security.common.X509.X509Cert=ndg.security.common.X509.X509Cert-class.html"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-26', 'X509Cert', 'link-26');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'certFile'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    590 <a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.read()=ndg.security.common.AttCert.AttCert-class.html#read,Method ndg.security.common.X509.X509Cert.read()=ndg.security.common.X509.X509Cert-class.html#read,Method ndg.security.common.XMLSec.XMLSecDoc.read()=ndg.security.common.XMLSec.XMLSecDoc-class.html#read,Method ndg.security.common.openssl.OpenSSLConfig.read()=ndg.security.common.openssl.OpenSSLConfig-class.html#read"><a title="ndg.security.common.AttCert.AttCert.read 
     926ndg.security.test.authenservice.test_authen_service.log 
     927ndg.security.test.wsSecurity.server.echoServer.log 
     928ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-39', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method ndg.security.client.LogClient.LogClient.debug()=ndg.security.client.LogClient.LogClient-class.html#debug,Method ndg.security.common.logService.log_services.logBindingSOAP.debug()=ndg.security.common.logService.log_services.logBindingSOAP-class.html#debug"><a title="ndg.security.client.LogClient.LogClient.debug 
     929ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-40', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Reading and checking Attribute Authority X.509 cert. ..."</tt><tt class="py-op">)</tt> </tt> 
     930<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Class ndg.security.common.X509.X509Cert=ndg.security.common.X509.X509Cert-class.html"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-41', 'X509Cert', 'link-41');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'signingCertFilePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     931<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.read()=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig-class.html#read,Method ndg.security.common.AttCert.AttCert.read()=ndg.security.common.AttCert.AttCert-class.html#read,Method ndg.security.common.X509.X509Cert.read()=ndg.security.common.X509.X509Cert-class.html#read,Method ndg.security.common.XMLSec.XMLSecDoc.read()=ndg.security.common.XMLSec.XMLSecDoc-class.html#read,Method ndg.security.common.openssl.OpenSSLConfig.read()=ndg.security.common.openssl.OpenSSLConfig-class.html#read,Method ndg.security.common.wssecurity.WSSecurityConfig.read()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#read,Method ndg.security.common.xmlsec.etree.XMLSecDoc.read()=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#read,Method ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.read()=ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig-class.html#read"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.read 
     932ndg.security.common.AttCert.AttCert.read 
    591933ndg.security.common.X509.X509Cert.read 
    592934ndg.security.common.XMLSec.XMLSecDoc.read 
    593 ndg.security.common.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-27', 'read', 'link-27');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    594 <a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line"> </tt> 
    595 <a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-comment"># Check it's valid</tt> </tt> 
    596 <a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    597 <a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isValidTime()=ndg.security.common.AttCert.AttCert-class.html#isValidTime,Method ndg.security.common.X509.X509Cert.isValidTime()=ndg.security.common.X509.X509Cert-class.html#isValidTime"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
    598 ndg.security.common.X509.X509Cert.isValidTime" class="py-name" href="#" onclick="return doclink('link-28', 'isValidTime', 'link-28');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    599 <a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">             </tt> 
    600 <a name="L165"></a><tt class="py-lineno"> 165</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> 
    601 <a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-29" class="py-name" targets="Class ndg.security.server.AttAuthority.AttAuthorityError=ndg.security.server.AttAuthority.AttAuthorityError-class.html"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-29', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    602 <a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">                    <tt class="py-string">"Attribute Authority's certificate is invalid: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    603 <a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">         </tt> 
    604 <a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">        <tt class="py-comment"># Check CA certificate</tt> </tt> 
    605 <a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-30" class="py-name"><a title="ndg.security.common.CredWallet.log 
     935ndg.security.common.openssl.OpenSSLConfig.read 
     936ndg.security.common.wssecurity.WSSecurityConfig.read 
     937ndg.security.common.xmlsec.etree.XMLSecDoc.read 
     938ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.read" class="py-name" href="#" onclick="return doclink('link-42', 'read', 'link-42');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     939<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"> </tt> 
     940<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-comment"># Check it's valid</tt> </tt> 
     941<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     942<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isValidTime()=ndg.security.common.AttCert.AttCert-class.html#isValidTime,Method ndg.security.common.X509.X509Cert.isValidTime()=ndg.security.common.X509.X509Cert-class.html#isValidTime,Method ndg.security.common.saml.AttributeAssertion.isValidTime()=ndg.security.common.saml.AttributeAssertion-class.html#isValidTime"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
     943ndg.security.common.X509.X509Cert.isValidTime 
     944ndg.security.common.saml.AttributeAssertion.isValidTime" class="py-name" href="#" onclick="return doclink('link-43', 'isValidTime', 'link-43');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
     945<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">             </tt> 
     946<a name="L161"></a><tt class="py-lineno">161</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> 
     947<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name" targets="Class ndg.security.server.AttAuthority.AttAuthorityError=ndg.security.server.AttAuthority.AttAuthorityError-class.html"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-44', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     948<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                    <tt class="py-string">"Attribute Authority's certificate is invalid: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
     949<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">         </tt> 
     950<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-comment"># Check CA certificate</tt> </tt> 
     951<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-45" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     952ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     953ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     954ndg.security.client.ssoclient.ssoclient.lib.base.log 
     955ndg.security.client.ssoclient.ssoclient.websetup.log 
     956ndg.security.common.AttAuthority.log 
     957ndg.security.common.CredWallet.log 
     958ndg.security.common.SessionMgr.log 
     959ndg.security.common.authz.pdp.browse.log 
     960ndg.security.common.authz.pdp.log 
     961ndg.security.common.authz.pdp.proftp.log 
     962ndg.security.common.authz.pep.log 
    606963ndg.security.common.gatekeeper.log 
    607964ndg.security.common.logService.log_services_server.log 
     965ndg.security.common.pylons.security_util.log 
     966ndg.security.common.saml.log 
     967ndg.security.common.utils.ClassFactory.log 
     968ndg.security.common.utils.ConfigFileParsers.log 
     969ndg.security.common.wssecurity.BaseSignatureHandler.log 
     970ndg.security.common.wssecurity.dom.log 
     971ndg.security.common.wssecurity.etree.log 
     972ndg.security.common.xmlsec.etree.log 
    608973ndg.security.server.AttAuthority.log 
    609974ndg.security.server.Log.log 
    610975ndg.security.server.SessionMgr.log 
    611976ndg.security.server.log 
     977ndg.security.server.pylons.container.controllers.hello.log 
     978ndg.security.server.pylons.container.lib.openid_provider_util.log 
     979ndg.security.server.pylons.container.websetup.log 
     980ndg.security.server.sso.sso.config.middleware.log 
     981ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     982ndg.security.server.sso.sso.controllers.login.log 
     983ndg.security.server.sso.sso.controllers.logout.log 
     984ndg.security.server.sso.sso.controllers.test1.log 
     985ndg.security.server.sso.sso.controllers.wayf.log 
     986ndg.security.server.sso.sso.lib.base.log 
     987ndg.security.server.sso.sso.lib.openid_util.log 
     988ndg.security.server.sso.sso.websetup.log 
     989ndg.security.server.wsgi.openid_provider.log 
     990ndg.security.server.wsgi.soap.log 
     991ndg.security.server.wsgi.wssecurity.log 
     992ndg.security.server.zsi.attributeauthority.log 
    612993ndg.security.test.Log.LogTest.log 
    613 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-30', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
    614 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-31', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Reading and checking X.509 CA certificate ..."</tt><tt class="py-op">)</tt> </tt> 
    615 <a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">caCertFile</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFileList'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
    616 <a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">            <tt class="py-name">caCert</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-32', 'X509Cert', 'link-26');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-name">caCertFile</tt><tt class="py-op">)</tt> </tt> 
    617 <a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="ndg.security.common.AttCert.AttCert.read 
     994ndg.security.test.authenservice.test_authen_service.log 
     995ndg.security.test.wsSecurity.server.echoServer.log 
     996ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-45', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     997ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-46', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Reading and checking X.509 CA certificate ..."</tt><tt class="py-op">)</tt> </tt> 
     998<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">caCertFile</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFilePathList'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
     999<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">            <tt class="py-name">caCert</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-47', 'X509Cert', 'link-41');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-name">caCertFile</tt><tt class="py-op">)</tt> </tt> 
     1000<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.read 
     1001ndg.security.common.AttCert.AttCert.read 
    6181002ndg.security.common.X509.X509Cert.read 
    6191003ndg.security.common.XMLSec.XMLSecDoc.read 
    620 ndg.security.common.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-33', 'read', 'link-27');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    621 <a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">             </tt> 
    622 <a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    623 <a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                <tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
    624 ndg.security.common.X509.X509Cert.isValidTime" class="py-name" href="#" onclick="return doclink('link-34', 'isValidTime', 'link-28');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    625 <a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">                 </tt> 
    626 <a name="L178"></a><tt class="py-lineno"> 178</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> 
    627 <a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-35" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-35', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt><tt class="py-string">'CA certificate "%s" is invalid: %s'</tt><tt class="py-op">%</tt>\ </tt> 
    628 <a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">                                        <tt class="py-op">(</tt><tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Variable ndg.security.common.SQLObject.CredRepos.UserCredential.dn=ndg.security.common.SQLObject.CredRepos.UserCredential-class.html#dn,Variable ndg.security.common.SQLObject.CredRepos.UserID.dn=ndg.security.common.SQLObject.CredRepos.UserID-class.html#dn,Variable ndg.security.common.X509.X509Cert.dn=ndg.security.common.X509.X509Cert-class.html#dn"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1004ndg.security.common.openssl.OpenSSLConfig.read 
     1005ndg.security.common.wssecurity.WSSecurityConfig.read 
     1006ndg.security.common.xmlsec.etree.XMLSecDoc.read 
     1007ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.read" class="py-name" href="#" onclick="return doclink('link-48', 'read', 'link-42');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1008<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">             </tt> 
     1009<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1010<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">                <tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
     1011ndg.security.common.X509.X509Cert.isValidTime 
     1012ndg.security.common.saml.AttributeAssertion.isValidTime" class="py-name" href="#" onclick="return doclink('link-49', 'isValidTime', 'link-43');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
     1013<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">                 </tt> 
     1014<a name="L174"></a><tt class="py-lineno">174</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> 
     1015<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-50" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-50', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt><tt class="py-string">'CA certificate "%s" is invalid: %s'</tt><tt class="py-op">%</tt>\ </tt> 
     1016<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">                                        <tt class="py-op">(</tt><tt class="py-name">caCert</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Variable ndg.security.common.SQLObject.CredRepos.UserCredential.dn=ndg.security.common.SQLObject.CredRepos.UserCredential-class.html#dn,Variable ndg.security.common.SQLObject.CredRepos.UserID.dn=ndg.security.common.SQLObject.CredRepos.UserID-class.html#dn,Variable ndg.security.common.X509.X509Cert.dn=ndg.security.common.X509.X509Cert-class.html#dn"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    6291017ndg.security.common.SQLObject.CredRepos.UserID.dn 
    630 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-36', 'dn', 'link-36');">dn</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    631 <a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">         </tt> 
    632 <a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">        <tt class="py-comment"># Issuer details - serialise using the separator string set in the</tt> </tt> 
    633 <a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># properties file</tt> </tt> 
    634 <a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuer</tt> <tt class="py-op">=</tt> \ </tt> 
    635 <a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1018ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-51', 'dn', 'link-51');">dn</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
     1019<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">         </tt> 
     1020<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt class="py-comment"># Issuer details - serialise using the separator string set in the</tt> </tt> 
     1021<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># properties file</tt> </tt> 
     1022<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuer</tt> <tt class="py-op">=</tt> \ </tt> 
     1023<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    6361024ndg.security.common.SQLObject.CredRepos.UserID.dn 
    637 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-37', 'dn', 'link-36');">dn</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method ndg.security.common.X509.X500DN.serialise()=ndg.security.common.X509.X500DN-class.html#serialise"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-38', 'serialise', 'link-38');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    638 <a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"> </tt> 
    639 <a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuerSerialNumber</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Variable ndg.security.common.X509.X509Cert.serialNumber=ndg.security.common.X509.X509Cert-class.html#serialNumber"><a title="ndg.security.common.X509.X509Cert.serialNumber" class="py-name" href="#" onclick="return doclink('link-39', 'serialNumber', 'link-39');">serialNumber</a></tt> </tt> 
    640 <a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">         </tt> 
    641 <a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">         </tt> 
    642 <a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-comment"># Load host sites custom user roles interface to enable the AA to</tt> </tt> 
    643 <a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># assign roles in an attribute certificate on a getAttCert request</tt> </tt> 
    644 <a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.loadUserRolesInterface()=ndg.security.server.AttAuthority.AttAuthority-class.html#loadUserRolesInterface"><a title="ndg.security.server.AttAuthority.AttAuthority.loadUserRolesInterface" class="py-name" href="#" onclick="return doclink('link-40', 'loadUserRolesInterface', 'link-40');">loadUserRolesInterface</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    645 <a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"> </tt> 
    646 <a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"> </tt> 
    647 <a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">        <tt class="py-name">attCertFilePath</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">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    648 <a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">                                       <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertFileName'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    649 <a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">                 </tt> 
    650 <a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">        <tt class="py-comment"># Rotating file handler used for logging attribute certificates </tt> </tt> 
    651 <a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># issued.</tt> </tt> 
    652 <a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__attCertLog</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name" targets="Class ndg.security.server.AttAuthority.AttCertLog=ndg.security.server.AttAuthority.AttCertLog-class.html"><a title="ndg.security.server.AttAuthority.AttCertLog" class="py-name" href="#" onclick="return doclink('link-41', 'AttCertLog', 'link-41');">AttCertLog</a></tt><tt class="py-op">(</tt><tt class="py-name">attCertFilePath</tt><tt class="py-op">)</tt> </tt> 
    653 </div><a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">         </tt> 
    654 <a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt> 
    655 <a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________</tt> </tt> 
    656 <a name="AttAuthority.loadUserRolesInterface"></a><div id="AttAuthority.loadUserRolesInterface-def"><a name="L204"></a><tt class="py-lineno"> 204</tt> <a class="py-toggle" href="#" id="AttAuthority.loadUserRolesInterface-toggle" onclick="return toggle('AttAuthority.loadUserRolesInterface');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#loadUserRolesInterface">loadUserRolesInterface</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    657 </div><div id="AttAuthority.loadUserRolesInterface-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.loadUserRolesInterface-expanded"><a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set-up user roles interface - load host sites custom AAUserRoles</tt> </tt> 
    658 <a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">        derived class.  This class interfaces with the sites mechanism for</tt> </tt> 
    659 <a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring">        mapping user ID to the roles to which they are entitled.  This</tt> </tt> 
    660 <a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">        could be via a user database"""</tt> </tt> 
    661 <a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"> </tt> 
    662 <a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt id="link-42" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1025ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-52', 'dn', 'link-51');">dn</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method ndg.security.common.X509.X500DN.serialise()=ndg.security.common.X509.X500DN-class.html#serialise"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-53', 'serialise', 'link-53');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1026<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"> </tt> 
     1027<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuerSerialNumber</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Variable ndg.security.common.X509.X509Cert.serialNumber=ndg.security.common.X509.X509Cert-class.html#serialNumber"><a title="ndg.security.common.X509.X509Cert.serialNumber" class="py-name" href="#" onclick="return doclink('link-54', 'serialNumber', 'link-54');">serialNumber</a></tt> </tt> 
     1028<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">         </tt> 
     1029<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-comment"># Load host sites custom user roles interface to enable the AA to</tt> </tt> 
     1030<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># assign roles in an attribute certificate on a getAttCert request</tt> </tt> 
     1031<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__userRoles</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="ndg.security.common.utils.ClassFactory.instantiateClass" class="py-name" href="#" onclick="return doclink('link-55', 'instantiateClass', 'link-24');">instantiateClass</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>\ </tt> 
     1032<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">                                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesClassName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>\ </tt> 
     1033<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">                                                 <tt class="py-name">moduleFilePath</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.get()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#get,Method ndg.security.common.X509.X500DN.get()=ndg.security.common.X509.X500DN-class.html#get,Method ndg.security.common.pylons.security_util.SecuritySession.get()=ndg.security.common.pylons.security_util.SecuritySession-class.html#get,Method ndg.security.common.wssecurity.WSSecurityConfig.get()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#get,Method ndg.security.server.AttAuthority.AttAuthority.get()=ndg.security.server.AttAuthority.AttAuthority-class.html#get,Method ndg.security.server.SessionMgr.SessionMgr.get()=ndg.security.server.SessionMgr.SessionMgr-class.html#get,Method ndg.security.server.ca.SimpleCA.get()=ndg.security.server.ca.SimpleCA-class.html#get"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.get 
     1034ndg.security.common.X509.X500DN.get 
     1035ndg.security.common.pylons.security_util.SecuritySession.get 
     1036ndg.security.common.wssecurity.WSSecurityConfig.get 
     1037ndg.security.server.AttAuthority.AttAuthority.get 
     1038ndg.security.server.SessionMgr.SessionMgr.get 
     1039ndg.security.server.ca.SimpleCA.get" class="py-name" href="#" onclick="return doclink('link-56', 'get', 'link-56');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>\ </tt> 
     1040<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                                                 <tt class="py-name">objectType</tt><tt class="py-op">=</tt><tt id="link-57" class="py-name" targets="Class ndg.security.server.AttAuthority.AAUserRoles=ndg.security.server.AttAuthority.AAUserRoles-class.html"><a title="ndg.security.server.AttAuthority.AAUserRoles" class="py-name" href="#" onclick="return doclink('link-57', 'AAUserRoles', 'link-57');">AAUserRoles</a></tt><tt class="py-op">,</tt> \ </tt> 
     1041<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">                                                 <tt class="py-name">classProperties</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.get 
     1042ndg.security.common.X509.X500DN.get 
     1043ndg.security.common.pylons.security_util.SecuritySession.get 
     1044ndg.security.common.wssecurity.WSSecurityConfig.get 
     1045ndg.security.server.AttAuthority.AttAuthority.get 
     1046ndg.security.server.SessionMgr.SessionMgr.get 
     1047ndg.security.server.ca.SimpleCA.get" class="py-name" href="#" onclick="return doclink('link-58', 'get', 'link-56');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'userRolesPropFile'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     1048<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt> 
     1049<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-name">attCertFilePath</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">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
     1050<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">                                       <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertFileName'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1051<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                 </tt> 
     1052<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-comment"># Rotating file handler used for logging attribute certificates </tt> </tt> 
     1053<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># issued.</tt> </tt> 
     1054<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__attCertLog</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name" targets="Class ndg.security.server.AttAuthority.AttCertLog=ndg.security.server.AttAuthority.AttCertLog-class.html"><a title="ndg.security.server.AttAuthority.AttCertLog" class="py-name" href="#" onclick="return doclink('link-59', 'AttCertLog', 'link-59');">AttCertLog</a></tt><tt class="py-op">(</tt><tt class="py-name">attCertFilePath</tt><tt class="py-op">)</tt> </tt> 
     1055</div><a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt> 
     1056<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt> 
     1057<a name="AttAuthority.readProperties"></a><div id="AttAuthority.readProperties-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="AttAuthority.readProperties-toggle" onclick="return toggle('AttAuthority.readProperties');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#readProperties">readProperties</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1058</div><div id="AttAuthority.readProperties-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.readProperties-expanded"><a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-docstring">'''</tt> </tt> 
     1059<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring">        Read the properties files and do some checking/converting of input values</tt> </tt> 
     1060<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">        '''</tt> </tt> 
     1061<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-comment"># Configuration file properties are held together in a dictionary</tt> </tt> 
     1062<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="ndg.security.common.utils.ConfigFileParsers.readAndValidateProperties" class="py-name" href="#" onclick="return doclink('link-60', 'readAndValidateProperties', 'link-18');">readAndValidateProperties</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
     1063ndg.security.server.SessionMgr.SessionMgr.propFilePath 
     1064ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-61', 'propFilePath', 'link-35');">propFilePath</a></tt><tt class="py-op">,</tt> \ </tt> 
     1065<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                                                <tt class="py-name">validKeys</tt><tt class="py-op">=</tt><tt id="link-62" class="py-name" targets="Package ndg.security.common.AttAuthority=ndg.security.common.AttAuthority-module.html,Package ndg.security.server.AttAuthority=ndg.security.server.AttAuthority-module.html,Class ndg.security.server.AttAuthority.AttAuthority=ndg.security.server.AttAuthority.AttAuthority-class.html"><a title="ndg.security.common.AttAuthority 
     1066ndg.security.server.AttAuthority 
     1067ndg.security.server.AttAuthority.AttAuthority" class="py-name" href="#" onclick="return doclink('link-62', 'AttAuthority', 'link-62');">AttAuthority</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys 
     1068ndg.security.common.SQLObject.CredRepos.__validKeys 
     1069ndg.security.common.gatekeeper.Gatekeeper.__validKeys 
     1070ndg.security.server.AttAuthority.AttAuthority.__validKeys 
     1071ndg.security.server.SessionMgr.AbstractAutheNService.__validKeys 
     1072ndg.security.server.authenservice.MyProxy.MyProxyClient.__validKeys 
     1073ndg.security.server.ca.SimpleCA.__validKeys" class="py-name" href="#" onclick="return doclink('link-63', '__validKeys', 'link-30');">__validKeys</a></tt><tt class="py-op">)</tt> </tt> 
     1074<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">         </tt> 
     1075<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-comment"># add the WS-security properties to the main properties</tt> </tt> 
     1076<a name="L210"></a><tt class="py-lineno">210</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 class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.has_key()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#has_key,Method ndg.security.common.AttCert.AttCert.has_key()=ndg.security.common.AttCert.AttCert-class.html#has_key,Method ndg.security.common.X509.X500DN.has_key()=ndg.security.common.X509.X500DN-class.html#has_key,Method ndg.security.common.pylons.security_util.SecuritySession.has_key()=ndg.security.common.pylons.security_util.SecuritySession-class.html#has_key,Method ndg.security.common.saml.AttributeAssertion.has_key()=ndg.security.common.saml.AttributeAssertion-class.html#has_key,Method ndg.security.common.wssecurity.WSSecurityConfig.has_key()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#has_key,Method ndg.security.server.AttAuthority.AttAuthority.has_key()=ndg.security.server.AttAuthority.AttAuthority-class.html#has_key,Method ndg.security.server.SessionMgr.SessionMgr.has_key()=ndg.security.server.SessionMgr.SessionMgr-class.html#has_key,Method ndg.security.server.ca.SimpleCA.has_key()=ndg.security.server.ca.SimpleCA-class.html#has_key"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.has_key 
     1077ndg.security.common.AttCert.AttCert.has_key 
     1078ndg.security.common.X509.X500DN.has_key 
     1079ndg.security.common.pylons.security_util.SecuritySession.has_key 
     1080ndg.security.common.saml.AttributeAssertion.has_key 
     1081ndg.security.common.wssecurity.WSSecurityConfig.has_key 
     1082ndg.security.server.AttAuthority.AttAuthority.has_key 
     1083ndg.security.server.SessionMgr.SessionMgr.has_key 
     1084ndg.security.server.ca.SimpleCA.has_key" class="py-name" href="#" onclick="return doclink('link-64', 'has_key', 'link-64');">has_key</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.WS_SETTINGS_KEY 
     1085ndg.security.server.SessionMgr.SessionMgr.WS_SETTINGS_KEY" class="py-name" href="#" onclick="return doclink('link-65', 'WS_SETTINGS_KEY', 'link-31');">WS_SETTINGS_KEY</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1086<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method ndg.security.common.wssecurity.WSSecurityConfig.update()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#update"><a title="ndg.security.common.wssecurity.WSSecurityConfig.update" class="py-name" href="#" onclick="return doclink('link-66', 'update', 'link-66');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.WS_SETTINGS_KEY 
     1087ndg.security.server.SessionMgr.SessionMgr.WS_SETTINGS_KEY" class="py-name" href="#" onclick="return doclink('link-67', 'WS_SETTINGS_KEY', 'link-31');">WS_SETTINGS_KEY</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1088<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"> </tt> 
     1089<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-comment"># Ensure Certificate time parameters are converted to numeric type</tt> </tt> 
     1090<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1091<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
     1092<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">                                    <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1093<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"> </tt> 
     1094<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-comment"># Check directory path</tt> </tt> 
     1095<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1096<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt class="py-name">dirList</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1097<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt> 
     1098<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">osError</tt><tt class="py-op">:</tt> </tt> 
     1099<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-68" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-68', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1100<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">            <tt class="py-string">'Invalid directory path Attribute Certificates store "%s": %s'</tt> <tt class="py-op">%</tt> \ </tt> 
     1101<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">osError</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">)</tt> </tt> 
     1102</div><a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"> </tt> 
     1103<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">         </tt> 
     1104<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________</tt> </tt> 
     1105<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Methods for Attribute Authority dictionary like behaviour        </tt> </tt> 
     1106<a name="AttAuthority.__repr__"></a><div id="AttAuthority.__repr__-def"><a name="L230"></a><tt class="py-lineno">230</tt> <a class="py-toggle" href="#" id="AttAuthority.__repr__-toggle" onclick="return toggle('AttAuthority.__repr__');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1107</div><div id="AttAuthority.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.__repr__-expanded"><a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return file properties dictionary as representation"""</tt> </tt> 
     1108<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">)</tt> </tt> 
     1109</div><a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">     </tt> 
     1110<a name="AttAuthority.__delitem__"></a><div id="AttAuthority.__delitem__-def"><a name="L234"></a><tt class="py-lineno">234</tt> <a class="py-toggle" href="#" id="AttAuthority.__delitem__-toggle" onclick="return toggle('AttAuthority.__delitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__delitem__">__delitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1111</div><div id="AttAuthority.__delitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.__delitem__-expanded"><a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">" keys cannot be removed"</tt>         </tt> 
     1112<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">'Keys cannot be deleted from '</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 class="py-name">__name__</tt> </tt> 
     1113</div><a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"> </tt> 
     1114<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"> </tt> 
     1115<a name="AttAuthority.__getitem__"></a><div id="AttAuthority.__getitem__-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="AttAuthority.__getitem__-toggle" onclick="return toggle('AttAuthority.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1116</div><div id="AttAuthority.__getitem__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.__getitem__-expanded"><a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">""" behaves as data dictionary of Attribute</tt> </tt> 
     1117<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-string">        Authority properties</tt> </tt> 
     1118<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt> 
     1119<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-69" class="py-name" targets="Variable ndg.security.common.pylons.security_util.SecuritySession.key=ndg.security.common.pylons.security_util.SecuritySession-class.html#key"><a title="ndg.security.common.pylons.security_util.SecuritySession.key" class="py-name" href="#" onclick="return doclink('link-69', 'key', 'link-69');">key</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">:</tt> </tt> 
     1120<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid key '%s'"</tt> <tt class="py-op">%</tt> <tt id="link-70" class="py-name"><a title="ndg.security.common.pylons.security_util.SecuritySession.key" class="py-name" href="#" onclick="return doclink('link-70', 'key', 'link-69');">key</a></tt> </tt> 
     1121<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">         </tt> 
     1122<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt id="link-71" class="py-name"><a title="ndg.security.common.pylons.security_util.SecuritySession.key" class="py-name" href="#" onclick="return doclink('link-71', 'key', 'link-69');">key</a></tt><tt class="py-op">]</tt> </tt> 
     1123</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">         </tt> 
     1124<a name="AttAuthority.get"></a><div id="AttAuthority.get-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="AttAuthority.get-toggle" onclick="return toggle('AttAuthority.get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1125</div><div id="AttAuthority.get-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.get-expanded"><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.get 
     1126ndg.security.common.X509.X500DN.get 
     1127ndg.security.common.pylons.security_util.SecuritySession.get 
     1128ndg.security.common.wssecurity.WSSecurityConfig.get 
     1129ndg.security.server.AttAuthority.AttAuthority.get 
     1130ndg.security.server.SessionMgr.SessionMgr.get 
     1131ndg.security.server.ca.SimpleCA.get" class="py-name" href="#" onclick="return doclink('link-72', 'get', 'link-56');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt> 
     1132</div><a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">     </tt> 
     1133<a name="AttAuthority.clear"></a><div id="AttAuthority.clear-def"><a name="L251"></a><tt class="py-lineno">251</tt> <a class="py-toggle" href="#" id="AttAuthority.clear-toggle" onclick="return toggle('AttAuthority.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1134</div><div id="AttAuthority.clear-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.clear-expanded"><a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">"Data cannot be cleared from "</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 class="py-name">__name__</tt> </tt> 
     1135</div><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">    </tt> 
     1136<a name="AttAuthority.keys"></a><div id="AttAuthority.keys-def"><a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="AttAuthority.keys-toggle" onclick="return toggle('AttAuthority.keys');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#keys">keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1137</div><div id="AttAuthority.keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.keys-expanded"><a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.keys()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#keys,Method ndg.security.common.AttCert.AttCert.keys()=ndg.security.common.AttCert.AttCert-class.html#keys,Method ndg.security.common.X509.X500DN.keys()=ndg.security.common.X509.X500DN-class.html#keys,Variable ndg.security.common.pylons.security_util.SSOServiceQuery.keys=ndg.security.common.pylons.security_util.SSOServiceQuery-class.html#keys,Method ndg.security.common.pylons.security_util.SecuritySession.keys()=ndg.security.common.pylons.security_util.SecuritySession-class.html#keys,Method ndg.security.common.saml.AttributeAssertion.keys()=ndg.security.common.saml.AttributeAssertion-class.html#keys,Method ndg.security.common.wssecurity.WSSecurityConfig.keys()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#keys,Method ndg.security.server.AttAuthority.AttAuthority.keys()=ndg.security.server.AttAuthority.AttAuthority-class.html#keys,Method ndg.security.server.SessionMgr.SessionMgr.keys()=ndg.security.server.SessionMgr.SessionMgr-class.html#keys,Method ndg.security.server.ca.SimpleCA.keys()=ndg.security.server.ca.SimpleCA-class.html#keys"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.keys 
     1138ndg.security.common.AttCert.AttCert.keys 
     1139ndg.security.common.X509.X500DN.keys 
     1140ndg.security.common.pylons.security_util.SSOServiceQuery.keys 
     1141ndg.security.common.pylons.security_util.SecuritySession.keys 
     1142ndg.security.common.saml.AttributeAssertion.keys 
     1143ndg.security.common.wssecurity.WSSecurityConfig.keys 
     1144ndg.security.server.AttAuthority.AttAuthority.keys 
     1145ndg.security.server.SessionMgr.SessionMgr.keys 
     1146ndg.security.server.ca.SimpleCA.keys" class="py-name" href="#" onclick="return doclink('link-73', 'keys', 'link-73');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1147</div><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"> </tt> 
     1148<a name="AttAuthority.items"></a><div id="AttAuthority.items-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="AttAuthority.items-toggle" onclick="return toggle('AttAuthority.items');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#items">items</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1149</div><div id="AttAuthority.items-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.items-expanded"><a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.items()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#items,Method ndg.security.common.AttCert.AttCert.items()=ndg.security.common.AttCert.AttCert-class.html#items,Method ndg.security.common.X509.X500DN.items()=ndg.security.common.X509.X500DN-class.html#items,Method ndg.security.common.pylons.security_util.SecuritySession.items()=ndg.security.common.pylons.security_util.SecuritySession-class.html#items,Method ndg.security.common.saml.AttributeAssertion.items()=ndg.security.common.saml.AttributeAssertion-class.html#items,Method ndg.security.common.wssecurity.WSSecurityConfig.items()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#items,Method ndg.security.server.AttAuthority.AttAuthority.items()=ndg.security.server.AttAuthority.AttAuthority-class.html#items,Method ndg.security.server.SessionMgr.SessionMgr.items()=ndg.security.server.SessionMgr.SessionMgr-class.html#items,Method ndg.security.server.ca.SimpleCA.items()=ndg.security.server.ca.SimpleCA-class.html#items"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.items 
     1150ndg.security.common.AttCert.AttCert.items 
     1151ndg.security.common.X509.X500DN.items 
     1152ndg.security.common.pylons.security_util.SecuritySession.items 
     1153ndg.security.common.saml.AttributeAssertion.items 
     1154ndg.security.common.wssecurity.WSSecurityConfig.items 
     1155ndg.security.server.AttAuthority.AttAuthority.items 
     1156ndg.security.server.SessionMgr.SessionMgr.items 
     1157ndg.security.server.ca.SimpleCA.items" class="py-name" href="#" onclick="return doclink('link-74', 'items', 'link-74');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1158</div><a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"> </tt> 
     1159<a name="AttAuthority.values"></a><div id="AttAuthority.values-def"><a name="L260"></a><tt class="py-lineno">260</tt> <a class="py-toggle" href="#" id="AttAuthority.values-toggle" onclick="return toggle('AttAuthority.values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1160</div><div id="AttAuthority.values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.values-expanded"><a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.values()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#values,Method ndg.security.common.AttCert.AttCert.values()=ndg.security.common.AttCert.AttCert-class.html#values,Method ndg.security.common.X509.X500DN.values()=ndg.security.common.X509.X500DN-class.html#values,Method ndg.security.common.pylons.security_util.SecuritySession.values()=ndg.security.common.pylons.security_util.SecuritySession-class.html#values,Method ndg.security.common.saml.AttributeAssertion.values()=ndg.security.common.saml.AttributeAssertion-class.html#values,Method ndg.security.common.wssecurity.WSSecurityConfig.values()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#values,Method ndg.security.server.AttAuthority.AttAuthority.values()=ndg.security.server.AttAuthority.AttAuthority-class.html#values,Method ndg.security.server.SessionMgr.SessionMgr.values()=ndg.security.server.SessionMgr.SessionMgr-class.html#values,Method ndg.security.server.ca.SimpleCA.values()=ndg.security.server.ca.SimpleCA-class.html#values"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.values 
     1161ndg.security.common.AttCert.AttCert.values 
     1162ndg.security.common.X509.X500DN.values 
     1163ndg.security.common.pylons.security_util.SecuritySession.values 
     1164ndg.security.common.saml.AttributeAssertion.values 
     1165ndg.security.common.wssecurity.WSSecurityConfig.values 
     1166ndg.security.server.AttAuthority.AttAuthority.values 
     1167ndg.security.server.SessionMgr.SessionMgr.values 
     1168ndg.security.server.ca.SimpleCA.values" class="py-name" href="#" onclick="return doclink('link-75', 'values', 'link-75');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1169</div><a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt> 
     1170<a name="AttAuthority.has_key"></a><div id="AttAuthority.has_key-def"><a name="L263"></a><tt class="py-lineno">263</tt> <a class="py-toggle" href="#" id="AttAuthority.has_key-toggle" onclick="return toggle('AttAuthority.has_key');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#has_key">has_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1171</div><div id="AttAuthority.has_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.has_key-expanded"><a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.has_key 
     1172ndg.security.common.AttCert.AttCert.has_key 
     1173ndg.security.common.X509.X500DN.has_key 
     1174ndg.security.common.pylons.security_util.SecuritySession.has_key 
     1175ndg.security.common.saml.AttributeAssertion.has_key 
     1176ndg.security.common.wssecurity.WSSecurityConfig.has_key 
     1177ndg.security.server.AttAuthority.AttAuthority.has_key 
     1178ndg.security.server.SessionMgr.SessionMgr.has_key 
     1179ndg.security.server.ca.SimpleCA.has_key" class="py-name" href="#" onclick="return doclink('link-76', 'has_key', 'link-64');">has_key</a></tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="ndg.security.common.pylons.security_util.SecuritySession.key" class="py-name" href="#" onclick="return doclink('link-77', 'key', 'link-69');">key</a></tt><tt class="py-op">)</tt> </tt> 
     1180</div><a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"> </tt> 
     1181<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">    <tt class="py-comment"># 'in' operator</tt> </tt> 
     1182<a name="AttAuthority.__contains__"></a><div id="AttAuthority.__contains__-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="AttAuthority.__contains__-toggle" onclick="return toggle('AttAuthority.__contains__');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__contains__">__contains__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1183</div><div id="AttAuthority.__contains__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.__contains__-expanded"><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-78" class="py-name"><a title="ndg.security.common.pylons.security_util.SecuritySession.key" class="py-name" href="#" onclick="return doclink('link-78', 'key', 'link-69');">key</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt> </tt> 
     1184</div><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt> 
     1185<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"> </tt> 
     1186<a name="AttAuthority.setPropFilePath"></a><div id="AttAuthority.setPropFilePath-def"><a name="L271"></a><tt class="py-lineno">271</tt> <a class="py-toggle" href="#" id="AttAuthority.setPropFilePath-toggle" onclick="return toggle('AttAuthority.setPropFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#setPropFilePath">setPropFilePath</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-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1187</div><div id="AttAuthority.setPropFilePath-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.setPropFilePath-expanded"><a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set properties file from input or based on environment variable</tt> </tt> 
     1188<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">        settings"""</tt> </tt> 
     1189<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt id="link-79" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1190ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1191ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1192ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1193ndg.security.client.ssoclient.ssoclient.websetup.log 
     1194ndg.security.common.AttAuthority.log 
     1195ndg.security.common.CredWallet.log 
     1196ndg.security.common.SessionMgr.log 
     1197ndg.security.common.authz.pdp.browse.log 
     1198ndg.security.common.authz.pdp.log 
     1199ndg.security.common.authz.pdp.proftp.log 
     1200ndg.security.common.authz.pep.log 
    6631201ndg.security.common.gatekeeper.log 
    6641202ndg.security.common.logService.log_services_server.log 
     1203ndg.security.common.pylons.security_util.log 
     1204ndg.security.common.saml.log 
     1205ndg.security.common.utils.ClassFactory.log 
     1206ndg.security.common.utils.ConfigFileParsers.log 
     1207ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1208ndg.security.common.wssecurity.dom.log 
     1209ndg.security.common.wssecurity.etree.log 
     1210ndg.security.common.xmlsec.etree.log 
    6651211ndg.security.server.AttAuthority.log 
    6661212ndg.security.server.Log.log 
    6671213ndg.security.server.SessionMgr.log 
    6681214ndg.security.server.log 
     1215ndg.security.server.pylons.container.controllers.hello.log 
     1216ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1217ndg.security.server.pylons.container.websetup.log 
     1218ndg.security.server.sso.sso.config.middleware.log 
     1219ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1220ndg.security.server.sso.sso.controllers.login.log 
     1221ndg.security.server.sso.sso.controllers.logout.log 
     1222ndg.security.server.sso.sso.controllers.test1.log 
     1223ndg.security.server.sso.sso.controllers.wayf.log 
     1224ndg.security.server.sso.sso.lib.base.log 
     1225ndg.security.server.sso.sso.lib.openid_util.log 
     1226ndg.security.server.sso.sso.websetup.log 
     1227ndg.security.server.wsgi.openid_provider.log 
     1228ndg.security.server.wsgi.soap.log 
     1229ndg.security.server.wsgi.wssecurity.log 
     1230ndg.security.server.zsi.attributeauthority.log 
    6691231ndg.security.test.Log.LogTest.log 
    670 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-42', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
    671 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-43', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Loading User roles interface ..."</tt><tt class="py-op">)</tt> </tt> 
    672 <a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    673 <a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    674 <a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">                <tt class="py-comment"># Module file path may be None if the new module to be loaded</tt> </tt> 
    675 <a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># can be found in the existing system path            </tt> </tt> 
    676 <a name="L215"></a><tt class="py-lineno"> 215</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 class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">]</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> 
    677 <a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</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">exists</tt><tt class="py-op">(</tt>\ </tt> 
    678 <a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    679 <a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-string">"File path '%s' doesn't exist"</tt> <tt class="py-op">%</tt> \ </tt> 
    680 <a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">]</tt> </tt> 
    681 <a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">                               </tt> 
    682 <a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">                    <tt class="py-comment"># Temporarily extend system path ready for import</tt> </tt> 
    683 <a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">sysPathBak</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt> 
    684 <a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">                               </tt> 
    685 <a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">                    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    686 <a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">                 </tt> 
    687 <a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">                <tt class="py-comment"># Import module name specified in properties file</tt> </tt> 
    688 <a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">userRolesMod</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    689 <a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                                          <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> 
    690 <a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">                                          <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt> 
    691 <a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">                                          <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesClassName'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    692 <a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">     </tt> 
    693 <a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">                <tt class="py-name">userRolesClass</tt> <tt class="py-op">=</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-string">'userRolesMod.'</tt> <tt class="py-op">+</tt> \ </tt> 
    694 <a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">                                     <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesClassName'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    695 <a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt> 
    696 <a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    697 <a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">                    <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">sysPathBak</tt> </tt> 
    698 <a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt> 
    699 <a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">                    <tt class="py-comment"># sysPathBak may not have been defined</tt> </tt> 
    700 <a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">pass</tt> </tt> 
    701 <a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">                                 </tt> 
    702 <a name="L241"></a><tt class="py-lineno"> 241</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> 
    703 <a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-44', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt><tt class="py-string">'Importing User Roles module: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    704 <a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"> </tt> 
    705 <a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">        <tt class="py-comment"># Check class inherits from AAUserRoles abstract base class</tt> </tt> 
    706 <a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">userRolesClass</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name" targets="Class ndg.security.server.AttAuthority.AAUserRoles=ndg.security.server.AttAuthority.AAUserRoles-class.html"><a title="ndg.security.server.AttAuthority.AAUserRoles" class="py-name" href="#" onclick="return doclink('link-45', 'AAUserRoles', 'link-45');">AAUserRoles</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    707 <a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-46" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-46', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    708 <a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">                <tt class="py-string">"User Roles class %s must be derived from AAUserRoles"</tt> <tt class="py-op">%</tt> \ </tt> 
    709 <a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesClassName'</tt><tt class="py-op">]</tt> </tt> 
    710 <a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"> </tt> 
    711 <a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"> </tt> 
    712 <a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">        <tt class="py-comment"># Instantiate custom class</tt> </tt> 
    713 <a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    714 <a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__userRoles</tt><tt class="py-op">=</tt><tt class="py-name">userRolesClass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesPropFile'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    715 <a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">             </tt> 
    716 <a name="L255"></a><tt class="py-lineno"> 255</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> 
    717 <a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-47" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-47', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    718 <a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">                <tt class="py-string">"Error instantiating User Roles interface: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    719 <a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">                 </tt> 
    720 <a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt id="link-48" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1232ndg.security.test.authenservice.test_authen_service.log 
     1233ndg.security.test.wsSecurity.server.echoServer.log 
     1234ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-79', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1235ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-80', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Setting property file path"</tt><tt class="py-op">)</tt> </tt> 
     1236<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">val</tt><tt class="py-op">:</tt> </tt> 
     1237<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'NDGSEC_AA_PROPFILEPATH'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt> 
     1238<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                <tt class="py-name">val</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-string">'NDGSEC_AA_PROPFILEPATH'</tt><tt class="py-op">]</tt> </tt> 
     1239<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                 </tt> 
     1240<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-string">'NDGSEC_DIR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt> 
     1241<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                <tt class="py-name">val</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">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'NDGSEC_DIR'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>  </tt> 
     1242<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">                                   <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-81" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.__confDir 
     1243ndg.security.server.SessionMgr.SessionMgr.__confDir 
     1244ndg.security.server.ca.SimpleCA.__confDir" class="py-name" href="#" onclick="return doclink('link-81', '__confDir', 'link-28');">__confDir</a></tt><tt class="py-op">,</tt> </tt> 
     1245<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">                                   <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-82" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.__propFileName 
     1246ndg.security.server.SessionMgr.SessionMgr.__propFileName 
     1247ndg.security.server.ca.SimpleCA.__propFileName" class="py-name" href="#" onclick="return doclink('link-82', '__propFileName', 'link-29');">__propFileName</a></tt><tt class="py-op">)</tt> </tt> 
     1248<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     1249<a name="L284"></a><tt class="py-lineno">284</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">'Unable to set default Attribute '</tt> <tt class="py-op">+</tt> \ </tt> 
     1250<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                    <tt class="py-string">'Authority properties file path: neither '</tt> <tt class="py-op">+</tt> \ </tt> 
     1251<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                    <tt class="py-string">'"NDGSEC_AA_PROPFILEPATH" or "NDGSEC_DIR" environment '</tt> <tt class="py-op">+</tt> \ </tt> 
     1252<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">                    <tt class="py-string">'variables are set'</tt> </tt> 
     1253<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">                 </tt> 
     1254<a name="L289"></a><tt class="py-lineno">289</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> 
     1255<a name="L290"></a><tt class="py-lineno">290</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">"Input Properties file path "</tt> <tt class="py-op">+</tt> \ </tt> 
     1256<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                                  <tt class="py-string">"must be a valid string."</tt> </tt> 
     1257<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">       </tt> 
     1258<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 class="py-name">_propFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
     1259<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">        <tt id="link-83" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1260ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1261ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1262ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1263ndg.security.client.ssoclient.ssoclient.websetup.log 
     1264ndg.security.common.AttAuthority.log 
     1265ndg.security.common.CredWallet.log 
     1266ndg.security.common.SessionMgr.log 
     1267ndg.security.common.authz.pdp.browse.log 
     1268ndg.security.common.authz.pdp.log 
     1269ndg.security.common.authz.pdp.proftp.log 
     1270ndg.security.common.authz.pep.log 
    7211271ndg.security.common.gatekeeper.log 
    7221272ndg.security.common.logService.log_services_server.log 
     1273ndg.security.common.pylons.security_util.log 
     1274ndg.security.common.saml.log 
     1275ndg.security.common.utils.ClassFactory.log 
     1276ndg.security.common.utils.ConfigFileParsers.log 
     1277ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1278ndg.security.common.wssecurity.dom.log 
     1279ndg.security.common.wssecurity.etree.log 
     1280ndg.security.common.xmlsec.etree.log 
    7231281ndg.security.server.AttAuthority.log 
    7241282ndg.security.server.Log.log 
    7251283ndg.security.server.SessionMgr.log 
    7261284ndg.security.server.log 
     1285ndg.security.server.pylons.container.controllers.hello.log 
     1286ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1287ndg.security.server.pylons.container.websetup.log 
     1288ndg.security.server.sso.sso.config.middleware.log 
     1289ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1290ndg.security.server.sso.sso.controllers.login.log 
     1291ndg.security.server.sso.sso.controllers.logout.log 
     1292ndg.security.server.sso.sso.controllers.test1.log 
     1293ndg.security.server.sso.sso.controllers.wayf.log 
     1294ndg.security.server.sso.sso.lib.base.log 
     1295ndg.security.server.sso.sso.lib.openid_util.log 
     1296ndg.security.server.sso.sso.websetup.log 
     1297ndg.security.server.wsgi.openid_provider.log 
     1298ndg.security.server.wsgi.soap.log 
     1299ndg.security.server.wsgi.wssecurity.log 
     1300ndg.security.server.zsi.attributeauthority.log 
    7271301ndg.security.test.Log.LogTest.log 
    728 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-48', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
    729 ndg.security.common.logService.log_services.logBindingSOAP.info 
    730 ndg.security.server.MyProxy.MyProxyClient.info" class="py-name" href="#" onclick="return doclink('link-49', 'info', 'link-18');">info</a></tt><tt class="py-op">(</tt>\ </tt> 
    731 <a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">             <tt class="py-string">'Instantiated "%s" class from user roles module: "%s" in "%s"'</tt> <tt class="py-op">%</tt>\ </tt> 
    732 <a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesClassName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    733 <a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    734 <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 class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'userRolesModFilePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    735 </div><a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"> </tt> 
    736 <a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">         </tt> 
    737 <a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________</tt> </tt> 
    738 <a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Methods for Attribute Authority dictionary like behaviour        </tt> </tt> 
    739 <a name="AttAuthority.__repr__"></a><div id="AttAuthority.__repr__-def"><a name="L268"></a><tt class="py-lineno"> 268</tt> <a class="py-toggle" href="#" id="AttAuthority.__repr__-toggle" onclick="return toggle('AttAuthority.__repr__');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    740 </div><div id="AttAuthority.__repr__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.__repr__-expanded"><a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return file properties dictionary as representation"""</tt> </tt> 
    741 <a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">)</tt> </tt> 
    742 </div><a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">     </tt> 
    743 <a name="AttAuthority.__delitem__"></a><div id="AttAuthority.__delitem__-def"><a name="L272"></a><tt class="py-lineno"> 272</tt> <a class="py-toggle" href="#" id="AttAuthority.__delitem__-toggle" onclick="return toggle('AttAuthority.__delitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__delitem__">__delitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    744 </div><div id="AttAuthority.__delitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.__delitem__-expanded"><a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">" keys cannot be removed"</tt>         </tt> 
    745 <a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">'Keys cannot be deleted from '</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 class="py-name">__name__</tt> </tt> 
    746 </div><a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"> </tt> 
    747 <a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"> </tt> 
    748 <a name="AttAuthority.__getitem__"></a><div id="AttAuthority.__getitem__-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="AttAuthority.__getitem__-toggle" onclick="return toggle('AttAuthority.__getitem__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__getitem__">__getitem__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    749 </div><div id="AttAuthority.__getitem__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.__getitem__-expanded"><a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">+</tt> <tt class="py-string">""" behaves as data dictionary of Attribute</tt> </tt> 
    750 <a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"><tt class="py-string">        Authority properties</tt> </tt> 
    751 <a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line"><tt class="py-string">        """</tt> </tt> 
    752 <a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">:</tt> </tt> 
    753 <a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid key '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt> </tt> 
    754 <a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">         </tt> 
    755 <a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt> 
    756 </div><a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">         </tt> 
    757 <a name="AttAuthority.get"></a><div id="AttAuthority.get-def"><a name="L286"></a><tt class="py-lineno"> 286</tt> <a class="py-toggle" href="#" id="AttAuthority.get-toggle" onclick="return toggle('AttAuthority.get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    758 </div><div id="AttAuthority.get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.get-expanded"><a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.get()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#get,Method ndg.security.common.X509.X500DN.get()=ndg.security.common.X509.X500DN-class.html#get,Method ndg.security.server.AttAuthority.AttAuthority.get()=ndg.security.server.AttAuthority.AttAuthority-class.html#get,Method ndg.security.server.SessionMgr.SessionMgr.get()=ndg.security.server.SessionMgr.SessionMgr-class.html#get,Method ndg.security.server.ca.SimpleCA.get()=ndg.security.server.ca.SimpleCA-class.html#get"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.get 
    759 ndg.security.common.X509.X500DN.get 
    760 ndg.security.server.AttAuthority.AttAuthority.get 
    761 ndg.security.server.SessionMgr.SessionMgr.get 
    762 ndg.security.server.ca.SimpleCA.get" class="py-name" href="#" onclick="return doclink('link-50', 'get', 'link-50');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt> 
    763 </div><a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">     </tt> 
    764 <a name="AttAuthority.clear"></a><div id="AttAuthority.clear-def"><a name="L289"></a><tt class="py-lineno"> 289</tt> <a class="py-toggle" href="#" id="AttAuthority.clear-toggle" onclick="return toggle('AttAuthority.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    765 </div><div id="AttAuthority.clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.clear-expanded"><a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">,</tt> <tt class="py-string">"Data cannot be cleared from "</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 class="py-name">__name__</tt> </tt> 
    766 </div><a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">    </tt> 
    767 <a name="AttAuthority.keys"></a><div id="AttAuthority.keys-def"><a name="L292"></a><tt class="py-lineno"> 292</tt> <a class="py-toggle" href="#" id="AttAuthority.keys-toggle" onclick="return toggle('AttAuthority.keys');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#keys">keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    768 </div><div id="AttAuthority.keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.keys-expanded"><a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.keys()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#keys,Method ndg.security.common.AttCert.AttCert.keys()=ndg.security.common.AttCert.AttCert-class.html#keys,Method ndg.security.common.X509.X500DN.keys()=ndg.security.common.X509.X500DN-class.html#keys,Method ndg.security.server.AttAuthority.AttAuthority.keys()=ndg.security.server.AttAuthority.AttAuthority-class.html#keys,Method ndg.security.server.SessionMgr.SessionMgr.keys()=ndg.security.server.SessionMgr.SessionMgr-class.html#keys,Method ndg.security.server.ca.SimpleCA.keys()=ndg.security.server.ca.SimpleCA-class.html#keys"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.keys 
    769 ndg.security.common.AttCert.AttCert.keys 
    770 ndg.security.common.X509.X500DN.keys 
    771 ndg.security.server.AttAuthority.AttAuthority.keys 
    772 ndg.security.server.SessionMgr.SessionMgr.keys 
    773 ndg.security.server.ca.SimpleCA.keys" class="py-name" href="#" onclick="return doclink('link-51', 'keys', 'link-51');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    774 </div><a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"> </tt> 
    775 <a name="AttAuthority.items"></a><div id="AttAuthority.items-def"><a name="L295"></a><tt class="py-lineno"> 295</tt> <a class="py-toggle" href="#" id="AttAuthority.items-toggle" onclick="return toggle('AttAuthority.items');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#items">items</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    776 </div><div id="AttAuthority.items-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.items-expanded"><a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.items()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#items,Method ndg.security.common.AttCert.AttCert.items()=ndg.security.common.AttCert.AttCert-class.html#items,Method ndg.security.common.X509.X500DN.items()=ndg.security.common.X509.X500DN-class.html#items,Method ndg.security.server.AttAuthority.AttAuthority.items()=ndg.security.server.AttAuthority.AttAuthority-class.html#items,Method ndg.security.server.SessionMgr.SessionMgr.items()=ndg.security.server.SessionMgr.SessionMgr-class.html#items,Method ndg.security.server.ca.SimpleCA.items()=ndg.security.server.ca.SimpleCA-class.html#items"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.items 
    777 ndg.security.common.AttCert.AttCert.items 
    778 ndg.security.common.X509.X500DN.items 
    779 ndg.security.server.AttAuthority.AttAuthority.items 
    780 ndg.security.server.SessionMgr.SessionMgr.items 
    781 ndg.security.server.ca.SimpleCA.items" class="py-name" href="#" onclick="return doclink('link-52', 'items', 'link-52');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    782 </div><a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"> </tt> 
    783 <a name="AttAuthority.values"></a><div id="AttAuthority.values-def"><a name="L298"></a><tt class="py-lineno"> 298</tt> <a class="py-toggle" href="#" id="AttAuthority.values-toggle" onclick="return toggle('AttAuthority.values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#values">values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    784 </div><div id="AttAuthority.values-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.values-expanded"><a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.values()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#values,Method ndg.security.common.AttCert.AttCert.values()=ndg.security.common.AttCert.AttCert-class.html#values,Method ndg.security.common.X509.X500DN.values()=ndg.security.common.X509.X500DN-class.html#values,Method ndg.security.server.AttAuthority.AttAuthority.values()=ndg.security.server.AttAuthority.AttAuthority-class.html#values,Method ndg.security.server.SessionMgr.SessionMgr.values()=ndg.security.server.SessionMgr.SessionMgr-class.html#values,Method ndg.security.server.ca.SimpleCA.values()=ndg.security.server.ca.SimpleCA-class.html#values"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.values 
    785 ndg.security.common.AttCert.AttCert.values 
    786 ndg.security.common.X509.X500DN.values 
    787 ndg.security.server.AttAuthority.AttAuthority.values 
    788 ndg.security.server.SessionMgr.SessionMgr.values 
    789 ndg.security.server.ca.SimpleCA.values" class="py-name" href="#" onclick="return doclink('link-53', 'values', 'link-53');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    790 </div><a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"> </tt> 
    791 <a name="AttAuthority.has_key"></a><div id="AttAuthority.has_key-def"><a name="L301"></a><tt class="py-lineno"> 301</tt> <a class="py-toggle" href="#" id="AttAuthority.has_key-toggle" onclick="return toggle('AttAuthority.has_key');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#has_key">has_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    792 </div><div id="AttAuthority.has_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.has_key-expanded"><a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method ndg.security.client.SimpleCAClient.SimpleCAClient.has_key()=ndg.security.client.SimpleCAClient.SimpleCAClient-class.html#has_key,Method ndg.security.common.AttCert.AttCert.has_key()=ndg.security.common.AttCert.AttCert-class.html#has_key,Method ndg.security.common.X509.X500DN.has_key()=ndg.security.common.X509.X500DN-class.html#has_key,Method ndg.security.server.AttAuthority.AttAuthority.has_key()=ndg.security.server.AttAuthority.AttAuthority-class.html#has_key,Method ndg.security.server.SessionMgr.SessionMgr.has_key()=ndg.security.server.SessionMgr.SessionMgr-class.html#has_key,Method ndg.security.server.ca.SimpleCA.has_key()=ndg.security.server.ca.SimpleCA-class.html#has_key"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.has_key 
    793 ndg.security.common.AttCert.AttCert.has_key 
    794 ndg.security.common.X509.X500DN.has_key 
    795 ndg.security.server.AttAuthority.AttAuthority.has_key 
    796 ndg.security.server.SessionMgr.SessionMgr.has_key 
    797 ndg.security.server.ca.SimpleCA.has_key" class="py-name" href="#" onclick="return doclink('link-54', 'has_key', 'link-54');">has_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt> 
    798 </div><a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"> </tt> 
    799 <a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">    <tt class="py-comment"># 'in' operator</tt> </tt> 
    800 <a name="AttAuthority.__contains__"></a><div id="AttAuthority.__contains__-def"><a name="L305"></a><tt class="py-lineno"> 305</tt> <a class="py-toggle" href="#" id="AttAuthority.__contains__-toggle" onclick="return toggle('AttAuthority.__contains__');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#__contains__">__contains__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    801 </div><div id="AttAuthority.__contains__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.__contains__-expanded"><a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt> </tt> 
    802 </div><a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"> </tt> 
    803 <a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"> </tt> 
    804 <a name="AttAuthority.setPropFilePath"></a><div id="AttAuthority.setPropFilePath-def"><a name="L309"></a><tt class="py-lineno"> 309</tt> <a class="py-toggle" href="#" id="AttAuthority.setPropFilePath-toggle" onclick="return toggle('AttAuthority.setPropFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#setPropFilePath">setPropFilePath</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-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    805 </div><div id="AttAuthority.setPropFilePath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.setPropFilePath-expanded"><a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set properties file from input or based on environment variable</tt> </tt> 
    806 <a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">        settings"""</tt> </tt> 
    807 <a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">val</tt><tt class="py-op">:</tt> </tt> 
    808 <a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'NDGSEC_AA_PROPFILEPATH'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt> 
    809 <a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                <tt class="py-name">val</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-string">'NDGSEC_AA_PROPFILEPATH'</tt><tt class="py-op">]</tt> </tt> 
    810 <a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                 </tt> 
    811 <a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-string">'NDGSEC_DIR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt> 
    812 <a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                <tt class="py-name">val</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">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'NDGSEC_DIR'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt>  </tt> 
    813 <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 class="py-name">__class__</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.__confDir 
    814 ndg.security.server.SessionMgr.SessionMgr.__confDir 
    815 ndg.security.server.ca.SimpleCA.__confDir" class="py-name" href="#" onclick="return doclink('link-55', '__confDir', 'link-14');">__confDir</a></tt><tt class="py-op">,</tt> </tt> 
    816 <a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">                                   <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-56" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.__propFileName 
    817 ndg.security.server.SessionMgr.SessionMgr.__propFileName 
    818 ndg.security.server.ca.SimpleCA.__propFileName" class="py-name" href="#" onclick="return doclink('link-56', '__propFileName', 'link-15');">__propFileName</a></tt><tt class="py-op">)</tt> </tt> 
    819 <a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    820 <a name="L321"></a><tt class="py-lineno"> 321</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">'Unable to set default Attribute '</tt> <tt class="py-op">+</tt> \ </tt> 
    821 <a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">                    <tt class="py-string">'Authority properties file path: neither '</tt> <tt class="py-op">+</tt> \ </tt> 
    822 <a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">                    <tt class="py-string">'"NDGSEC_AA_PROPFILEPATH" or "NDGSEC_DIR" environment '</tt> <tt class="py-op">+</tt> \ </tt> 
    823 <a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">                    <tt class="py-string">'variables are set'</tt> </tt> 
    824 <a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">                 </tt> 
    825 <a name="L326"></a><tt class="py-lineno"> 326</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> 
    826 <a name="L327"></a><tt class="py-lineno"> 327</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">"Input Properties file path "</tt> <tt class="py-op">+</tt> \ </tt> 
    827 <a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">                                  <tt class="py-string">"must be a valid string."</tt> </tt> 
    828 <a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">       </tt> 
    829 <a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__propFilePath</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt> 
    830 </div><a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">         </tt> 
    831 <a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">    <tt class="py-comment"># Also set up as a property</tt> </tt> 
    832 <a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-57" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
    833 ndg.security.server.SessionMgr.SessionMgr.propFilePath 
    834 ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-57', 'propFilePath', 'link-21');">propFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-58" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.setPropFilePath 
    835 ndg.security.server.SessionMgr.SessionMgr.setPropFilePath 
    836 ndg.security.server.ca.SimpleCA.setPropFilePath" class="py-name" href="#" onclick="return doclink('link-58', 'setPropFilePath', 'link-20');">setPropFilePath</a></tt><tt class="py-op">,</tt> </tt> 
    837 <a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                            <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Set the path to the properties file"</tt><tt class="py-op">)</tt>    </tt> 
    838 <a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">     </tt> 
    839 <a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">     </tt> 
    840 <a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________</tt> </tt> 
    841 <a name="AttAuthority.getAttCert"></a><div id="AttAuthority.getAttCert-def"><a name="L338"></a><tt class="py-lineno"> 338</tt> <a class="py-toggle" href="#" id="AttAuthority.getAttCert-toggle" onclick="return toggle('AttAuthority.getAttCert');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#getAttCert">getAttCert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
    842 <a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                   <tt class="py-param">userId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    843 <a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">                   <tt class="py-param">holderCert</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    844 <a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">                   <tt class="py-param">holderCertFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    845 <a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                   <tt class="py-param">userAttCert</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
    846 <a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">                   <tt class="py-param">userAttCertFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    847 </div><div id="AttAuthority.getAttCert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.getAttCert-expanded"><a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"> </tt> 
    848 <a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">        <tt class="py-docstring">"""Request a new Attribute Certificate for use in authorisation</tt> </tt> 
    849 <a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    850 <a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"><tt class="py-docstring">        getAttCert([userId=uid][holderCert=px|holderCertFilePath=pxFile, ]</tt> </tt> 
    851 <a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line"><tt class="py-docstring">                   [userAttCert=cert|userAttCertFilePath=certFile])</tt> </tt> 
    852 <a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"><tt class="py-docstring">         </tt> </tt> 
    853 <a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"><tt class="py-docstring">        @type userId: string</tt> </tt> 
    854 <a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"><tt class="py-docstring">        @param userId: identifier for the user who is entitled to the roles</tt> </tt> 
    855 <a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-docstring">        in the certificate that is issued.  If this keyword is omitted, then</tt> </tt> 
    856 <a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"><tt class="py-docstring">        the userId will be set to the DN of the holder.</tt> </tt> 
    857 <a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    858 <a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-docstring">        holder = the holder of the certificate - an inidividual user or an</tt> </tt> 
    859 <a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-docstring">        organisation to which the user belongs who vouches for that user's ID</tt> </tt> 
    860 <a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    861 <a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"><tt class="py-docstring">        userId = the identifier for the user who is entitled to the roles</tt> </tt> 
    862 <a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"><tt class="py-docstring">        specified in the Attribute Certificate that is issued.</tt> </tt> 
    863 <a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-docstring">                  </tt> </tt> 
    864 <a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-docstring">        @type holderCert: string / ndg.security.common.X509.X509Cert type</tt> </tt> 
    865 <a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCert: base64 encoded string containing proxy cert./</tt> </tt> 
    866 <a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">        X.509 cert object corresponding to the ID who will be the HOLDER of</tt> </tt> 
    867 <a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">        the Attribute Certificate that will be issued.  - Normally, using</tt> </tt> 
    868 <a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">        proxy certificates, the holder and user ID are the same but there</tt> </tt> 
    869 <a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">        may be cases where the holder will be an organisation ID.  This is the</tt> </tt> 
    870 <a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">        case for NDG security with the DEWS project</tt> </tt> 
    871 <a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    872 <a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCertFilePath: string</tt> </tt> 
    873 <a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCertFilePath: file path to proxy/X.509 certificate of </tt> </tt> 
    874 <a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">        candidate holder</tt> </tt> 
    875 <a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">      </tt> </tt> 
    876 <a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">        @type userAttCert: string or AttCert type</tt> </tt> 
    877 <a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">        @param userAttCert: externally provided attribute certificate from </tt> </tt> 
    878 <a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">        another data centre.  This is only necessary if the user is not </tt> </tt> 
    879 <a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring">        registered with this attribute authority. </tt> </tt> 
    880 <a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">                       </tt> </tt> 
    881 <a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">        @type userAttCertFilePath: string </tt> </tt> 
    882 <a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">        @param userAttCertFilePath: alternative to userAttCert except pass </tt> </tt> 
    883 <a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">        in as a file path to an attribute certificate instead.</tt> </tt> 
    884 <a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
    885 <a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: AttCert</tt> </tt> 
    886 <a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">        @return: new attribute certificate"""</tt> </tt> 
    887 <a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"> </tt> 
    888 <a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">        <tt id="link-59" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1302ndg.security.test.authenservice.test_authen_service.log 
     1303ndg.security.test.wsSecurity.server.echoServer.log 
     1304ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-83', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1305ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-84', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Path set to: %s"</tt> <tt class="py-op">%</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt> 
     1306</div><a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">         </tt> 
     1307<a name="AttAuthority.getPropFilePath"></a><div id="AttAuthority.getPropFilePath-def"><a name="L296"></a><tt class="py-lineno">296</tt> <a class="py-toggle" href="#" id="AttAuthority.getPropFilePath-toggle" onclick="return toggle('AttAuthority.getPropFilePath');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#getPropFilePath">getPropFilePath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1308</div><div id="AttAuthority.getPropFilePath-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.getPropFilePath-expanded"><a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt id="link-85" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1309ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1310ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1311ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1312ndg.security.client.ssoclient.ssoclient.websetup.log 
     1313ndg.security.common.AttAuthority.log 
     1314ndg.security.common.CredWallet.log 
     1315ndg.security.common.SessionMgr.log 
     1316ndg.security.common.authz.pdp.browse.log 
     1317ndg.security.common.authz.pdp.log 
     1318ndg.security.common.authz.pdp.proftp.log 
     1319ndg.security.common.authz.pep.log 
    8891320ndg.security.common.gatekeeper.log 
    8901321ndg.security.common.logService.log_services_server.log 
     1322ndg.security.common.pylons.security_util.log 
     1323ndg.security.common.saml.log 
     1324ndg.security.common.utils.ClassFactory.log 
     1325ndg.security.common.utils.ConfigFileParsers.log 
     1326ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1327ndg.security.common.wssecurity.dom.log 
     1328ndg.security.common.wssecurity.etree.log 
     1329ndg.security.common.xmlsec.etree.log 
    8911330ndg.security.server.AttAuthority.log 
    8921331ndg.security.server.Log.log 
    8931332ndg.security.server.SessionMgr.log 
    8941333ndg.security.server.log 
     1334ndg.security.server.pylons.container.controllers.hello.log 
     1335ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1336ndg.security.server.pylons.container.websetup.log 
     1337ndg.security.server.sso.sso.config.middleware.log 
     1338ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1339ndg.security.server.sso.sso.controllers.login.log 
     1340ndg.security.server.sso.sso.controllers.logout.log 
     1341ndg.security.server.sso.sso.controllers.test1.log 
     1342ndg.security.server.sso.sso.controllers.wayf.log 
     1343ndg.security.server.sso.sso.lib.base.log 
     1344ndg.security.server.sso.sso.lib.openid_util.log 
     1345ndg.security.server.sso.sso.websetup.log 
     1346ndg.security.server.wsgi.openid_provider.log 
     1347ndg.security.server.wsgi.soap.log 
     1348ndg.security.server.wsgi.wssecurity.log 
     1349ndg.security.server.zsi.attributeauthority.log 
    8951350ndg.security.test.Log.LogTest.log 
    896 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-59', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
    897 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-60', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Calling getAttCert ..."</tt><tt class="py-op">)</tt> </tt> 
    898 <a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">         </tt> 
    899 <a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">        <tt class="py-comment"># Read X.509 certificate</tt> </tt> 
    900 <a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt>             </tt> 
    901 <a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">holderCertFilePath</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> 
    902 <a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">                                     </tt> 
    903 <a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">                <tt class="py-comment"># Certificate input as a file </tt> </tt> 
    904 <a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">holderCert</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-61', 'X509Cert', 'link-26');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    905 <a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">                <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="ndg.security.common.AttCert.AttCert.read 
    906 ndg.security.common.X509.X509Cert.read 
    907 ndg.security.common.XMLSec.XMLSecDoc.read 
    908 ndg.security.common.openssl.OpenSSLConfig.read" class="py-name" href="#" onclick="return doclink('link-62', 'read', 'link-27');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">holderCertFilePath</tt><tt class="py-op">)</tt> </tt> 
    909 <a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">                 </tt> 
    910 <a name="L395"></a><tt class="py-lineno"> 395</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">holderCert</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    911 <a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"> </tt> 
    912 <a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">                <tt class="py-comment"># Certificate input as string text</tt> </tt> 
    913 <a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">holderCert</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name" targets="Function ndg.security.common.X509.X509CertParse()=ndg.security.common.X509-module.html#X509CertParse"><a title="ndg.security.common.X509.X509CertParse" class="py-name" href="#" onclick="return doclink('link-63', 'X509CertParse', 'link-63');">X509CertParse</a></tt><tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">)</tt> </tt> 
    914 <a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">                 </tt> 
    915 <a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-64', 'X509Cert', 'link-26');">X509Cert</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    916 <a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-65" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-65', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    917 <a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                                <tt class="py-string">"No input file path or cert text/object set"</tt> </tt> 
    918 <a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">             </tt> 
    919 <a name="L404"></a><tt class="py-lineno"> 404</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> 
    920 <a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-66" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-66', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"User X.509 certificate: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
    921 <a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"> </tt> 
    922 <a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line"> </tt> 
    923 <a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-comment"># Check certificate hasn't expired</tt> </tt> 
    924 <a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-67" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1351ndg.security.test.authenservice.test_authen_service.log 
     1352ndg.security.test.wsSecurity.server.echoServer.log 
     1353ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-85', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1354ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-86', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Getting property file path"</tt><tt class="py-op">)</tt> </tt> 
     1355<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'_propFilePath'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1356<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_propFilePath</tt> </tt> 
     1357<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     1358<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt> 
     1359</div><a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">         </tt> 
     1360<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">    <tt class="py-comment"># Also set up as a property</tt> </tt> 
     1361<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-87" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthority.propFilePath 
     1362ndg.security.server.SessionMgr.SessionMgr.propFilePath 
     1363ndg.security.server.ca.SimpleCA.propFilePath" class="py-name" href="#" onclick="return doclink('link-87', 'propFilePath', 'link-35');">propFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt class="py-name">fset</tt><tt class="py-op">=</tt><tt id="link-88" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.setPropFilePath()=ndg.security.server.AttAuthority.AttAuthority-class.html#setPropFilePath,Method ndg.security.server.SessionMgr.SessionMgr.setPropFilePath()=ndg.security.server.SessionMgr.SessionMgr-class.html#setPropFilePath,Method ndg.security.server.ca.SimpleCA.setPropFilePath()=ndg.security.server.ca.SimpleCA-class.html#setPropFilePath"><a title="ndg.security.server.AttAuthority.AttAuthority.setPropFilePath 
     1364ndg.security.server.SessionMgr.SessionMgr.setPropFilePath 
     1365ndg.security.server.ca.SimpleCA.setPropFilePath" class="py-name" href="#" onclick="return doclink('link-88', 'setPropFilePath', 'link-88');">setPropFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     1366<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                            <tt class="py-name">fget</tt><tt class="py-op">=</tt><tt id="link-89" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.getPropFilePath()=ndg.security.server.AttAuthority.AttAuthority-class.html#getPropFilePath,Method ndg.security.server.SessionMgr.SessionMgr.getPropFilePath()=ndg.security.server.SessionMgr.SessionMgr-class.html#getPropFilePath"><a title="ndg.security.server.AttAuthority.AttAuthority.getPropFilePath 
     1367ndg.security.server.SessionMgr.SessionMgr.getPropFilePath" class="py-name" href="#" onclick="return doclink('link-89', 'getPropFilePath', 'link-89');">getPropFilePath</a></tt><tt class="py-op">,</tt> </tt> 
     1368<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">                            <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt class="py-string">"Set the path to the properties file"</tt><tt class="py-op">)</tt>    </tt> 
     1369<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">     </tt> 
     1370<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">     </tt> 
     1371<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________</tt> </tt> 
     1372<a name="AttAuthority.getAttCert"></a><div id="AttAuthority.getAttCert-def"><a name="L310"></a><tt class="py-lineno">310</tt> <a class="py-toggle" href="#" id="AttAuthority.getAttCert-toggle" onclick="return toggle('AttAuthority.getAttCert');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#getAttCert">getAttCert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt> 
     1373<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                   <tt class="py-param">userId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     1374<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                   <tt class="py-param">holderCert</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     1375<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">                   <tt class="py-param">holderCertFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     1376<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                   <tt class="py-param">userAttCert</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt> 
     1377<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                   <tt class="py-param">userAttCertFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1378</div><div id="AttAuthority.getAttCert-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.getAttCert-expanded"><a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"> </tt> 
     1379<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">        <tt class="py-docstring">"""Request a new Attribute Certificate for use in authorisation</tt> </tt> 
     1380<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     1381<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-docstring">        getAttCert([userId=uid][holderCert=px|holderCertFilePath=pxFile, ]</tt> </tt> 
     1382<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"><tt class="py-docstring">                   [userAttCert=cert|userAttCertFilePath=certFile])</tt> </tt> 
     1383<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-docstring">         </tt> </tt> 
     1384<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line"><tt class="py-docstring">        @type userId: string</tt> </tt> 
     1385<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"><tt class="py-docstring">        @param userId: identifier for the user who is entitled to the roles</tt> </tt> 
     1386<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"><tt class="py-docstring">        in the certificate that is issued.  If this keyword is omitted, then</tt> </tt> 
     1387<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-docstring">        the userId will be set to the DN of the holder.</tt> </tt> 
     1388<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     1389<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-docstring">        holder = the holder of the certificate - an inidividual user or an</tt> </tt> 
     1390<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-docstring">        organisation to which the user belongs who vouches for that user's ID</tt> </tt> 
     1391<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     1392<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"><tt class="py-docstring">        userId = the identifier for the user who is entitled to the roles</tt> </tt> 
     1393<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"><tt class="py-docstring">        specified in the Attribute Certificate that is issued.</tt> </tt> 
     1394<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-docstring">                  </tt> </tt> 
     1395<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"><tt class="py-docstring">        @type holderCert: string / ndg.security.common.X509.X509Cert type</tt> </tt> 
     1396<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCert: base64 encoded string containing proxy cert./</tt> </tt> 
     1397<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-docstring">        X.509 cert object corresponding to the ID who will be the HOLDER of</tt> </tt> 
     1398<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-docstring">        the Attribute Certificate that will be issued.  - Normally, using</tt> </tt> 
     1399<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-docstring">        proxy certificates, the holder and user ID are the same but there</tt> </tt> 
     1400<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-docstring">        may be cases where the holder will be an organisation ID.  This is the</tt> </tt> 
     1401<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-docstring">        case for NDG security with the DEWS project</tt> </tt> 
     1402<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     1403<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCertFilePath: string</tt> </tt> 
     1404<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line"><tt class="py-docstring">        @param holderCertFilePath: file path to proxy/X.509 certificate of </tt> </tt> 
     1405<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-docstring">        candidate holder</tt> </tt> 
     1406<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-docstring">      </tt> </tt> 
     1407<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-docstring">        @type userAttCert: string or AttCert type</tt> </tt> 
     1408<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-docstring">        @param userAttCert: externally provided attribute certificate from </tt> </tt> 
     1409<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-docstring">        another data centre.  This is only necessary if the user is not </tt> </tt> 
     1410<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-docstring">        registered with this attribute authority. </tt> </tt> 
     1411<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-docstring">                       </tt> </tt> 
     1412<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-docstring">        @type userAttCertFilePath: string </tt> </tt> 
     1413<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"><tt class="py-docstring">        @param userAttCertFilePath: alternative to userAttCert except pass </tt> </tt> 
     1414<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-docstring">        in as a file path to an attribute certificate instead.</tt> </tt> 
     1415<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-docstring">        </tt> </tt> 
     1416<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-docstring">        @rtype: AttCert</tt> </tt> 
     1417<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-docstring">        @return: new attribute certificate"""</tt> </tt> 
     1418<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"> </tt> 
     1419<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">        <tt id="link-90" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1420ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1421ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1422ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1423ndg.security.client.ssoclient.ssoclient.websetup.log 
     1424ndg.security.common.AttAuthority.log 
     1425ndg.security.common.CredWallet.log 
     1426ndg.security.common.SessionMgr.log 
     1427ndg.security.common.authz.pdp.browse.log 
     1428ndg.security.common.authz.pdp.log 
     1429ndg.security.common.authz.pdp.proftp.log 
     1430ndg.security.common.authz.pep.log 
    9251431ndg.security.common.gatekeeper.log 
    9261432ndg.security.common.logService.log_services_server.log 
     1433ndg.security.common.pylons.security_util.log 
     1434ndg.security.common.saml.log 
     1435ndg.security.common.utils.ClassFactory.log 
     1436ndg.security.common.utils.ConfigFileParsers.log 
     1437ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1438ndg.security.common.wssecurity.dom.log 
     1439ndg.security.common.wssecurity.etree.log 
     1440ndg.security.common.xmlsec.etree.log 
    9271441ndg.security.server.AttAuthority.log 
    9281442ndg.security.server.Log.log 
    9291443ndg.security.server.SessionMgr.log 
    9301444ndg.security.server.log 
     1445ndg.security.server.pylons.container.controllers.hello.log 
     1446ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1447ndg.security.server.pylons.container.websetup.log 
     1448ndg.security.server.sso.sso.config.middleware.log 
     1449ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1450ndg.security.server.sso.sso.controllers.login.log 
     1451ndg.security.server.sso.sso.controllers.logout.log 
     1452ndg.security.server.sso.sso.controllers.test1.log 
     1453ndg.security.server.sso.sso.controllers.wayf.log 
     1454ndg.security.server.sso.sso.lib.base.log 
     1455ndg.security.server.sso.sso.lib.openid_util.log 
     1456ndg.security.server.sso.sso.websetup.log 
     1457ndg.security.server.wsgi.openid_provider.log 
     1458ndg.security.server.wsgi.soap.log 
     1459ndg.security.server.wsgi.wssecurity.log 
     1460ndg.security.server.zsi.attributeauthority.log 
    9311461ndg.security.test.Log.LogTest.log 
    932 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-67', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
    933 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-68', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Checking client request X.509 certificate ..."</tt><tt class="py-op">)</tt> </tt> 
    934 <a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    935 <a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">            <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
    936 ndg.security.common.X509.X509Cert.isValidTime" class="py-name" href="#" onclick="return doclink('link-69', 'isValidTime', 'link-28');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    937 <a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">             </tt> 
    938 <a name="L413"></a><tt class="py-lineno"> 413</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> 
    939 <a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-70" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-70', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"User X.509 certificate is invalid: "</tt> <tt class="py-op">+</tt> \ </tt> 
    940 <a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                                    <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    941 <a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"> </tt> 
    942 <a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">             </tt> 
    943 <a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-comment"># Get Distinguished name from certificate as an X500DN type</tt> </tt> 
    944 <a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-71" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.userId=ndg.security.common.AttCert.AttCert-class.html#userId"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-71', 'userId', 'link-71');">userId</a></tt><tt class="py-op">:</tt> </tt> 
    945 <a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    946 <a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">                <tt id="link-72" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-72', 'userId', 'link-71');">userId</a></tt> <tt class="py-op">=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    947 ndg.security.common.SQLObject.CredRepos.UserID.dn 
    948 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-73', 'dn', 'link-36');">dn</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-74', 'serialise', 'link-38');">serialise</a></tt><tt class="py-op">(</tt>\ </tt> 
    949 <a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">                                         <tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>  </tt> 
    950 <a name="L423"></a><tt class="py-lineno"> 423</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> 
    951 <a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-75" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-75', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    952 <a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                    <tt class="py-string">"Setting user Id from holder certificate DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
    953 <a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        </tt> 
    954 <a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-comment"># Make a new Attribute Certificate instance passing in certificate</tt> </tt> 
    955 <a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># details for later signing</tt> </tt> 
    956 <a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-76" class="py-name" targets="Variable ndg.security.common.SQLObject.CredRepos.UserCredential.attCert=ndg.security.common.SQLObject.CredRepos.UserCredential-class.html#attCert,Package ndg.security.test.attCert=ndg.security.test.attCert-module.html"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    957 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-76', 'attCert', 'link-76');">attCert</a></tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="ndg.security.common.AttCert 
    958 ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-77', 'AttCert', 'link-10');">AttCert</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    959 <a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"> </tt> 
    960 <a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-comment"># First cert in list corresponds to the private key</tt> </tt> 
    961 <a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-78" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    962 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-78', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.certFilePathList=ndg.security.common.XMLSec.XMLSecDoc-class.html#certFilePathList"><a title="ndg.security.common.XMLSec.XMLSecDoc.certFilePathList" class="py-name" href="#" onclick="return doclink('link-79', 'certFilePathList', 'link-79');">certFilePathList</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'certFile'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> \ </tt> 
    963 <a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">                                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFileList'</tt><tt class="py-op">]</tt> </tt> 
    964 <a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">         </tt> 
    965 <a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt id="link-80" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    966 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-80', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.signingKeyFilePath=ndg.security.common.XMLSec.XMLSecDoc-class.html#signingKeyFilePath"><a title="ndg.security.common.XMLSec.XMLSecDoc.signingKeyFilePath" class="py-name" href="#" onclick="return doclink('link-81', 'signingKeyFilePath', 'link-81');">signingKeyFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'keyFile'</tt><tt class="py-op">]</tt> </tt> 
    967 <a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">        <tt id="link-82" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    968 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-82', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.signingKeyPwd=ndg.security.common.XMLSec.XMLSecDoc-class.html#signingKeyPwd"><a title="ndg.security.common.XMLSec.XMLSecDoc.signingKeyPwd" class="py-name" href="#" onclick="return doclink('link-83', 'signingKeyPwd', 'link-83');">signingKeyPwd</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'keyPwd'</tt><tt class="py-op">]</tt> </tt> 
    969 <a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">         </tt> 
    970 <a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">         </tt> 
    971 <a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-comment"># Set holder's (user's) Distinguished Name</tt> </tt> 
    972 <a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    973 <a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">            <tt id="link-84" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    974 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-84', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'holder'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
    975 <a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">                <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    976 ndg.security.common.SQLObject.CredRepos.UserID.dn 
    977 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-85', 'dn', 'link-36');">dn</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-86', 'serialise', 'link-38');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>             </tt> 
    978 <a name="L443"></a><tt class="py-lineno"> 443</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> 
    979 <a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-87" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-87', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Holder DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
    980 <a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"> </tt> 
    981 <a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">         </tt> 
    982 <a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-comment"># Set Issuer details from Attribute Authority</tt> </tt> 
    983 <a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-88" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.issuerDN=ndg.security.common.AttCert.AttCert-class.html#issuerDN"><a title="ndg.security.common.AttCert.AttCert.issuerDN" class="py-name" href="#" onclick="return doclink('link-88', 'issuerDN', 'link-88');">issuerDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    984 ndg.security.common.SQLObject.CredRepos.UserID.dn 
    985 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-89', 'dn', 'link-36');">dn</a></tt> </tt> 
    986 <a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    987 <a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">            <tt id="link-90" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    988 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-90', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuer'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
    989 <a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">                    <tt id="link-91" class="py-name"><a title="ndg.security.common.AttCert.AttCert.issuerDN" class="py-name" href="#" onclick="return doclink('link-91', 'issuerDN', 'link-88');">issuerDN</a></tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-92', 'serialise', 'link-38');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>             </tt> 
    990 <a name="L452"></a><tt class="py-lineno"> 452</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> 
    991 <a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-93" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-93', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Issuer DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
    992 <a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">         </tt> 
    993 <a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt id="link-94" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    994 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-94', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt> </tt> 
    995 <a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt id="link-95" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    996 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-95', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuerSerialNumber'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuerSerialNumber</tt> </tt> 
    997 <a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"> </tt> 
    998 <a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt id="link-96" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    999 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-96', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'userId'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-97', 'userId', 'link-71');">userId</a></tt> </tt> 
    1000 <a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">         </tt> 
    1001 <a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-comment"># Set validity time</tt> </tt> 
    1002 <a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1003 <a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">            <tt id="link-98" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1004 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-98', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.setValidityTime()=ndg.security.common.AttCert.AttCert-class.html#setValidityTime"><a title="ndg.security.common.AttCert.AttCert.setValidityTime" class="py-name" href="#" onclick="return doclink('link-99', 'setValidityTime', 'link-99');">setValidityTime</a></tt><tt class="py-op">(</tt>\ </tt> 
    1005 <a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                        <tt class="py-name">lifetime</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    1006 <a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">                        <tt class="py-name">notBeforeOffset</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1007 <a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"> </tt> 
    1008 <a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">            <tt class="py-comment"># Check against the certificate's expiry</tt> </tt> 
    1009 <a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">dtHolderCertNotAfter</tt> <tt class="py-op">=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Variable ndg.security.common.X509.X509Cert.notAfter=ndg.security.common.X509.X509Cert-class.html#notAfter"><a title="ndg.security.common.X509.X509Cert.notAfter" class="py-name" href="#" onclick="return doclink('link-100', 'notAfter', 'link-100');">notAfter</a></tt> </tt> 
    1010 <a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">             </tt> 
    1011 <a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-101" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1012 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-101', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.getValidityNotAfter()=ndg.security.common.AttCert.AttCert-class.html#getValidityNotAfter"><a title="ndg.security.common.AttCert.AttCert.getValidityNotAfter" class="py-name" href="#" onclick="return doclink('link-102', 'getValidityNotAfter', 'link-102');">getValidityNotAfter</a></tt><tt class="py-op">(</tt><tt class="py-name">asDatetime</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> \ </tt> 
    1013 <a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">               <tt class="py-name">dtHolderCertNotAfter</tt><tt class="py-op">:</tt> </tt> 
    1014 <a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"> </tt> 
    1015 <a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">                <tt class="py-comment"># Adjust the attribute certificate's expiry date time</tt> </tt> 
    1016 <a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># so that it agrees with that of the certificate</tt> </tt> 
    1017 <a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># ... but also make ensure that the not before skew is still</tt> </tt> 
    1018 <a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># applied</tt> </tt> 
    1019 <a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-103" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1020 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-103', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="ndg.security.common.AttCert.AttCert.setValidityTime" class="py-name" href="#" onclick="return doclink('link-104', 'setValidityTime', 'link-99');">setValidityTime</a></tt><tt class="py-op">(</tt><tt class="py-name">dtNotAfter</tt><tt class="py-op">=</tt><tt class="py-name">dtHolderCertNotAfter</tt><tt class="py-op">,</tt> </tt> 
    1021 <a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                        <tt class="py-name">notBeforeOffset</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1022 <a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">             </tt> 
    1023 <a name="L479"></a><tt class="py-lineno"> 479</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> 
    1024 <a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-105" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-105', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Error setting validity time: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
    1025 <a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">         </tt> 
    1026 <a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line"> </tt> 
    1027 <a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">        <tt class="py-comment"># Check name is registered with this Attribute Authority - if no</tt> </tt> 
    1028 <a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># user roles are found, the user is not registered</tt> </tt> 
    1029 <a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-106" class="py-name" targets="Module ndg.security.server.conf.userRoles=ndg.security.server.conf.userRoles-module.html"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-106', 'userRoles', 'link-106');">userRoles</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method ndg.security.server.AttAuthority.AAUserRoles.getRoles()=ndg.security.server.AttAuthority.AAUserRoles-class.html#getRoles,Method ndg.security.server.AttAuthority.AttAuthority.getRoles()=ndg.security.server.AttAuthority.AttAuthority-class.html#getRoles,Method ndg.security.server.conf.userRoles.UserRoles.getRoles()=ndg.security.server.conf.userRoles.UserRoles-class.html#getRoles,Method ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.getRoles()=ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles-class.html#getRoles,Method ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.getRoles()=ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles-class.html#getRoles"><a title="ndg.security.server.AttAuthority.AAUserRoles.getRoles 
    1030 ndg.security.server.AttAuthority.AttAuthority.getRoles 
    1031 ndg.security.server.conf.userRoles.UserRoles.getRoles 
    1032 ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.getRoles 
    1033 ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.getRoles" class="py-name" href="#" onclick="return doclink('link-107', 'getRoles', 'link-107');">getRoles</a></tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-108', 'userId', 'link-71');">userId</a></tt><tt class="py-op">)</tt> </tt> 
    1034 <a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-109" class="py-name"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-109', 'userRoles', 'link-106');">userRoles</a></tt><tt class="py-op">:</tt>             </tt> 
    1035 <a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">            <tt class="py-comment"># Set as an Original Certificate</tt> </tt> 
    1036 <a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
    1037 <a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># User roles found - user is registered with this data centre</tt> </tt> 
    1038 <a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Add roles for this user for this data centre</tt> </tt> 
    1039 <a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-110" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1040 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-110', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.addRoles()=ndg.security.common.AttCert.AttCert-class.html#addRoles"><a title="ndg.security.common.AttCert.AttCert.addRoles" class="py-name" href="#" onclick="return doclink('link-111', 'addRoles', 'link-111');">addRoles</a></tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-112', 'userRoles', 'link-106');">userRoles</a></tt><tt class="py-op">)</tt> </tt> 
    1041 <a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"> </tt> 
    1042 <a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">            <tt class="py-comment"># Mark new Attribute Certificate as an original</tt> </tt> 
    1043 <a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-113" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1044 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-113', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'provenance'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="ndg.security.common.AttCert 
    1045 ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-114', 'AttCert', 'link-10');">AttCert</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Variable ndg.security.common.AttCert._MetaAttCert.origProvenance=ndg.security.common.AttCert._MetaAttCert-class.html#origProvenance"><a title="ndg.security.common.AttCert._MetaAttCert.origProvenance" class="py-name" href="#" onclick="return doclink('link-115', 'origProvenance', 'link-115');">origProvenance</a></tt> </tt> 
    1046 <a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt> 
    1047 <a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt>             </tt> 
    1048 <a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">            <tt class="py-comment"># Set as a Mapped Certificate</tt> </tt> 
    1049 <a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
    1050 <a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># No roles found - user is not registered with this data centre</tt> </tt> 
    1051 <a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Check for an externally provided certificate from another</tt> </tt> 
    1052 <a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># trusted data centre</tt> </tt> 
    1053 <a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCertFilePath</tt><tt class="py-op">:</tt> </tt> 
    1054 <a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">                 </tt> 
    1055 <a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">                <tt class="py-comment"># Read externally provided certificate</tt> </tt> 
    1056 <a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1057 <a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">                    <tt class="py-name">userAttCert</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name" targets="Function ndg.security.common.AttCert.AttCertRead()=ndg.security.common.AttCert-module.html#AttCertRead"><a title="ndg.security.common.AttCert.AttCertRead" class="py-name" href="#" onclick="return doclink('link-116', 'AttCertRead', 'link-116');">AttCertRead</a></tt><tt class="py-op">(</tt><tt class="py-name">userAttCertFilePath</tt><tt class="py-op">)</tt> </tt> 
    1058 <a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">                     </tt> 
    1059 <a name="L508"></a><tt class="py-lineno"> 508</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> 
    1060 <a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-117" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-117', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1061 <a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">                            <tt class="py-string">"Reading external Attribute Certificate: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt>                             </tt> 
    1062 <a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">:</tt> </tt> 
    1063 <a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">                <tt class="py-comment"># Allow input as a string but convert to </tt> </tt> 
    1064 <a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1065 <a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">                    <tt class="py-name">userAttCert</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name" targets="Function ndg.security.common.AttCert.AttCertParse()=ndg.security.common.AttCert-module.html#AttCertParse"><a title="ndg.security.common.AttCert.AttCertParse" class="py-name" href="#" onclick="return doclink('link-118', 'AttCertParse', 'link-118');">AttCertParse</a></tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">)</tt> </tt> 
    1066 <a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">                     </tt> 
    1067 <a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="ndg.security.common.AttCert 
    1068 ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-119', 'AttCert', 'link-10');">AttCert</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1069 <a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-120" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-120', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1070 <a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">                        <tt class="py-string">"Expecting userAttCert as a string or AttCert type"</tt>           </tt> 
    1071 <a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    1072 <a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-121" class="py-name" targets="Class ndg.security.server.AttAuthority.AttAuthorityAccessDenied=ndg.security.server.AttAuthority.AttAuthorityAccessDenied-class.html"><a title="ndg.security.server.AttAuthority.AttAuthorityAccessDenied" class="py-name" href="#" onclick="return doclink('link-121', 'AttAuthorityAccessDenied', 'link-121');">AttAuthorityAccessDenied</a></tt><tt class="py-op">,</tt> \ </tt> 
    1073 <a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">                    <tt class="py-string">"User \"%s\" is not registered and no "</tt> <tt class="py-op">%</tt> <tt id="link-122" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-122', 'userId', 'link-71');">userId</a></tt> <tt class="py-op">+</tt> \ </tt> 
    1074 <a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">                    <tt class="py-string">"external attribute certificate is available to make "</tt> <tt class="py-op">+</tt> \ </tt> 
    1075 <a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">                    <tt class="py-string">"a mapping."</tt> </tt> 
    1076 <a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"> </tt> 
    1077 <a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"> </tt> 
    1078 <a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">            <tt class="py-comment"># Check it's an original certificate - mapped certificates can't</tt> </tt> 
    1079 <a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># be used to make further mappings</tt> </tt> 
    1080 <a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isMapped()=ndg.security.common.AttCert.AttCert-class.html#isMapped"><a title="ndg.security.common.AttCert.AttCert.isMapped" class="py-name" href="#" onclick="return doclink('link-123', 'isMapped', 'link-123');">isMapped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1081 <a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-124" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-124', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1082 <a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">                    <tt class="py-string">"External Attribute Certificate must have an "</tt> <tt class="py-op">+</tt> \ </tt> 
    1083 <a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">                    <tt class="py-string">"original provenance in order to make further mappings."</tt> </tt> 
    1084 <a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"> </tt> 
    1085 <a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"> </tt> 
    1086 <a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">            <tt class="py-comment"># Check it's valid and signed</tt> </tt> 
    1087 <a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1088 <a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">                <tt class="py-comment"># Give path to CA cert to allow check</tt> </tt> 
    1089 <a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="ndg.security.common.XMLSec.XMLSecDoc.certFilePathList" class="py-name" href="#" onclick="return doclink('link-125', 'certFilePathList', 'link-79');">certFilePathList</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFileList'</tt><tt class="py-op">]</tt> </tt> 
    1090 <a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">                <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isValid()=ndg.security.common.AttCert.AttCert-class.html#isValid,Method ndg.security.common.CredWallet.CredWallet.isValid()=ndg.security.common.CredWallet.CredWallet-class.html#isValid,Class Method ndg.security.common.SessionCookie.SessionCookie.isValid()=ndg.security.common.SessionCookie.SessionCookie-class.html#isValid,Class Method ndg.security.common.sessionCookie.SessionCookie.isValid()=ndg.security.common.sessionCookie.SessionCookie-class.html#isValid"><a title="ndg.security.common.AttCert.AttCert.isValid 
    1091 ndg.security.common.CredWallet.CredWallet.isValid 
    1092 ndg.security.common.SessionCookie.SessionCookie.isValid 
    1093 ndg.security.common.sessionCookie.SessionCookie.isValid" class="py-name" href="#" onclick="return doclink('link-126', 'isValid', 'link-126');">isValid</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    1094 <a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">                 </tt> 
    1095 <a name="L540"></a><tt class="py-lineno"> 540</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> 
    1096 <a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-127" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-127', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1097 <a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">                            <tt class="py-string">"Invalid Remote Attribute Certificate: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt>         </tt> 
    1098 <a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"> </tt> 
    1099 <a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt> 
    1100 <a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-comment"># Check that's it's holder matches the candidate holder </tt> </tt> 
    1101 <a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># certificate DN</tt> </tt> 
    1102 <a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.holderDN=ndg.security.common.AttCert.AttCert-class.html#holderDN"><a title="ndg.security.common.AttCert.AttCert.holderDN" class="py-name" href="#" onclick="return doclink('link-128', 'holderDN', 'link-128');">holderDN</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    1103 ndg.security.common.SQLObject.CredRepos.UserID.dn 
    1104 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-129', 'dn', 'link-36');">dn</a></tt><tt class="py-op">:</tt> </tt> 
    1105 <a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-130" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-130', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1106 <a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">                    <tt class="py-string">"User certificate and Attribute Certificate DNs "</tt> <tt class="py-op">+</tt> \ </tt> 
    1107 <a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">                    <tt class="py-string">'don\'t match: "%s" and "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
    1108 ndg.security.common.SQLObject.CredRepos.UserID.dn 
    1109 ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-131', 'dn', 'link-36');">dn</a></tt><tt class="py-op">,</tt>  </tt> 
    1110 <a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">                                                     <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="ndg.security.common.AttCert.AttCert.holderDN" class="py-name" href="#" onclick="return doclink('link-132', 'holderDN', 'link-128');">holderDN</a></tt><tt class="py-op">)</tt> </tt> 
    1111 <a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">             </tt> 
    1112 <a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">   </tt> 
    1113 <a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">            <tt class="py-comment"># Get roles from external Attribute Certificate</tt> </tt> 
    1114 <a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">trustedHostRoles</tt> <tt class="py-op">=</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.roles=ndg.security.common.AttCert.AttCert-class.html#roles"><a title="ndg.security.common.AttCert.AttCert.roles" class="py-name" href="#" onclick="return doclink('link-133', 'roles', 'link-133');">roles</a></tt> </tt> 
    1115 <a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"> </tt> 
    1116 <a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"> </tt> 
    1117 <a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">            <tt class="py-comment"># Map external roles to local ones</tt> </tt> 
    1118 <a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">localRoles</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.mapRemoteRoles2LocalRoles()=ndg.security.server.AttAuthority.AttAuthority-class.html#mapRemoteRoles2LocalRoles"><a title="ndg.security.server.AttAuthority.AttAuthority.mapRemoteRoles2LocalRoles" class="py-name" href="#" onclick="return doclink('link-134', 'mapRemoteRoles2LocalRoles', 'link-134');">mapRemoteRoles2LocalRoles</a></tt><tt class="py-op">(</tt>\ </tt> 
    1119 <a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">                                                    <tt class="py-name">userAttCert</tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
    1120 <a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">                                                    <tt class="py-name">trustedHostRoles</tt><tt class="py-op">)</tt> </tt> 
    1121 <a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">localRoles</tt><tt class="py-op">:</tt> </tt> 
    1122 <a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-135" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityAccessDenied" class="py-name" href="#" onclick="return doclink('link-135', 'AttAuthorityAccessDenied', 'link-121');">AttAuthorityAccessDenied</a></tt><tt class="py-op">,</tt> \ </tt> 
    1123 <a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">                    <tt class="py-string">"No local roles mapped to the %s roles: %s"</tt> <tt class="py-op">%</tt> \ </tt> 
    1124 <a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</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 class="py-name">trustedHostRoles</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    1125 <a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"> </tt> 
    1126 <a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt id="link-136" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1127 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-136', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="ndg.security.common.AttCert.AttCert.addRoles" class="py-name" href="#" onclick="return doclink('link-137', 'addRoles', 'link-111');">addRoles</a></tt><tt class="py-op">(</tt><tt class="py-name">localRoles</tt><tt class="py-op">)</tt> </tt> 
    1128 <a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">             </tt> 
    1129 <a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">             </tt> 
    1130 <a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">            <tt class="py-comment"># Mark new Attribute Certificate as mapped</tt> </tt> 
    1131 <a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-138" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1132 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-138', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.provenance=ndg.security.common.AttCert.AttCert-class.html#provenance"><a title="ndg.security.common.AttCert.AttCert.provenance" class="py-name" href="#" onclick="return doclink('link-139', 'provenance', 'link-139');">provenance</a></tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="ndg.security.common.AttCert 
    1133 ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-140', 'AttCert', 'link-10');">AttCert</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Variable ndg.security.common.AttCert._MetaAttCert.mappedProvenance=ndg.security.common.AttCert._MetaAttCert-class.html#mappedProvenance"><a title="ndg.security.common.AttCert._MetaAttCert.mappedProvenance" class="py-name" href="#" onclick="return doclink('link-141', 'mappedProvenance', 'link-141');">mappedProvenance</a></tt> </tt> 
    1134 <a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"> </tt> 
    1135 <a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">            <tt class="py-comment"># Copy the user Id from the external AC</tt> </tt> 
    1136 <a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-142" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1137 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-142', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-143', 'userId', 'link-71');">userId</a></tt> <tt class="py-op">=</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-144', 'userId', 'link-71');">userId</a></tt> </tt> 
    1138 <a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">             </tt> 
    1139 <a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">            <tt class="py-comment"># End set mapped certificate block</tt> </tt> 
    1140 <a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt> 
    1141 <a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1142 <a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">            <tt class="py-comment"># Digitally sign certificate using Attribute Authority's</tt> </tt> 
    1143 <a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># certificate and private key</tt> </tt> 
    1144 <a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-145" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1145 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-145', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.applyEnvelopedSignature()=ndg.security.common.AttCert.AttCert-class.html#applyEnvelopedSignature,Method ndg.security.common.XMLSec.XMLSecDoc.applyEnvelopedSignature()=ndg.security.common.XMLSec.XMLSecDoc-class.html#applyEnvelopedSignature"><a title="ndg.security.common.AttCert.AttCert.applyEnvelopedSignature 
    1146 ndg.security.common.XMLSec.XMLSecDoc.applyEnvelopedSignature" class="py-name" href="#" onclick="return doclink('link-146', 'applyEnvelopedSignature', 'link-146');">applyEnvelopedSignature</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    1147 <a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">             </tt> 
    1148 <a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">            <tt class="py-comment"># Check the certificate is valid</tt> </tt> 
    1149 <a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-147" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1150 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-147', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValid 
    1151 ndg.security.common.CredWallet.CredWallet.isValid 
    1152 ndg.security.common.SessionCookie.SessionCookie.isValid 
    1153 ndg.security.common.sessionCookie.SessionCookie.isValid" class="py-name" href="#" onclick="return doclink('link-148', 'isValid', 'link-126');">isValid</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
    1154 <a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">             </tt> 
    1155 <a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">            <tt class="py-comment"># Write out certificate to keep a record of it for auditing</tt> </tt> 
    1156 <a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#attCert.write()</tt> </tt> 
    1157 <a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__attCertLog</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
    1158 ndg.security.common.logService.log_services.logBindingSOAP.info 
    1159 ndg.security.server.MyProxy.MyProxyClient.info" class="py-name" href="#" onclick="return doclink('link-149', 'info', 'link-18');">info</a></tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1160 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-150', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">)</tt> </tt> 
    1161 <a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">             </tt> 
    1162 <a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">            <tt id="link-151" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1462ndg.security.test.authenservice.test_authen_service.log 
     1463ndg.security.test.wsSecurity.server.echoServer.log 
     1464ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-90', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1465ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-91', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Calling getAttCert ..."</tt><tt class="py-op">)</tt> </tt> 
     1466<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">         </tt> 
     1467<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">        <tt class="py-comment"># Read X.509 certificate</tt> </tt> 
     1468<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt>             </tt> 
     1469<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">holderCertFilePath</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> 
     1470<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                                     </tt> 
     1471<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">                <tt class="py-comment"># Certificate input as a file </tt> </tt> 
     1472<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">holderCert</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-92', 'X509Cert', 'link-41');">X509Cert</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1473<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">                <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.read 
     1474ndg.security.common.AttCert.AttCert.read 
     1475ndg.security.common.X509.X509Cert.read 
     1476ndg.security.common.XMLSec.XMLSecDoc.read 
     1477ndg.security.common.openssl.OpenSSLConfig.read 
     1478ndg.security.common.wssecurity.WSSecurityConfig.read 
     1479ndg.security.common.xmlsec.etree.XMLSecDoc.read 
     1480ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.read" class="py-name" href="#" onclick="return doclink('link-93', 'read', 'link-42');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">holderCertFilePath</tt><tt class="py-op">)</tt> </tt> 
     1481<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                 </tt> 
     1482<a name="L367"></a><tt class="py-lineno">367</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">holderCert</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1483<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"> </tt> 
     1484<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                <tt class="py-comment"># Certificate input as string text</tt> </tt> 
     1485<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">holderCert</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name" targets="Function ndg.security.common.X509.X509CertParse()=ndg.security.common.X509-module.html#X509CertParse"><a title="ndg.security.common.X509.X509CertParse" class="py-name" href="#" onclick="return doclink('link-94', 'X509CertParse', 'link-94');">X509CertParse</a></tt><tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">)</tt> </tt> 
     1486<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                 </tt> 
     1487<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="ndg.security.common.X509.X509Cert" class="py-name" href="#" onclick="return doclink('link-95', 'X509Cert', 'link-41');">X509Cert</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1488<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-96" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-96', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1489<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                                <tt class="py-string">"No input file path or cert text/object set"</tt> </tt> 
     1490<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">             </tt> 
     1491<a name="L376"></a><tt class="py-lineno">376</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> 
     1492<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-97" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-97', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"User X.509 certificate: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     1493<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"> </tt> 
     1494<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"> </tt> 
     1495<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">        <tt class="py-comment"># Check certificate hasn't expired</tt> </tt> 
     1496<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-98" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1497ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1498ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1499ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1500ndg.security.client.ssoclient.ssoclient.websetup.log 
     1501ndg.security.common.AttAuthority.log 
     1502ndg.security.common.CredWallet.log 
     1503ndg.security.common.SessionMgr.log 
     1504ndg.security.common.authz.pdp.browse.log 
     1505ndg.security.common.authz.pdp.log 
     1506ndg.security.common.authz.pdp.proftp.log 
     1507ndg.security.common.authz.pep.log 
    11631508ndg.security.common.gatekeeper.log 
    11641509ndg.security.common.logService.log_services_server.log 
     1510ndg.security.common.pylons.security_util.log 
     1511ndg.security.common.saml.log 
     1512ndg.security.common.utils.ClassFactory.log 
     1513ndg.security.common.utils.ConfigFileParsers.log 
     1514ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1515ndg.security.common.wssecurity.dom.log 
     1516ndg.security.common.wssecurity.etree.log 
     1517ndg.security.common.xmlsec.etree.log 
    11651518ndg.security.server.AttAuthority.log 
    11661519ndg.security.server.Log.log 
    11671520ndg.security.server.SessionMgr.log 
    11681521ndg.security.server.log 
     1522ndg.security.server.pylons.container.controllers.hello.log 
     1523ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1524ndg.security.server.pylons.container.websetup.log 
     1525ndg.security.server.sso.sso.config.middleware.log 
     1526ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1527ndg.security.server.sso.sso.controllers.login.log 
     1528ndg.security.server.sso.sso.controllers.logout.log 
     1529ndg.security.server.sso.sso.controllers.test1.log 
     1530ndg.security.server.sso.sso.controllers.wayf.log 
     1531ndg.security.server.sso.sso.lib.base.log 
     1532ndg.security.server.sso.sso.lib.openid_util.log 
     1533ndg.security.server.sso.sso.websetup.log 
     1534ndg.security.server.wsgi.openid_provider.log 
     1535ndg.security.server.wsgi.soap.log 
     1536ndg.security.server.wsgi.wssecurity.log 
     1537ndg.security.server.zsi.attributeauthority.log 
    11691538ndg.security.test.Log.LogTest.log 
    1170 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-151', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
     1539ndg.security.test.authenservice.test_authen_service.log 
     1540ndg.security.test.wsSecurity.server.echoServer.log 
     1541ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-98', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1542ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-99', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Checking client request X.509 certificate ..."</tt><tt class="py-op">)</tt> </tt> 
     1543<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1544<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">            <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValidTime 
     1545ndg.security.common.X509.X509Cert.isValidTime 
     1546ndg.security.common.saml.AttributeAssertion.isValidTime" class="py-name" href="#" onclick="return doclink('link-100', 'isValidTime', 'link-43');">isValidTime</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
     1547<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">             </tt> 
     1548<a name="L385"></a><tt class="py-lineno">385</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> 
     1549<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-101" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-101', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"User X.509 certificate is invalid: "</tt> <tt class="py-op">+</tt> \ </tt> 
     1550<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">                                    <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
     1551<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"> </tt> 
     1552<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">             </tt> 
     1553<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">        <tt class="py-comment"># Get Distinguished name from certificate as an X500DN type</tt> </tt> 
     1554<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-102" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.userId=ndg.security.common.AttCert.AttCert-class.html#userId,Variable ndg.security.common.saml.AttributeAssertion.userId=ndg.security.common.saml.AttributeAssertion-class.html#userId"><a title="ndg.security.common.AttCert.AttCert.userId 
     1555ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-102', 'userId', 'link-102');">userId</a></tt><tt class="py-op">:</tt> </tt> 
     1556<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1557<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">                <tt id="link-103" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1558ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-103', 'userId', 'link-102');">userId</a></tt> <tt class="py-op">=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1559ndg.security.common.SQLObject.CredRepos.UserID.dn 
     1560ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-104', 'dn', 'link-51');">dn</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-105', 'serialise', 'link-53');">serialise</a></tt><tt class="py-op">(</tt>\ </tt> 
     1561<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">                                         <tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>  </tt> 
     1562<a name="L395"></a><tt class="py-lineno">395</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> 
     1563<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-106" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-106', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1564<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">                    <tt class="py-string">"Setting user Id from holder certificate DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     1565<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        </tt> 
     1566<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-comment"># Make a new Attribute Certificate instance passing in certificate</tt> </tt> 
     1567<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># details for later signing</tt> </tt> 
     1568<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-107" class="py-name" targets="Variable ndg.security.common.SQLObject.CredRepos.UserCredential.attCert=ndg.security.common.SQLObject.CredRepos.UserCredential-class.html#attCert,Package ndg.security.test.attCert=ndg.security.test.attCert-module.html"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1569ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-107', 'attCert', 'link-107');">attCert</a></tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="ndg.security.common.AttCert 
     1570ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-108', 'AttCert', 'link-12');">AttCert</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1571<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"> </tt> 
     1572<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt class="py-comment"># First cert in list corresponds to the private key</tt> </tt> 
     1573<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-109" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1574ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-109', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.certFilePathList=ndg.security.common.XMLSec.XMLSecDoc-class.html#certFilePathList,Variable ndg.security.common.xmlsec.etree.XMLSecDoc.certFilePathList=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#certFilePathList"><a title="ndg.security.common.XMLSec.XMLSecDoc.certFilePathList 
     1575ndg.security.common.xmlsec.etree.XMLSecDoc.certFilePathList" class="py-name" href="#" onclick="return doclink('link-110', 'certFilePathList', 'link-110');">certFilePathList</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'signingCertFilePath'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> \ </tt> 
     1576<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 class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFilePathList'</tt><tt class="py-op">]</tt> </tt> 
     1577<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                                                                 </tt> 
     1578<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt id="link-111" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1579ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-111', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.signingKeyFilePath=ndg.security.common.XMLSec.XMLSecDoc-class.html#signingKeyFilePath,Variable ndg.security.common.xmlsec.etree.XMLSecDoc.signingKeyFilePath=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#signingKeyFilePath"><a title="ndg.security.common.XMLSec.XMLSecDoc.signingKeyFilePath 
     1580ndg.security.common.xmlsec.etree.XMLSecDoc.signingKeyFilePath" class="py-name" href="#" onclick="return doclink('link-112', 'signingKeyFilePath', 'link-112');">signingKeyFilePath</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'signingPriKeyFilePath'</tt><tt class="py-op">]</tt> </tt> 
     1581<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">        <tt id="link-113" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1582ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-113', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.signingKeyPwd=ndg.security.common.XMLSec.XMLSecDoc-class.html#signingKeyPwd,Variable ndg.security.common.xmlsec.etree.XMLSecDoc.signingKeyPwd=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#signingKeyPwd"><a title="ndg.security.common.XMLSec.XMLSecDoc.signingKeyPwd 
     1583ndg.security.common.xmlsec.etree.XMLSecDoc.signingKeyPwd" class="py-name" href="#" onclick="return doclink('link-114', 'signingKeyPwd', 'link-114');">signingKeyPwd</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'signingPriKeyPwd'</tt><tt class="py-op">]</tt> </tt> 
     1584<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">         </tt> 
     1585<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">         </tt> 
     1586<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">        <tt class="py-comment"># Set holder's (user's) Distinguished Name</tt> </tt> 
     1587<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1588<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">            <tt id="link-115" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1589ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-115', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'holder'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
     1590<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1591ndg.security.common.SQLObject.CredRepos.UserID.dn 
     1592ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-116', 'dn', 'link-51');">dn</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-117', 'serialise', 'link-53');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>             </tt> 
     1593<a name="L415"></a><tt class="py-lineno">415</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> 
     1594<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-118" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-118', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Holder DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     1595<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"> </tt> 
     1596<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">         </tt> 
     1597<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-comment"># Set Issuer details from Attribute Authority</tt> </tt> 
     1598<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-119" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.issuerDN=ndg.security.common.AttCert.AttCert-class.html#issuerDN,Variable ndg.security.common.saml.AttributeAssertion.issuerDN=ndg.security.common.saml.AttributeAssertion-class.html#issuerDN"><a title="ndg.security.common.AttCert.AttCert.issuerDN 
     1599ndg.security.common.saml.AttributeAssertion.issuerDN" class="py-name" href="#" onclick="return doclink('link-119', 'issuerDN', 'link-119');">issuerDN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cert</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1600ndg.security.common.SQLObject.CredRepos.UserID.dn 
     1601ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-120', 'dn', 'link-51');">dn</a></tt> </tt> 
     1602<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1603<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">            <tt id="link-121" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1604ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-121', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuer'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
     1605<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">                    <tt id="link-122" class="py-name"><a title="ndg.security.common.AttCert.AttCert.issuerDN 
     1606ndg.security.common.saml.AttributeAssertion.issuerDN" class="py-name" href="#" onclick="return doclink('link-122', 'issuerDN', 'link-119');">issuerDN</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="ndg.security.common.X509.X500DN.serialise" class="py-name" href="#" onclick="return doclink('link-123', 'serialise', 'link-53');">serialise</a></tt><tt class="py-op">(</tt><tt class="py-name">separator</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'dnSeparator'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt>             </tt> 
     1607<a name="L424"></a><tt class="py-lineno">424</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> 
     1608<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-124" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-124', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Issuer DN: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     1609<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">         </tt> 
     1610<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt id="link-125" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1611ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-125', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt> </tt> 
     1612<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt id="link-126" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1613ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-126', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'issuerSerialNumber'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__issuerSerialNumber</tt> </tt> 
     1614<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line"> </tt> 
     1615<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">        <tt id="link-127" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1616ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-127', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'userId'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-128" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1617ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-128', 'userId', 'link-102');">userId</a></tt> </tt> 
     1618<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">         </tt> 
     1619<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-comment"># Set validity time</tt> </tt> 
     1620<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1621<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">            <tt id="link-129" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1622ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-129', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.setValidityTime()=ndg.security.common.AttCert.AttCert-class.html#setValidityTime,Method ndg.security.common.saml.AttributeAssertion.setValidityTime()=ndg.security.common.saml.AttributeAssertion-class.html#setValidityTime"><a title="ndg.security.common.AttCert.AttCert.setValidityTime 
     1623ndg.security.common.saml.AttributeAssertion.setValidityTime" class="py-name" href="#" onclick="return doclink('link-130', 'setValidityTime', 'link-130');">setValidityTime</a></tt><tt class="py-op">(</tt>\ </tt> 
     1624<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">                        <tt class="py-name">lifetime</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
     1625<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">                        <tt class="py-name">notBeforeOffset</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1626<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line"> </tt> 
     1627<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">            <tt class="py-comment"># Check against the certificate's expiry</tt> </tt> 
     1628<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">dtHolderCertNotAfter</tt> <tt class="py-op">=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Variable ndg.security.common.X509.X509Cert.notAfter=ndg.security.common.X509.X509Cert-class.html#notAfter"><a title="ndg.security.common.X509.X509Cert.notAfter" class="py-name" href="#" onclick="return doclink('link-131', 'notAfter', 'link-131');">notAfter</a></tt> </tt> 
     1629<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">             </tt> 
     1630<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-132" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1631ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-132', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.getValidityNotAfter()=ndg.security.common.AttCert.AttCert-class.html#getValidityNotAfter,Method ndg.security.common.saml.AttributeAssertion.getValidityNotAfter()=ndg.security.common.saml.AttributeAssertion-class.html#getValidityNotAfter"><a title="ndg.security.common.AttCert.AttCert.getValidityNotAfter 
     1632ndg.security.common.saml.AttributeAssertion.getValidityNotAfter" class="py-name" href="#" onclick="return doclink('link-133', 'getValidityNotAfter', 'link-133');">getValidityNotAfter</a></tt><tt class="py-op">(</tt><tt class="py-name">asDatetime</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> \ </tt> 
     1633<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">               <tt class="py-name">dtHolderCertNotAfter</tt><tt class="py-op">:</tt> </tt> 
     1634<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"> </tt> 
     1635<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">                <tt class="py-comment"># Adjust the attribute certificate's expiry date time</tt> </tt> 
     1636<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># so that it agrees with that of the certificate</tt> </tt> 
     1637<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># ... but also make ensure that the not before skew is still</tt> </tt> 
     1638<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># applied</tt> </tt> 
     1639<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-134" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1640ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-134', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="ndg.security.common.AttCert.AttCert.setValidityTime 
     1641ndg.security.common.saml.AttributeAssertion.setValidityTime" class="py-name" href="#" onclick="return doclink('link-135', 'setValidityTime', 'link-130');">setValidityTime</a></tt><tt class="py-op">(</tt><tt class="py-name">dtNotAfter</tt><tt class="py-op">=</tt><tt class="py-name">dtHolderCertNotAfter</tt><tt class="py-op">,</tt> </tt> 
     1642<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">                        <tt class="py-name">notBeforeOffset</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1643<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">             </tt> 
     1644<a name="L451"></a><tt class="py-lineno">451</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> 
     1645<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-136" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-136', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Error setting validity time: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     1646<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">         </tt> 
     1647<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"> </tt> 
     1648<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-comment"># Check name is registered with this Attribute Authority - if no</tt> </tt> 
     1649<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># user roles are found, the user is not registered</tt> </tt> 
     1650<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-137" class="py-name" targets="Module ndg.security.server.conf.userRoles=ndg.security.server.conf.userRoles-module.html"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-137', 'userRoles', 'link-137');">userRoles</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name" targets="Method ndg.security.server.AttAuthority.AAUserRoles.getRoles()=ndg.security.server.AttAuthority.AAUserRoles-class.html#getRoles,Method ndg.security.server.AttAuthority.AttAuthority.getRoles()=ndg.security.server.AttAuthority.AttAuthority-class.html#getRoles,Method ndg.security.server.conf.userRoles.UserRoles.getRoles()=ndg.security.server.conf.userRoles.UserRoles-class.html#getRoles,Method ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.getRoles()=ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles-class.html#getRoles,Method ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.getRoles()=ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles-class.html#getRoles"><a title="ndg.security.server.AttAuthority.AAUserRoles.getRoles 
     1651ndg.security.server.AttAuthority.AttAuthority.getRoles 
     1652ndg.security.server.conf.userRoles.UserRoles.getRoles 
     1653ndg.security.test.attAuthority.siteAUserRoles.TestUserRoles.getRoles 
     1654ndg.security.test.attAuthority.siteBUserRoles.TestUserRoles.getRoles" class="py-name" href="#" onclick="return doclink('link-138', 'getRoles', 'link-138');">getRoles</a></tt><tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1655ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-139', 'userId', 'link-102');">userId</a></tt><tt class="py-op">)</tt> </tt> 
     1656<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-140" class="py-name"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-140', 'userRoles', 'link-137');">userRoles</a></tt><tt class="py-op">:</tt>             </tt> 
     1657<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">            <tt class="py-comment"># Set as an Original Certificate</tt> </tt> 
     1658<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
     1659<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># User roles found - user is registered with this data centre</tt> </tt> 
     1660<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Add roles for this user for this data centre</tt> </tt> 
     1661<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-141" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1662ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-141', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-142" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.addRoles()=ndg.security.common.AttCert.AttCert-class.html#addRoles,Method ndg.security.common.saml.AttributeAssertion.addRoles()=ndg.security.common.saml.AttributeAssertion-class.html#addRoles"><a title="ndg.security.common.AttCert.AttCert.addRoles 
     1663ndg.security.common.saml.AttributeAssertion.addRoles" class="py-name" href="#" onclick="return doclink('link-142', 'addRoles', 'link-142');">addRoles</a></tt><tt class="py-op">(</tt><tt id="link-143" class="py-name"><a title="ndg.security.server.conf.userRoles" class="py-name" href="#" onclick="return doclink('link-143', 'userRoles', 'link-137');">userRoles</a></tt><tt class="py-op">)</tt> </tt> 
     1664<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line"> </tt> 
     1665<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">            <tt class="py-comment"># Mark new Attribute Certificate as an original</tt> </tt> 
     1666<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-144" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1667ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-144', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">[</tt><tt class="py-string">'provenance'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="ndg.security.common.AttCert 
     1668ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-145', 'AttCert', 'link-12');">AttCert</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Variable ndg.security.common.AttCert._MetaAttCert.origProvenance=ndg.security.common.AttCert._MetaAttCert-class.html#origProvenance,Variable ndg.security.common.saml._MetaAttributeAssertion.origProvenance=ndg.security.common.saml._MetaAttributeAssertion-class.html#origProvenance"><a title="ndg.security.common.AttCert._MetaAttCert.origProvenance 
     1669ndg.security.common.saml._MetaAttributeAssertion.origProvenance" class="py-name" href="#" onclick="return doclink('link-146', 'origProvenance', 'link-146');">origProvenance</a></tt> </tt> 
     1670<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"> </tt> 
     1671<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt>             </tt> 
     1672<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-comment"># Set as a Mapped Certificate</tt> </tt> 
     1673<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
     1674<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># No roles found - user is not registered with this data centre</tt> </tt> 
     1675<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Check for an externally provided certificate from another</tt> </tt> 
     1676<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># trusted data centre</tt> </tt> 
     1677<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCertFilePath</tt><tt class="py-op">:</tt> </tt> 
     1678<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">                 </tt> 
     1679<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                <tt class="py-comment"># Read externally provided certificate</tt> </tt> 
     1680<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1681<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">                    <tt class="py-name">userAttCert</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name" targets="Function ndg.security.common.AttCert.AttCertRead()=ndg.security.common.AttCert-module.html#AttCertRead"><a title="ndg.security.common.AttCert.AttCertRead" class="py-name" href="#" onclick="return doclink('link-147', 'AttCertRead', 'link-147');">AttCertRead</a></tt><tt class="py-op">(</tt><tt class="py-name">userAttCertFilePath</tt><tt class="py-op">)</tt> </tt> 
     1682<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">                     </tt> 
     1683<a name="L480"></a><tt class="py-lineno">480</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> 
     1684<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-148" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-148', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1685<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">                            <tt class="py-string">"Reading external Attribute Certificate: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt>                             </tt> 
     1686<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">:</tt> </tt> 
     1687<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">                <tt class="py-comment"># Allow input as a string but convert to </tt> </tt> 
     1688<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1689<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">                    <tt class="py-name">userAttCert</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name" targets="Function ndg.security.common.AttCert.AttCertParse()=ndg.security.common.AttCert-module.html#AttCertParse"><a title="ndg.security.common.AttCert.AttCertParse" class="py-name" href="#" onclick="return doclink('link-149', 'AttCertParse', 'link-149');">AttCertParse</a></tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">)</tt> </tt> 
     1690<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">                     </tt> 
     1691<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">,</tt> <tt id="link-150" class="py-name"><a title="ndg.security.common.AttCert 
     1692ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-150', 'AttCert', 'link-12');">AttCert</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1693<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-151', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1694<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                        <tt class="py-string">"Expecting userAttCert as a string or AttCert type"</tt>           </tt> 
     1695<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     1696<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-152" class="py-name" targets="Class ndg.security.server.AttAuthority.AttAuthorityAccessDenied=ndg.security.server.AttAuthority.AttAuthorityAccessDenied-class.html"><a title="ndg.security.server.AttAuthority.AttAuthorityAccessDenied" class="py-name" href="#" onclick="return doclink('link-152', 'AttAuthorityAccessDenied', 'link-152');">AttAuthorityAccessDenied</a></tt><tt class="py-op">,</tt> \ </tt> 
     1697<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">                    <tt class="py-string">"User \"%s\" is not registered and no "</tt> <tt class="py-op">%</tt> <tt id="link-153" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1698ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-153', 'userId', 'link-102');">userId</a></tt> <tt class="py-op">+</tt> \ </tt> 
     1699<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">                    <tt class="py-string">"external attribute certificate is available to make "</tt> <tt class="py-op">+</tt> \ </tt> 
     1700<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">                    <tt class="py-string">"a mapping."</tt> </tt> 
     1701<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"> </tt> 
     1702<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"> </tt> 
     1703<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">            <tt class="py-comment"># Check it's an original certificate - mapped certificates can't</tt> </tt> 
     1704<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># be used to make further mappings</tt> </tt> 
     1705<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isMapped()=ndg.security.common.AttCert.AttCert-class.html#isMapped,Method ndg.security.common.saml.AttributeAssertion.isMapped()=ndg.security.common.saml.AttributeAssertion-class.html#isMapped"><a title="ndg.security.common.AttCert.AttCert.isMapped 
     1706ndg.security.common.saml.AttributeAssertion.isMapped" class="py-name" href="#" onclick="return doclink('link-154', 'isMapped', 'link-154');">isMapped</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1707<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-155" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-155', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1708<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">                    <tt class="py-string">"External Attribute Certificate must have an "</tt> <tt class="py-op">+</tt> \ </tt> 
     1709<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">                    <tt class="py-string">"original provenance in order to make further mappings."</tt> </tt> 
     1710<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line"> </tt> 
     1711<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line"> </tt> 
     1712<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">            <tt class="py-comment"># Check it's valid and signed</tt> </tt> 
     1713<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1714<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">                <tt class="py-comment"># Give path to CA cert to allow check</tt> </tt> 
     1715<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="ndg.security.common.XMLSec.XMLSecDoc.certFilePathList 
     1716ndg.security.common.xmlsec.etree.XMLSecDoc.certFilePathList" class="py-name" href="#" onclick="return doclink('link-156', 'certFilePathList', 'link-110');">certFilePathList</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'caCertFilePathList'</tt><tt class="py-op">]</tt> </tt> 
     1717<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.isValid()=ndg.security.common.AttCert.AttCert-class.html#isValid,Method ndg.security.common.CredWallet.CredWallet.isValid()=ndg.security.common.CredWallet.CredWallet-class.html#isValid,Method ndg.security.common.saml.AttributeAssertion.isValid()=ndg.security.common.saml.AttributeAssertion-class.html#isValid,Class Method ndg.security.common.sessionCookie.SessionCookie.isValid()=ndg.security.common.sessionCookie.SessionCookie-class.html#isValid"><a title="ndg.security.common.AttCert.AttCert.isValid 
     1718ndg.security.common.CredWallet.CredWallet.isValid 
     1719ndg.security.common.saml.AttributeAssertion.isValid 
     1720ndg.security.common.sessionCookie.SessionCookie.isValid" class="py-name" href="#" onclick="return doclink('link-157', 'isValid', 'link-157');">isValid</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
     1721<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">                 </tt> 
     1722<a name="L512"></a><tt class="py-lineno">512</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> 
     1723<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-158" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-158', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1724<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">                            <tt class="py-string">"Invalid Remote Attribute Certificate: "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt>         </tt> 
     1725<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line"> </tt> 
     1726<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"> </tt> 
     1727<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">            <tt class="py-comment"># Check that's it's holder matches the candidate holder </tt> </tt> 
     1728<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># certificate DN</tt> </tt> 
     1729<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.holderDN=ndg.security.common.AttCert.AttCert-class.html#holderDN,Variable ndg.security.common.saml.AttributeAssertion.holderDN=ndg.security.common.saml.AttributeAssertion-class.html#holderDN"><a title="ndg.security.common.AttCert.AttCert.holderDN 
     1730ndg.security.common.saml.AttributeAssertion.holderDN" class="py-name" href="#" onclick="return doclink('link-159', 'holderDN', 'link-159');">holderDN</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1731ndg.security.common.SQLObject.CredRepos.UserID.dn 
     1732ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-160', 'dn', 'link-51');">dn</a></tt><tt class="py-op">:</tt> </tt> 
     1733<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-161" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-161', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1734<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">                    <tt class="py-string">"User certificate and Attribute Certificate DNs "</tt> <tt class="py-op">+</tt> \ </tt> 
     1735<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">                    <tt class="py-string">'don\'t match: "%s" and "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">holderCert</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.dn 
     1736ndg.security.common.SQLObject.CredRepos.UserID.dn 
     1737ndg.security.common.X509.X509Cert.dn" class="py-name" href="#" onclick="return doclink('link-162', 'dn', 'link-51');">dn</a></tt><tt class="py-op">,</tt>  </tt> 
     1738<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">                                                     <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="ndg.security.common.AttCert.AttCert.holderDN 
     1739ndg.security.common.saml.AttributeAssertion.holderDN" class="py-name" href="#" onclick="return doclink('link-163', 'holderDN', 'link-159');">holderDN</a></tt><tt class="py-op">)</tt> </tt> 
     1740<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">             </tt> 
     1741<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">   </tt> 
     1742<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">            <tt class="py-comment"># Get roles from external Attribute Certificate</tt> </tt> 
     1743<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">trustedHostRoles</tt> <tt class="py-op">=</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.roles=ndg.security.common.AttCert.AttCert-class.html#roles,Variable ndg.security.common.saml.AttributeAssertion.roles=ndg.security.common.saml.AttributeAssertion-class.html#roles"><a title="ndg.security.common.AttCert.AttCert.roles 
     1744ndg.security.common.saml.AttributeAssertion.roles" class="py-name" href="#" onclick="return doclink('link-164', 'roles', 'link-164');">roles</a></tt> </tt> 
     1745<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt> 
     1746<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line"> </tt> 
     1747<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">            <tt class="py-comment"># Map external roles to local ones</tt> </tt> 
     1748<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">localRoles</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Method ndg.security.server.AttAuthority.AttAuthority.mapRemoteRoles2LocalRoles()=ndg.security.server.AttAuthority.AttAuthority-class.html#mapRemoteRoles2LocalRoles"><a title="ndg.security.server.AttAuthority.AttAuthority.mapRemoteRoles2LocalRoles" class="py-name" href="#" onclick="return doclink('link-165', 'mapRemoteRoles2LocalRoles', 'link-165');">mapRemoteRoles2LocalRoles</a></tt><tt class="py-op">(</tt>\ </tt> 
     1749<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">                                                    <tt class="py-name">userAttCert</tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt> 
     1750<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">                                                    <tt class="py-name">trustedHostRoles</tt><tt class="py-op">)</tt> </tt> 
     1751<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">localRoles</tt><tt class="py-op">:</tt> </tt> 
     1752<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-166" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityAccessDenied" class="py-name" href="#" onclick="return doclink('link-166', 'AttAuthorityAccessDenied', 'link-152');">AttAuthorityAccessDenied</a></tt><tt class="py-op">,</tt> \ </tt> 
     1753<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">                    <tt class="py-string">"No local roles mapped to the %s roles: %s"</tt> <tt class="py-op">%</tt> \ </tt> 
     1754<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">userAttCert</tt><tt class="py-op">[</tt><tt class="py-string">'issuerName'</tt><tt class="py-op">]</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 class="py-name">trustedHostRoles</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     1755<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line"> </tt> 
     1756<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">            <tt id="link-167" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1757ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-167', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="ndg.security.common.AttCert.AttCert.addRoles 
     1758ndg.security.common.saml.AttributeAssertion.addRoles" class="py-name" href="#" onclick="return doclink('link-168', 'addRoles', 'link-142');">addRoles</a></tt><tt class="py-op">(</tt><tt class="py-name">localRoles</tt><tt class="py-op">)</tt> </tt> 
     1759<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">             </tt> 
     1760<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">             </tt> 
     1761<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">            <tt class="py-comment"># Mark new Attribute Certificate as mapped</tt> </tt> 
     1762<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-169" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1763ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-169', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Variable ndg.security.common.AttCert.AttCert.provenance=ndg.security.common.AttCert.AttCert-class.html#provenance,Variable ndg.security.common.saml.AttributeAssertion.provenance=ndg.security.common.saml.AttributeAssertion-class.html#provenance"><a title="ndg.security.common.AttCert.AttCert.provenance 
     1764ndg.security.common.saml.AttributeAssertion.provenance" class="py-name" href="#" onclick="return doclink('link-170', 'provenance', 'link-170');">provenance</a></tt> <tt class="py-op">=</tt> <tt id="link-171" class="py-name"><a title="ndg.security.common.AttCert 
     1765ndg.security.common.AttCert.AttCert" class="py-name" href="#" onclick="return doclink('link-171', 'AttCert', 'link-12');">AttCert</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Variable ndg.security.common.AttCert._MetaAttCert.mappedProvenance=ndg.security.common.AttCert._MetaAttCert-class.html#mappedProvenance,Variable ndg.security.common.saml._MetaAttributeAssertion.mappedProvenance=ndg.security.common.saml._MetaAttributeAssertion-class.html#mappedProvenance"><a title="ndg.security.common.AttCert._MetaAttCert.mappedProvenance 
     1766ndg.security.common.saml._MetaAttributeAssertion.mappedProvenance" class="py-name" href="#" onclick="return doclink('link-172', 'mappedProvenance', 'link-172');">mappedProvenance</a></tt> </tt> 
     1767<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"> </tt> 
     1768<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">            <tt class="py-comment"># Copy the user Id from the external AC</tt> </tt> 
     1769<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-173" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1770ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-173', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1771ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-174', 'userId', 'link-102');">userId</a></tt> <tt class="py-op">=</tt> <tt class="py-name">userAttCert</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1772ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-175', 'userId', 'link-102');">userId</a></tt> </tt> 
     1773<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">             </tt> 
     1774<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">            <tt class="py-comment"># End set mapped certificate block</tt> </tt> 
     1775<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt> 
     1776<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1777<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line">            <tt class="py-comment"># Digitally sign certificate using Attribute Authority's</tt> </tt> 
     1778<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># certificate and private key</tt> </tt> 
     1779<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-176" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1780ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-176', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.applyEnvelopedSignature()=ndg.security.common.AttCert.AttCert-class.html#applyEnvelopedSignature,Method ndg.security.common.XMLSec.XMLSecDoc.applyEnvelopedSignature()=ndg.security.common.XMLSec.XMLSecDoc-class.html#applyEnvelopedSignature,Method ndg.security.common.saml.AttributeAssertion.applyEnvelopedSignature()=ndg.security.common.saml.AttributeAssertion-class.html#applyEnvelopedSignature,Method ndg.security.common.xmlsec.etree.XMLSecDoc.applyEnvelopedSignature()=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#applyEnvelopedSignature"><a title="ndg.security.common.AttCert.AttCert.applyEnvelopedSignature 
     1781ndg.security.common.XMLSec.XMLSecDoc.applyEnvelopedSignature 
     1782ndg.security.common.saml.AttributeAssertion.applyEnvelopedSignature 
     1783ndg.security.common.xmlsec.etree.XMLSecDoc.applyEnvelopedSignature" class="py-name" href="#" onclick="return doclink('link-177', 'applyEnvelopedSignature', 'link-177');">applyEnvelopedSignature</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1784<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">             </tt> 
     1785<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">            <tt class="py-comment"># Check the certificate is valid</tt> </tt> 
     1786<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-178" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1787ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-178', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="ndg.security.common.AttCert.AttCert.isValid 
     1788ndg.security.common.CredWallet.CredWallet.isValid 
     1789ndg.security.common.saml.AttributeAssertion.isValid 
     1790ndg.security.common.sessionCookie.SessionCookie.isValid" class="py-name" href="#" onclick="return doclink('link-179', 'isValid', 'link-157');">isValid</a></tt><tt class="py-op">(</tt><tt class="py-name">raiseExcep</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt> 
     1791<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">             </tt> 
     1792<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">            <tt class="py-comment"># Write out certificate to keep a record of it for auditing</tt> </tt> 
     1793<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#attCert.write()</tt> </tt> 
     1794<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__attCertLog</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
    11711795ndg.security.common.logService.log_services.logBindingSOAP.info 
    1172 ndg.security.server.MyProxy.MyProxyClient.info" class="py-name" href="#" onclick="return doclink('link-152', 'info', 'link-18');">info</a></tt><tt class="py-op">(</tt>\ </tt> 
    1173 <a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">                 <tt class="py-string">'Issued an Attribute Certificate to "%s" with roles: "%s"'</tt> <tt class="py-op">%</tt>\ </tt> 
    1174 <a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt id="link-153" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId" class="py-name" href="#" onclick="return doclink('link-153', 'userId', 'link-71');">userId</a></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-154" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1175 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-154', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="ndg.security.common.AttCert.AttCert.roles" class="py-name" href="#" onclick="return doclink('link-155', 'roles', 'link-133');">roles</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    1176 <a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"> </tt> 
    1177 <a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-comment"># Return the cert to caller</tt> </tt> 
    1178 <a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt id="link-156" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1179 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-156', 'attCert', 'link-76');">attCert</a></tt> </tt> 
    1180 <a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">         </tt> 
    1181 <a name="L597"></a><tt class="py-lineno"> 597</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> 
    1182 <a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-157" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-157', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"New Attribute Certificate \"%s\": %s"</tt> <tt class="py-op">%</tt>\ </tt> 
    1183 <a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">                                    <tt class="py-op">(</tt><tt id="link-158" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
    1184 ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-158', 'attCert', 'link-76');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.filePath=ndg.security.common.XMLSec.XMLSecDoc-class.html#filePath,Variable ndg.security.common.openssl.OpenSSLConfig.filePath=ndg.security.common.openssl.OpenSSLConfig-class.html#filePath"><a title="ndg.security.common.XMLSec.XMLSecDoc.filePath 
    1185 ndg.security.common.openssl.OpenSSLConfig.filePath" class="py-name" href="#" onclick="return doclink('link-159', 'filePath', 'link-159');">filePath</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    1186 </div><a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        </tt> 
    1187 <a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">         </tt> 
    1188 <a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________     </tt> </tt> 
    1189 <a name="AttAuthority.readProperties"></a><div id="AttAuthority.readProperties-def"><a name="L603"></a><tt class="py-lineno"> 603</tt> <a class="py-toggle" href="#" id="AttAuthority.readProperties-toggle" onclick="return toggle('AttAuthority.readProperties');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#readProperties">readProperties</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1190 </div><div id="AttAuthority.readProperties-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.readProperties-expanded"><a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"> </tt> 
    1191 <a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">        <tt class="py-docstring">"""Read the configuration properties for the Attribute Authority.</tt> </tt> 
    1192 <a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        Nb. if parameters for the user roles interface change </tt> </tt> 
    1193 <a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">        loadUserRolesInterface() must be called explicitly in order for the</tt> </tt> 
    1194 <a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        changes to take effect</tt> </tt> 
    1195 <a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    1196 <a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">        @type propFilePath: string</tt> </tt> 
    1197 <a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-docstring">        @param propFilePath: file path to properties file</tt> </tt> 
    1198 <a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    1199 <a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"> </tt> 
    1200 <a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt id="link-160" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1796ndg.security.server.authenservice.MyProxy.MyProxyClient.info 
     1797ndg.security.test.authenservice.test_authen_service.TestAutheNService.info" class="py-name" href="#" onclick="return doclink('link-180', 'info', 'link-33');">info</a></tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1798ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-181', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">)</tt> </tt> 
     1799<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">             </tt> 
     1800<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">            <tt id="link-182" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1801ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1802ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1803ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1804ndg.security.client.ssoclient.ssoclient.websetup.log 
     1805ndg.security.common.AttAuthority.log 
     1806ndg.security.common.CredWallet.log 
     1807ndg.security.common.SessionMgr.log 
     1808ndg.security.common.authz.pdp.browse.log 
     1809ndg.security.common.authz.pdp.log 
     1810ndg.security.common.authz.pdp.proftp.log 
     1811ndg.security.common.authz.pep.log 
    12011812ndg.security.common.gatekeeper.log 
    12021813ndg.security.common.logService.log_services_server.log 
     1814ndg.security.common.pylons.security_util.log 
     1815ndg.security.common.saml.log 
     1816ndg.security.common.utils.ClassFactory.log 
     1817ndg.security.common.utils.ConfigFileParsers.log 
     1818ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1819ndg.security.common.wssecurity.dom.log 
     1820ndg.security.common.wssecurity.etree.log 
     1821ndg.security.common.xmlsec.etree.log 
    12031822ndg.security.server.AttAuthority.log 
    12041823ndg.security.server.Log.log 
    12051824ndg.security.server.SessionMgr.log 
    12061825ndg.security.server.log 
     1826ndg.security.server.pylons.container.controllers.hello.log 
     1827ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1828ndg.security.server.pylons.container.websetup.log 
     1829ndg.security.server.sso.sso.config.middleware.log 
     1830ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1831ndg.security.server.sso.sso.controllers.login.log 
     1832ndg.security.server.sso.sso.controllers.logout.log 
     1833ndg.security.server.sso.sso.controllers.test1.log 
     1834ndg.security.server.sso.sso.controllers.wayf.log 
     1835ndg.security.server.sso.sso.lib.base.log 
     1836ndg.security.server.sso.sso.lib.openid_util.log 
     1837ndg.security.server.sso.sso.websetup.log 
     1838ndg.security.server.wsgi.openid_provider.log 
     1839ndg.security.server.wsgi.soap.log 
     1840ndg.security.server.wsgi.wssecurity.log 
     1841ndg.security.server.zsi.attributeauthority.log 
    12071842ndg.security.test.Log.LogTest.log 
    1208 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-160', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
    1209 ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-161', 'debug', 'link-25');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Calling readProperties ..."</tt><tt class="py-op">)</tt> </tt> 
    1210 <a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1211 <a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">ElementTree</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.parse()=ndg.security.common.AttCert.AttCert-class.html#parse,Method ndg.security.common.SessionCookie.SessionCookie.parse()=ndg.security.common.SessionCookie.SessionCookie-class.html#parse,Method ndg.security.common.X509.X509Cert.parse()=ndg.security.common.X509.X509Cert-class.html#parse,Method ndg.security.common.XMLSec.XMLSecDoc.parse()=ndg.security.common.XMLSec.XMLSecDoc-class.html#parse,Method ndg.security.common.gatekeeper.SecurityConfig.parse()=ndg.security.common.gatekeeper.SecurityConfig-class.html#parse,Method ndg.security.common.sessionCookie.SessionCookie.parse()=ndg.security.common.sessionCookie.SessionCookie-class.html#parse"><a title="ndg.security.common.AttCert.AttCert.parse 
    1212 ndg.security.common.SessionCookie.SessionCookie.parse 
    1213 ndg.security.common.X509.X509Cert.parse 
    1214 ndg.security.common.XMLSec.XMLSecDoc.parse 
    1215 ndg.security.common.gatekeeper.SecurityConfig.parse 
    1216 ndg.security.common.sessionCookie.SessionCookie.parse" class="py-name" href="#" onclick="return doclink('link-162', 'parse', 'link-162');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__propFilePath</tt><tt class="py-op">)</tt> </tt> 
    1217 <a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">             </tt> 
    1218 <a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">ioErr</tt><tt class="py-op">:</tt> </tt> 
    1219 <a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-163" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-163', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1220 <a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">                                <tt class="py-string">"Error parsing properties file \"%s\": %s"</tt> <tt class="py-op">%</tt> \ </tt> 
    1221 <a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">                                <tt class="py-op">(</tt><tt class="py-name">ioErr</tt><tt class="py-op">.</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">ioErr</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">)</tt> </tt> 
    1222 <a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"> </tt> 
    1223 <a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">         </tt> 
    1224 <a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-name">aaProp</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">getroot</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
    1225 <a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">aaProp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt> 
    1226 <a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-164" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-164', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1227 <a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">            <tt class="py-string">"Parsing properties file \"%s\": root element is not defined"</tt> <tt class="py-op">%</tt> \ </tt> 
    1228 <a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__propFilePath</tt> </tt> 
    1229 <a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"> </tt> 
    1230 <a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"> </tt> 
    1231 <a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-comment"># Copy properties from file into a dictionary</tt> </tt> 
    1232 <a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
    1233 <a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">        <tt class="py-name">invalidKeys</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> 
    1234 <a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1235 <a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">aaProp</tt><tt class="py-op">:</tt> </tt> 
    1236 <a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Variable ndg.security.common.SessionCookie._MetaSessionCookie.tag=ndg.security.common.SessionCookie._MetaSessionCookie-class.html#tag,Variable ndg.security.common.sessionCookie._MetaSessionCookie.tag=ndg.security.common.sessionCookie._MetaSessionCookie-class.html#tag"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1237 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-165', 'tag', 'link-165');">tag</a></tt> <tt class="py-keyword">in</tt> <tt id="link-166" class="py-name" targets="Package ndg.security.common.AttAuthority=ndg.security.common.AttAuthority-module.html,Package ndg.security.server.AttAuthority=ndg.security.server.AttAuthority-module.html,Class ndg.security.server.AttAuthority.AttAuthority=ndg.security.server.AttAuthority.AttAuthority-class.html"><a title="ndg.security.common.AttAuthority 
    1238 ndg.security.server.AttAuthority 
    1239 ndg.security.server.AttAuthority.AttAuthority" class="py-name" href="#" onclick="return doclink('link-166', 'AttAuthority', 'link-166');">AttAuthority</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys 
    1240 ndg.security.common.SQLObject.CredRepos.__validKeys 
    1241 ndg.security.common.gatekeeper.Gatekeeper.__validKeys 
    1242 ndg.security.server.AttAuthority.AttAuthority.__validKeys 
    1243 ndg.security.server.MyProxy.MyProxyClient.__validKeys 
    1244 ndg.security.server.ca.SimpleCA.__validKeys" class="py-name" href="#" onclick="return doclink('link-167', '__validKeys', 'link-16');">__validKeys</a></tt><tt class="py-op">:</tt> </tt> 
    1245 <a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">                 </tt> 
    1246 <a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">                    <tt class="py-comment"># Make sure to leave password element contents unchanged</tt> </tt> 
    1247 <a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="ndg.security.common.AttAuthority 
    1248 ndg.security.server.AttAuthority 
    1249 ndg.security.server.AttAuthority.AttAuthority" class="py-name" href="#" onclick="return doclink('link-168', 'AttAuthority', 'link-166');">AttAuthority</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.__validKeys 
    1250 ndg.security.common.SQLObject.CredRepos.__validKeys 
    1251 ndg.security.common.gatekeeper.Gatekeeper.__validKeys 
    1252 ndg.security.server.AttAuthority.AttAuthority.__validKeys 
    1253 ndg.security.server.MyProxy.MyProxyClient.__validKeys 
    1254 ndg.security.server.ca.SimpleCA.__validKeys" class="py-name" href="#" onclick="return doclink('link-169', '__validKeys', 'link-16');">__validKeys</a></tt><tt class="py-op">[</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1255 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-170', 'tag', 'link-165');">tag</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1256 <a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1257 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-171', 'tag', 'link-165');">tag</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
    1258 <a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">                            <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">subElem</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> \ </tt> 
    1259 <a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">                             <tt class="py-keyword">for</tt> <tt class="py-name">subElem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elem</tt><tt class="py-op">]</tt> </tt> 
    1260 <a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">                             </tt> 
    1261 <a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-string">'eyPwd'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1262 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-172', 'tag', 'link-165');">tag</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">:</tt>  </tt> 
    1263 <a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1264 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-173', 'tag', 'link-165');">tag</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
    1265 <a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">                                        <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">elem</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
    1266 <a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    1267 <a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1268 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-174', 'tag', 'link-165');">tag</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt> 
    1269 <a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
    1270 <a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">                    <tt class="py-name">invalidKeys</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1271 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-175', 'tag', 'link-165');">tag</a></tt><tt class="py-op">)</tt> </tt> 
    1272 <a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">                 </tt> 
    1273 <a name="L652"></a><tt class="py-lineno"> 652</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> 
    1274 <a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-176" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-176', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1275 <a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">                <tt class="py-string">"Error parsing tag \"%s\" in properties file \"%s\": %s"</tt> <tt class="py-op">%</tt> \ </tt> 
    1276 <a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="ndg.security.common.SessionCookie._MetaSessionCookie.tag 
    1277 ndg.security.common.sessionCookie._MetaSessionCookie.tag" class="py-name" href="#" onclick="return doclink('link-177', 'tag', 'link-165');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__propFilePath</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
    1278 <a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">  </tt> 
    1279 <a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">invalidKeys</tt> <tt class="py-op">!=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
    1280 <a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-178" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-178', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"The following properties file "</tt> <tt class="py-op">+</tt> \ </tt> 
    1281 <a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">                                     <tt class="py-string">"elements are invalid: "</tt> <tt class="py-op">+</tt> \ </tt> 
    1282 <a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">                                     <tt class="py-string">', '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">invalidKeys</tt><tt class="py-op">)</tt> </tt> 
    1283 <a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">  </tt> 
    1284 <a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">        <tt class="py-comment"># Ensure Certificate time parameters are converted to numeric type</tt> </tt> 
    1285 <a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertLifetime'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1286 <a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
    1287 <a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">                                    <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertNotBeforeOff'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1288 <a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line"> </tt> 
    1289 <a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-comment"># Likewise ...</tt> </tt> 
    1290 <a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'portNum'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'portNum'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1291 <a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertFileLogCnt'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertFileLogCnt'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1292 <a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">         </tt> 
    1293 <a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-comment"># Check directory path</tt> </tt> 
    1294 <a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
    1295 <a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">            <tt class="py-name">dirList</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
    1296 <a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"> </tt> 
    1297 <a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">osError</tt><tt class="py-op">:</tt> </tt> 
    1298 <a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-179" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-179', 'AttAuthorityError', 'link-29');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
    1299 <a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">            <tt class="py-string">'Invalid directory path Attribute Certificates store "%s": %s'</tt> <tt class="py-op">%</tt> \ </tt> 
    1300 <a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'attCertDir'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">osError</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">)</tt> </tt> 
    1301 <a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"> </tt> 
    1302 <a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt id="link-180" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1843ndg.security.test.authenservice.test_authen_service.log 
     1844ndg.security.test.wsSecurity.server.echoServer.log 
     1845ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-182', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
     1846ndg.security.common.logService.log_services.logBindingSOAP.info 
     1847ndg.security.server.authenservice.MyProxy.MyProxyClient.info 
     1848ndg.security.test.authenservice.test_authen_service.TestAutheNService.info" class="py-name" href="#" onclick="return doclink('link-183', 'info', 'link-33');">info</a></tt><tt class="py-op">(</tt>\ </tt> 
     1849<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">                 <tt class="py-string">'Issued an Attribute Certificate to "%s" with roles: "%s"'</tt> <tt class="py-op">%</tt>\ </tt> 
     1850<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">                 <tt class="py-op">(</tt><tt id="link-184" class="py-name"><a title="ndg.security.common.AttCert.AttCert.userId 
     1851ndg.security.common.saml.AttributeAssertion.userId" class="py-name" href="#" onclick="return doclink('link-184', 'userId', 'link-102');">userId</a></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-185" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1852ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-185', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="ndg.security.common.AttCert.AttCert.roles 
     1853ndg.security.common.saml.AttributeAssertion.roles" class="py-name" href="#" onclick="return doclink('link-186', 'roles', 'link-164');">roles</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     1854<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line"> </tt> 
     1855<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">            <tt class="py-comment"># Return the cert to caller</tt> </tt> 
     1856<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">return</tt> <tt id="link-187" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1857ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-187', 'attCert', 'link-107');">attCert</a></tt> </tt> 
     1858<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">         </tt> 
     1859<a name="L569"></a><tt class="py-lineno">569</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> 
     1860<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-188" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-188', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"New Attribute Certificate \"%s\": %s"</tt> <tt class="py-op">%</tt>\ </tt> 
     1861<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">                                    <tt class="py-op">(</tt><tt id="link-189" class="py-name"><a title="ndg.security.common.SQLObject.CredRepos.UserCredential.attCert 
     1862ndg.security.test.attCert" class="py-name" href="#" onclick="return doclink('link-189', 'attCert', 'link-107');">attCert</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name" targets="Variable ndg.security.common.XMLSec.XMLSecDoc.filePath=ndg.security.common.XMLSec.XMLSecDoc-class.html#filePath,Variable ndg.security.common.openssl.OpenSSLConfig.filePath=ndg.security.common.openssl.OpenSSLConfig-class.html#filePath,Variable ndg.security.common.xmlsec.etree.XMLSecDoc.filePath=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#filePath"><a title="ndg.security.common.XMLSec.XMLSecDoc.filePath 
     1863ndg.security.common.openssl.OpenSSLConfig.filePath 
     1864ndg.security.common.xmlsec.etree.XMLSecDoc.filePath" class="py-name" href="#" onclick="return doclink('link-190', 'filePath', 'link-190');">filePath</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
     1865</div><a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">        </tt> 
     1866<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">         </tt> 
     1867<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________     </tt> </tt> 
     1868<a name="AttAuthority.readMapConfig"></a><div id="AttAuthority.readMapConfig-def"><a name="L575"></a><tt class="py-lineno">575</tt> <a class="py-toggle" href="#" id="AttAuthority.readMapConfig-toggle" onclick="return toggle('AttAuthority.readMapConfig');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#readMapConfig">readMapConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mapConfigFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1869</div><div id="AttAuthority.readMapConfig-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AttAuthority.readMapConfig-expanded"><a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">        <tt class="py-docstring">"""Parse Map Configuration file.</tt> </tt> 
     1870<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
     1871<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"><tt class="py-docstring">        @type mapConfigFilePath: string</tt> </tt> 
     1872<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line"><tt class="py-docstring">        @param mapConfigFilePath: file path for map configuration file.  If </tt> </tt> 
     1873<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-docstring">        omitted, it uses member variable __prop['mapConfigFile'].</tt> </tt> 
     1874<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
     1875<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">         </tt> 
     1876<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">        <tt id="link-191" class="py-name"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.log 
     1877ndg.security.client.ssoclient.ssoclient.controllers.logout.log 
     1878ndg.security.client.ssoclient.ssoclient.controllers.test1.log 
     1879ndg.security.client.ssoclient.ssoclient.lib.base.log 
     1880ndg.security.client.ssoclient.ssoclient.websetup.log 
     1881ndg.security.common.AttAuthority.log 
     1882ndg.security.common.CredWallet.log 
     1883ndg.security.common.SessionMgr.log 
     1884ndg.security.common.authz.pdp.browse.log 
     1885ndg.security.common.authz.pdp.log 
     1886ndg.security.common.authz.pdp.proftp.log 
     1887ndg.security.common.authz.pep.log 
    13031888ndg.security.common.gatekeeper.log 
    13041889ndg.security.common.logService.log_services_server.log 
     1890ndg.security.common.pylons.security_util.log 
     1891ndg.security.common.saml.log 
     1892ndg.security.common.utils.ClassFactory.log 
     1893ndg.security.common.utils.ConfigFileParsers.log 
     1894ndg.security.common.wssecurity.BaseSignatureHandler.log 
     1895ndg.security.common.wssecurity.dom.log 
     1896ndg.security.common.wssecurity.etree.log 
     1897ndg.security.common.xmlsec.etree.log 
    13051898ndg.security.server.AttAuthority.log 
    13061899ndg.security.server.Log.log 
    13071900ndg.security.server.SessionMgr.log 
    13081901ndg.security.server.log 
     1902ndg.security.server.pylons.container.controllers.hello.log 
     1903ndg.security.server.pylons.container.lib.openid_provider_util.log 
     1904ndg.security.server.pylons.container.websetup.log 
     1905ndg.security.server.sso.sso.config.middleware.log 
     1906ndg.security.server.sso.sso.config.ssoServiceMiddleware.log 
     1907ndg.security.server.sso.sso.controllers.login.log 
     1908ndg.security.server.sso.sso.controllers.logout.log 
     1909ndg.security.server.sso.sso.controllers.test1.log 
     1910ndg.security.server.sso.sso.controllers.wayf.log 
     1911ndg.security.server.sso.sso.lib.base.log 
     1912ndg.security.server.sso.sso.lib.openid_util.log 
     1913ndg.security.server.sso.sso.websetup.log 
     1914ndg.security.server.wsgi.openid_provider.log 
     1915ndg.security.server.wsgi.soap.log 
     1916ndg.security.server.wsgi.wssecurity.log 
     1917ndg.security.server.zsi.attributeauthority.log 
    13091918ndg.security.test.Log.LogTest.log 
    1310 ndg.security.test.sessionMgr.test.log" class="py-name" href="#" onclick="return doclink('link-180', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="ndg.security.client.LogClient.LogClient.info 
    1311 ndg.security.common.logService.log_services.logBindingSOAP.info 
    1312 ndg.security.server.MyProxy.MyProxyClient.info" class="py-name" href="#" onclick="return doclink('link-181', 'info', 'link-18');">info</a></tt><tt class="py-op">(</tt><tt class="py-string">'Loaded properties from "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__propFilePath</tt><tt class="py-op">)</tt> </tt> 
    1313 </div><a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">         </tt> 
    1314 <a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">         </tt> 
    1315 <a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">    <tt class="py-comment">#_________________________________________________________________________     </tt> </tt> 
    1316 <a name="AttAuthority.readMapConfig"></a><div id="AttAuthority.readMapConfig-def"><a name="L684"></a><tt class="py-lineno"> 684</tt> <a class="py-toggle" href="#" id="AttAuthority.readMapConfig-toggle" onclick="return toggle('AttAuthority.readMapConfig');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="ndg.security.server.AttAuthority.AttAuthority-class.html#readMapConfig">readMapConfig</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mapConfigFilePath</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
    1317 </div><div id="AttAuthority.readMapConfig-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AttAuthority.readMapConfig-expanded"><a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-docstring">"""Parse Map Configuration file.</tt> </tt> 
    1318 <a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt> 
    1319 <a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">        @type mapConfigFilePath: string</tt> </tt> 
    1320 <a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">        @param mapConfigFilePath: file path for map configuration file.  If </tt> </tt> 
    1321 <a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">        omitted, it uses member variable __prop['mapConfigFile'].</tt> </tt> 
    1322 <a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt> 
    1323 <a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">         </tt> 
    1324 <a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">        <tt id="link-182" class="py-name"><a title="ndg.security.common.CredWallet.log 
     1919ndg.security.test.authenservice.test_authen_service.log 
     1920ndg.security.test.wsSecurity.server.echoServer.log 
     1921ndg.security.test.xmlsec.etree.test_etree.log" class="py-name" href="#" onclick="return doclink('link-191', 'log', 'link-4');">log</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="ndg.security.client.LogClient.LogClient.debug 
     1922ndg.security.common.logService.log_services.logBindingSOAP.debug" class="py-name" href="#" onclick="return doclink('link-192', 'debug', 'link-40');">debug</a></tt><tt class="py-op">(</tt><tt class="py-string">"Reading map configuration file ..."</tt><tt class="py-op">)</tt> </tt> 
     1923<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">         </tt> 
     1924<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">mapConfigFilePath</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> 
     1925<a name="L586"></a><tt class="py-lineno">586</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">mapConfigFilePath</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt> 
     1926<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-193" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-193', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1927<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">                <tt class="py-string">"Input Map Configuration file path must be a valid string."</tt> </tt> 
     1928<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">             </tt> 
     1929<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'mapConfigFile'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mapConfigFilePath</tt> </tt> 
     1930<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line"> </tt> 
     1931<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line"> </tt> 
     1932<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1933<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">ElementTree</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name" targets="Method ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.parse()=ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig-class.html#parse,Method ndg.security.common.AttCert.AttCert.parse()=ndg.security.common.AttCert.AttCert-class.html#parse,Method ndg.security.common.X509.X509Cert.parse()=ndg.security.common.X509.X509Cert-class.html#parse,Method ndg.security.common.XMLSec.XMLSecDoc.parse()=ndg.security.common.XMLSec.XMLSecDoc-class.html#parse,Method ndg.security.common.gatekeeper.SecurityConfig.parse()=ndg.security.common.gatekeeper.SecurityConfig-class.html#parse,Method ndg.security.common.saml.AttributeAssertion.parse()=ndg.security.common.saml.AttributeAssertion-class.html#parse,Method ndg.security.common.sessionCookie.SessionCookie.parse()=ndg.security.common.sessionCookie.SessionCookie-class.html#parse,Method ndg.security.common.wssecurity.WSSecurityConfig.parse()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#parse,Method ndg.security.common.xmlsec.etree.XMLSecDoc.parse()=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#parse,Method ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.parse()=ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig-class.html#parse,Class Method ndg.security.server.wsgi.soap.SOAPMiddleware.parse()=ndg.security.server.wsgi.soap.SOAPMiddleware-class.html#parse"><a title="ndg.security.client.ssoclient.ssoclient.config.ssoClientMiddleware.SSOClientConfig.parse 
     1934ndg.security.common.AttCert.AttCert.parse 
     1935ndg.security.common.X509.X509Cert.parse 
     1936ndg.security.common.XMLSec.XMLSecDoc.parse 
     1937ndg.security.common.gatekeeper.SecurityConfig.parse 
     1938ndg.security.common.saml.AttributeAssertion.parse 
     1939ndg.security.common.sessionCookie.SessionCookie.parse 
     1940ndg.security.common.wssecurity.WSSecurityConfig.parse 
     1941ndg.security.common.xmlsec.etree.XMLSecDoc.parse 
     1942ndg.security.server.sso.sso.config.ssoServiceMiddleware.SSOServiceConfig.parse 
     1943ndg.security.server.wsgi.soap.SOAPMiddleware.parse" class="py-name" href="#" onclick="return doclink('link-194', 'parse', 'link-194');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'mapConfigFile'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt> 
     1944<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">            <tt id="link-195" class="py-name" targets="Variable ndg.security.common.xmlsec.etree.XMLSecDoc.rootElem=ndg.security.common.xmlsec.etree.XMLSecDoc-class.html#rootElem"><a title="ndg.security.common.xmlsec.etree.XMLSecDoc.rootElem" class="py-name" href="#" onclick="return doclink('link-195', 'rootElem', 'link-195');">rootElem</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt class="py-name">getroot</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1945<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">             </tt> 
     1946<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt> 
     1947<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-196" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-196', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1948<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">                            <tt class="py-string">"Error parsing properties file \"%s\": %s"</tt> <tt class="py-op">%</tt> \ </tt> 
     1949<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">                            <tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">strerror</tt><tt class="py-op">)</tt>            </tt> 
     1950<a name="L601"></a><tt class="py-lineno">601</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> 
     1951<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-197" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-197', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1952<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">                <tt class="py-string">"Error parsing Map Configuration file: \"%s\": %s"</tt> <tt class="py-op">%</tt> \ </tt> 
     1953<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'mapConfigFile'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt> 
     1954<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line"> </tt> 
     1955<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">             </tt> 
     1956<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">        <tt class="py-name">trustedElem</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="ndg.security.common.xmlsec.etree.XMLSecDoc.rootElem" class="py-name" href="#" onclick="return doclink('link-198', 'rootElem', 'link-195');">rootElem</a></tt><tt class="py-op">.</tt><tt class="py-name">findall</tt><tt class="py-op">(</tt><tt class="py-string">'trusted'</tt><tt class="py-op">)</tt> </tt> 
     1957<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">trustedElem</tt><tt class="py-op">:</tt>  </tt> 
     1958<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">            <tt class="py-comment"># Make an empty list so that for loop block below is skipped </tt> </tt> 
     1959<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># without an error  </tt> </tt> 
     1960<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">trustedElem</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     1961<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line"> </tt> 
     1962<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">        <tt class="py-comment"># Dictionaries:</tt> </tt> 
     1963<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 1) to hold all the data</tt> </tt> 
     1964<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'thisHost'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-string">'trustedHosts'</tt><tt class="py-op">:</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">}</tt> </tt> 
     1965<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line"> </tt> 
     1966<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">        <tt class="py-comment"># ... look-up</tt> </tt> 
     1967<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 2) hosts corresponding to a given role and</tt> </tt> 
     1968<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 3) roles of external data centre to this data centre</tt> </tt> 
     1969<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__localRole2TrustedHost</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
     1970<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__localRole2RemoteRole</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
     1971<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remoteRole2LocalRole</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
     1972<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line"> </tt> 
     1973<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"> </tt> 
     1974<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">        <tt class="py-comment"># Information about this host</tt> </tt> 
     1975<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1976<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">            <tt class="py-name">thisHostElem</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="ndg.security.common.xmlsec.etree.XMLSecDoc.rootElem" class="py-name" href="#" onclick="return doclink('link-199', 'rootElem', 'link-195');">rootElem</a></tt><tt class="py-op">.</tt><tt class="py-name">findall</tt><tt class="py-op">(</tt><tt class="py-string">'thisHost'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> 
     1977<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">             </tt> 
     1978<a name="L629"></a><tt class="py-lineno">629</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> 
     1979<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-200" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-200', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     1980<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line">            <tt class="py-string">"\"thisHost\" tag not found in Map Configuration file \"%s\""</tt> <tt class="py-op">%</tt> \ </tt> 
     1981<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'mapConfigFile'</tt><tt class="py-op">]</tt> </tt> 
     1982<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"> </tt> 
     1983<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     1984<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">            <tt class="py-name">hostName</tt> <tt class="py-op">=</tt> <tt class="py-name">thisHostElem</tt><tt class="py-op">.</tt><tt class="py-name">attrib</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.values 
     1985ndg.security.common.AttCert.AttCert.values 
     1986ndg.security.common.X509.X500DN.values 
     1987ndg.security.common.pylons.security_util.SecuritySession.values 
     1988ndg.security.common.saml.AttributeAssertion.values 
     1989ndg.security.common.wssecurity.WSSecurityConfig.values 
     1990ndg.security.server.AttAuthority.AttAuthority.values 
     1991ndg.security.server.SessionMgr.SessionMgr.values 
     1992ndg.security.server.ca.SimpleCA.values" class="py-name" href="#" onclick="return doclink('link-201', 'values', 'link-75');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> 
     1993<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">             </tt> 
     1994<a name="L637"></a><tt class="py-lineno">637</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> 
     1995<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-202" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-202', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"\"name\" attribute of \"thisHost\" "</tt> <tt class="py-op">+</tt> \ </tt> 
     1996<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">                    <tt class="py-string">"element not found in Map Configuration file \"%s\""</tt> <tt class="py-op">%</tt> \ </tt> 
     1997<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'mapConfigFile'</tt><tt class="py-op">]</tt> </tt> 
     1998<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line"> </tt> 
     1999<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"> </tt> 
     2000<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">        <tt class="py-comment"># hostname is also stored in the AA's config file in the 'name' tag.  </tt> </tt> 
     2001<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Check the two match as the latter is copied into Attribute </tt> </tt> 
     2002<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Certificates issued by this AA</tt> </tt> 
     2003<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt> 
     2004<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># TODO: would be better to rationalise this so that the hostname is </tt> </tt> 
     2005<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># stored in one place only.</tt> </tt> 
     2006<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt> 
     2007<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># P J Kershaw 14/06/06</tt> </tt> 
     2008<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hostName</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__prop</tt><tt class="py-op">[</tt><tt class="py-string">'name'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
     2009<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-203" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-203', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> <tt class="py-string">"\"name\" attribute of \"thisHost\" "</tt> <tt class="py-op">+</tt> \ </tt> 
     2010<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">                <tt class="py-string">"element in Map Configuration file doesn't match "</tt> <tt class="py-op">+</tt> \ </tt> 
     2011<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">                <tt class="py-string">"\"name\" element in properties file."</tt> </tt> 
     2012<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">         </tt> 
     2013<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">        <tt class="py-comment"># Information for THIS Attribute Authority</tt> </tt> 
     2014<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">hostDict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method ndg.security.common.wssecurity.WSSecurityConfig.fromkeys()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#fromkeys"><a title="ndg.security.common.wssecurity.WSSecurityConfig.fromkeys" class="py-name" href="#" onclick="return doclink('link-204', 'fromkeys', 'link-204');">fromkeys</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'aaURI'</tt><tt class="py-op">,</tt> </tt> 
     2015<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line">                                <tt class="py-string">'aaDN'</tt><tt class="py-op">,</tt> </tt> 
     2016<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">                                <tt class="py-string">'loginURI'</tt><tt class="py-op">,</tt> </tt> 
     2017<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">                                <tt class="py-string">'loginServerDN'</tt><tt class="py-op">,</tt> </tt> 
     2018<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">                                <tt class="py-string">'loginRequestServerDN'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt> 
     2019<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'thisHost'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">hostName</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">hostDict</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name" targets="Method ndg.security.common.AttCert.AttCert.copy()=ndg.security.common.AttCert.AttCert-class.html#copy,Method ndg.security.common.X509.X500DN.copy()=ndg.security.common.X509.X500DN-class.html#copy,Method ndg.security.common.saml.AttributeAssertion.copy()=ndg.security.common.saml.AttributeAssertion-class.html#copy,Method ndg.security.common.wssecurity.WSSecurityConfig.copy()=ndg.security.common.wssecurity.WSSecurityConfig-class.html#copy"><a title="ndg.security.common.AttCert.AttCert.copy 
     2020ndg.security.common.X509.X500DN.copy 
     2021ndg.security.common.saml.AttributeAssertion.copy 
     2022ndg.security.common.wssecurity.WSSecurityConfig.copy" class="py-name" href="#" onclick="return doclink('link-205', 'copy', 'link-205');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     2023<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'thisHost'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">hostName</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
     2024<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'thisHost'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">hostName</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-name">thisHostElem</tt><tt class="py-op">.</tt><tt class="py-name">findtext</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt> </tt> 
     2025<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">         </tt> 
     2026<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">        <tt class="py-comment"># Information about trusted hosts</tt> </tt> 
     2027<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">trustedElem</tt><tt class="py-op">:</tt> </tt> 
     2028<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt> 
     2029<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">                <tt class="py-name">trustedHost</tt> <tt class="py-op">=</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt class="py-name">attrib</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.values 
     2030ndg.security.common.AttCert.AttCert.values 
     2031ndg.security.common.X509.X500DN.values 
     2032ndg.security.common.pylons.security_util.SecuritySession.values 
     2033ndg.security.common.saml.AttributeAssertion.values 
     2034ndg.security.common.wssecurity.WSSecurityConfig.values 
     2035ndg.security.server.AttAuthority.AttAuthority.values 
     2036ndg.security.server.SessionMgr.SessionMgr.values 
     2037ndg.security.server.ca.SimpleCA.values" class="py-name" href="#" onclick="return doclink('link-206', 'values', 'link-75');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt> 
     2038<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">                 </tt> 
     2039<a name="L671"></a><tt class="py-lineno">671</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> 
     2040<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-207" class="py-name"><a title="ndg.security.server.AttAuthority.AttAuthorityError" class="py-name" href="#" onclick="return doclink('link-207', 'AttAuthorityError', 'link-44');">AttAuthorityError</a></tt><tt class="py-op">,</tt> \ </tt> 
     2041<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">                                    <tt class="py-string">"Error reading trusted host name: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt> </tt> 
     2042<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"> </tt> 
     2043<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">             </tt> 
     2044<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">            <tt class="py-comment"># Add signatureFile and list of roles</tt> </tt> 
     2045<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
     2046<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># (Currently Optional) additional tag allows query of the URI</tt> </tt> 
     2047<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># where a user would normally login at the trusted host.  Added</tt> </tt> 
     2048<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># this feature to allow users to be forwarded to their home site</tt> </tt> 
     2049<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># if they are accessing a secure resource and are not </tt> </tt> 
     2050<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># authenticated</tt> </tt> 
     2051<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt> 
     2052<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># P J Kershaw 25/05/06</tt> </tt> 
     2053<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'trustedHosts'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">hostDict</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="ndg.security.common.AttCert.AttCert.copy 
     2054ndg.security.common.X509.X500DN.copy 
     2055ndg.security.common.saml.AttributeAssertion.copy 
     2056ndg.security.common.wssecurity.WSSecurityConfig.copy" class="py-name" href="#" onclick="return doclink('link-208', 'copy', 'link-205');">copy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt> 
     2057<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'trustedHosts'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt> 
     2058<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'trustedHosts'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
     2059<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">                                                        <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt class="py-name">findtext</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt>    </tt> 
     2060<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line"> </tt> 
     2061<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">            <tt class="py-name">roleElem</tt> <tt class="py-op">=</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt class="py-name">findall</tt><tt class="py-op">(</tt><tt class="py-string">'role'</tt><tt class="py-op">)</tt> </tt> 
     2062<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">roleElem</tt><tt class="py-op">:</tt> </tt> 
     2063<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">                <tt class="py-comment"># Role keyword value requires special parsing before </tt> </tt> 
     2064<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># assignment</tt> </tt> 
     2065<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'trustedHosts'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'role'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> \ </tt> 
     2066<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">                                        <tt class="py-op">[</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="ndg.security.client.SimpleCAClient.SimpleCAClient.items 
     2067ndg.security.common.AttCert.AttCert.items 
     2068ndg.security.common.X509.X500DN.items 
     2069ndg.security.common.pylons.security_util.SecuritySession.items 
     2070ndg.security.common.saml.AttributeAssertion.items 
     2071ndg.security.common.wssecurity.WSSecurityConfig.items 
     2072ndg.security.server.AttAuthority.AttAuthority.items 
     2073ndg.security.server.SessionMgr.SessionMgr.items 
     2074ndg.security.server.ca.SimpleCA.items" class="py-name" href="#" onclick="return doclink('link-209', 'items', 'link-74');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">roleElem</tt><tt class="py-op">]</tt> </tt> 
     2075<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt> 
     2076<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">                <tt class="py-comment"># It's possible for trust relationships to not contain any </tt> </tt> 
     2077<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># role mapping.  e.g. a site's login service trusting other</tt> </tt> 
     2078<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># sites login requests</tt> </tt> 
     2079<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__mapConfig</tt><tt class="py-op">[</tt><tt class="py-string">'trustedHosts'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'role'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt> 
     2080<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">                        </tt> 
     2081<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__localRole2RemoteRole</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
     2082<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__remoteRole2LocalRole</tt><tt class="py-op">[</tt><tt class="py-name">trustedHost</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt> 
     2083<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py