Changeset 4742


Ignore:
Timestamp:
05/01/09 15:22:41 (11 years ago)
Author:
pjkersha
Message:

Preparing new release

Location:
TI12-security/trunk/python
Files:
3 deleted
6 edited

Legend:

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

    r4713 r4742  
    1414from ConfigParser import SafeConfigParser, InterpolationMissingOptionError, \ 
    1515    NoOptionError 
    16 from ndg.security.common.wssecurity import WSSecurityConfig 
     16 
    1717# For parsing of properties file 
    1818try: # python 2.5 
     
    448448            # store properties in an inner dictionary 
    449449            elif len(elem) > 0: 
    450                 keys = validKeys 
    451                 if key == 'WS-Security': 
    452                     keys = WSSecurityConfig.propertyDefaults 
    453                 val = readXMLPropertyFile(propFilePath, keys, rootElem=elem) 
     450                val = readXMLPropertyFile(propFilePath,validKeys,rootElem=elem) 
    454451 
    455452            # check if key already exists; if so, append to list 
     
    481478 
    482479 
    483 def validateProperties(properties, validKeys, wsseSection='WS-Security'): 
     480def validateProperties(properties, validKeys): 
    484481    ''' 
    485482    Check the contents of the properties dict to ensure it doesn't contain 
     
    497494        # NB, this is a standard property used across most services - so check 
    498495        # using the properties listed here 
    499         if key == wsseSection: 
    500             validateProperties(properties[key],  
    501                                WSSecurityConfig.propertyDefaults) 
    502              
    503         elif validKeys[key] and isinstance(validKeys[key], dict): 
     496        if validKeys[key] and isinstance(validKeys[key], dict): 
    504497            validateProperties(properties.get(key, {}), validKeys[key]) 
    505498                 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wssecurity/BaseSignatureHandler.py

    r4672 r4742  
    276276        self.refC14nKw = {'inclusive_namespaces': self.cfg['refC14nInclNS']} 
    277277 
    278         self.signedInfoC14nKw = \ 
    279             {'inclusive_namespaces': self.cfg['signedInfoC14nInclNS']} 
     278        self.signedInfoC14nKw = {'inclusive_namespaces':  
     279                                self.cfg['signedInfoC14nInclNS']} 
    280280 
    281281        self.verifyingCert = self.cfg['verifyingCert'] 
     
    353353        """Check keywords for canonicalization in signing process - generic 
    354354        method for setting keywords for reference element and SignedInfo 
    355         element c14n 
     355        element C14N 
    356356         
    357357        @type kw: dict 
     
    362362        if kw is not None and not isinstance(kw, dict): 
    363363            # Otherwise keywords must be a dictionary 
    364             raise AttributeError, \ 
    365                 "Expecting dictionary type for reference c14n keywords" 
     364            raise AttributeError("Expecting dictionary type for reference " 
     365                                 "C14N keywords") 
    366366                 
    367367        elif kw.get('inclusive_namespaces') and \ 
     
    386386    refC14nKw = property(fset=_setRefC14nKw, 
    387387                         fget=_getRefC14nKw, 
    388                          doc="Keywords for c14n of reference elements") 
     388                         doc="Keywords for C14N of reference elements") 
    389389         
    390390                 
     
    403403    signedInfoC14nKw = property(fset=_setSignedInfoC14nKw, 
    404404                                fget=_getSignedInfoC14nKw, 
    405                                 doc="Keywords for c14n of SignedInfo element") 
    406  
    407  
    408     def __refC14nIsExcl(self): 
    409         return isinstance(self._refC14nKw, dict) and \ 
    410                isinstance(self._refC14nKw.get('inclusive_namespaces'), list) and \ 
    411                len(self._refC14nKw['inclusive_namespaces']) > 0 
     405                                doc="Keywords for C14N of SignedInfo element") 
     406 
     407 
     408    def _refC14nIsExcl(self): 
     409        ''' 
     410        @rtype: bool 
     411        @return: true if Exclusive C14N is set as algorithm to apply to 
     412        reference elements 
     413        ''' 
     414        # TODO: alter logic here if inclusive C14N is re-instated. 
     415        return True 
    412416                
    413     refC14nIsExcl = property(fget=__refC14nIsExcl, 
    414     doc="Return True/False c14n for reference elements set to exclusive type") 
     417    refC14nIsExcl = property(fget=_refC14nIsExcl, 
     418    doc="Return True/False C14N for reference elements set to exclusive type") 
    415419 
    416420      
    417     def __signedInfoC14nIsExcl(self): 
    418         return isinstance(self._signedInfoC14nKw, dict) and \ 
    419         isinstance(self._signedInfoC14nKw.get('inclusive_namespaces'), list) and \ 
    420         len(self._signedInfoC14nKw['inclusive_namespaces']) > 0 
    421          
    422     signedInfoC14nIsExcl = property(fget=__signedInfoC14nIsExcl, 
    423                                     doc="Return True/False c14n for " 
     421    def _signedInfoC14nIsExcl(self): 
     422        ''' 
     423        @rtype: bool 
     424        @return: true if Exclusive C14N is set as algorithm to apply to 
     425        the signed info elements of the XML Digital Signature 
     426        ''' 
     427        # TODO: alter logic here if inclusive C14N is re-instated. 
     428        return True 
     429         
     430    signedInfoC14nIsExcl = property(fget=_signedInfoC14nIsExcl, 
     431                                    doc="Return True/False C14N for " 
    424432                                    "SignedInfo element set to exclusive type") 
    425433     
    426434     
    427     def __setCert(self, cert): 
     435    def _setCert(self, cert): 
    428436        """filter and convert input cert to signing verifying cert set  
    429437        property methods.  For signingCert, set to None if it is not to be 
     
    481489        "Set property method for X.509 cert. used to verify a signature" 
    482490        log.debug("Setting verifying cert") 
    483         self._verifyingCert = self.__setCert(verifyingCert) 
     491        self._verifyingCert = self._setCert(verifyingCert) 
    484492        # Reset file path as it may no longer apply 
    485493        self._verifyingCertFilePath = None 
     
    505513     
    506514    def _getSigningCert(self): 
    507         '''Return X.509 cert object corresponding to cert used with 
    508         signature 
     515        '''Return X.509 certificate object corresponding to certificate used  
     516        with signature 
    509517         
    510518        @rtype: M2Crypto.X509.X509 
     
    516524    def _setSigningCert(self, signingCert): 
    517525        "Set property method for X.509 cert. to be included with signature" 
    518         self._signingCert = self.__setCert(signingCert) 
     526        self._signingCert = self._setCert(signingCert) 
    519527     
    520528        # Reset file path as it may no longer apply 
     
    523531    signingCert = property(fget=_getSigningCert, 
    524532                           fset=_setSigningCert, 
    525                            doc="X.509 Cert. to include signature") 
     533                           doc="X.509 Certificate to include signature") 
    526534 
    527535  
    528536    def _setSigningCertFilePath(self, signingCertFilePath): 
    529         "Set signature X.509 cert property method" 
     537        "Set signature X.509 certificate property method" 
    530538         
    531539        if isinstance(signingCertFilePath, basestring): 
     
    533541             
    534542        elif signingCertFilePath is not None: 
    535             raise AttributeError( 
    536                 "Signature X.509 cert. file path must be a valid string") 
     543            raise AttributeError("Signature X.509 certificate file path must " 
     544                                 "be a valid string") 
    537545         
    538546        self._signingCertFilePath = signingCertFilePath 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wssecurity/__init__.py

    r4680 r4742  
    1515log = logging.getLogger(__name__) 
    1616 
     17import os 
     18 
    1719from ConfigParser import SafeConfigParser 
    1820from os.path import expandvars as exVar 
    1921import copy 
    2022from ZSI.wstools.Namespaces import OASIS 
     23 
     24from ndg.security.common.utils.configfileparsers import \ 
     25    CaseSensitiveConfigParser 
    2126 
    2227class WSSecurityConfigError(Exception): 
     
    6873         
    6974 
    70     def read(self, *filePathList): 
     75    def read(self, filePath): 
    7176        '''Read ConfigParser object 
    7277         
    73         @type filePathList: tuple/list 
    74         @param filePathList: list of files to read config from''' 
    75         self._cfg = SafeConfigParser() 
    76          
    77         # Expand environment variables in file list 
    78         filePathList = exVar(':'.join(filePathList)).split(':') 
    79         readFilePaths = self._cfg.read(filePathList) 
    80          
    81         # Check files were read in OK 
    82         missingFilePaths = [file for file in filePathList \ 
    83                             if file not in readFilePaths] 
    84         if len(missingFilePaths) > 0: 
    85             raise IOError('Missing config file(s): "%s"' % \ 
    86                           '", "'.join(missingFilePaths)) 
     78        @type filePath: basestring 
     79        @param filePath: file to read config from''' 
     80         
     81        # Expand environment variables in file path 
     82        expandedFilePath = exVar(filePath) 
     83         
     84        # Add 'here' item to enable convenient path substitutions in the config 
     85        # file 
     86        defaultItems = dict(here=os.path.dirname(expandedFilePath)) 
     87        self._cfg = CaseSensitiveConfigParser(defaults=defaultItems) 
     88         
     89        readFilePaths = self._cfg.read(expandedFilePath) 
     90         
     91        # Check file was read in OK 
     92        if len(readFilePaths) == 0: 
     93            raise IOError('Missing config file: "%s"' % expandedFilePath) 
    8794 
    8895    def parse(self, **kw): 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wssecurity/dom.py

    r4680 r4742  
    315315        c14nAlgOpt = (DSIG.C14N, DSIG.C14N_EXCL) 
    316316        signedInfoC14nAlg = c14nAlgOpt[int(self.signedInfoC14nIsExcl)] 
    317  
    318         log.warning("Forcing use of Exclusive C14N for SignedInfo section - " 
    319                     "Inclusive C14N not working") 
    320          
    321         # TODO: remove this line if ZSI.Canonicalize ever starts working with 
    322         # inclusive NS 
    323         signedInfoC14nAlg = c14nAlgOpt[1] 
    324317         
    325318        c14nMethodElem.node.setAttribute('Algorithm', signedInfoC14nAlg) 
     
    361354            docNode = Reader().fromString(str(soapWriter)) 
    362355        except Exception, e: 
    363             raise SignatureError("Error parsing SOAP message for signing: %s"%\ 
     356            raise SignatureError("Error parsing SOAP message for signing: %s"% 
    364357                                 e) 
    365358 
     
    370363 
    371364        # Set based on 'signedInfoIsExcl' property 
    372         refC14nAlg = c14nAlgOpt[self.refC14nIsExcl] 
    373  
    374         log.warning("Forcing use of Exclusive C14N for references - Inclusive " 
    375                     "C14N not working") 
    376          
    377         # TODO: remove this line if ZSI.Canonicalize ever starts working with 
    378         # inclusive NS 
    379         refC14nAlg = c14nAlgOpt[1] 
     365        refC14nAlg = c14nAlgOpt[int(self.refC14nIsExcl)] 
    380366         
    381367        # 1) Reference Generation 
     
    418404            if refC14nPfxSet: 
    419405                # Exclusive C14N requires inclusive namespace elements 
    420                 inclNamespacesElem = transformElem.createAppendElement(\ 
     406                inclNamespacesElem = transformElem.createAppendElement( 
    421407                                                                                   refC14nAlg, 
    422408                                                       'InclusiveNamespaces') 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/sso/sso/lib/openid_util.py

    r4692 r4742  
    120120        return _render('ndg.security.wayf', h=h, g=g, c=c) 
    121121     
    122     log.debug("Initialising connection to Attribute Authority [%s]" % \ 
    123               cfg.aaURI) 
     122    log.debug("Initialising connection to Attribute Authority [%s]"%cfg.aaURI) 
    124123     
    125124    try: 
    126         aaClnt = WSGIAttributeAuthorityClient( 
    127                                         environ=pylons.request.environ, 
     125        aaClnt = WSGIAttributeAuthorityClient(environ=pylons.request.environ, 
    128126                                        uri=cfg.aaURI, 
    129                                         environKey=self.cfg.aaEnvironKey, 
     127                                        environKey=cfg.aaEnvironKey, 
    130128                                        tracefile=cfg.tracefile, 
    131129                                        httpProxyHost=cfg.httpProxyHost, 
     
    133131                                        **cfg.wss) 
    134132    except Exception, e: 
    135         c.xml='Error establishing security context.  Please report ' + \ 
    136               'the error to your site administrator' 
     133        c.xml = ('Error establishing security context.  Please report ' 
     134                 'the error to your site administrator') 
    137135        log.error("Initialising AttributeAuthorityClient for " + \ 
    138136                  "getAllHostsInfo call: %s" % e) 
     
    145143        hosts = aaClnt.getAllHostsInfo()  
    146144    except Exception, e: 
    147         c.xml='Error getting a list of trusted sites for login.  ' + \ 
    148             'Please report the error to your site administrator.' 
     145        c.xml = ('Error getting a list of trusted sites for login.  ' 
     146                 'Please report the error to your site administrator.') 
    149147        log.error("AttributeAuthorityClient getAllHostsInfo call: %s" % e)   
    150148        return _render('ndg.security.error', h=h, g=config['pylons.g'], c=c) 
    151149         
     150    # Pick out siteName for as it should be set to a more user friendly  
     151    # description of the site.  Site name may not be set so if unavailable, 
     152    # default to host name identifier. 
    152153    g.ndg.security.server.sso.state.trustedIdPs = \ 
    153                         dict([(k, v['loginURI']) for k, v in hosts.items()]) 
     154                        dict([(v['siteName'] or k, v['loginURI'])  
     155                                 for k, v in hosts.items()]) 
    154156 
    155157 
  • TI12-security/trunk/python/ndg.security.test/setup.py

    r4716 r4742  
    2020 
    2121_pkgData = { 
     22    'ndg.security.test.attCert': [ 
     23        '*.xml', 
     24        '*.cfg', 
     25        'README' 
     26    ], 
    2227    'ndg.security.test.attributeauthority': [ 
    23         '*.xml',  
    2428        '*.cfg',  
    25         'user.crt', 
    26         'user.key' 
    2729    ], 
    28     'ndg.security.test.attributeauthority.siteA': [ 
     30    'ndg.security.test.attributeauthorityclient': [ 
     31        '*.cfg',  
     32        'README' 
     33    ], 
     34    'ndg.security.test.authz.pdp': [ 
     35        '*.cfg',  
     36        'README' 
     37    ], 
     38    'ndg.security.test.authz.pdp.browse': [ 
     39        '*.cfg',  
     40        'README' 
     41    ], 
     42    'ndg.security.test.combinedservices': [ 
     43        '*.cfg', 
     44        '*.ini', 
     45        'README' 
     46    ], 
     47    'ndg.security.test.combinedservices.openidprovider': [ 
     48        'README', 
     49    ], 
     50    'ndg.security.test.combinedservices.openidprovider.layout': [ 
     51        '*.jpg', 
     52        '*.gif', 
     53        '*.png', 
     54        '*.css' 
     55    ], 
     56    'ndg.security.test.combinedservices.openidprovider.layout.icons': [ 
     57        '*.jpg', 
     58        '*.gif', 
     59        '*.png' 
     60    ], 
     61    'ndg.security.test.combinedservices.singleSignOnService': [ 
     62        '*.cfg', 
     63    ], 
     64    'ndg.security.test.config': [ 
     65        'README', 
     66    ], 
     67    'ndg.security.test.config.attributeauthority.sitea': [ 
    2968        'siteA-aa.crt', 
    3069        'siteA-aa.key', 
     
    3271        '*.xml' 
    3372    ], 
    34     'ndg.security.test.attributeauthority.siteB': [ 
     73    'ndg.security.test.config.attributeauthority.siteb': [ 
    3574        'siteB-aa.crt', 
    3675        'siteB-aa.key', 
     
    3877        '*.xml' 
    3978    ], 
    40     'ndg.security.test.attributeuthority.ca': ['*.crt'], 
    41     'ndg.security.test.attributeauthorityclient': [ 
    42                                         '*.xml',  
    43                                        '*.cfg',  
    44                                        'test.crt', 
    45                                        'test.key', 
    46                                        'README'], 
    47     'ndg.security.test.attributeuthorityclient.ca': ['*.crt'], 
    48     'ndg.security.test.attributeauthorityclient.siteA': [ 
    49         'siteA-aa.crt', 
    50         'siteA-aa.key', 
     79    'ndg.security.test.config.ca': [ 
     80        '*.crt', 
     81    ], 
     82    'ndg.security.test.config.pki': [ 
     83        '*.crt', 
     84        '*.key' 
     85    ], 
     86    'ndg.security.test.config.sessionmanager': [ 
     87        '*.ini', 
     88        '*.crt', 
     89        '*.key', 
     90    ], 
     91    'ndg.security.test.configfileparsers': [ 
     92        '*.cfg' 
     93    ], 
     94    'ndg.security.test.credentialwallet': [ 
    5195        '*.cfg', 
    52         '*.xml' 
     96        'README' 
    5397    ], 
    54     'ndg.security.test.attributeauthorityclient.siteB': [ 
    55         'siteB-aa.crt', 
    56         'siteB-aa.key', 
     98    'ndg.security.test.sessionmanager': [ 
     99        '*.cfg',  
     100        'README' 
     101    ], 
     102    'ndg.security.test.sessionmanagerclient': [ 
     103        '*.cfg',  
     104        'sm-clnt.crt', 
     105        'sm-clnt.key', 
     106        'test.key', 
     107        'README' 
     108    ], 
     109    'ndg.security.test.sslclientauthnmiddleware': [ 
     110        'localhost.crt', 
     111        'localhost.key', 
     112        'localhost.pem', 
     113        '*.wsgi', 
     114        'README', 
    57115        '*.cfg', 
    58         '*.xml' 
     116        '*.ini' 
    59117    ], 
    60     'ndg.security.test.attCert': ['*.xml', 
    61                                   '*.cfg', 
    62                                   'test.crt', 
    63                                   'test.key', 
    64                                   'ndg-test-ca.crt', 
    65                                   'README'], 
    66     'ndg.security.test.ca': ['*.xml', '*.cfg', 'README'], 
    67     'ndg.security.test.gatekeeper': ['README'], 
    68     'ndg.security.test.Log': ['README'], 
    69     'ndg.security.test.myProxy': ['*.xml',  
    70                                   '*.cfg', 
    71                                   'user.crt', 
    72                                   'user.key', 
    73                                   'ndg-test-ca.crt', 
    74                                   'openssl.conf',  
    75                                   'Makefile', 
    76                                   'README'], 
    77     'ndg.security.test.sessionMgr': ['*.xml',  
    78                                      '*.cfg',  
    79                                      'openssl.conf', 
    80                                      'sm.crt', 
    81                                      'sm.key', 
    82                                      'user.crt', 
    83                                      'user.key', 
    84                                      'README'], 
    85     'ndg.security.test.sessionMgr.ca': ['*.crt'], 
    86     'ndg.security.test.sessionMgrClient': ['*.xml',  
    87                                            '*.cfg',  
    88                                            'openssl.conf', 
    89                                            'sm-clnt.crt', 
    90                                            'sm-clnt.key', 
    91                                            'sm.crt', 
    92                                            'sm.key', 
    93                                            'test.crt', 
    94                                            'test.key', 
    95                                            'README'], 
    96     'ndg.security.test.sessionMgrClient.ca': ['*.crt'], 
    97     'ndg.security.test.wsSecurity': ['*.wsdl', 'README'], 
    98     'ndg.security.test.wsSecurity.client': ['*.cfg', 
    99                                             'clnt.crt', 
    100                                             'clnt.key', 
    101                                             'ndg-test-ca.crt', 
    102                                             'Makefile'], 
    103     'ndg.security.test.wsSecurity.server': ['*.cfg', 
    104                                             'server.crt', 
    105                                             'server.key', 
    106                                             'ndg-test-ca.crt', 
    107                                             'Makefile'], 
    108     'ndg.security.test.X509': ['*.cfg', 
    109                                'user.crt', 
    110                                'proxy.crt', 
    111                                'ndg-test-ca.crt', 
    112                                'README'], 
    113     'ndg.security.test.XMLSecDoc': ['*.cfg', 
    114                                     'test.crt', 
    115                                     'test.key', 
    116                                     'ndg-test-ca.crt', 
    117                                     'README'] 
     118    'ndg.security.test.wssecurity': [ 
     119        '*.wsdl',  
     120        'README', 
     121        '*.txt' 
     122    ], 
     123    'ndg.security.test.wssecurity.client': [ 
     124        '*.cfg', 
     125        'Makefile' 
     126    ], 
     127    'ndg.security.test.wssecurity.server': [ 
     128        '*.cfg', 
     129        'Makefile' 
     130    ], 
     131    'ndg.security.test.x509': [ 
     132       '*.cfg', 
     133       'proxy.crt', 
     134       'README' 
     135    ], 
     136    'ndg.security.test.xmlsec.dom': [ 
     137        '*.cfg', 
     138        'README' 
     139    ], 
     140    'ndg.security.test.xmlsec.etree': [ 
     141        '*.cfg', 
     142        'README' 
     143    ], 
     144    'ndg.security.test.XMLSecDoc': [ 
     145        '*.cfg', 
     146        'test.crt', 
     147        'test.key', 
     148        'ndg-test-ca.crt', 
     149        'README' 
     150    ] 
    118151    }     
    119152 
Note: See TracChangeset for help on using the changeset viewer.