Changeset 4397


Ignore:
Timestamp:
30/10/08 09:32:02 (11 years ago)
Author:
pjkersha
Message:

Fixes to CredentialWallet?:

  • refactored _getAttCert, _getAATrustedHostInfo and added _getAAHostInfo - fixed capability to query a local AA instance instead of a remote service
  • added ability to configure WS-Security settings via a prefix in the config file in addition to a separate section
  • unittests re-run OK
Location:
TI12-security/trunk/python
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/credentialwallet.py

    r4392 r4397  
    175175    @ivar attributeAuthorityURI: URI of Attribute Authority to make  
    176176    requests to.  Setting this ALSO creates an AttributeAuthorityClient instance  
    177     self._attributeAuthorityClnt.  - See attributeAuthorityURI property for 
     177    _attributeAuthorityClnt.  - See attributeAuthorityURI property for 
    178178    details. (property attribute) 
    179179     
     
    343343        attr.update(CredentialWallet.propertyDefaults) 
    344344        for k, v in attr.items(): 
    345             try: 
    346                 setattr(self, k, v) 
    347             except AttributeError, e: 
    348                 # FIXME: remove this test exception handling code  
    349                 pass 
     345            setattr(self, k, v) 
    350346             
    351347        # Update attributes from a config file 
     
    405401            except Exception, e: 
    406402                try: 
    407                     raise CredentialWalletError("Error parsing Attribute Certificate" 
    408                                           " ID '%s' retrieved from the "  
    409                                           "Credentials Repository: %s" %  
    410                                           (cred.id, e))             
     403                    raise CredentialWalletError("Error parsing Attribute " 
     404                        "Certificate ID '%s' retrieved from the "  
     405                        "Credentials Repository: %s" % (cred.id, e))             
    411406                except: 
    412407                    raise CredentialWalletError("Error parsing Attribute " 
     
    706701 
    707702        elif sslCACertFilePathList is not None: 
    708             raise CredentialWalletError("Input CA Certificate file path is not a " 
    709                                   "valid string")       
     703            raise CredentialWalletError("Input CA Certificate file path is " 
     704                                        "not a valid string")       
    710705         
    711706    sslCACertFilePathList = property(fget=_getSSLCACertFilePathList, 
     
    714709                                      "verification of peer certs in SSL " 
    715710                                      "connections") 
     711         
     712    def _getAttributeAuthorityURI(self): 
     713        """Get property method for Attribute Authority Web Service URI to 
     714        connect to.""" 
     715        return self._attributeAuthorityURI 
     716             
     717    def _setAttributeAuthorityURI(self, attributeAuthorityURI): 
     718        """Set property method for Attribute Authority Web Service URI to 
     719        connect to.  This method ALSO SETS UP THE CLIENT INTERFACE 
     720         
     721        @type attributeAuthorityURI: basestring/None 
     722        @param attributeAuthorityURI: Attribute Authority Web Service URI.  Set 
     723        to None to initialise.""" 
     724        if attributeAuthorityURI is not None and \ 
     725           not isinstance(attributeAuthorityURI, basestring): 
     726            raise AttributeError("URI must be a string or None type") 
     727         
     728        self._attributeAuthorityURI = attributeAuthorityURI 
     729             
     730    attributeAuthorityURI = property(fget=_getAttributeAuthorityURI, 
     731                                     fset=_setAttributeAuthorityURI, 
     732                                     doc="Attribute Authority address - " 
     733                                         "setting also sets up " 
     734                                         "AttributeAuthorityClient instance!") 
     735 
     736    def _getAttributeAuthority(self): 
     737        """Get property method for Attribute Authority Web Service client 
     738        instance.  Use attributeAuthorityURI propert to set up  
     739        attributeAuthorityClnt 
     740         
     741        @rtype attributeAuthority: ndg.security.server.attributeauthority.AttributeAuthority 
     742        @return attributeAuthority: Attribute Authority instance""" 
     743        return self._attributeAuthority 
     744 
     745    def _setAttributeAuthority(self, attributeAuthority): 
     746        """Set property method for Attribute Authority Web Service instance to 
     747        connect to. 
     748         
     749        @type attributeAuthority: ndg.security.server.attributeauthority.AttributeAuthority 
     750        @param attributeAuthority: Attribute Authority instance.""" 
     751        if attributeAuthority is not None and \ 
     752           not isinstance(attributeAuthority, AttributeAuthority): 
     753            raise AttributeError("Expecting %r for attributeAuthority " 
     754                                 "attribute" % AttributeAuthority) 
     755             
     756        self._attributeAuthority = attributeAuthority 
     757             
     758    attributeAuthority = property(fget=_getAttributeAuthority, 
     759                                  fset=_setAttributeAuthority,  
     760                                  doc="Attribute Authority instance") 
     761 
     762 
     763    def _getMapFromTrustedHosts(self): 
     764        """Get property method for boolean flag - if set to True it allows 
     765        role mapping to be attempted when connecting to an Attribute Authority 
     766         
     767        @type mapFromTrustedHosts: bool 
     768        @param mapFromTrustedHosts: set to True to try role mapping in AC  
     769        requests to Attribute Authorities""" 
     770        return self._mapFromTrustedHosts 
     771 
     772    def _setMapFromTrustedHosts(self, mapFromTrustedHosts): 
     773        """Set property method for boolean flag - if set to True it allows 
     774        role mapping to be attempted when connecting to an Attribute Authority 
     775         
     776        @type mapFromTrustedHosts: bool 
     777        @param mapFromTrustedHosts: Attribute Authority Web Service.""" 
     778        if not isinstance(mapFromTrustedHosts, bool): 
     779            raise AttributeError("Expecting %r for mapFromTrustedHosts " 
     780                                 "attribute" % bool) 
     781             
     782        self._mapFromTrustedHosts = mapFromTrustedHosts 
     783             
     784    mapFromTrustedHosts = property(fget=_getMapFromTrustedHosts, 
     785                                   fset=_setMapFromTrustedHosts,  
     786                                   doc="Set to True to enable mapped AC " 
     787                                       "requests") 
     788 
     789    def _getRtnExtAttCertList(self): 
     790        """Get property method for Attribute Authority Web Service client 
     791        instance.  Use rtnExtAttCertListURI propert to set up  
     792        rtnExtAttCertListClnt 
     793         
     794        @type rtnExtAttCertList: bool 
     795        @param rtnExtAttCertList: """ 
     796        return self._rtnExtAttCertList 
     797 
     798    def _setRtnExtAttCertList(self, rtnExtAttCertList): 
     799        """Set property method for boolean flag - when a AC request fails, 
     800        return a list of candidate ACs that could be used to re-try with in 
     801        order to get mapped AC. 
     802         
     803        @type rtnExtAttCertList: bool 
     804        @param rtnExtAttCertList: set to True to configure getAttCert to return 
     805        a list of ACs that could be used in a re-try to get a mapped AC from  
     806        the target Attribute Authority.""" 
     807        if not isinstance(rtnExtAttCertList, bool): 
     808            raise AttributeError("Expecting %r for rtnExtAttCertList " 
     809                                 "attribute" % bool) 
     810             
     811        self._rtnExtAttCertList = rtnExtAttCertList 
     812             
     813    rtnExtAttCertList = property(fget=_getRtnExtAttCertList, 
     814                                 fset=_setRtnExtAttCertList,  
     815                                 doc="Set to True to enable mapped AC " 
     816                                     "requests") 
     817 
     818    def isValid(self, **x509CertKeys): 
     819        """Check wallet's user cert.  If expired return False 
     820         
     821        @type **x509CertKeys: dict 
     822        @param **x509CertKeys: keywords applying to  
     823        ndg.security.common.X509.X509Cert.isValidTime method""" 
     824        return self._userX509Cert.isValidTime(**x509CertKeys) 
     825 
     826 
     827    def addCredential(self, attCert, bUpdateCredentialRepository=True): 
     828        """Add a new attribute certificate to the list of credentials held. 
     829 
     830        @type attCert: 
     831        @param attCert: new attribute Certificate to be added 
     832        @type bUpdateCredentialRepository: bool 
     833        @param bUpdateCredentialRepository: if set to True, and a repository  
     834        exists it will be updated with the new credentials also 
     835         
     836        @rtype: bool 
     837        @return: True if certificate was added otherwise False.  - If an 
     838        existing certificate from the same issuer has a later expiry it will 
     839        take precence and the new input certificate is ignored.""" 
     840 
     841        # Check input 
     842        if not isinstance(attCert, AttCert): 
     843            raise CredentialWalletError("Attribute Certificate must be an AttCert " 
     844                                  "type object") 
     845 
     846        # Check certificate validity 
     847        try: 
     848            attCert.isValid(raiseExcep=True) 
     849             
     850        except AttCertError, e: 
     851            raise CredentialWalletError("Adding Credential: %s" % e) 
     852         
     853 
     854        # Check to see if there is an existing Attribute Certificate held 
     855        # that was issued by the same host.  If so, compare the expiry time. 
     856        # The one with the latest expiry will be retained and the other 
     857        # ingored 
     858        bUpdateCred = True 
     859        issuerName = attCert['issuerName'] 
     860         
     861        if issuerName in self._credentials: 
     862            # There is an existing certificate held with the same issuing 
     863            # host name as the new certificate 
     864            attCertOld = self._credentials[issuerName]['attCert'] 
     865 
     866            # Get expiry times in datetime format to allow comparison 
     867            dtAttCertOldNotAfter = attCertOld.getValidityNotAfter(\ 
     868                                                            asDatetime=True) 
     869            dtAttCertNotAfter = attCert.getValidityNotAfter(asDatetime=True) 
     870 
     871            # If the new certificate has an earlier expiry time then ignore it 
     872            bUpdateCred = dtAttCertNotAfter > dtAttCertOldNotAfter 
     873 
     874                 
     875        if bUpdateCred: 
     876            # Update: Nb. -1 ID value flags item as new.  Items read in 
     877            # from the CredentialRepository during creation of the wallet will 
     878            # have +ve IDs previously allocated by the database 
     879            self._credentials[issuerName] = {'id': -1, 'attCert': attCert} 
     880 
     881            # Update the Credentials Repository - the permanent store of user 
     882            # authorisation credentials.  This allows credentials for previous 
     883            # sessions to be re-instated 
     884            if self._credentialRepository and bUpdateCredentialRepository: 
     885                self.updateCredentialRepository() 
     886 
     887        # Flag to caller to indicate whether the input certificate was added 
     888        # to the credentials or an exsiting certificate from the same issuer 
     889        # took precedence 
     890        return bUpdateCred 
     891             
     892 
     893    def audit(self): 
     894        """Check the credentials held in the wallet removing any that have 
     895        expired or are otherwise invalid.""" 
     896 
     897        log.debug("CredentialWallet.audit ...") 
     898         
     899        # Nb. No signature check is carried out.  To do a check, access is 
     900        # needed to the cert of the CA that issued the Attribute Authority's 
     901        # cert 
     902        # 
     903        # P J Kershaw 12/09/05 
     904        for key, val in self._credentials.items(): 
     905            if not val['attCert'].isValid(chkSig=False): 
     906                del self._credentials[key] 
     907 
     908 
     909    def updateCredentialRepository(self, auditCred=True): 
     910        """Copy over non-persistent credentials held by wallet into the 
     911        perminent repository. 
     912         
     913        @type auditCred: bool 
     914        @param auditCred: filter existing credentials in the repository 
     915        removing invalid ones""" 
     916 
     917        log.debug("CredentialWallet.updateCredentialRepository ...") 
     918         
     919        if not self._credentialRepository: 
     920            raise CredentialWalletError("No Credential Repository has been created " 
     921                                  "for this wallet") 
     922                             
     923        # Filter out invalid certs unless auditCred flag is explicitly set to 
     924        # false 
     925        if auditCred: self.audit() 
     926 
     927        # Update the database - only add new entries i.e. with an ID of -1 
     928        attCertList = [i['attCert'] for i in self._credentials.values() \ 
     929                       if i['id'] == -1] 
     930 
     931        self._credentialRepository.addCredentials(self.userId, attCertList) 
     932 
    716933 
    717934    def _createAttributeAuthorityClnt(self, attributeAuthorityURI): 
     
    724941        @return: new Attribute Authority client instance""" 
    725942 
    726         log.debug('CredentialWallet._createAttributeAuthorityClnt for service: "%s"'% 
    727                   attributeAuthorityURI) 
    728  
    729         attributeAuthorityClnt = AttributeAuthorityClient(uri=attributeAuthorityURI, 
     943        log.debug('CredentialWallet._createAttributeAuthorityClnt for ' 
     944                  'service: "%s"' % attributeAuthorityURI) 
     945 
     946        attributeAuthorityClnt = AttributeAuthorityClient( 
     947                            uri=attributeAuthorityURI, 
    730948                            sslCACertFilePathList=self._sslCACertFilePathList, 
    731949                            cfg=self.wssCfgFilePath or self._cfg, 
     
    764982        return attributeAuthorityClnt 
    765983 
    766     def createAttributeAuthorityClnt(self, attributeAuthorityURI=None): 
    767         '''Convenience method to create an Attribute Authority Client based 
    768         on WS-Security config and user X.509 certificate settings if present 
    769          
    770         Nb. a client is created implicitly when the attributeAuthorityURI 
    771         attribute property is set''' 
    772          
    773         if attributeAuthorityURI is None: 
    774             attributeAuthorityURI = self.attributeAuthorityURI 
    775              
    776         self._attributeAuthorityClnt = self._createAttributeAuthorityClnt( 
    777                                                         attributeAuthorityURI) 
    778          
    779     def _getAttributeAuthorityURI(self): 
    780         """Get property method for Attribute Authority Web Service URI to 
    781         connect to.""" 
    782         return self._attributeAuthorityURI 
    783              
    784     def _setAttributeAuthorityURI(self, attributeAuthorityURI): 
    785         """Set property method for Attribute Authority Web Service URI to 
    786         connect to.  This method ALSO SETS UP THE CLIENT INTERFACE 
    787          
    788         @type attributeAuthorityURI: string 
    789         @param attributeAuthorityURI: Attribute Authority Web Service URI.  Set 
    790         to None to initialise.  Set to a URI to instantiate a new Attribute  
    791         Authority client""" 
    792         if attributeAuthorityURI is None: 
    793             self._attributeAuthorityURI = self._attributeAuthorityClnt = None 
    794             return 
    795         else: 
    796             self._attributeAuthorityURI = attributeAuthorityURI 
    797             self._attributeAuthorityClnt = self._createAttributeAuthorityClnt( 
    798                                                         attributeAuthorityURI) 
    799              
    800     attributeAuthorityURI = property(fget=_getAttributeAuthorityURI, 
    801                                      fset=_setAttributeAuthorityURI, 
    802                                      doc="Attribute Authority address - " 
    803                                          "setting also sets up " 
    804                                          "AttributeAuthorityClient instance!") 
    805  
    806  
    807     def _getAttributeAuthorityClnt(self): 
    808         """Get property method for Attribute Authority Web Service client 
    809         instance.  Use attributeAuthorityURI property to set up  
    810         attributeAuthorityClnt 
    811          
    812         @type attributeAuthorityClnt: AttributeAuthorityClient 
    813         @param attributeAuthorityClnt: Attribute Authority Web Service client  
    814         instance""" 
    815         return self._attributeAuthorityClnt 
    816              
    817     attributeAuthorityClnt = property(fget=_getAttributeAuthorityClnt,  
    818                                       doc="Attribute Authority web service " 
    819                                           "client instance") 
    820  
    821  
    822     def _getAttributeAuthority(self): 
    823         """Get property method for Attribute Authority Web Service client 
    824         instance.  Use attributeAuthorityURI propert to set up  
    825         attributeAuthorityClnt 
    826          
    827         @rtype attributeAuthority: ndg.security.server.attributeauthority.AttributeAuthority 
    828         @return attributeAuthority: Attribute Authority instance""" 
    829         return self._attributeAuthority 
    830  
    831     def _setAttributeAuthority(self, attributeAuthority): 
    832         """Set property method for Attribute Authority Web Service instance to 
    833         connect to. 
    834          
    835         @type attributeAuthority: ndg.security.server.attributeauthority.AttributeAuthority 
    836         @param attributeAuthority: Attribute Authority instance.""" 
    837         if attributeAuthority is not None and \ 
    838            not isinstance(attributeAuthority, AttributeAuthority): 
    839             raise AttributeError("Expecting %r for attributeAuthority " 
    840                                  "attribute" % AttributeAuthority) 
    841              
    842         self._attributeAuthority = attributeAuthority 
    843              
    844     attributeAuthority = property(fget=_getAttributeAuthority, 
    845                                   fset=_setAttributeAuthority,  
    846                                   doc="Attribute Authority instance") 
    847  
    848  
    849     def _getMapFromTrustedHosts(self): 
    850         """Get property method for boolean flag - if set to True it allows 
    851         role mapping to be attempted when connecting to an Attribute Authority 
    852          
    853         @type mapFromTrustedHosts: bool 
    854         @param mapFromTrustedHosts: set to True to try role mapping in AC  
    855         requests to Attribute Authorities""" 
    856         return self._mapFromTrustedHosts 
    857  
    858     def _setMapFromTrustedHosts(self, mapFromTrustedHosts): 
    859         """Set property method for boolean flag - if set to True it allows 
    860         role mapping to be attempted when connecting to an Attribute Authority 
    861          
    862         @type mapFromTrustedHosts: bool 
    863         @param mapFromTrustedHosts: Attribute Authority Web Service.""" 
    864         if not isinstance(mapFromTrustedHosts, bool): 
    865             raise AttributeError("Expecting %r for mapFromTrustedHosts " 
    866                                  "attribute" % bool) 
    867              
    868         self._mapFromTrustedHosts = mapFromTrustedHosts 
    869              
    870     mapFromTrustedHosts = property(fget=_getMapFromTrustedHosts, 
    871                                    fset=_setMapFromTrustedHosts,  
    872                                    doc="Set to True to enable mapped AC " 
    873                                        "requests") 
    874  
    875     def _getRtnExtAttCertList(self): 
    876         """Get property method for Attribute Authority Web Service client 
    877         instance.  Use rtnExtAttCertListURI propert to set up  
    878         rtnExtAttCertListClnt 
    879          
    880         @type rtnExtAttCertList: bool 
    881         @param rtnExtAttCertList: """ 
    882         return self._rtnExtAttCertList 
    883  
    884     def _setRtnExtAttCertList(self, rtnExtAttCertList): 
    885         """Set property method for boolean flag - when a AC request fails, 
    886         return a list of candidate ACs that could be used to re-try with in 
    887         order to get mapped AC. 
    888          
    889         @type rtnExtAttCertList: bool 
    890         @param rtnExtAttCertList: set to True to configure getAttCert to return 
    891         a list of ACs that could be used in a re-try to get a mapped AC from  
    892         the target Attribute Authority.""" 
    893         if not isinstance(rtnExtAttCertList, bool): 
    894             raise AttributeError("Expecting %r for rtnExtAttCertList " 
    895                                  "attribute" % bool) 
    896              
    897         self._rtnExtAttCertList = rtnExtAttCertList 
    898              
    899     rtnExtAttCertList = property(fget=_getRtnExtAttCertList, 
    900                                  fset=_setRtnExtAttCertList,  
    901                                  doc="Set to True to enable mapped AC " 
    902                                      "requests") 
    903  
    904     def isValid(self, **x509CertKeys): 
    905         """Check wallet's user cert.  If expired return False 
    906          
    907         @type **x509CertKeys: dict 
    908         @param **x509CertKeys: keywords applying to  
    909         ndg.security.common.X509.X509Cert.isValidTime method""" 
    910         return self._userX509Cert.isValidTime(**x509CertKeys) 
    911  
    912  
    913     def addCredential(self, attCert, bUpdateCredentialRepository=True): 
    914         """Add a new attribute certificate to the list of credentials held. 
    915  
    916         @type attCert: 
    917         @param attCert: new attribute Certificate to be added 
    918         @type bUpdateCredentialRepository: bool 
    919         @param bUpdateCredentialRepository: if set to True, and a repository  
    920         exists it will be updated with the new credentials also 
    921          
    922         @rtype: bool 
    923         @return: True if certificate was added otherwise False.  - If an 
    924         existing certificate from the same issuer has a later expiry it will 
    925         take precence and the new input certificate is ignored.""" 
    926  
    927         # Check input 
    928         if not isinstance(attCert, AttCert): 
    929             raise CredentialWalletError("Attribute Certificate must be an AttCert " 
    930                                   "type object") 
    931  
    932         # Check certificate validity 
    933         try: 
    934             attCert.isValid(raiseExcep=True) 
    935              
    936         except AttCertError, e: 
    937             raise CredentialWalletError("Adding Credential: %s" % e) 
    938          
    939  
    940         # Check to see if there is an existing Attribute Certificate held 
    941         # that was issued by the same host.  If so, compare the expiry time. 
    942         # The one with the latest expiry will be retained and the other 
    943         # ingored 
    944         bUpdateCred = True 
    945         issuerName = attCert['issuerName'] 
    946          
    947         if issuerName in self._credentials: 
    948             # There is an existing certificate held with the same issuing 
    949             # host name as the new certificate 
    950             attCertOld = self._credentials[issuerName]['attCert'] 
    951  
    952             # Get expiry times in datetime format to allow comparison 
    953             dtAttCertOldNotAfter = attCertOld.getValidityNotAfter(\ 
    954                                                             asDatetime=True) 
    955             dtAttCertNotAfter = attCert.getValidityNotAfter(asDatetime=True) 
    956  
    957             # If the new certificate has an earlier expiry time then ignore it 
    958             bUpdateCred = dtAttCertNotAfter > dtAttCertOldNotAfter 
    959  
    960                  
    961         if bUpdateCred: 
    962             # Update: Nb. -1 ID value flags item as new.  Items read in 
    963             # from the CredentialRepository during creation of the wallet will 
    964             # have +ve IDs previously allocated by the database 
    965             self._credentials[issuerName] = {'id': -1, 'attCert': attCert} 
    966  
    967             # Update the Credentials Repository - the permanent store of user 
    968             # authorisation credentials.  This allows credentials for previous 
    969             # sessions to be re-instated 
    970             if self._credentialRepository and bUpdateCredentialRepository: 
    971                 self.updateCredentialRepository() 
    972  
    973         # Flag to caller to indicate whether the input certificate was added 
    974         # to the credentials or an exsiting certificate from the same issuer 
    975         # took precedence 
    976         return bUpdateCred 
    977              
    978  
    979     def audit(self): 
    980         """Check the credentials held in the wallet removing any that have 
    981         expired or are otherwise invalid.""" 
    982  
    983         log.debug("CredentialWallet.audit ...") 
    984          
    985         # Nb. No signature check is carried out.  To do a check, access is 
    986         # needed to the cert of the CA that issued the Attribute Authority's 
    987         # cert 
    988         # 
    989         # P J Kershaw 12/09/05 
    990         for key, val in self._credentials.items(): 
    991             if not val['attCert'].isValid(chkSig=False): 
    992                 del self._credentials[key] 
    993  
    994  
    995     def updateCredentialRepository(self, auditCred=True): 
    996         """Copy over non-persistent credentials held by wallet into the 
    997         perminent repository. 
    998          
    999         @type auditCred: bool 
    1000         @param auditCred: filter existing credentials in the repository 
    1001         removing invalid ones""" 
    1002  
    1003         log.debug("CredentialWallet.updateCredentialRepository ...") 
    1004          
    1005         if not self._credentialRepository: 
    1006             raise CredentialWalletError("No Credential Repository has been created " 
    1007                                   "for this wallet") 
    1008                              
    1009         # Filter out invalid certs unless auditCred flag is explicitly set to 
    1010         # false 
    1011         if auditCred: self.audit() 
    1012  
    1013         # Update the database - only add new entries i.e. with an ID of -1 
    1014         attCertList = [i['attCert'] for i in self._credentials.values() \ 
    1015                        if i['id'] == -1] 
    1016  
    1017         self._credentialRepository.addCredentials(self.userId, attCertList) 
    1018  
    1019  
    1020     def _getAttCert(self, attributeAuthorityClnt=None, extAttCert=None):        
     984 
     985    def _getAttCert(self,  
     986                    attributeAuthorityURI=None,  
     987                    attributeAuthority=None, 
     988                    extAttCert=None):        
    1021989        """Wrapper to Attribute Authority attribute certificate request.  See 
    1022990        getAttCert for the classes' public interface. 
    1023  
    1024         To call the Attribute Authority as a Web Service, specify a URI 
    1025         otherwise set the properties file path. 
    1026991         
    1027992        If successful, a new attribute certificate is issued to the user 
    1028993        and added into the wallet 
    1029  
    1030         @type attributeAuthorityClnt: ndg.security.common.attributeauthority.AttributeAuthorityClient 
    1031         @param attributeAuthorityClnt: client object to Attribute Authority to  
    1032         make a request to.  If omitted, it is set to  
    1033         self._attributeAuthorityClnt.  This attribute may itself be None.    
    1034         In this case, a local AA will be expected to be set. 
    1035          
     994         
     995        @type attributeAuthorityURI: string 
     996        @param attributeAuthorityURI: to call as a web service, specify the URI for the  
     997        Attribute Authority. 
     998         
     999        @type attributeAuthority: string 
     1000        @param attributeAuthority: Alternative to attributeAuthorityURI - to  
     1001        run on the local machine, specify the local Attribute Authority  
     1002        instance. 
     1003 
    10361004        @type extAttCert: ndg.security.common.AttCert.AttCert 
    10371005        @param extAttCert: an existing Attribute Certificate which can  
     
    10411009        log.debug("CredentialWallet._getAttCert ...") 
    10421010         
    1043         if attributeAuthorityClnt is None: 
    1044             attributeAuthorityClnt = self._attributeAuthorityClnt 
    10451011         
    10461012        # If a user cert. is present, ignore the user ID setting.  The 
     
    10521018            userId = self.userId 
    10531019             
    1054         if attributeAuthorityClnt is not None: 
    1055             try: 
    1056                 log.debug("Calling attribute authority using supplied client") 
    1057                 attCert = attributeAuthorityClnt.getAttCert(userId=userId, 
    1058                                                         userAttCert=extAttCert) 
    1059                                 
    1060                 log.info('Granted Attribute Certificate from issuer DN = "%s"' 
    1061                          ' at "%s"' % (attCert.issuerDN,  
    1062                                        attributeAuthorityClnt.uri)) 
    1063                  
    1064             except AttributeRequestDenied, e: 
    1065                 raise CredentialWalletAttributeRequestDenied, str(e) 
    1066                              
    1067         elif self.attributeAuthority is not None: 
    1068  
     1020        if attributeAuthority is None: 
     1021            attributeAuthority = self.attributeAuthority 
     1022             
     1023        if attributeAuthorityURI is None: 
     1024            attributeAuthorityURI = self.attributeAuthorityURI 
     1025             
     1026        # Set a client alias according to whether the Attribute Authority is 
     1027        # being called locally or asa remote service 
     1028        if attributeAuthorityURI is not None: 
     1029            # Call Remote Service at given URI 
     1030            attributeAuthorityClnt = self._createAttributeAuthorityClnt( 
     1031                                                    attributeAuthorityURI)                             
     1032        elif attributeAuthority is not None: 
    10691033            # Call local based Attribute Authority with settings from the  
    10701034            # configuration file attributeAuthority 
    1071             try: 
    1072                 # Request a new attribute certificate from the Attribute 
    1073                 # Authority 
    1074                 log.debug("Calling Attribute Authority using info from " 
    1075                           "properties file: %s" % self.attributeAuthority) 
     1035            attributeAuthorityClnt = attributeAuthority 
     1036        else: 
     1037            raise CredentialWalletError("Error requesting attribute: " 
     1038                                        "certificate a URI or Attribute " 
     1039                                        "Authority configuration file must be " 
     1040                                        "specified") 
     1041         
     1042        try: 
     1043            # Request a new attribute certificate from the Attribute 
     1044            # Authority 
     1045            log.debug('CredentialWallet._getAttCert for user "%s" ' 
     1046                      'and service: "%s" ...' % (userId,  
     1047                                attributeAuthorityURI or attributeAuthority)) 
     1048                 
     1049            attCert = attributeAuthorityClnt.getAttCert(userId=userId, 
     1050                                                        userAttCert=extAttCert) 
     1051             
     1052            log.info('Granted Attribute Certificate from issuer DN = "%s"'% 
     1053                     attCert.issuerDN) 
     1054             
     1055        except (AttributeAuthorityAccessDenied, AttributeRequestDenied), e: 
     1056            # AttributeAuthorityAccessDenied is raised if  
     1057            # attributeAuthorityClnt is a local AA instance and  
     1058            # AttributeRequestDenied is raised for a client to a remote AA 
     1059            # service 
     1060            raise CredentialWalletAttributeRequestDenied(str(e)) 
    10761061                     
    1077                 attCert = self.attributeAuthority.getAttCert(userId=userId, 
    1078                                                         userAttCert=extAttCert) 
    1079                  
    1080                 log.info('Granted Attribute Certificate from issuer DN = "%s"'% 
    1081                          attCert.issuerDN) 
    1082                  
    1083             except AttributeAuthorityAccessDenied, e: 
    1084                 raise CredentialWalletAttributeRequestDenied, str(e) 
    1085                          
    1086             except Exception, e: 
    1087                 raise CredentialWalletError("Requesting attribute certificate: %s"%e) 
    1088  
    1089         else: 
    1090             raise CredentialWalletError("Error requesting attribute: certificate a " 
    1091                                   "URI or Attribute Authority configuration " 
    1092                                   "file must be specified") 
    1093          
     1062        except Exception, e: 
     1063            raise CredentialWalletError("Requesting attribute " 
     1064                                        "certificate: %s" % e) 
    10941065 
    10951066        # Update attribute Certificate instance with CA's certificate ready  
     
    11101081 
    11111082 
    1112     def getAATrustedHostInfo(self,  
    1113                              userRole=None, 
    1114                              attributeAuthority=None, 
    1115                              attributeAuthorityURI=None): 
    1116         """Wrapper to Attribute Authority getTrustedHostInfo 
    1117          
    1118         getAATrustedHostInfo([userRole=r, ][attributeAuthority=f|attributeAuthorityURI=u]) 
     1083    def _getAAHostInfo(self,  
     1084                       attributeAuthority=None, 
     1085                       attributeAuthorityURI=None): 
     1086        """Wrapper to Attribute Authority getHostInfo 
     1087         
     1088        _getAAHostInfo([attributeAuthority=f|attributeAuthorityURI=u]) 
    11191089                    
    11201090        @type userRole: string 
     
    11261096         
    11271097        @type attributeAuthority: string 
    1128         @param attributeAuthority: Altenrative to attributeAuthorityURI - to run on the local  
    1129         machine, specify the local Attribute Authority configuration file. 
     1098        @param attributeAuthority: Alternative to attributeAuthorityURI - to  
     1099        run on the local machine, specify the local Attribute Authority  
     1100        instance. 
    11301101        """ 
    1131          
    1132         log.debug('CredentialWallet.getAATrustedHostInfo for role "%s" and service: ' 
    1133                   '"%s"' % (userRole, attributeAuthorityURI or attributeAuthority)) 
    1134         if attributeAuthorityURI: 
    1135             self._setAttributeAuthorityURI(attributeAuthorityURI) 
    1136         elif attributeAuthority: 
    1137             self._setAAPropFilePath  
    1138  
    1139              
    1140         if self._attributeAuthorityClnt is not None: 
    1141             # Call Attribute Authority WS 
    1142             try: 
    1143                 return self._attributeAuthorityClnt.getTrustedHostInfo(role=userRole)                 
    1144                             
    1145             except Exception, e: 
    1146                 log.error("Requesting trusted host information: %s" % str(e)) 
    1147                 raise  
    1148  
    1149         elif self.attributeAuthority is not None: 
    1150  
     1102 
     1103        if attributeAuthority is None: 
     1104            attributeAuthority = self.attributeAuthority 
     1105             
     1106        if attributeAuthorityURI is None: 
     1107            attributeAuthorityURI = self.attributeAuthorityURI 
     1108         
     1109        log.debug('CredentialWallet._getAAHostInfo for service: "%s" ...' %  
     1110                  attributeAuthorityURI or attributeAuthority) 
     1111             
     1112        # Set a client alias according to whether the Attribute Authority is 
     1113        # being called locally or asa remote service 
     1114        if attributeAuthorityURI is not None: 
     1115            # Call Remote Service at given URI 
     1116            attributeAuthorityClnt = self._createAttributeAuthorityClnt( 
     1117                                                    attributeAuthorityURI) 
     1118 
     1119        elif attributeAuthority is not None: 
    11511120            # Call local based Attribute Authority with settings from the  
    11521121            # configuration file attributeAuthority 
    1153             try: 
    1154                 # Request a new attribute certificate from the Attribute 
    1155                 # Authority 
    1156                 return self.attributeAuthority.getTrustedHostInfo(role=userRole) 
    1157                  
    1158             except Exception, e: 
    1159                 log.error("Requesting trusted host info: %s" % e) 
    1160                 raise 
    1161  
     1122            attributeAuthorityClnt = attributeAuthority 
     1123             
    11621124        else: 
    11631125            raise CredentialWalletError("Error requesting trusted hosts info: "  
    1164                                   "a URI or Attribute Authority "  
    1165                                   "configuration file must be specified") 
     1126                                        "a URI or Attribute Authority "  
     1127                                        "configuration file must be specified") 
     1128             
     1129        try: 
     1130            # Request a new attribute certificate from the Attribute 
     1131            # Authority 
     1132            return attributeAuthorityClnt.getHostInfo() 
     1133             
     1134        except Exception, e: 
     1135            log.error("Requesting host info: %s" % e) 
     1136            raise 
     1137 
     1138 
     1139    def _getAATrustedHostInfo(self,  
     1140                              userRole=None, 
     1141                              attributeAuthority=None, 
     1142                              attributeAuthorityURI=None): 
     1143        """Wrapper to Attribute Authority getTrustedHostInfo 
     1144         
     1145        _getAATrustedHostInfo([userRole=r, ][attributeAuthority=f| 
     1146                              attributeAuthorityURI=u]) 
     1147                    
     1148        @type userRole: string 
     1149        @param userRole: get hosts which have a mapping to this role 
     1150         
     1151        @type attributeAuthorityURI: string 
     1152        @param attributeAuthorityURI: to call as a web service, specify the URI for the  
     1153        Attribute Authority. 
     1154         
     1155        @type attributeAuthority: string 
     1156        @param attributeAuthority: Alternative to attributeAuthorityURI - to  
     1157        run on the local machine, specify the local Attribute Authority  
     1158        instance. 
     1159        """ 
     1160 
     1161        if attributeAuthority is None: 
     1162            attributeAuthority = self.attributeAuthority 
     1163             
     1164        if attributeAuthorityURI is None: 
     1165            attributeAuthorityURI = self.attributeAuthorityURI 
     1166         
     1167        log.debug('CredentialWallet._getAATrustedHostInfo for role "%s" and ' 
     1168                  'service: "%s" ...' % (userRole,  
     1169                                attributeAuthorityURI or attributeAuthority)) 
     1170             
     1171        # Set a client alias according to whether the Attribute Authority is 
     1172        # being called locally or asa remote service 
     1173        if attributeAuthorityURI is not None: 
     1174            # Call Remote Service at given URI 
     1175            attributeAuthorityClnt = self._createAttributeAuthorityClnt( 
     1176                                                    attributeAuthorityURI) 
     1177 
     1178        elif attributeAuthority is not None: 
     1179            # Call local based Attribute Authority with settings from the  
     1180            # configuration file attributeAuthority 
     1181            attributeAuthorityClnt = attributeAuthority 
     1182             
     1183        else: 
     1184            raise CredentialWalletError("Error requesting trusted hosts info: "  
     1185                                        "a URI or Attribute Authority "  
     1186                                        "configuration file must be specified") 
     1187             
     1188        try: 
     1189            # Request a new attribute certificate from the Attribute 
     1190            # Authority 
     1191            return attributeAuthorityClnt.getTrustedHostInfo(role=userRole) 
     1192             
     1193        except Exception, e: 
     1194            log.error("Requesting trusted host info: %s" % e) 
     1195            raise 
    11661196 
    11671197 
     
    11781208         
    11791209        """Get an Attribute Certificate from an Attribute Authority.  If this  
    1180         fails try to make a mapped Attribute Certificate by using a certificate from another  
    1181         host which has a trust relationship to the Attribute Authority in  
    1182         question. 
     1210        fails try to make a mapped Attribute Certificate by using a certificate  
     1211        from another host which has a trust relationship to the Attribute  
     1212        Authority in question. 
    11831213 
    11841214        getAttCert([reqRole=r, ][attributeAuthority=a|attributeAuthorityURI=u,] 
     
    12081238         
    12091239        @type attributeAuthority: string 
    1210         @param attributeAuthority: Altenrative to attributeAuthorityURI - to run on the local  
    1211         machine, specify the local Attribute Authority configuration file. 
     1240        @param attributeAuthority: Altenrative to attributeAuthorityURI - to  
     1241        run on the local machine, specify a local Attribute Authority  
     1242        instance. 
    12121243                                 
    12131244        @type mapFromTrustedHosts: bool / None      
     
    12261257        altered 
    12271258 
    1228         The list is returned via CredentialWalletAttributeRequestDenied exception 
    1229         If no value is set, the default value held in  
     1259        The list is returned via CredentialWalletAttributeRequestDenied  
     1260        exception.  If no value is set, the default value held in  
    12301261        self.mapFromTrustedHosts is used 
    12311262 
     
    12411272        is used. 
    12421273                                 
    1243         The list is returned via a CredentialWalletAttributeRequestDenied exception  
    1244         object. 
     1274        The list is returned via a CredentialWalletAttributeRequestDenied  
     1275        exception object. 
    12451276                                 
    12461277        @type extAttCertList: list 
     
    12821313        if attributeAuthorityURI: 
    12831314            self.attributeAuthorityURI = attributeAuthorityURI 
    1284         elif attributeAuthority: 
     1315             
     1316        if attributeAuthority: 
    12851317            self.attributeAuthority = attributeAuthority 
    12861318            
     
    12931325            # info WS method 
    12941326            log.debug("CredentialWallet.getAttCert - check AA site ID ...") 
    1295              
    12961327            try: 
    1297                 hostInfo = self._attributeAuthorityClnt.getHostInfo() 
     1328                hostInfo = self._getAAHostInfo() 
    12981329                aaName = hostInfo.keys()[0] 
    12991330            except Exception, e: 
     
    13801411                    pass 
    13811412 
    1382                 raise CredentialWalletAttributeRequestDenied, errMsg 
     1413                raise CredentialWalletAttributeRequestDenied(errMsg) 
    13831414                                                     
    13841415                 
     
    13891420                return attCert 
    13901421             
    1391             except CredentialWalletAttributeRequestDenied, attributeRequestDenied: 
     1422            except CredentialWalletAttributeRequestDenied, \ 
     1423                   attributeRequestDenied: 
    13921424                if not self.mapFromTrustedHosts and not self.rtnExtAttCertList: 
    13931425                    # Creating a mapped certificate is not allowed - raise 
     
    14091441                          "request ...") 
    14101442                try: 
    1411                     trustedHostInfo = self.getAATrustedHostInfo(reqRole, 
    1412                                             attributeAuthority=attributeAuthority) 
     1443                    trustedHostInfo = self._getAATrustedHostInfo(reqRole) 
     1444                     
    14131445                except NoMatchingRoleInTrustedHosts, e: 
    14141446                    raise CredentialWalletAttributeRequestDenied( 
     
    14171449                 
    14181450                except Exception, e: 
    1419                     raise CredentialWalletError, "Getting trusted hosts: %s" % e 
     1451                    raise CredentialWalletError("Getting trusted hosts: %s"%e) 
    14201452 
    14211453                if not trustedHostInfo: 
     
    14481480 
    14491481                if not extAttCertList: 
    1450                     log.debug("No wallet ACs matched any of the trusted " + \ 
    1451                               "hosts.  - Try request for an AC from a " + \ 
     1482                    log.debug("No wallet ACs matched any of the trusted " 
     1483                              "hosts.  - Try request for an AC from a " 
    14521484                              "trusted host ...") 
    14531485                     
     
    14601492                        try: 
    14611493                            # Try request to trusted host 
    1462                             trustedAAClnt = self._createAttributeAuthorityClnt(info['attributeAuthorityURI']) 
    1463                             extAttCert=self._getAttCert(attributeAuthorityClnt=trustedAAClnt) 
     1494                            extAttCert = self._getAttCert(\ 
     1495                                        attributeAuthorityURI=info['aaURI']) 
    14641496 
    14651497                            # Check the certificate contains at least one of 
     
    14761508                        except Exception, e: 
    14771509                            # ignore any errors and continue 
    1478                             log.warning('AC request to trusted host "%s"' % \ 
    1479                                         info['aaURI'] + ' resulted in: %s' % e) 
     1510                            log.warning('AC request to trusted host "%s"'  
     1511                                        ' resulted in: %s' % (info['aaURI'],e)) 
    14801512                             
    14811513                     
    14821514                if not extAttCertList:                         
    1483                     raise CredentialWalletAttributeRequestDenied, \ 
    1484                         "No certificates are available with which to " + \ 
    1485                         "make a mapping to the Attribute Authority" 
     1515                    raise CredentialWalletAttributeRequestDenied( 
     1516                        "No certificates are available with which to " 
     1517                        "make a mapping to the Attribute Authority") 
    14861518 
    14871519 
     
    15051537 
    15061538class CredentialRepository: 
    1507     """CredentialWallet's abstract interface class to a Credential Repository.  The 
    1508     Credential Repository is abstract store of user currently valid user 
     1539    """CredentialWallet's abstract interface class to a Credential Repository.  
     1540    The Credential Repository is abstract store of user currently valid user 
    15091541    credentials.  It enables retrieval of attribute certificates from a user's 
    15101542    previous session(s)""" 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wssecurity/__init__.py

    r4358 r4397  
    9494 
    9595        if prefix: 
    96             optNames = ["%s.%s" % (prefix, optName) for optName in kw]  
     96            optNames = ["%s.%s" % (prefix, optName) for optName in self._param]  
    9797        else: 
    9898            optNames = self._param 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/sessionmanager.py

    r4384 r4397  
    694694            # return equivalent proxy cert 
    695695            userSess = self._connect2UserSession(sessID=sessID) 
    696             userCert = userSess.credWallet.userCert 
     696            userCert = userSess.credWallet.userX509Cert 
    697697             
    698698        elif userCert is not None: 
     
    946946                 
    947947            except KeyError: 
    948                 raise SessionManagerError( 
    949                     "Deleting user session - no matching session ID exists") 
    950  
    951             # Get associated user Distinguished Name 
    952             userDN = str(userSess.credWallet.userCert.dn) 
     948                raise SessionManagerError("Deleting user session - " 
     949                                          "no matching session ID exists") 
     950 
     951            # Get associated user Distinguished Name if a certificate has been 
     952            # set 
     953            if userSess.credWallet.userX509Cert is None: 
     954                userDN = None 
     955            else: 
     956                userDN = str(userSess.credWallet.userX509Cert.dn) 
    953957             
    954958        elif userCert: 
     
    957961                 
    958962            except Exception, e: 
    959                 raise SessionManagerError( 
    960                 "Parsing input proxy certificate DN for session connect: %s"%\ 
    961                                                                         str(e)) 
     963                raise SessionManagerError("Parsing input user certificate " 
     964                                          "DN for session connect: %s" % e) 
    962965            try: 
    963966                userSess = self.__dnDict[userDN] 
     
    965968            except KeyError: 
    966969                # User session not found with given proxy cert 
    967                 raise SessionManagerError( 
    968                     "No user session found matching input proxy certificate") 
    969          
    970         if userSess: 
    971             userDN = str(userSess.credWallet.userCert.dn) 
     970                raise SessionManagerError("No user session found matching " 
     971                                          "input user certificate")         
     972        elif userSess: 
     973            if userSess.credWallet.userX509Cert is None: 
     974                userDN = None 
     975            else: 
     976                userDN = str(userSess.credWallet.userX509Cert.dn) 
    972977        else: 
    973978            # User session not found with given ID 
    974979            raise SessionManagerError('"sessID", "userCert" or "userSess" ' 
    975                                   'keywords must be set') 
     980                                      'keywords must be set') 
    976981  
    977982        # Delete associated sessions 
     
    991996        log.info("Deleted user session: user DN = %s, sessID = %s" % 
    992997                 (userDN, userSess.sessIdList)) 
     998 
    993999 
    9941000    def getAttCert(self, 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/credentialwallet/credWallet.cfg

    r4318 r4397  
    4040# Section in this file from which to retrieve WS-Security settings for  
    4141# digital signature of SOAP messages to Attribute Authorities 
    42 wssCfgSection=WS-Security 
     42#wssCfgSection=WS-Security 
     43wssCfgPrefix=wssecurity 
    4344 
    44 [WS-Security] 
    45 # 
    46 # OUTBOUND MESSAGE CONFIG 
    47  
     45# WS-Security 
    4846# Signature of an outbound message 
    4947 
     
    5149# method will add this to the BinarySecurityToken element of the WSSE header.   
    5250# binSecTokValType attribute must be set to 'X509' or 'X509v3' ValueType.   
    53 signingCertFilePath=$NDGSEC_CREDWALLET_UNITTEST_DIR/clnt.crt 
     51wssecurity.signingCertFilePath=$NDGSEC_CREDWALLET_UNITTEST_DIR/clnt.crt 
    5452 
    5553# ... or provide file path to PEM encoded private key file 
    56 signingPriKeyFilePath=$NDGSEC_CREDWALLET_UNITTEST_DIR/clnt.key 
     54wssecurity.signingPriKeyFilePath=$NDGSEC_CREDWALLET_UNITTEST_DIR/clnt.key 
    5755 
    5856# Password protecting private key.  Leave blank if there is no password. 
    59 signingPriKeyPwd= 
     57wssecurity.signingPriKeyPwd= 
    6058 
    6159# Set the ValueType for the BinarySecurityToken added to the WSSE header for a 
     
    6765# binSecTokValType determines whether signingCert or signingCertChain  
    6866# attributes will be used. 
    69 reqBinSecTokValType=X509v3 
     67wssecurity.reqBinSecTokValType=X509v3 
    7068 
    7169# Add a timestamp element to an outbound message 
    72 addTimestamp=True 
     70wssecurity.addTimestamp=True 
    7371 
    7472# For WSSE 1.1 - service returns signature confirmation containing signature  
    7573# value sent by client 
    76 applySignatureConfirmation=True 
     74wssecurity.applySignatureConfirmation=True 
    7775 
    7876# 
     
    8078 
    8179# Provide a space separated list of file paths 
    82 caCertFilePathList=$NDGSEC_CREDWALLET_UNITTEST_DIR/ca/ndg-test-ca.crt  
     80wssecurity.caCertFilePathList=$NDGSEC_CREDWALLET_UNITTEST_DIR/ca/ndg-test-ca.crt  
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/credentialwallet/test_credentialwallet.py

    r4381 r4397  
    2121from ndg.security.common.X509 import X509CertParse 
    2222from ndg.security.common.credentialwallet import CredentialWallet, \ 
    23                                             CredentialWalletAttributeRequestDenied 
     23                                        CredentialWalletAttributeRequestDenied 
    2424 
    2525from os.path import expandvars as xpdVars 
     
    3232 
    3333class CredentialWalletTestCase(unittest.TestCase): 
    34     """Unit test case for ndg.security.common.credentialwallet.CredentialWallet class. 
    35      
     34    """Unit test case for ndg.security.common.credentialwallet.CredentialWallet 
     35    class. 
    3636    """ 
    3737     
     
    173173-----END RSA PRIVATE KEY----- 
    174174""" 
    175         credWallet.createAttributeAuthorityClnt() 
    176175        attCert = credWallet.getAttCert() 
    177176         
     
    185184    def test5GetAttCertRefusedWithUserCert(self): 
    186185         
    187         credWallet = CredentialWallet(cfg=self.cfg.get('setUp', 'cfgFilePath'))     
     186        # Keyword mapFromTrustedHosts overrides any setting in the config file 
     187        # This flag prevents role mapping from a trusted AA and so in this case 
     188        # forces refusal of the request 
     189        credWallet = CredentialWallet(cfg=self.cfg.get('setUp', 'cfgFilePath'), 
     190                                      mapFromTrustedHosts=False)     
    188191        credWallet.userX509CertFilePath = self.cfg.get('setUp', 
    189192                                                       'userX509CertFilePath') 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/sessionmanager/sessionMgr.cfg

    r4320 r4397  
    7171# 
    7272# Module name - the default is an empty stub 
    73 credentialRepository.modName: ndg.security.common.CredWallet 
     73credentialRepository.modName: ndg.security.common.credentialwallet 
    7474 
    7575# Name of class in module to instantiate  
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/sessionmanager/test_sessionmanager.py

    r4384 r4397  
    6767        if SessionManagerTestCase.test1Passphrase is None and \ 
    6868           self.cfg.has_option('test1Connect', 'passphrase'): 
    69             SessionManagerTestCase.test1Passphrase = self.cfg.get('test1Connect',  
    70                                                               'passphrase') 
     69            SessionManagerTestCase.test1Passphrase=self.cfg.get('test1Connect',  
     70                                                                'passphrase') 
    7171         
    7272        if not SessionManagerTestCase.test1Passphrase: 
     
    7878            self.sm.connect(username=username,  
    7979                            passphrase=SessionManagerTestCase.test1Passphrase) 
    80         self.userCert = X509CertParse(userCert) 
    81          
     80#        self.userCert = X509CertParse(userCert) 
     81#         
    8282        print "User '%s' connected to Session Manager:\n%s" % (username,  
    8383                                                               self.sessID) 
    84         creds='\n'.join((self.issuingCert or '', 
    85                          self.userCert.asPEM().strip(), 
    86                          self.userPriKey)) 
    87         open(mkPath("user.creds"), "w").write(creds) 
     84#        creds='\n'.join((self.issuingCert or '', 
     85#                         self.userCert.asPEM().strip(), 
     86#                         self.userPriKey)) 
     87#        open(mkPath("user.creds"), "w").write(creds) 
    8888        print "Finished setting up connection" 
    8989         
     
    9494        if SessionManagerTestCase.test1Passphrase is None and \ 
    9595           self.cfg.has_option('test1Connect', 'passphrase'): 
    96             SessionManagerTestCase.test1Passphrase = self.cfg.get('test1Connect',  
    97                                                               'passphrase') 
     96            SessionManagerTestCase.test1Passphrase=self.cfg.get('test1Connect',  
     97                                                                'passphrase') 
    9898         
    9999        if not SessionManagerTestCase.test1Passphrase: 
     
    110110         
    111111        print "User '%s' connected to Session Manager:\n%s" % \ 
    112                                                         (username, self.sessID)        
     112                                                        (username, sessID)        
    113113                                   
    114114    def test2Connect2AuthNServiceReturningAUserCert(self): 
     
    117117        if SessionManagerTestCase.test1Passphrase is None and \ 
    118118           self.cfg.has_option('test1Connect', 'passphrase'): 
    119             SessionManagerTestCase.test1Passphrase = self.cfg.get('test1Connect',  
    120                                                               'passphrase') 
     119            SessionManagerTestCase.test1Passphrase=self.cfg.get('test1Connect',  
     120                                                                'passphrase') 
    121121         
    122122        if not SessionManagerTestCase.test1Passphrase: 
     
    125125 
    126126        print "Connecting to session manager as user: %s..." %username 
    127         userCert, self.userPriKey, self.issuingCert, self.sessID = \ 
     127        userCert, self.userPriKey, self.issuingCert, sessID = \ 
    128128            self.sm.connect(username=username,  
    129129                            passphrase=SessionManagerTestCase.test1Passphrase) 
     
    131131         
    132132        print "User '%s' connected to Session Manager:\n%s" % \ 
    133                                                         (username, self.sessID) 
     133                                                        (username, sessID) 
    134134        creds='\n'.join((self.issuingCert or '', 
    135135                         self.userCert.asPEM().strip(), 
     
    157157 
    158158        if SessionManagerTestCase.test3Passphrase is None and \ 
    159            self.cfg.has_option(section, passphrase): 
     159           self.cfg.has_option(section, 'passphrase'): 
    160160            SessionManagerTestCase.test3Passphrase = self.cfg.get(section,  
    161                                                               'passphrase') 
     161                                                                  'passphrase') 
    162162         
    163163        if not SessionManagerTestCase.test3Passphrase: 
Note: See TracChangeset for help on using the changeset viewer.