Changeset 751


Ignore:
Timestamp:
04/04/06 14:16:22 (14 years ago)
Author:
pjkersha
Message:

Tests/init.py: enables test files to be loaded as part of a package

Tests/SessionMgrIOtest.py: converted into format for pyunit

Tests/attCertTest.py: added test for signing

www/cgi-bin/security.py: added pub/pri key args for encryption.

bin/ndgSessionClient.py: update to help text for --req-role option.

NDG/AttAuthority.py: fixed bug in valid ext AttCert? check except block.

NDG/AttCert.py: modified isValidTime() to allow exception to be raised in order to give info
about why the cert time is not valid.

NDG/XMLMsg.py: updateXML() - leave tags set to None.

NDG/XMLSecDoc.py: fixed bug in asString() - make sure a filePath has been set if libxml2Doc
is not initialised.

NDG/SessionMgrIO.py:

regular expressions to parse AttCerts?. The default using ElementTree adds in unwanted 'ns0'
namespaces to the digital signature elements. Also fixes to updateXML methods.

NDG/SessionClient.py:

  • default mapFromTrustedHosts to None for reqAuthorisation() method. This tells wallet at

SessionMgr? to leave this flag setting as it is without modifying it.

NDG/CredWallet.py:

  • reqAuthorisation() - check "if not mapFromTrustedHosts and not rtnExtAttCertList" was in

the wrong place. Moved it to BEFORE call to getAATrustedHostInfo().

Location:
TI12-security/trunk/python
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/NDG/AttAuthority.py

    r737 r751  
    430430            except Exception, e: 
    431431                raise AttAuthorityError(\ 
    432                             "Invalid Remote Attribute Certificate: %s" + e)         
     432                            "Invalid Remote Attribute Certificate: " + str(e))         
    433433 
    434434 
  • TI12-security/trunk/python/NDG/AttCert.py

    r686 r751  
    695695 
    696696 
    697     def isValidTime(self): 
    698  
    699         """Check Attribute Certificate for expiry""" 
     697    def isValidTime(self, raiseExcep=False): 
     698        """Check Attribute Certificate for expiry.  Set raiseExcep to True 
     699        to raise an exception with a message indicating the nature of the  
     700        time error""" 
    700701 
    701702        if not isinstance(self.__dtNotBefore, datetime): 
     
    713714        #notAfter = self.__dtNotAfter 
    714715        #print "Valid Time? = %d" % (dtNow > notBefore and dtNow < notAfter) 
    715         return dtNow > self.__dtNotBefore and dtNow < self.__dtNotAfter 
     716        if raiseExcep: 
     717            if dtNow < self.__dtNotBefore: 
     718                raise AttCertError(\ 
     719            "Current time is before Attribute Certificate's not before time") 
     720             
     721            if dtNow > self.__dtNotAfter: 
     722                raise AttCertError(\ 
     723                            "Attribute Certificate validity time has expired")                 
     724             
     725            return True         
     726        else: 
     727            return dtNow > self.__dtNotBefore and dtNow < self.__dtNotAfter 
    716728 
    717729 
     
    781793        # Carry out checks in turn - Specific exception error messages are 
    782794        # raised if flag is set 
    783         if chkTime and not self.isValidTime(): 
    784             if raiseExcep: 
    785                 raise AttCertError("Attribute Certificate time is invalid") 
    786              
     795        if chkTime and not self.isValidTime(raiseExcep=raiseExcep): 
    787796            return False 
    788797 
  • TI12-security/trunk/python/NDG/CredWallet.py

    r740 r751  
    198198            if not isinstance(self.__credRepos, CredRepos): 
    199199                raise CredWalletError(\ 
    200                     "Input Credentials Repository instance must be of a "+\ 
     200                    "Input Credentials Repository instance must be of a " + \ 
    201201                    "class derived from \"CredRepos\"") 
    202202     
     
    969969 
    970970 
     971                if not mapFromTrustedHosts and not rtnExtAttCertList: 
     972                    # Creating a mapped certificate is not allowed - raise 
     973                    # authorisation denied exception saved from earlier 
     974                    raise authorisationDenied 
     975 
     976 
    971977                #  Use the input required role and the AA's trusted host list 
    972978                # to identify attribute certificates from other hosts which 
     
    985991                        "which to make a mapping") 
    986992 
    987  
    988                 if not mapFromTrustedHosts and not rtnExtAttCertList: 
    989                     # Creating a mapped certificate is not allowed - raise 
    990                     # authorisation denied exception saved from earlier 
    991                     raise authorisationDenied 
    992  
    993993                 
    994994                # Initialise external certificate list here - if none are 
  • TI12-security/trunk/python/NDG/SessionClient.py

    r739 r751  
    344344                         aaPubKey=None, 
    345345                         reqRole=None, 
    346                          mapFromTrustedHosts=False, 
    347                          rtnExtAttCertList=False, 
     346                         mapFromTrustedHosts=None, 
     347                         rtnExtAttCertList=None, 
    348348                         extAttCertList=None, 
    349349                         extTrustedHostList=None, 
     
    423423                                             
    424424            resp = self.__smSrv.reqAuthorisation(authorisationReq=authReq()) 
    425              
    426425            authResp = AuthorisationResp(xmlTxt=resp['authorisationResp'], 
    427426                                encrPriKeyFilePath=self.__clntPriKeyFilePath, 
  • TI12-security/trunk/python/NDG/SessionMgrIO.py

    r739 r751  
    4444     
    4545    # Override base class class variables 
    46     xmlTagTmpl = {  "userName":          "", 
    47                     "pPhrase":           "", 
    48                     "proxyCert":         "", 
    49                     "sessID":            "", 
    50                     "getCookie":         "", 
    51                     "createServerSess":  "", 
    52                     "encrCert":          ""    } 
     46    xmlTagTmpl = {  "userName":              "", 
     47                    "pPhrase":               "", 
     48                    "proxyCert":             "", 
     49                    "sessID":                "", 
     50                    "getCookie":             "", 
     51                    "createServerSess":      "", 
     52                    "encrCert":              ""    } 
    5353                         
    5454 
     
    8282    def parseXML(self): 
    8383        """Override base class implementation to include extra code 
    84         to parse extAttCertList tag""" 
     84        to convert boolean""" 
    8585         
    8686        rootElem = super(self.__class__, self).parseXML(rtnRootElem=True) 
    87         self['getCookie'] = bool(int(self['getCookie'])) 
     87         
     88        if 'getCookie' in self: 
     89            self['getCookie'] = bool(int(self['getCookie'])) 
     90             
     91        if 'createServerSess' in self: 
     92            self['createServerSess'] = bool(int(self['createServerSess'])) 
    8893 
    8994 
     
    237242                    "extTrustedHostList":     "", 
    238243                    "encrCert":               ""    } 
     244                     
     245    # Regular expressions for parsing AttCerts from XML 
     246    __attCertPat = re.compile(\ 
     247                    '<attributeCertificate>.*?</attributeCertificate>', re.S) 
     248                     
     249    __extACListPat = re.compile('<extAttCertList>.*</extAttCertList>', re.S) 
     250 
    239251 
    240252    def __init__(self, **xmlMsgKeys): 
     
    264276 
    265277 
    266 #_____________________________________________________________________________ 
    267 class AuthorisationRespError(XMLMsgError):     
    268     """Exception handling for NDG SessionMgr WS connect response class.""" 
    269     pass 
    270  
    271  
    272 #_____________________________________________________________________________ 
    273 class AuthorisationResp(XMLMsg): 
    274     """For client to Session Manager WS connect(): formats authorisation 
    275     response from SessionMgr. 
    276      
    277     For client, enables decryption of response""" 
    278      
    279     # Override base class class variables 
    280     xmlTagTmpl = {  "attCert":           "", 
    281                     "extAttCertList":    "", 
    282                     "statCode":          "", 
    283                     "errMsg":            ""    } 
    284  
    285     accessGranted = 'AccessGranted'     
    286     accessDenied = 'AccessDenied' 
    287     accessError = 'AccessError' 
    288  
    289  
    290     def __init__(self, **xmlMsgKeys): 
    291         """XML for receiving output from Session Manager authorisation call 
    292          
    293         xmlMsgKeys:    keywords for XMLMsg super-class.  If XML tags are  
    294                        input as keywords then 'errMsg' or 'statCode'  
    295                        must be set. 
    296         """         
    297          
    298         # Allow user credentials to be access like dictionary keys 
    299         super(self.__class__, self).__init__(**xmlMsgKeys) 
    300          
    301                                 
    302         # Check for valid output credentials 
    303         if 'errMsg' not in self and 'statCode' not in self:             
    304  
    305             # XML tags input as keywords expected - check minimum  
    306             # required are present for SessionMgr connect response 
    307             raise AuthorisationRespError(\ 
    308                 "Authorisation response must contain: \"errMsg\"" + \ 
    309                 " or \"statCode\" keywords") 
    310  
    311  
    312278    #_________________________________________________________________________ 
    313     def update(self, attCert=None, extAttCertList=None, **xmlTags): 
     279    def update(self, extAttCertList=None, **xmlTags): 
    314280        """Override base class implementation to include extra code 
    315281        to allow setting of extAttCertList tag""" 
     
    339305                 
    340306        # Call super class update with revised attribute certificate list 
    341         super(self.__class__, self).update(attCert=setAttCert(attCert), 
    342                                            extAttCertList=extAttCertList, 
     307        super(self.__class__, self).update(extAttCertList=extAttCertList, 
    343308                                           **xmlTags) 
    344309 
     
    351316        # Update dictionary 
    352317        self.update(**xmlTags) 
    353          
     318 
    354319        # Create XML formatted string ready for encryption 
    355320        try: 
     
    357322                "<" + self.__class__.__name__ + ">" + os.linesep 
    358323                 
    359             for tag in xmlTags: 
    360                 if isinstance(self[tag], AttCert): 
    361                     # Attribute Certificate received from Attribute Authority 
    362                     # 
    363                     # Remove any XML header - 
    364                     # update() call will have converted val to AttCert type 
    365                     text = self[tag].asString(stripXMLhdr=True) 
    366                    
    367                 elif isinstance(self[tag], list): 
     324            for tag, val in self.items(): 
     325                if isinstance(val, list): 
    368326                    # List of Attribute Certificates from other trusted hosts 
    369327                    # 
     
    371329                    # as branches 
    372330                    text = os.linesep.join([ac.asString(stripXMLhdr=True) \ 
    373                                             for ac in self[tag]])  
    374                  
    375                 elif isinstance(self[tag], bool): 
    376                     text = "%d" % self[tag] 
     331                                            for ac in val])  
     332                 
     333                elif isinstance(val, bool): 
     334                    text = "%d" % val 
    377335                     
    378                 elif self[tag] is None: 
     336                elif val is None: 
    379337                    # Leave out altogether if set to None 
    380338                    continue 
    381339                else:         
    382                     text = self[tag] 
     340                    text = val 
     341 
     342                xmlTxt += "    <%s>%s</%s>%s" % (tag, text, tag, os.linesep) 
     343                 
     344            xmlTxt += "</" + self.__class__.__name__ + ">" + os.linesep    
     345            self.xmlTxt = xmlTxt 
     346 
     347        except Exception, e: 
     348            raise XMLMsgError("Creating XML: %s" % e) 
     349 
     350 
     351    #_________________________________________________________________________ 
     352    def parseXML(self): 
     353        """Override base class implementation to include extra code 
     354        to convert boolean""" 
     355         
     356        super(self.__class__, self).parseXML() 
     357         
     358        if 'mapFromTrustedHosts' in self: 
     359            self['mapFromTrustedHosts']=bool(int(self['mapFromTrustedHosts'])) 
     360             
     361        if 'rtnExtAttCertList' in self:   
     362            self['rtnExtAttCertList'] = bool(int(self['rtnExtAttCertList'])) 
     363 
     364        # Nb. ElementTree parses attCert XML, it adds 'ns0' namespaces to all 
     365        # the digital signatue elements - this invalidates the signature (!) 
     366        #  
     367        # Fudge: re-read in using regular expressions 
     368                     
     369        if 'extAttCertList' in self: 
     370            if self['extAttCertList'] == '': 
     371                self['extAttCertList'] = [] 
     372                return 
     373             
     374            try:                 
     375                # Find <extAttCertList>...</extAttCertList> 
     376                extACListTxt = \ 
     377                    self.__class__.__extACListPat.findall(self.xmlTxt)[0]  
     378                 
     379                # Split list and convert into AttCert objects               
     380                self['extAttCertList'] = \ 
     381                    [AttCertParse(acMat.group()) \ 
     382                     for acMat in \ 
     383                     self.__class__.__attCertPat.finditer(extACListTxt)] 
     384                 
     385            except Exception, e: 
     386                raise AuthorisationRespError(\ 
     387                        "Error parsing Attribute Certificate List: " + str(e)) 
     388 
     389 
     390#_____________________________________________________________________________ 
     391class AuthorisationRespError(XMLMsgError):     
     392    """Exception handling for NDG SessionMgr WS connect response class.""" 
     393    pass 
     394 
     395 
     396#_____________________________________________________________________________ 
     397class AuthorisationResp(XMLMsg): 
     398    """For client to Session Manager WS connect(): formats authorisation 
     399    response from SessionMgr. 
     400     
     401    For client, enables decryption of response""" 
     402     
     403    # Override base class class variables 
     404    xmlTagTmpl = {  "attCert":           "", 
     405                    "extAttCertList":    "", 
     406                    "statCode":          "", 
     407                    "errMsg":            ""    } 
     408 
     409    accessGranted = 'AccessGranted'     
     410    accessDenied = 'AccessDenied' 
     411    accessError = 'AccessError' 
     412     
     413    # Regular expressions for parsing AttCerts from XML 
     414    __attCertPat = re.compile(\ 
     415                    '<attributeCertificate>.*?</attributeCertificate>', re.S) 
     416                     
     417    __extACListPat = re.compile('<extAttCertList>.*</extAttCertList>', re.S) 
     418    __acPat = re.compile('<attCert>.*?</attCert>', re.S) 
     419 
     420 
     421    def __init__(self, **xmlMsgKeys): 
     422        """XML for receiving output from Session Manager authorisation call 
     423         
     424        xmlMsgKeys:    keywords for XMLMsg super-class.  If XML tags are  
     425                       input as keywords then 'errMsg' or 'statCode'  
     426                       must be set. 
     427        """         
     428         
     429        # Allow user credentials to be access like dictionary keys 
     430        super(self.__class__, self).__init__(**xmlMsgKeys) 
     431         
     432                                
     433        # Check for valid output credentials 
     434        if 'statCode' not in self:             
     435 
     436            # XML tags input as keywords expected - check minimum  
     437            # required are present for SessionMgr connect response 
     438            raise AuthorisationRespError(\ 
     439                "Authorisation response must contain \"statCode\" keyword") 
     440 
     441 
     442    #_________________________________________________________________________ 
     443    def update(self, attCert=None, extAttCertList=None, **xmlTags): 
     444        """Override base class implementation to include extra code 
     445        to allow setting of extAttCertList tag""" 
     446 
     447        def setAttCert(attCert=None): 
     448            if isinstance(attCert, basestring): 
     449                return AttCertParse(attCert) 
     450             
     451            elif isinstance(attCert, AttCert): 
     452                return attCert 
     453             
     454            elif attCert is not None: 
     455                raise TypeError(\ 
     456                    "extAttCertList must contain string or AttCert types") 
     457 
     458        if extAttCertList is not None: 
     459            if isinstance(extAttCertList, list): 
     460                  
     461                # Join into single string and filter out XML headers as   
     462                # ElementTree doesn't like these nested into a doc                         
     463                extAttCertList = map(setAttCert, extAttCertList) 
     464             
     465            elif extAttCertList == '': 
     466                extAttCertList = [] 
     467            else: 
     468                raise TypeError("\"extAttCertList\" must be of list type") 
     469                 
     470        # Call super class update with revised attribute certificate list 
     471        super(self.__class__, self).update(attCert=setAttCert(attCert), 
     472                                           extAttCertList=extAttCertList, 
     473                                           **xmlTags) 
     474 
     475 
     476    #_________________________________________________________________________ 
     477    def updateXML(self, **xmlTags): 
     478        """Override base class implementation to include extra code 
     479        to include extAttCertList tag""" 
     480         
     481        # Update dictionary 
     482        self.update(**xmlTags) 
     483         
     484        # Create XML formatted string ready for encryption 
     485        try: 
     486            xmlTxt = self.xmlHdr + os.linesep + \ 
     487                "<" + self.__class__.__name__ + ">" + os.linesep 
     488                 
     489            for tag, val in self.items(): 
     490                if isinstance(val, AttCert): 
     491                    # Attribute Certificate received from Attribute Authority 
     492                    # 
     493                    # Remove any XML header - 
     494                    # update() call will have converted val to AttCert type 
     495                    text = val.asString(stripXMLhdr=True) 
     496                   
     497                elif isinstance(val, list): 
     498                    # List of Attribute Certificates from other trusted hosts 
     499                    # 
     500                    # Call AttCert parse and return as Element type to append 
     501                    # as branches 
     502                    text = os.linesep.join([ac.asString(stripXMLhdr=True) \ 
     503                                            for ac in val])  
     504                 
     505                elif isinstance(val, bool): 
     506                    text = "%d" % val 
     507                     
     508                elif val is None: 
     509                    # Leave out altogether if set to None 
     510                    continue 
     511                else:         
     512                    text = val 
    383513 
    384514                xmlTxt += "    <%s>%s</%s>%s" % (tag, text, tag, os.linesep) 
     
    396526        to parse extAttCertList tag""" 
    397527         
    398         rootElem = super(self.__class__, self).parseXML(rtnRootElem=True) 
    399  
    400         extAttCertListElem = rootElem.find("extAttCertList") 
    401         if extAttCertListElem: 
    402  
    403             # Add attribute certificates as AttCert instances 
    404             try: 
     528        super(self.__class__, self).parseXML() 
     529 
     530        # Nb. ElementTree parses attCert XML, it adds 'ns0' namespaces to all 
     531        # the digital signatue elements - this invalidates the signature (!) 
     532        #  
     533        # Fudge: re-read in using regular expressions 
     534                     
     535        if 'extAttCertList' in self: 
     536            if self['extAttCertList'] == '': 
     537                self['extAttCertList'] = [] 
     538                return 
     539             
     540            try:                 
     541                # Find <extAttCertList>...</extAttCertList> 
     542                extACListTxt = \ 
     543                    self.__class__.__extACListPat.findall(self.xmlTxt)[0]  
     544                 
     545                # Split list and convert into AttCert objects               
    405546                self['extAttCertList'] = \ 
    406                     [AttCertParse(ElementTree.tostring(elem)) \ 
    407                     for elem in extAttCertListElem] 
    408                      
     547                    [AttCertParse(acMat.group()) \ 
     548                     for acMat in \ 
     549                     self.__class__.__attCertPat.finditer(extACListTxt)] 
     550                 
    409551            except Exception, e: 
    410552                raise AuthorisationRespError(\ 
    411                     "Error parsing Ext. Attribute Certificate List: "+str(e))                                 
     553                        "Error parsing Attribute Certificate List: " + str(e)) 
     554                                           
     555        # Check for 'attCert' set - if so reset as a single string and convert 
     556        # to AttCert type.   
     557        if 'attCert' in self and self['attCert']: 
     558            try: 
     559                acTxt = self.__class__.__acPat.findall(self.xmlTxt)[0] 
     560                 
     561                self['attCert'] = \ 
     562                AttCertParse(self.__class__.__attCertPat.findall(acTxt)[0]) 
     563                 
     564            except Exception, e: 
     565                raise AuthorisationRespError(\ 
     566                    "Error parsing Attribute Certificate: " + str(e))   
    412567  
    413568 
  • TI12-security/trunk/python/NDG/XMLMsg.py

    r706 r751  
    354354                elem.tail = os.linesep 
    355355                 
    356                 if isinstance(self.__xmlTags[tag], bool):                     
     356                if self.__xmlTags[tag] is None: 
     357                    continue 
     358                 
     359                elif isinstance(self.__xmlTags[tag], bool):                     
    357360                    elem.text = "%d" % self.__xmlTags[tag] 
    358361                else: 
  • TI12-security/trunk/python/NDG/XMLSecDoc.py

    r712 r751  
    478478        # read method 
    479479        if self.__libxml2Doc is None: 
     480            if filePath is None: 
     481                raise XMLSecDocError(\ 
     482                    "A file must be parsed first for asString()") 
     483                     
    480484            self.read(filePath) 
    481485 
  • TI12-security/trunk/python/NDG/sessionMgr_services_server.py

    r739 r751  
    175175            # Nb. catch exception here so that error message will be encrypted 
    176176            # if 'encrCert' key was set 
    177             authResp = AuthorisationResp(errMsg=str(e)) 
     177            authResp = AuthorisationResp(\ 
     178                                    statCode=AuthorisationResp.accessError, 
     179                                    errMsg=str(e)) 
    178180 
    179181 
  • TI12-security/trunk/python/Tests/SessionMgrIOtest.py

    r738 r751  
    1 #!/bin/env python  
     1#!/bin/env python 
     2 
     3import unittest 
     4from NDG.SessionMgrIO import * 
     5 
     6 
     7class sessionMgrIOtestCase(unittest.TestCase): 
     8     
     9    def setUp(self): 
     10        pass 
     11     
     12    def tearDown(self): 
     13        pass 
    214                                         
    3 #_____________________________________________________________________________     
    4 if __name__ == "__main__": 
    5      # Client side - Set up input for SessionMgr WSDL connect() 
    6 #    cr = ConnectReq(userName="WileECoyote",  
    7 #                    pPhrase="ACME Road Runner catcher",  
    8 #                    encrPubKeyFilePath="../certs/badc-aa-cert.pem") 
    9  
    10     # Server side - decrypt connectReq from connect() request 
    11 #    cr = ConnectReq(encrXMLtxt=open("../Tests/xmlsec/connectReq.xml").read(), 
    12 #                  encrPriKeyFilePath="../certs/badc-aa-key.pem", 
    13 #                  encrPriKeyPwd="    ") 
    14  
    15     # Server side - make a connect response message 
    16 #    cr1 = ConnectResp(sessCookie="A proxy certificate") 
    17 # 
    18 #    cr2 = ConnectResp(sessCookie="A session cookie",  
    19 #                      encrPubKeyFilePath="../certs/badc-aa-cert.pem") 
    20                    
    21 #    import pdb 
    22 #    pdb.set_trace() 
     15    def testConnectReq1(self): 
     16        # Client side - Set up input for SessionMgr WSDL connect() 
     17        cr = ConnectReq(userName="WileECoyote",  
     18                        pPhrase="ACME Road Runner catcher",  
     19                        encrPubKeyFilePath="../certs/badc-aa-cert.pem") 
     20 
     21    def testConnectReq2(self): 
     22        # Server side - decrypt connectReq from connect() request 
     23        cr = ConnectReq(\ 
     24                  encrXMLtxt=open("../Tests/xmlsec/connectReq.xml").read(), 
     25                  encrPriKeyFilePath="../certs/badc-aa-key.pem", 
     26                  encrPriKeyPwd="    ") 
     27 
     28    def testConnectResp1(self): 
     29        # Server side - make a connect response message 
     30        cr1 = ConnectResp(sessCookie="A proxy certificate") 
     31 
     32    def testConnectResp2(self): 
     33        cr2 = ConnectResp(sessCookie="A session cookie",  
     34                          encrPubKeyFilePath="../certs/badc-aa-cert.pem") 
     35 
    2336     
    24     extAttCertList = [ 
     37    def testAuthorisationReq1(self): 
     38     
     39        extAttCertList = [\ 
     40"""<attributeCertificate> 
     41    <acInfo> 
     42        <version>1.0</version> 
     43        <holder>/CN=pjkersha/O=NDG/OU=BADC</holder> 
     44        <issuer>/CN=AttributeAuthority/O=NDG/OU=BADC</issuer> 
     45        <issuerName>BADC</issuerName> 
     46        <issuerSerialNumber>4</issuerSerialNumber> 
     47        <validity> 
     48            <notBefore>2006 04 03 09 09 26</notBefore> 
     49            <notAfter>2006 04 03 17 08 25</notAfter> 
     50        </validity> 
     51        <attributes> 
     52            <roleSet> 
     53                <role> 
     54                    <name>government</name> 
     55                </role> 
     56            </roleSet> 
     57        </attributes> 
     58        <provenance>original</provenance> 
     59    </acInfo> 
     60<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     61<SignedInfo> 
     62<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
     63<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
     64<Reference> 
     65<Transforms> 
     66<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
     67</Transforms> 
     68<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
     69<DigestValue>As4JwG1ABH5sA0vO7cOvGJK/PgQ=</DigestValue> 
     70</Reference> 
     71</SignedInfo> 
     72<SignatureValue>ECtPnRoQJFmWi91xaksaRxhrEweCdEc0+LOkdDlhCzfjRy8QxNogvc3spRKEn817 
     73GVa3YLNLE3/UUZAxa4o+F4nI5WkGDFpnVyhfgA7dhhDL3khL1WKumGA303bqn0Ti 
     74oK+T+rZ23VjFLtrvQjkwbh8gzyAgIFQL29ifIlu3hLk=</SignatureValue> 
     75<KeyInfo> 
     76<X509Data> 
     77 
     78 
     79 
     80<X509Certificate>MIIB9TCCAV6gAwIBAgIBBDANBgkqhkiG9w0BAQQFADAwMQwwCgYDVQQKEwNOREcx 
     81DTALBgNVBAsTBEJBREMxETAPBgNVBAMTCFNpbXBsZUNBMB4XDTA1MTEwMTE0Mjc1 
     82OVoXDTA2MTEwMTE0Mjc1OVowOjEMMAoGA1UEChMDTkRHMQ0wCwYDVQQLEwRCQURD 
     83MRswGQYDVQQDExJBdHRyaWJ1dGVBdXRob3JpdHkwgZ8wDQYJKoZIhvcNAQEBBQAD 
     84gY0AMIGJAoGBAJylt3cBDPDpFXfho8UM3WDEMm+yWDKeotwEj4oyWdP1ZeU0CQHz 
     85fovJO/hFcqp6LeQKPir+WcDJoZhlX3rp4QQhRGL4ldATDJg/EXacu5wPnCkVnt3W 
     86tlL930W97tY7JmyPO4uKNc5DAxt2XFOmU0hnHOGZon1rHpmo+HCf+aanAgMBAAGj 
     87FTATMBEGCWCGSAGG+EIBAQQEAwIE8DANBgkqhkiG9w0BAQQFAAOBgQAELYlxWcSb 
     88Ifad6cVtXF2VCw+qoK7qSvqAHISPKTu5IxJoHVMlkQH7IJs73iIvXoKWuaP9zLY0 
     89w5PaGn7077gPLIcSZhlI7wRb0JigmnJk/WTDjQUYQgDyPdJTGQQ1UqqjE4hYRFs4 
     90brRl7KmdlZ4XFZqBgO2o2UTea3ZCcHSpsA==</X509Certificate> 
     91<X509SubjectName>CN=AttributeAuthority,OU=BADC,O=NDG</X509SubjectName> 
     92<X509IssuerSerial> 
     93<X509IssuerName>CN=SimpleCA,OU=BADC,O=NDG</X509IssuerName> 
     94<X509SerialNumber>4</X509SerialNumber> 
     95</X509IssuerSerial> 
     96</X509Data> 
     97</KeyInfo> 
     98</Signature></attributeCertificate>""", 
    2599"""<?xml version="1.0"?> 
    26100<attributeCertificate> 
     
    83157</X509Data> 
    84158</KeyInfo> 
    85 </Signature></attributeCertificate>""", 
     159</Signature></attributeCertificate>"""] 
     160 
     161        ar1 = AuthorisationReq(proxyCert="A proxy cert", 
     162                               aaWSDL="http://AttributeAuthority.wsdl", 
     163                               extAttCertList=extAttCertList) 
     164                             
     165        import pdb 
     166        pdb.set_trace() 
     167        ar2 = AuthorisationReq(xmlTxt=str(ar1)) 
     168 
     169                                
     170    def testAuthorisationResp1(self): 
     171 
     172        try: 
     173            attCert = \ 
     174"""<attributeCertificate> 
     175    <acInfo> 
     176        <version>1.0</version> 
     177        <holder>/CN=pjkersha/O=NDG/OU=BADC</holder> 
     178        <issuer>/CN=AttributeAuthority/O=NDG/OU=BADC</issuer> 
     179        <issuerName>BADC</issuerName> 
     180        <issuerSerialNumber>4</issuerSerialNumber> 
     181        <validity> 
     182            <notBefore>2006 04 03 09 09 26</notBefore> 
     183            <notAfter>2006 04 03 17 08 25</notAfter> 
     184        </validity> 
     185        <attributes> 
     186            <roleSet> 
     187                <role> 
     188                    <name>government</name> 
     189                </role> 
     190            </roleSet> 
     191        </attributes> 
     192        <provenance>original</provenance> 
     193    </acInfo> 
     194<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     195<SignedInfo> 
     196<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
     197<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
     198<Reference> 
     199<Transforms> 
     200<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
     201</Transforms> 
     202<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
     203<DigestValue>As4JwG1ABH5sA0vO7cOvGJK/PgQ=</DigestValue> 
     204</Reference> 
     205</SignedInfo> 
     206<SignatureValue>ECtPnRoQJFmWi91xaksaRxhrEweCdEc0+LOkdDlhCzfjRy8QxNogvc3spRKEn817 
     207GVa3YLNLE3/UUZAxa4o+F4nI5WkGDFpnVyhfgA7dhhDL3khL1WKumGA303bqn0Ti 
     208oK+T+rZ23VjFLtrvQjkwbh8gzyAgIFQL29ifIlu3hLk=</SignatureValue> 
     209<KeyInfo> 
     210<X509Data> 
     211 
     212 
     213 
     214<X509Certificate>MIIB9TCCAV6gAwIBAgIBBDANBgkqhkiG9w0BAQQFADAwMQwwCgYDVQQKEwNOREcx 
     215DTALBgNVBAsTBEJBREMxETAPBgNVBAMTCFNpbXBsZUNBMB4XDTA1MTEwMTE0Mjc1 
     216OVoXDTA2MTEwMTE0Mjc1OVowOjEMMAoGA1UEChMDTkRHMQ0wCwYDVQQLEwRCQURD 
     217MRswGQYDVQQDExJBdHRyaWJ1dGVBdXRob3JpdHkwgZ8wDQYJKoZIhvcNAQEBBQAD 
     218gY0AMIGJAoGBAJylt3cBDPDpFXfho8UM3WDEMm+yWDKeotwEj4oyWdP1ZeU0CQHz 
     219fovJO/hFcqp6LeQKPir+WcDJoZhlX3rp4QQhRGL4ldATDJg/EXacu5wPnCkVnt3W 
     220tlL930W97tY7JmyPO4uKNc5DAxt2XFOmU0hnHOGZon1rHpmo+HCf+aanAgMBAAGj 
     221FTATMBEGCWCGSAGG+EIBAQQEAwIE8DANBgkqhkiG9w0BAQQFAAOBgQAELYlxWcSb 
     222Ifad6cVtXF2VCw+qoK7qSvqAHISPKTu5IxJoHVMlkQH7IJs73iIvXoKWuaP9zLY0 
     223w5PaGn7077gPLIcSZhlI7wRb0JigmnJk/WTDjQUYQgDyPdJTGQQ1UqqjE4hYRFs4 
     224brRl7KmdlZ4XFZqBgO2o2UTea3ZCcHSpsA==</X509Certificate> 
     225<X509SubjectName>CN=AttributeAuthority,OU=BADC,O=NDG</X509SubjectName> 
     226<X509IssuerSerial> 
     227<X509IssuerName>CN=SimpleCA,OU=BADC,O=NDG</X509IssuerName> 
     228<X509SerialNumber>4</X509SerialNumber> 
     229</X509IssuerSerial> 
     230</X509Data> 
     231</KeyInfo> 
     232</Signature></attributeCertificate>""" 
     233                            
     234            extAttCertList = [\ 
    86235"""<?xml version="1.0"?> 
    87236<attributeCertificate> 
     
    93242        <issuerSerialNumber>6578</issuerSerialNumber>  
    94243    <validity> 
    95           <notBefore>2005 09 29 15 45 49</notBefore>  
    96         <notAfter>2005 09 29 23 45 49</notAfter>  
     244          <notBefore>2005 09 16 11 53 36</notBefore>  
     245        <notAfter>2005 09 16 19 53 29</notAfter>  
    97246    </validity> 
    98247    <attributes> 
     
    114263</Transforms> 
    115264<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
    116 <DigestValue>/Kw9IbBQuQAdNYAgvp2m01l663k=</DigestValue> 
    117 </Reference> 
    118 </SignedInfo> 
    119 <SignatureValue>Q7lhq/jt+m2trRPyWrZ6BQcIibXrstVS/xKTAhR4puv7kVngIm64r45MJ2GQpQan 
    120 QaVdVuOl8QPX8ila0j8sIz47FtriRWZ8fCssFYWR/7n3AKjNd22ChAshxHfZCJY4 
    121 fzJSXgEN+FN0ArOWT49FbhDVf7LEGO+MR+TP+ZKt6uY=</SignatureValue> 
     265<DigestValue>i1q2jwEDy0Sxc+ChxW9p4KCBynU=</DigestValue> 
     266</Reference> 
     267</SignedInfo> 
     268<SignatureValue>aXmExRkD4mZ9OdSlUcVUPIZ/r5v31Dq6IwU7Ox2/evd6maZeECVH4kGvGGez2VA5 
     269lKhghRqgmAPsgEfZlZ3XwFxxo8tQuY6pi19OqwLV51R5klysX6fKkyK2JVoUG8Y3 
     2707fACirNGZrZyf93X8sTvd02xN1DOTp7zt1afDsu3qGE=</SignatureValue> 
    122271<KeyInfo> 
    123272<X509Data> 
     
    154303        <issuerSerialNumber>6578</issuerSerialNumber>  
    155304    <validity> 
    156           <notBefore>2005 09 16 10 19 32</notBefore>  
    157         <notAfter>2005 09 16 18 19 14</notAfter>  
     305          <notBefore>2005 09 29 15 45 49</notBefore>  
     306        <notAfter>2005 09 29 23 45 49</notAfter>  
    158307    </validity> 
    159308    <attributes> 
     
    175324</Transforms> 
    176325<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
    177 <DigestValue>tvftcf7fevu4PQqK2PhGFVzZlFo=</DigestValue> 
    178 </Reference> 
    179 </SignedInfo> 
    180 <SignatureValue>cga7gcRSeKkI8+k5HiRdfxDz0wRA741lRaI0FCZ0e7rJH3IwxEv6C3fNB0a8Slgv 
    181 R2/1b+xCHtNX0jaMLDnAv/AvtC8DfcV8yiDZOAQ/qXDkASB2OHDo6qM+Zlkf97U+ 
    182 dbjIuZ6bgXa2c9OlT9PUiCcDZt6uLmiu//28ZnFy7Pw=</SignatureValue> 
     326<DigestValue>/Kw9IbBQuQAdNYAgvp2m01l663k=</DigestValue> 
     327</Reference> 
     328</SignedInfo> 
     329<SignatureValue>Q7lhq/jt+m2trRPyWrZ6BQcIibXrstVS/xKTAhR4puv7kVngIm64r45MJ2GQpQan 
     330QaVdVuOl8QPX8ila0j8sIz47FtriRWZ8fCssFYWR/7n3AKjNd22ChAshxHfZCJY4 
     331fzJSXgEN+FN0ArOWT49FbhDVf7LEGO+MR+TP+ZKt6uY=</SignatureValue> 
    183332<KeyInfo> 
    184333<X509Data> 
     
    205354</X509Data> 
    206355</KeyInfo> 
    207 </Signature></attributeCertificate>""" 
    208 ] 
    209  
    210     ar1 = AuthorisationResp(extAttCertList=extAttCertList, 
     356</Signature></attributeCertificate>""", 
     357"""<?xml version="1.0"?> 
     358<attributeCertificate> 
     359    <acInfo> 
     360        <version>1.0</version> 
     361        <holder>/CN=pjkersha/O=NDG/OU=BADC</holder> 
     362        <issuer>/CN=Attribute Authority/O=NDG/OU=BADC</issuer> 
     363        <issuerName>BADC</issuerName> 
     364        <issuerSerialNumber>6578</issuerSerialNumber>  
     365    <validity> 
     366          <notBefore>2005 09 16 10 19 32</notBefore>  
     367        <notAfter>2005 09 16 18 19 14</notAfter>  
     368    </validity> 
     369    <attributes> 
     370        <roleSet> 
     371                <role> 
     372                <name>government</name> 
     373        </role> 
     374        </roleSet> 
     375    </attributes> 
     376    <provenance>original</provenance>  
     377    </acInfo> 
     378<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
     379<SignedInfo> 
     380<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
     381<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
     382<Reference> 
     383<Transforms> 
     384<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
     385</Transforms> 
     386<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
     387<DigestValue>tvftcf7fevu4PQqK2PhGFVzZlFo=</DigestValue> 
     388</Reference> 
     389</SignedInfo> 
     390<SignatureValue>cga7gcRSeKkI8+k5HiRdfxDz0wRA741lRaI0FCZ0e7rJH3IwxEv6C3fNB0a8Slgv 
     391R2/1b+xCHtNX0jaMLDnAv/AvtC8DfcV8yiDZOAQ/qXDkASB2OHDo6qM+Zlkf97U+ 
     392dbjIuZ6bgXa2c9OlT9PUiCcDZt6uLmiu//28ZnFy7Pw=</SignatureValue> 
     393<KeyInfo> 
     394<X509Data> 
     395 
     396 
     397 
     398<X509Certificate>MIICKDCCAZGgAwIBAgICGbIwDQYJKoZIhvcNAQEEBQAwYTEMMAoGA1UEChMDTkRH 
     399MQ0wCwYDVQQLEwRCQURDMScwJQYDVQQLFB5uZGdwdXJzZWNhQGZvZWhuLmJhZGMu 
     400cmwuYWMudWsxGTAXBgNVBAMTEEdsb2J1cyBTaW1wbGUgQ0EwHhcNMDUwODExMTQ1 
     401NjM4WhcNMDYwODExMTQ1NjM4WjA7MQwwCgYDVQQKEwNOREcxDTALBgNVBAsTBEJB 
     402REMxHDAaBgNVBAMTE0F0dHJpYnV0ZSBBdXRob3JpdHkwgZ8wDQYJKoZIhvcNAQEB 
     403BQADgY0AMIGJAoGBALgmuDF/jKxKlCMqhF835Yge6rHxZFLby9BbXGsa2pa/1BAY 
     404xJUiou8sIXO7yaWaRP7M9FwW64Vdk+HQI5zluG2Gtx4MgKYElUDCgPYXsvAXg0QG 
     405bo0KSPr+X489j07HegXGjekNejLwwvB7qTSqxHjAaKAKL7vBfWf5mn0mlIwbAgMB 
     406AAGjFTATMBEGCWCGSAGG+EIBAQQEAwIE8DANBgkqhkiG9w0BAQQFAAOBgQAmmqnd 
     407rj6mgbaruLepn5pyh8sQ+Qd7fwotW00rEBRYzJNUUObmIry5ZM5zuVMcaPSY57qY 
     408vWqnavydIPdu6N97/Tf/RLk8crLVOrqj2Mo0bwgnEnjmrQicIDsWj6bFNsX1kr6V 
     409MtUg6T1zo/Yz1aYgGcW4A/ws5tmcEHS0PUGIGA==</X509Certificate> 
     410<X509SubjectName>CN=Attribute Authority,OU=BADC,O=NDG</X509SubjectName> 
     411<X509IssuerSerial> 
     412<X509IssuerName>CN=Globus Simple CA,OU=ndgpurseca@foehn.badc.rl.ac.uk,OU=BADC,O=NDG</X509IssuerName> 
     413<X509SerialNumber>6578</X509SerialNumber> 
     414</X509IssuerSerial> 
     415</X509Data> 
     416</KeyInfo> 
     417</Signature></attributeCertificate>"""] 
     418 
     419            import pdb 
     420            pdb.set_trace()                           
     421     
     422            ar1 = AuthorisationResp(attCert=attCert, 
     423                            extAttCertList=extAttCertList, 
    211424                            statCode=AuthorisationResp.accessDenied, 
    212425                            errMsg="User is not registered at data centre") 
    213 #    import pdb 
    214 #    pdb.set_trace()                           
    215  
    216     ar2 = AuthorisationResp(xmlTxt=str(ar1)) 
    217      
    218     # check XMLSecDoc.__del__ error 
    219     del ar1 
    220     del ar2 
     426         
     427            ar2 = AuthorisationResp(xmlTxt=str(ar1)) 
     428             
     429        except Exception, e: 
     430            self.fail(str(e)) 
     431                                 
     432class sessionMgrIOtestSuite(unittest.TestSuite): 
     433    def __init__(self): 
     434        map = map(sessionMgrIOtestCase, 
     435                  ( 
     436                    "testConnectReq1", 
     437                    "testConnectReq2", 
     438                    "testConnectResp1", 
     439                    "testConnectResp2", 
     440                    "testAuthorisationReq1", 
     441                    "testAuthorisationResp1" 
     442                  )) 
     443        unittest.TestSuite.__init__(self, map) 
     444                                         
     445if __name__ == "__main__": 
     446    unittest.main() 
  • TI12-security/trunk/python/Tests/attCertTest.py

    r674 r751  
    88     
    99    def setUp(self): 
    10         pass 
    11      
     10        self.attCert = AttCert() 
     11        self.attCert['provenance'] = 'original' 
     12        self.attCert.setValidityTime(lifeTime=60*60*8.) 
     13        self.attCert.addRoles(['government', 'acsoe', 'atsr']) 
     14         
    1215    def tearDown(self): 
    1316        pass 
    1417 
    15     def testAttCertNonZero(self): 
     18 
     19             
     20    def testAttCert2Sign(self): 
    1621         
    1722        try: 
    18             attCert = AttCert() 
    19             if not attCert: 
     23            certFilePathList = [ "./Junk-cert.pem", 
     24                                 "/usr/local/NDG/conf/certs/cacert.pem"] 
     25                                  
     26            signingPriKeyFilePath = "./Junk-key.pem" 
     27            priKeyPwd = open("./tmp2").read().strip() 
     28             
     29            import pdb 
     30            pdb.set_trace() 
     31                         
     32            # Digitally sign certificate using Attribute Authority's 
     33            # certificate and private key 
     34            self.attCert.sign(certFilePathList=certFilePathList, 
     35                              signingKeyFilePath=signingPriKeyFilePath, 
     36                              signingKeyPwd=priKeyPwd) 
     37             
     38            # Check the certificate is valid 
     39            self.attCert.isValid(raiseExcep=True) 
     40            print "Signature is valid\n" 
     41             
     42            print "AttCert.asString()...\n" 
     43            print self.attCert.asString() 
     44         
     45        except Exception, e: 
     46            raise self.fail(str(e)) 
     47             
     48             
     49    def testAttCert4NonZero(self): 
     50         
     51        try: 
     52            if not self.attCert: 
    2053                self.fail("AttCert instance yields 0") 
    2154             
     
    2861        map = map(attCertTestCase, 
    2962                  ( 
    30                     "testAttCertNonZero", 
     63                    "test1AttCertAddRoles", 
     64                    "test2AttCertSign", 
     65                    "test3AttCertAsString", 
     66                    "test4AttCertNonZero", 
    3167                  )) 
    3268        unittest.TestSuite.__init__(self, map) 
    33                                          
     69  
     70                                        
    3471if __name__ == "__main__": 
    3572    unittest.main() 
  • TI12-security/trunk/python/bin/ndgSessionClient.py

    r739 r751  
    224224                      dest="reqRole", 
    225225                      help="""\ 
    226 For use with --req-autho/-r flag.  Give a hint to the authorisation request as 
    227 to what role is needed in order to get a mapped Attribute Certificate back 
    228 from the Attribute Authority""") 
     226For use with --req-autho/-r flag.  Making certifcate mapping more efficient 
     227by specifying to the Session Manager what role is needed for attribute 
     228certificates from trusted hosts in order to get a mapped Attribute Certificate 
     229back from the Attribute Authority""") 
    229230 
    230231    parser.add_option("-l", 
     
    374375            print authResp 
    375376         
    376  
    377377        if not methodCall:    
    378378            sys.stderr.write("Set a flag to specify the web-service call " + \ 
  • TI12-security/trunk/python/www/cgi-bin/security.py

    r687 r751  
    4747                 userName=None, 
    4848                 passPhrase=None, 
    49                  smEncrPubKeyFilePath=None, 
     49                 smPubKeyFilePath=None, 
     50                         clntPubKeyFilePath=None, 
     51                         clntPriKeyFilePath=None, 
     52                         clntPriKeyPwd=None, 
     53                         aaPubKey=None, 
    5054                 org=None, 
    5155                 bDebug=False): 
     
    5660        self.__userName = userName 
    5761        self.__passPhrase = passPhrase 
    58         self.__smEncrPubKeyFilePath = smEncrPubKeyFilePath 
     62        self.__smPubKeyFilePath = smPubKeyFilePath 
     63        self.__clntPubKeyFilePath = clntPubKeyFilePath 
     64        self.__clntPriKeyFilePath = clntPriKeyFilePath 
     65        self.__clntPriKeyPwd = clntPriKeyPwd 
     66        self.__aaPubKey = aaPubKey 
     67 
    5968        self.__bDebug = bDebug 
    6069 
     
    7887        form = cgi.FieldStorage() 
    7988        bAuthorise = form.has_key("authorise") 
     89 
    8090 
    8191        #sys.stderr.write("Form keys: %s\n" % ', '.join(form.keys())) 
     
    321331                smClient = SessionClient( 
    322332                        smWSDL=self.__smWSDL, 
    323                         smEncrPubKeyFilePath=self.__smEncrPubKeyFilePath, 
     333                        smPubKeyFilePath=self.__smPubKeyFilePath, 
     334                                clntPubKeyFilePath=self.__clntPubKeyFilePath, 
     335                                clntPriKeyFilePath=self.__clntPriKeyFilePath, 
    324336                        traceFile=traceFile) 
    325                          
     337 
    326338 
    327339                smClient.addUser(userName=self.__userName, 
    328                                  pPhrase=self.__passPhrase) 
     340                                 pPhrase=self.__passPhrase, 
     341                                 clntPriKeyPwd=self.__clntPriKeyPwd) 
    329342            except Exception, e: 
    330343                raise SecurityCGIError("Session Client: " + str(e)) 
     
    411424                smClient = SessionClient( 
    412425                        smWSDL=self.__smWSDL, 
    413                         smEncrPubKeyFilePath=self.__smEncrPubKeyFilePath, 
     426                        smPubKeyFilePath=self.__smPubKeyFilePath, 
     427                                clntPubKeyFilePath=self.__clntPubKeyFilePath, 
     428                                clntPriKeyFilePath=self.__clntPriKeyFilePath, 
    414429                        traceFile=traceFile) 
    415430 
    416431                sessCookie = smClient.connect(userName=self.__userName, 
    417                                               pPhrase=self.__passPhrase)  
     432                                              pPhrase=self.__passPhrase, 
     433                                              clntPriKeyPwd=self.__clntPriKeyPwd) 
    418434            except Exception, e: 
    419435                # Socket error returns tuple - reformat to just give msg 
     
    554570                smClient = SessionClient( 
    555571                            smWSDL=self.__smWSDL, 
    556                             smEncrPubKeyFilePath=self.__smEncrPubKeyFilePath, 
     572                            smPubKeyFilePath=self.__smPubKeyFilePath, 
     573                                    clntPubKeyFilePath=self.__clntPubKeyFilePath, 
     574                                    clntPriKeyFilePath=self.__clntPriKeyFilePath, 
    557575                            traceFile=traceFile) 
    558576 
    559                 resp = smClient.reqAuthorisation(cookieObj["NDG-ID1"].value, 
    560                                     cookieObj["NDG-ID2"].value, 
     577                resp = smClient.reqAuthorisation(sessCookie=cookieObj, 
    561578                                    aaWSDL=self.__aaWSDL, 
     579                                                    aaPubKey=self.__aaPubKey, 
    562580                                    reqRole=reqRole, 
    563                                     rtnExtAttCertList=bRtnExtAttCertList) 
     581                                    rtnExtAttCertList=bRtnExtAttCertList, 
     582                                    clntPriKeyPwd=self.__clntPriKeyPwd) 
    564583            except Exception, e: 
    565584                # Socket error returns tuple - reformat to just give msg 
     
    824843#_____________________________________________________________________________ 
    825844if __name__ == "__main__": 
    826      
    827     smWSDL = "http://glue.badc.rl.ac.uk/sessionMgr.wsdl" 
    828     aaWSDL = "http://glue.badc.rl.ac.uk/attAuthority.wsdl" 
    829     smPubKey = "/usr/local/NDG/conf/certs/badc-sm-cert.pem" 
    830      
     845 
     846    smWSDL = "http://.../sessionMgr.wsdl" 
     847    aaWSDL = "http://.../attAuthority.wsdl" 
     848    try: 
     849        aaPubKey=open("...cert.pem").read() 
     850 
     851    except IOError, (errNo, errMsg): 
     852        raise Exception("Making temporary file for Attribute " + \ 
     853                                  "Authority public key: %s" % errMsg) 
     854    except Exception, e: 
     855        raise Exception("Making temporary file for Attribute " + \ 
     856                                  "Authority public key: %s" % str(e)) 
     857 
     858 
     859    smPubKeyFilePath = "...cert.pem" 
     860    clntPubKeyFilePath = "...-cert.pem" 
     861    clntPriKeyFilePath = "...-key.pem" 
     862 
     863 
    831864 
    832865    # Instantiate and call CGI 
    833866    security = SecurityCGI(smWSDL, 
    834867                           aaWSDL, 
    835 #                           smEncrPubKeyFilePath=smPubKey, 
    836                            bDebug=False) 
     868                           smPubKeyFilePath=smPubKeyFilePath, 
     869                                   clntPubKeyFilePath=clntPubKeyFilePath, 
     870                                   clntPriKeyFilePath=clntPriKeyFilePath, 
     871                                   aaPubKey=aaPubKey, 
     872                                   bDebug=False) 
    837873    security.cgi() 
Note: See TracChangeset for help on using the changeset viewer.