Changeset 6804 for TI12-security


Ignore:
Timestamp:
14/04/10 09:45:50 (10 years ago)
Author:
pjkersha
Message:

Working class factories for each function module. Function class evaluate methods need to be refactored to accept *AttributeValue? types

Location:
TI12-security/trunk/NDG_XACML/ndg/xacml/core
Files:
1 added
10 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/apply.py

    r6797 r6804  
    8686                                 'to retrieve the required function') 
    8787             
    88         # Get function for this <Apply> statement          
    89         func = functionMap.get(self.functionId) 
    90         if func is NotImplemented: 
    91             raise UnsupportedStdFunctionError('No match function ' 
     88        # Get function class for this <Apply> statement          
     89        functionClass = functionMap.get(self.functionId) 
     90        if functionClass is NotImplemented: 
     91            raise UnsupportedStdFunctionError('No match function class ' 
    9292                                              'implemented for MatchId="%s"' %  
    9393                                              self.functionId) 
    94         elif func is None: 
     94        elif functionClass is None: 
    9595            raise UnsupportedFunctionError('<Apply> function namespace %r is ' 
    9696                                           'not recognised' %  
    9797                                           self.functionId)  
    9898             
    99         self.__function = func 
     99        self.__function = functionClass() 
    100100     
    101101    @property 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/attributevalue.py

    r6802 r6804  
    3636        'Rfc822Name': basestring, 
    3737        'HexBinary': int, 
    38         'Base64Binary': NotImplemented 
     38        'Base64Binary': NotImplemented, 
     39        'IpAddress': basestring, 
     40        'DnsName': basestring 
    3941    } 
    4042    TYPE = None 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/pdp.py

    r6797 r6804  
    3636    def __init__(self, *arg, **kw): 
    3737        super(UnsupportedElementError, self).__init__(*arg, **kw) 
    38         self.response.results[0].status.statusCode.value = \ 
    39                                                     StatusCode.SYNTAX_ERROR 
     38        self.response.results[0 
     39                            ].status.statusCode.value = StatusCode.SYNTAX_ERROR 
    4040 
    4141 
     
    287287             
    288288            # Get the match function from the Match ID 
    289             matchFunc = self.__functionMap.get(childMatch.matchId) 
    290             if matchFunc is NotImplemented: 
    291                 raise UnsupportedStdFunctionError('No match function ' 
     289            matchFunctionClass = self.__functionMap.get(childMatch.matchId) 
     290            if matchFunctionClass is NotImplemented: 
     291                raise UnsupportedStdFunctionError('No match function class ' 
    292292                                                  'implemented for MatchId="%s"' 
    293293                                                  % childMatch.matchId) 
    294             elif matchFunc is None: 
     294            elif matchFunctionClass is None: 
    295295                raise UnsupportedFunctionError('Match function namespace %r is ' 
    296296                                               'not recognised' %  
     
    303303            if childMatch.attributeDesignator is not None: 
    304304                _attributeMatch = self.attributeDesignatorMatchFuncFactory( 
    305                                                 matchFunc, 
     305                                                matchFunctionClass(), 
    306306                                                childMatch.attributeValue.value, 
    307307                                                childMatch.attributeDesignator) 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/__init__.py

    r6803 r6804  
    1717 
    1818from ndg.xacml.core.attributevalue import AttributeValue 
    19 from ndg.xacml.utils import VettedDict 
     19from ndg.xacml.utils import VettedDict, _isIterable 
    2020from ndg.xacml.utils.factory import callModuleObject 
    2121 
     
    4646    """XACML standard match function names""" 
    4747    FUNCTION_NAMES = ( 
    48         'urn:oasis:names:tc:xacml:1.0:function:string-equal', 
    49         'urn:oasis:names:tc:xacml:1.0:function:boolean-equal', 
    50         'urn:oasis:names:tc:xacml:1.0:function:integer-equal', 
    51         'urn:oasis:names:tc:xacml:1.0:function:double-equal', 
    52         'urn:oasis:names:tc:xacml:1.0:function:date-equal', 
    53         'urn:oasis:names:tc:xacml:1.0:function:time-equal', 
    54         'urn:oasis:names:tc:xacml:1.0:function:dateTime-equal', 
    55         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal', 
    56         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal', 
    57         'urn:oasis:names:tc:xacml:1.0:function:anyURI-equal', 
    58         'urn:oasis:names:tc:xacml:1.0:function:x500Name-equal', 
    59         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal', 
    60         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal', 
    61         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal', 
    62         'urn:oasis:names:tc:xacml:1.0:function:integer-add', 
    63         'urn:oasis:names:tc:xacml:1.0:function:double-add', 
    64         'urn:oasis:names:tc:xacml:1.0:function:integer-subtract', 
    65         'urn:oasis:names:tc:xacml:1.0:function:double-subtract', 
    66         'urn:oasis:names:tc:xacml:1.0:function:integer-multiply', 
    67         'urn:oasis:names:tc:xacml:1.0:function:double-multiply', 
    68         'urn:oasis:names:tc:xacml:1.0:function:integer-divide', 
    69         'urn:oasis:names:tc:xacml:1.0:function:double-divide', 
    70         'urn:oasis:names:tc:xacml:1.0:function:integer-mod', 
    71         'urn:oasis:names:tc:xacml:1.0:function:integer-abs', 
    72         'urn:oasis:names:tc:xacml:1.0:function:double-abs', 
    73         'urn:oasis:names:tc:xacml:1.0:function:round', 
    74         'urn:oasis:names:tc:xacml:1.0:function:floor', 
    75         'urn:oasis:names:tc:xacml:1.0:function:string-normalize-space', 
    76         'urn:oasis:names:tc:xacml:1.0:function:string-normalize-to-lower-case', 
    77         'urn:oasis:names:tc:xacml:1.0:function:double-to-integer', 
    78         'urn:oasis:names:tc:xacml:1.0:function:integer-to-double', 
    79         'urn:oasis:names:tc:xacml:1.0:function:or', 
    80         'urn:oasis:names:tc:xacml:1.0:function:and', 
    81         'urn:oasis:names:tc:xacml:1.0:function:n-of', 
    82         'urn:oasis:names:tc:xacml:1.0:function:not', 
    83         'urn:oasis:names:tc:xacml:1.0:function:integer-greater-than', 
    84         'urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal', 
    85         'urn:oasis:names:tc:xacml:1.0:function:integer-less-than', 
    86         'urn:oasis:names:tc:xacml:1.0:function:integer-less-than-or-equal', 
    87         'urn:oasis:names:tc:xacml:1.0:function:double-greater-than', 
    88         'urn:oasis:names:tc:xacml:1.0:function:double-greater-than-or-equal', 
    89         'urn:oasis:names:tc:xacml:1.0:function:double-less-than', 
    90         'urn:oasis:names:tc:xacml:1.0:function:double-less-than-or-equal', 
    91         'urn:oasis:names:tc:xacml:1.0:function:dateTime-add-dayTimeDuration', 
    92         'urn:oasis:names:tc:xacml:1.0:function:dateTime-add-yearMonthDuration', 
    93         'urn:oasis:names:tc:xacml:1.0:function:dateTime-subtract-dayTimeDuration', 
    94         'urn:oasis:names:tc:xacml:1.0:function:dateTime-subtract-yearMonthDuration',  
    95         'urn:oasis:names:tc:xacml:1.0:function:date-add-yearMonthDuration', 
    96         'urn:oasis:names:tc:xacml:1.0:function:date-subtract-yearMonthDuration', 
    97         'urn:oasis:names:tc:xacml:1.0:function:string-greater-than', 
    98         'urn:oasis:names:tc:xacml:1.0:function:string-greater-than-or-equal', 
    99         'urn:oasis:names:tc:xacml:1.0:function:string-less-than', 
    100         'urn:oasis:names:tc:xacml:1.0:function:string-less-than-or-equal', 
    101         'urn:oasis:names:tc:xacml:1.0:function:time-greater-than', 
    102         'urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal', 
    103         'urn:oasis:names:tc:xacml:1.0:function:time-less-than', 
    104         'urn:oasis:names:tc:xacml:1.0:function:time-less-than-or-equal', 
    105         'urn:oasis:names:tc:xacml:2.0:function:time-in-range', 
    106         'urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than', 
    107         'urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal', 
    108         'urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than', 
    109         'urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than-or-equal', 
    110         'urn:oasis:names:tc:xacml:1.0:function:date-greater-than', 
    111         'urn:oasis:names:tc:xacml:1.0:function:date-greater-than-or-equal', 
    112         'urn:oasis:names:tc:xacml:1.0:function:date-less-than', 
    113         'urn:oasis:names:tc:xacml:1.0:function:date-less-than-or-equal', 
    114         'urn:oasis:names:tc:xacml:1.0:function:string-one-and-only', 
    115         'urn:oasis:names:tc:xacml:1.0:function:string-bag-size', 
    116         'urn:oasis:names:tc:xacml:1.0:function:string-is-in', 
    117         'urn:oasis:names:tc:xacml:1.0:function:string-bag', 
    118         'urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only', 
    119         'urn:oasis:names:tc:xacml:1.0:function:boolean-bag-size', 
    120         'urn:oasis:names:tc:xacml:1.0:function:boolean-is-in', 
    121         'urn:oasis:names:tc:xacml:1.0:function:boolean-bag', 
    122         'urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only', 
    123         'urn:oasis:names:tc:xacml:1.0:function:integer-bag-size', 
    124         'urn:oasis:names:tc:xacml:1.0:function:integer-is-in', 
    125         'urn:oasis:names:tc:xacml:1.0:function:integer-bag', 
    126         'urn:oasis:names:tc:xacml:1.0:function:double-one-and-only', 
    127         'urn:oasis:names:tc:xacml:1.0:function:double-bag-size', 
    128         'urn:oasis:names:tc:xacml:1.0:function:double-is-in', 
    129         'urn:oasis:names:tc:xacml:1.0:function:double-bag', 
    130         'urn:oasis:names:tc:xacml:1.0:function:time-one-and-only', 
    131         'urn:oasis:names:tc:xacml:1.0:function:time-bag-size', 
    132         'urn:oasis:names:tc:xacml:1.0:function:time-is-in', 
    133         'urn:oasis:names:tc:xacml:1.0:function:time-bag', 
    134         'urn:oasis:names:tc:xacml:1.0:function:date-one-and-only', 
    135         'urn:oasis:names:tc:xacml:1.0:function:date-bag-size', 
    136         'urn:oasis:names:tc:xacml:1.0:function:date-is-in', 
    137         'urn:oasis:names:tc:xacml:1.0:function:date-bag', 
    138         'urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only', 
    139         'urn:oasis:names:tc:xacml:1.0:function:dateTime-bag-size', 
    140         'urn:oasis:names:tc:xacml:1.0:function:dateTime-is-in', 
    141         'urn:oasis:names:tc:xacml:1.0:function:dateTime-bag', 
    142         'urn:oasis:names:tc:xacml:1.0:function:anyURI-one-and-only', 
    143         'urn:oasis:names:tc:xacml:1.0:function:anyURI-bag-size', 
    144         'urn:oasis:names:tc:xacml:1.0:function:anyURI-is-in', 
    145         'urn:oasis:names:tc:xacml:1.0:function:anyURI-bag', 
    146         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-one-and-only', 
    147         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag-size', 
    148         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-is-in', 
    149         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag', 
    150         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-one-and-only', 
    151         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag-size', 
    152         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-is-in', 
    153         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag', 
    154         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-one-and-only', 
    155         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-bag-size', 
    156         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-is-in', 
    157         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-bag', 
    158         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-one-and-only', 
    159         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-bag-size', 
    160         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-is-in', 
    161         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-bag', 
    162         'urn:oasis:names:tc:xacml:1.0:function:x500Name-one-and-only', 
    163         'urn:oasis:names:tc:xacml:1.0:function:x500Name-bag-size', 
    164         'urn:oasis:names:tc:xacml:1.0:function:x500Name-is-in', 
    165         'urn:oasis:names:tc:xacml:1.0:function:x500Name-bag', 
    166         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-one-and-only', 
    167         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag-size', 
    168         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-is-in', 
    169         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag', 
    170         'urn:oasis:names:tc:xacml:2.0:function:string-concatenate', 
    171         'urn:oasis:names:tc:xacml:2.0:function:uri-string-concatenate', 
    172         'urn:oasis:names:tc:xacml:1.0:function:any-of', 
    173         'urn:oasis:names:tc:xacml:1.0:function:all-of', 
    174         'urn:oasis:names:tc:xacml:1.0:function:any-of-any', 
    175         'urn:oasis:names:tc:xacml:1.0:function:all-of-any', 
    176         'urn:oasis:names:tc:xacml:1.0:function:any-of-all', 
    177         'urn:oasis:names:tc:xacml:1.0:function:all-of-all', 
    178         'urn:oasis:names:tc:xacml:1.0:function:map', 
    179         'urn:oasis:names:tc:xacml:1.0:function:x500Name-match', 
    180         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match', 
    181         'urn:oasis:names:tc:xacml:1.0:function:string-regexp-match', 
    182         'urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match', 
    183         'urn:oasis:names:tc:xacml:2.0:function:ipAddress-regexp-match', 
    184         'urn:oasis:names:tc:xacml:2.0:function:dnsName-regexp-match', 
    185         'urn:oasis:names:tc:xacml:2.0:function:rfc822Name-regexp-match', 
    186         'urn:oasis:names:tc:xacml:2.0:function:x500Name-regexp-match', 
    187         'urn:oasis:names:tc:xacml:1.0:function:xpath-node-count', 
    188         'urn:oasis:names:tc:xacml:1.0:function:xpath-node-equal', 
    189         'urn:oasis:names:tc:xacml:1.0:function:xpath-node-match', 
    190         'urn:oasis:names:tc:xacml:1.0:function:string-intersection', 
    191         'urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of', 
    192         'urn:oasis:names:tc:xacml:1.0:function:string-union', 
    193         'urn:oasis:names:tc:xacml:1.0:function:string-subset', 
    194         'urn:oasis:names:tc:xacml:1.0:function:string-set-equals', 
    195         'urn:oasis:names:tc:xacml:1.0:function:boolean-intersection', 
    196         'urn:oasis:names:tc:xacml:1.0:function:boolean-at-least-one-member-of', 
    197         'urn:oasis:names:tc:xacml:1.0:function:boolean-union', 
    198         'urn:oasis:names:tc:xacml:1.0:function:boolean-subset', 
    199         'urn:oasis:names:tc:xacml:1.0:function:boolean-set-equals', 
    200         'urn:oasis:names:tc:xacml:1.0:function:integer-intersection', 
    201         'urn:oasis:names:tc:xacml:1.0:function:integer-at-least-one-member-of', 
    202         'urn:oasis:names:tc:xacml:1.0:function:integer-union', 
    203         'urn:oasis:names:tc:xacml:1.0:function:integer-subset', 
    204         'urn:oasis:names:tc:xacml:1.0:function:integer-set-equals', 
    205         'urn:oasis:names:tc:xacml:1.0:function:double-intersection', 
    206         'urn:oasis:names:tc:xacml:1.0:function:double-at-least-one-member-of', 
    207         'urn:oasis:names:tc:xacml:1.0:function:double-union', 
    208         'urn:oasis:names:tc:xacml:1.0:function:double-subset', 
    209         'urn:oasis:names:tc:xacml:1.0:function:double-set-equals', 
    210         'urn:oasis:names:tc:xacml:1.0:function:time-intersection', 
    211         'urn:oasis:names:tc:xacml:1.0:function:time-at-least-one-member-of', 
    212         'urn:oasis:names:tc:xacml:1.0:function:time-union', 
    213         'urn:oasis:names:tc:xacml:1.0:function:time-subset', 
    214         'urn:oasis:names:tc:xacml:1.0:function:time-set-equals', 
    215         'urn:oasis:names:tc:xacml:1.0:function:date-intersection', 
    216         'urn:oasis:names:tc:xacml:1.0:function:date-at-least-one-member-of', 
    217         'urn:oasis:names:tc:xacml:1.0:function:date-union', 
    218         'urn:oasis:names:tc:xacml:1.0:function:date-subset', 
    219         'urn:oasis:names:tc:xacml:1.0:function:date-set-equals', 
    220         'urn:oasis:names:tc:xacml:1.0:function:dateTime-intersection', 
    221         'urn:oasis:names:tc:xacml:1.0:function:dateTime-at-least-one-member-of', 
    222         'urn:oasis:names:tc:xacml:1.0:function:dateTime-union', 
    223         'urn:oasis:names:tc:xacml:1.0:function:dateTime-subset', 
    224         'urn:oasis:names:tc:xacml:1.0:function:dateTime-set-equals', 
    225         'urn:oasis:names:tc:xacml:1.0:function:anyURI-intersection', 
    226         'urn:oasis:names:tc:xacml:1.0:function:anyURI-at-least-one-member-of', 
    227         'urn:oasis:names:tc:xacml:1.0:function:anyURI-union', 
    228         'urn:oasis:names:tc:xacml:1.0:function:anyURI-subset', 
    229         'urn:oasis:names:tc:xacml:1.0:function:anyURI-set-equals', 
    230         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-intersection', 
    231         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-at-least-one-member-of', 
    232         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-union', 
    233         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-subset', 
    234         'urn:oasis:names:tc:xacml:1.0:function:hexBinary-set-equals', 
    235         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-intersection', 
    236         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-at-least-one-member-of', 
    237         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-union', 
    238         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-subset', 
    239         'urn:oasis:names:tc:xacml:1.0:function:base64Binary-set-equals', 
    240         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-intersection', 
    241         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-at-least-one-member-of', 
    242         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-union', 
    243         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-subset', 
    244         'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-set-equals', 
    245         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-intersection', 
    246         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-at-least-one-member-of', 
    247         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-union', 
    248         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-subset', 
    249         'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-set-equals', 
    250         'urn:oasis:names:tc:xacml:1.0:function:x500Name-intersection', 
    251         'urn:oasis:names:tc:xacml:1.0:function:x500Name-at-least-one-member-of', 
    252         'urn:oasis:names:tc:xacml:1.0:function:x500Name-union', 
    253         'urn:oasis:names:tc:xacml:1.0:function:x500Name-subset', 
    254         'urn:oasis:names:tc:xacml:1.0:function:x500Name-set-equals', 
    255         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-intersection', 
    256         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-at-least-one-member-of', 
    257         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-union', 
    258         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-subset', 
    259         'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-set-equals', 
     48'urn:oasis:names:tc:xacml:1.0:function:string-equal', 
     49'urn:oasis:names:tc:xacml:1.0:function:boolean-equal', 
     50'urn:oasis:names:tc:xacml:1.0:function:integer-equal', 
     51'urn:oasis:names:tc:xacml:1.0:function:double-equal', 
     52'urn:oasis:names:tc:xacml:1.0:function:date-equal', 
     53'urn:oasis:names:tc:xacml:1.0:function:time-equal', 
     54'urn:oasis:names:tc:xacml:1.0:function:dateTime-equal', 
     55'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal', 
     56'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal', 
     57'urn:oasis:names:tc:xacml:1.0:function:anyURI-equal', 
     58'urn:oasis:names:tc:xacml:1.0:function:x500Name-equal', 
     59'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal', 
     60'urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal', 
     61'urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal', 
     62'urn:oasis:names:tc:xacml:1.0:function:integer-add', 
     63'urn:oasis:names:tc:xacml:1.0:function:double-add', 
     64'urn:oasis:names:tc:xacml:1.0:function:integer-subtract', 
     65'urn:oasis:names:tc:xacml:1.0:function:double-subtract', 
     66'urn:oasis:names:tc:xacml:1.0:function:integer-multiply', 
     67'urn:oasis:names:tc:xacml:1.0:function:double-multiply', 
     68'urn:oasis:names:tc:xacml:1.0:function:integer-divide', 
     69'urn:oasis:names:tc:xacml:1.0:function:double-divide', 
     70'urn:oasis:names:tc:xacml:1.0:function:integer-mod', 
     71'urn:oasis:names:tc:xacml:1.0:function:integer-abs', 
     72'urn:oasis:names:tc:xacml:1.0:function:double-abs', 
     73'urn:oasis:names:tc:xacml:1.0:function:round', 
     74'urn:oasis:names:tc:xacml:1.0:function:floor', 
     75'urn:oasis:names:tc:xacml:1.0:function:string-normalize-space', 
     76'urn:oasis:names:tc:xacml:1.0:function:string-normalize-to-lower-case', 
     77'urn:oasis:names:tc:xacml:1.0:function:double-to-integer', 
     78'urn:oasis:names:tc:xacml:1.0:function:integer-to-double', 
     79'urn:oasis:names:tc:xacml:1.0:function:or', 
     80'urn:oasis:names:tc:xacml:1.0:function:and', 
     81'urn:oasis:names:tc:xacml:1.0:function:n-of', 
     82'urn:oasis:names:tc:xacml:1.0:function:not', 
     83'urn:oasis:names:tc:xacml:1.0:function:integer-greater-than', 
     84'urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal', 
     85'urn:oasis:names:tc:xacml:1.0:function:integer-less-than', 
     86'urn:oasis:names:tc:xacml:1.0:function:integer-less-than-or-equal', 
     87'urn:oasis:names:tc:xacml:1.0:function:double-greater-than', 
     88'urn:oasis:names:tc:xacml:1.0:function:double-greater-than-or-equal', 
     89'urn:oasis:names:tc:xacml:1.0:function:double-less-than', 
     90'urn:oasis:names:tc:xacml:1.0:function:double-less-than-or-equal', 
     91'urn:oasis:names:tc:xacml:1.0:function:dateTime-add-dayTimeDuration', 
     92'urn:oasis:names:tc:xacml:1.0:function:dateTime-add-yearMonthDuration', 
     93'urn:oasis:names:tc:xacml:1.0:function:dateTime-subtract-dayTimeDuration', 
     94'urn:oasis:names:tc:xacml:1.0:function:dateTime-subtract-yearMonthDuration',  
     95'urn:oasis:names:tc:xacml:1.0:function:date-add-yearMonthDuration', 
     96'urn:oasis:names:tc:xacml:1.0:function:date-subtract-yearMonthDuration', 
     97'urn:oasis:names:tc:xacml:1.0:function:string-greater-than', 
     98'urn:oasis:names:tc:xacml:1.0:function:string-greater-than-or-equal', 
     99'urn:oasis:names:tc:xacml:1.0:function:string-less-than', 
     100'urn:oasis:names:tc:xacml:1.0:function:string-less-than-or-equal', 
     101'urn:oasis:names:tc:xacml:1.0:function:time-greater-than', 
     102'urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal', 
     103'urn:oasis:names:tc:xacml:1.0:function:time-less-than', 
     104'urn:oasis:names:tc:xacml:1.0:function:time-less-than-or-equal', 
     105'urn:oasis:names:tc:xacml:2.0:function:time-in-range', 
     106'urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than', 
     107'urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal', 
     108'urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than', 
     109'urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than-or-equal', 
     110'urn:oasis:names:tc:xacml:1.0:function:date-greater-than', 
     111'urn:oasis:names:tc:xacml:1.0:function:date-greater-than-or-equal', 
     112'urn:oasis:names:tc:xacml:1.0:function:date-less-than', 
     113'urn:oasis:names:tc:xacml:1.0:function:date-less-than-or-equal', 
     114'urn:oasis:names:tc:xacml:1.0:function:string-one-and-only', 
     115'urn:oasis:names:tc:xacml:1.0:function:string-bag-size', 
     116'urn:oasis:names:tc:xacml:1.0:function:string-is-in', 
     117'urn:oasis:names:tc:xacml:1.0:function:string-bag', 
     118'urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only', 
     119'urn:oasis:names:tc:xacml:1.0:function:boolean-bag-size', 
     120'urn:oasis:names:tc:xacml:1.0:function:boolean-is-in', 
     121'urn:oasis:names:tc:xacml:1.0:function:boolean-bag', 
     122'urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only', 
     123'urn:oasis:names:tc:xacml:1.0:function:integer-bag-size', 
     124'urn:oasis:names:tc:xacml:1.0:function:integer-is-in', 
     125'urn:oasis:names:tc:xacml:1.0:function:integer-bag', 
     126'urn:oasis:names:tc:xacml:1.0:function:double-one-and-only', 
     127'urn:oasis:names:tc:xacml:1.0:function:double-bag-size', 
     128'urn:oasis:names:tc:xacml:1.0:function:double-is-in', 
     129'urn:oasis:names:tc:xacml:1.0:function:double-bag', 
     130'urn:oasis:names:tc:xacml:1.0:function:time-one-and-only', 
     131'urn:oasis:names:tc:xacml:1.0:function:time-bag-size', 
     132'urn:oasis:names:tc:xacml:1.0:function:time-is-in', 
     133'urn:oasis:names:tc:xacml:1.0:function:time-bag', 
     134'urn:oasis:names:tc:xacml:1.0:function:date-one-and-only', 
     135'urn:oasis:names:tc:xacml:1.0:function:date-bag-size', 
     136'urn:oasis:names:tc:xacml:1.0:function:date-is-in', 
     137'urn:oasis:names:tc:xacml:1.0:function:date-bag', 
     138'urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only', 
     139'urn:oasis:names:tc:xacml:1.0:function:dateTime-bag-size', 
     140'urn:oasis:names:tc:xacml:1.0:function:dateTime-is-in', 
     141'urn:oasis:names:tc:xacml:1.0:function:dateTime-bag', 
     142'urn:oasis:names:tc:xacml:1.0:function:anyURI-one-and-only', 
     143'urn:oasis:names:tc:xacml:1.0:function:anyURI-bag-size', 
     144'urn:oasis:names:tc:xacml:1.0:function:anyURI-is-in', 
     145'urn:oasis:names:tc:xacml:1.0:function:anyURI-bag', 
     146'urn:oasis:names:tc:xacml:1.0:function:hexBinary-one-and-only', 
     147'urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag-size', 
     148'urn:oasis:names:tc:xacml:1.0:function:hexBinary-is-in', 
     149'urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag', 
     150'urn:oasis:names:tc:xacml:1.0:function:base64Binary-one-and-only', 
     151'urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag-size', 
     152'urn:oasis:names:tc:xacml:1.0:function:base64Binary-is-in', 
     153'urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag', 
     154'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-one-and-only', 
     155'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-bag-size', 
     156'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-is-in', 
     157'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-bag', 
     158'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-one-and-only', 
     159'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-bag-size', 
     160'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-is-in', 
     161'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-bag', 
     162'urn:oasis:names:tc:xacml:1.0:function:x500Name-one-and-only', 
     163'urn:oasis:names:tc:xacml:1.0:function:x500Name-bag-size', 
     164'urn:oasis:names:tc:xacml:1.0:function:x500Name-is-in', 
     165'urn:oasis:names:tc:xacml:1.0:function:x500Name-bag', 
     166'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-one-and-only', 
     167'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag-size', 
     168'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-is-in', 
     169'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag', 
     170'urn:oasis:names:tc:xacml:2.0:function:string-concatenate', 
     171'urn:oasis:names:tc:xacml:2.0:function:uri-string-concatenate', 
     172'urn:oasis:names:tc:xacml:1.0:function:any-of', 
     173'urn:oasis:names:tc:xacml:1.0:function:all-of', 
     174'urn:oasis:names:tc:xacml:1.0:function:any-of-any', 
     175'urn:oasis:names:tc:xacml:1.0:function:all-of-any', 
     176'urn:oasis:names:tc:xacml:1.0:function:any-of-all', 
     177'urn:oasis:names:tc:xacml:1.0:function:all-of-all', 
     178'urn:oasis:names:tc:xacml:1.0:function:map', 
     179'urn:oasis:names:tc:xacml:1.0:function:x500Name-match', 
     180'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match', 
     181'urn:oasis:names:tc:xacml:1.0:function:string-regexp-match', 
     182'urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match', 
     183'urn:oasis:names:tc:xacml:2.0:function:ipAddress-regexp-match', 
     184'urn:oasis:names:tc:xacml:2.0:function:dnsName-regexp-match', 
     185'urn:oasis:names:tc:xacml:2.0:function:rfc822Name-regexp-match', 
     186'urn:oasis:names:tc:xacml:2.0:function:x500Name-regexp-match', 
     187'urn:oasis:names:tc:xacml:1.0:function:xpath-node-count', 
     188'urn:oasis:names:tc:xacml:1.0:function:xpath-node-equal', 
     189'urn:oasis:names:tc:xacml:1.0:function:xpath-node-match', 
     190'urn:oasis:names:tc:xacml:1.0:function:string-intersection', 
     191'urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of', 
     192'urn:oasis:names:tc:xacml:1.0:function:string-union', 
     193'urn:oasis:names:tc:xacml:1.0:function:string-subset', 
     194'urn:oasis:names:tc:xacml:1.0:function:string-set-equals', 
     195'urn:oasis:names:tc:xacml:1.0:function:boolean-intersection', 
     196'urn:oasis:names:tc:xacml:1.0:function:boolean-at-least-one-member-of', 
     197'urn:oasis:names:tc:xacml:1.0:function:boolean-union', 
     198'urn:oasis:names:tc:xacml:1.0:function:boolean-subset', 
     199'urn:oasis:names:tc:xacml:1.0:function:boolean-set-equals', 
     200'urn:oasis:names:tc:xacml:1.0:function:integer-intersection', 
     201'urn:oasis:names:tc:xacml:1.0:function:integer-at-least-one-member-of', 
     202'urn:oasis:names:tc:xacml:1.0:function:integer-union', 
     203'urn:oasis:names:tc:xacml:1.0:function:integer-subset', 
     204'urn:oasis:names:tc:xacml:1.0:function:integer-set-equals', 
     205'urn:oasis:names:tc:xacml:1.0:function:double-intersection', 
     206'urn:oasis:names:tc:xacml:1.0:function:double-at-least-one-member-of', 
     207'urn:oasis:names:tc:xacml:1.0:function:double-union', 
     208'urn:oasis:names:tc:xacml:1.0:function:double-subset', 
     209'urn:oasis:names:tc:xacml:1.0:function:double-set-equals', 
     210'urn:oasis:names:tc:xacml:1.0:function:time-intersection', 
     211'urn:oasis:names:tc:xacml:1.0:function:time-at-least-one-member-of', 
     212'urn:oasis:names:tc:xacml:1.0:function:time-union', 
     213'urn:oasis:names:tc:xacml:1.0:function:time-subset', 
     214'urn:oasis:names:tc:xacml:1.0:function:time-set-equals', 
     215'urn:oasis:names:tc:xacml:1.0:function:date-intersection', 
     216'urn:oasis:names:tc:xacml:1.0:function:date-at-least-one-member-of', 
     217'urn:oasis:names:tc:xacml:1.0:function:date-union', 
     218'urn:oasis:names:tc:xacml:1.0:function:date-subset', 
     219'urn:oasis:names:tc:xacml:1.0:function:date-set-equals', 
     220'urn:oasis:names:tc:xacml:1.0:function:dateTime-intersection', 
     221'urn:oasis:names:tc:xacml:1.0:function:dateTime-at-least-one-member-of', 
     222'urn:oasis:names:tc:xacml:1.0:function:dateTime-union', 
     223'urn:oasis:names:tc:xacml:1.0:function:dateTime-subset', 
     224'urn:oasis:names:tc:xacml:1.0:function:dateTime-set-equals', 
     225'urn:oasis:names:tc:xacml:1.0:function:anyURI-intersection', 
     226'urn:oasis:names:tc:xacml:1.0:function:anyURI-at-least-one-member-of', 
     227'urn:oasis:names:tc:xacml:1.0:function:anyURI-union', 
     228'urn:oasis:names:tc:xacml:1.0:function:anyURI-subset', 
     229'urn:oasis:names:tc:xacml:1.0:function:anyURI-set-equals', 
     230'urn:oasis:names:tc:xacml:1.0:function:hexBinary-intersection', 
     231'urn:oasis:names:tc:xacml:1.0:function:hexBinary-at-least-one-member-of', 
     232'urn:oasis:names:tc:xacml:1.0:function:hexBinary-union', 
     233'urn:oasis:names:tc:xacml:1.0:function:hexBinary-subset', 
     234'urn:oasis:names:tc:xacml:1.0:function:hexBinary-set-equals', 
     235'urn:oasis:names:tc:xacml:1.0:function:base64Binary-intersection', 
     236'urn:oasis:names:tc:xacml:1.0:function:base64Binary-at-least-one-member-of', 
     237'urn:oasis:names:tc:xacml:1.0:function:base64Binary-union', 
     238'urn:oasis:names:tc:xacml:1.0:function:base64Binary-subset', 
     239'urn:oasis:names:tc:xacml:1.0:function:base64Binary-set-equals', 
     240'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-intersection', 
     241'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-at-least-one-member-of', 
     242'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-union', 
     243'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-subset', 
     244'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-set-equals', 
     245'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-intersection', 
     246'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-at-least-one-member-of', 
     247'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-union', 
     248'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-subset', 
     249'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-set-equals', 
     250'urn:oasis:names:tc:xacml:1.0:function:x500Name-intersection', 
     251'urn:oasis:names:tc:xacml:1.0:function:x500Name-at-least-one-member-of', 
     252'urn:oasis:names:tc:xacml:1.0:function:x500Name-union', 
     253'urn:oasis:names:tc:xacml:1.0:function:x500Name-subset', 
     254'urn:oasis:names:tc:xacml:1.0:function:x500Name-set-equals', 
     255'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-intersection', 
     256'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-at-least-one-member-of', 
     257'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-union', 
     258'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-subset', 
     259'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-set-equals', 
    260260    ) 
    261261 
    262262 
    263 class ClassFactoryInterface(object): 
     263class FunctionClassFactoryInterface(object): 
    264264    """Interface class for function module class factory class 
    265265    """ 
     
    270270        '''Create class for the given XACML function identifier 
    271271         
    272         @param identifier: XACML *-at-least-one-member-of type function 
    273         identifier 
     272        @param identifier: XACML function identifier 
    274273        @type identifier: basestring 
    275274        @return: at least one member of class corresponding to the given input 
    276275        identifier 
    277         @rtype: AtLeastOneMemberOfBase derived type or None if no match is  
     276        @rtype: AbstractFunction derived type or None if no match is  
    278277        found 
    279278        ''' 
     
    281280     
    282281 
    283 class FunctionClassFactoryBase(ClassFactoryInterface): 
     282class FunctionClassFactoryBase(FunctionClassFactoryInterface): 
    284283    """Base implementation for XACML Function Class Factory.  Derived types  
    285     should be implemented in sub-modules of ndg.xacml.core.functions e.g. 
     284    should be implemented in sub-modules of ndg.xacml.core.functions  
     285     
     286    e.g. 
     287     
    286288    for urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of a  
    287289    class factory should exist, 
     
    289291    ndg.xacml.core.functions.v1.at_least_one_member_of.FunctionClassFactory 
    290292     
    291     which  
     293    which will be capable of returning an AbstractFunction derived type: 
     294     
    292295    StringAtLeastOneMemberOf     
    293296     
    294     Derived classes MUST define these two class variables: 
    295      
     297    This class is for convenience only some function factories are better  
     298    derived directly from FunctionClassFactoryInterface 
     299     
     300    Derived classes MUST define these class variables: 
     301     
     302    @cvar FUNCTION_NAMES: list of function identifiers that this factory can 
     303    produce classes for e.g.: 
     304     
     305    ('urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of', ...) 
     306     
     307    @type FUNCTION_NAMES: NoneType (but list in derived class) 
     308    
    296309    @cvar FUNCTION_NS_SUFFIX: urn suffix for the family of function to define 
    297310    e.g. -at-least-one-member-of is the suffix for the URN: 
     
    307320    """ 
    308321     
    309      
    310322    FUNCTION_NS_SUFFIX = None 
     323    FUNCTION_NAMES = None 
    311324    FUNCTION_BASE_CLASS = None 
    312325     
     
    322335            raise TypeError('"FUNCTION_NS_SUFFIX" and "FUNCTION_BASE_CLASS" ' 
    323336                            'must be defined in a derived implementation of ' 
    324                             'this class.  See this classes __doc__ contents') 
     337                            'FunctionClassFactoryBase.  See ' 
     338                            'FunctionClassFactoryBase.__doc__ contents') 
     339         
     340        if not _isIterable(self.__class__.FUNCTION_NAMES): 
     341            raise TypeError('"FUNCTION_NAMES" class variable must be an ' 
     342                            'iterable of string type function identifiers; got ' 
     343                            '%r' % self.__class__.FUNCTION_NAMES) 
    325344             
    326345        self.__map = {} 
     
    330349                                  for n in functionSuffixParts if n]) 
    331350         
    332         functionNames = [n for n in XacmlFunctionNames.FUNCTION_NAMES 
    333                          if n.endswith(self.__class__.FUNCTION_NS_SUFFIX)] 
    334          
    335         for identifier in functionNames: 
     351        for identifier in self.__class__.FUNCTION_NAMES:             
    336352            # Extract the function name and the type portion of the function 
    337353            # name in order to make an implementation of a class to handle it 
    338354            functionName = identifier.split(self.__class__.URN_SEP)[-1] 
    339             typePart = functionName.split(self.__class__.FUNCTION_NAME_SEP)[0] 
     355            typePart = functionName.split(self.__class__.FUNCTION_NS_SUFFIX)[0] 
    340356             
    341357            typeName = typePart[0].upper() + typePart[1:] 
     
    445461        classPath = None 
    446462         
    447         if functionNs == "urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of": 
    448             pass 
    449 #        else: 
    450 #            self[functionNs] = NotImplemented 
    451 #            return 
    452  
    453463        for namespacePrefix, pkgNamePrefix in cls.SUPPORTED_NSS.items(): 
    454464            if functionNs.startswith(namespacePrefix): 
     
    475485        try: 
    476486            functionFactory = callModuleObject(classPath) 
    477              
     487                       
    478488        except (ImportError, AttributeError): 
    479489            log.error("Error importing function factory class %r for function " 
     
    483493            # No implementation exists - default to Abstract function 
    484494            self[functionNs] = NotImplemented 
    485              
    486         self[functionNs] = functionFactory(functionNs) 
    487              
    488  
    489  
    490          
     495        else: 
     496            self[functionNs] = functionFactory(functionNs) 
     497             
     498         
     499             
     500 
     501 
     502         
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v1/at_least_one_member_of.py

    r6803 r6804  
    4444            raise XacmlContextTypeError('Expecting %r type elements for "bag"; ' 
    4545                                        'got %r' % 
    46                                         (self.__class__.TYPE, bag.elementType))             
     46                                        (self.__class__.TYPE, bag.elementType)) 
    4747        return item in bag 
    4848     
     
    5151    """Class Factory for *-at-least-one-member-of XACML function classes 
    5252    """ 
     53    FUNCTION_NAMES = ( 
     54'urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of', 
     55'urn:oasis:names:tc:xacml:1.0:function:boolean-at-least-one-member-of', 
     56'urn:oasis:names:tc:xacml:1.0:function:integer-at-least-one-member-of', 
     57'urn:oasis:names:tc:xacml:1.0:function:double-at-least-one-member-of', 
     58'urn:oasis:names:tc:xacml:1.0:function:time-at-least-one-member-of', 
     59'urn:oasis:names:tc:xacml:1.0:function:date-at-least-one-member-of', 
     60'urn:oasis:names:tc:xacml:1.0:function:dateTime-at-least-one-member-of', 
     61'urn:oasis:names:tc:xacml:1.0:function:anyURI-at-least-one-member-of', 
     62'urn:oasis:names:tc:xacml:1.0:function:hexBinary-at-least-one-member-of', 
     63'urn:oasis:names:tc:xacml:1.0:function:base64Binary-at-least-one-member-of', 
     64'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-at-least-one-member-of', 
     65'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-at-least-one-member-of', 
     66'urn:oasis:names:tc:xacml:1.0:function:x500Name-at-least-one-member-of', 
     67'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-at-least-one-member-of', 
     68    ) 
    5369    FUNCTION_NS_SUFFIX = '-at-least-one-member-of' 
    5470    FUNCTION_BASE_CLASS = AtLeastOneMemberOfBase 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v1/bag.py

    r6803 r6804  
    4848    """Class Factory for *-bag XACML function classes 
    4949    """ 
     50    FUNCTION_NAMES = ( 
     51        'urn:oasis:names:tc:xacml:1.0:function:string-bag', 
     52        'urn:oasis:names:tc:xacml:1.0:function:boolean-bag', 
     53        'urn:oasis:names:tc:xacml:1.0:function:integer-bag', 
     54        'urn:oasis:names:tc:xacml:1.0:function:double-bag', 
     55        'urn:oasis:names:tc:xacml:1.0:function:time-bag', 
     56        'urn:oasis:names:tc:xacml:1.0:function:date-bag', 
     57        'urn:oasis:names:tc:xacml:1.0:function:dateTime-bag', 
     58        'urn:oasis:names:tc:xacml:1.0:function:anyURI-bag', 
     59        'urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag', 
     60        'urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag', 
     61        'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-bag', 
     62        'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-bag', 
     63        'urn:oasis:names:tc:xacml:1.0:function:x500Name-bag', 
     64        'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag', 
     65    ) 
    5066    FUNCTION_NS_SUFFIX = '-bag' 
    5167    FUNCTION_BASE_CLASS = BagBase  
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v1/equal.py

    r6803 r6804  
    4646    """Class Factory for *-equal XACML function classes 
    4747    """ 
     48    FUNCTION_NAMES = ( 
     49        'urn:oasis:names:tc:xacml:1.0:function:string-equal', 
     50        'urn:oasis:names:tc:xacml:1.0:function:boolean-equal', 
     51        'urn:oasis:names:tc:xacml:1.0:function:integer-equal', 
     52        'urn:oasis:names:tc:xacml:1.0:function:double-equal', 
     53        'urn:oasis:names:tc:xacml:1.0:function:date-equal', 
     54        'urn:oasis:names:tc:xacml:1.0:function:time-equal', 
     55        'urn:oasis:names:tc:xacml:1.0:function:dateTime-equal', 
     56        'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal', 
     57        'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal', 
     58        'urn:oasis:names:tc:xacml:1.0:function:anyURI-equal', 
     59        'urn:oasis:names:tc:xacml:1.0:function:x500Name-equal', 
     60        'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal', 
     61        'urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal', 
     62        'urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal' 
     63    ) 
    4864    FUNCTION_NS_SUFFIX = '-equal' 
    4965    FUNCTION_BASE_CLASS = EqualBase 
    50  
    51  
    52 ## Dynamically create classes for all the types 
    53 #FUNCTION_CLASS_MAP = { 
    54 #    'StringEqual': { 
    55 #        'TYPE': basestring,  
    56 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:string-equal' 
    57 #    }, 
    58 #         
    59 #    'AnyURIEqual': { 
    60 #        'TYPE': basestring,  
    61 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:anyURI-equal' 
    62 #    }, 
    63 #         
    64 #    'IntegerEqual': { 
    65 #        'TYPE': int,  
    66 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:integer-equal' 
    67 #    }, 
    68 #         
    69 #    'BooleanEqual': { 
    70 #        'TYPE': basestring,  
    71 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:boolean-equal' 
    72 #    }, 
    73 #         
    74 #    'DoubleEqual': { 
    75 #        'TYPE': float,  
    76 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:double-equal'   
    77 #    }, 
    78 #         
    79 #    'DateEqual': { 
    80 #        'TYPE': datetime,  
    81 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:date-equal' 
    82 #    }, 
    83 #         
    84 #    'DateTimeEqual': { 
    85 #        'TYPE': datetime,  
    86 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:dateTime-equal' 
    87 #    }, 
    88 #         
    89 #    'TimeEqual': { 
    90 #        'TYPE': datetime,  
    91 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:time-equal' 
    92 #    }, 
    93 #         
    94 #    'DayTimeDurationEqual': { 
    95 #        'TYPE': timedelta,  
    96 #        'FUNCTION_NS': \ 
    97 #            'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal' 
    98 #    }, 
    99 #     
    100 #    'YearMonthDurationEqual': { 
    101 #        'TYPE': timedelta,  
    102 #        'FUNCTION_NS': \ 
    103 #            'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal' 
    104 #    }, 
    105 #     
    106 #    'X500NameEqual': { 
    107 #        # TODO: refactor - basestring type is inadequate for X.500 name  
    108 #        # comparison 
    109 #        'TYPE': basestring,  
    110 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:x500Name-equal' 
    111 #    }, 
    112 #     
    113 #    'Rfc822NameEqual': { 
    114 #        # TODO: refactor - basestring type is inadequate for RFC822 name  
    115 #        # comparison 
    116 #        'TYPE': basestring,  
    117 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal' 
    118 #    }, 
    119 #     
    120 #    'HexBinaryEqual': { 
    121 #        'TYPE': int,  
    122 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal' 
    123 #    }, 
    124 #     
    125 #    'Base64BinaryEqual': { 
    126 #        'TYPE': int,  
    127 #        'FUNCTION_NS': \ 
    128 #            'urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal' 
    129 #    } 
    130 #} 
    131 # 
    132 #import sys 
    133 #_thisModule = sys.modules[__name__] 
    134 # 
    135 #for className, classVars in FUNCTION_CLASS_MAP.items(): 
    136 #    setattr(_thisModule, className, type(className, (EqualBase, ), classVars)) 
    137  
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v1/one_and_only.py

    r6803 r6804  
    4747    """Class Factory for *-one-and-only XACML function classes 
    4848    """ 
     49    FUNCTION_NAMES = ( 
     50        'urn:oasis:names:tc:xacml:1.0:function:string-one-and-only', 
     51        'urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only', 
     52        'urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only', 
     53        'urn:oasis:names:tc:xacml:1.0:function:double-one-and-only', 
     54        'urn:oasis:names:tc:xacml:1.0:function:time-one-and-only', 
     55        'urn:oasis:names:tc:xacml:1.0:function:date-one-and-only', 
     56        'urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only', 
     57        'urn:oasis:names:tc:xacml:1.0:function:anyURI-one-and-only', 
     58        'urn:oasis:names:tc:xacml:1.0:function:hexBinary-one-and-only', 
     59        'urn:oasis:names:tc:xacml:1.0:function:base64Binary-one-and-only', 
     60        'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-one-and-only', 
     61        'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-one-and-only', 
     62        'urn:oasis:names:tc:xacml:1.0:function:x500Name-one-and-only', 
     63        'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-one-and-only' 
     64    ) 
    4965    FUNCTION_NS_SUFFIX = '-one-and-only' 
    5066    FUNCTION_BASE_CLASS = OneAndOnlyBase 
    51         
    52 ## Dynamically create classes for all the types 
    53 #FUNCTION_CLASS_MAP = { 
    54 #    'StringOneAndOnly': { 
    55 #        'BAG_TYPE': basestring,  
    56 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:string-equal' 
    57 #    }, 
    58 #         
    59 #    'AnyURIOneAndOnly': { 
    60 #        'BAG_TYPE': basestring,  
    61 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:anyURI-equal' 
    62 #    }, 
    63 #         
    64 #    'IntegerOneAndOnly': { 
    65 #        'BAG_TYPE': int,  
    66 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:integer-equal' 
    67 #    }, 
    68 #         
    69 #    'BooleanOneAndOnly': { 
    70 #        'BAG_BAG_TYPE': basestring,  
    71 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:boolean-equal' 
    72 #    }, 
    73 #         
    74 #    'DoubleOneAndOnly': { 
    75 #        'BAG_TYPE': float,  
    76 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:double-equal'   
    77 #    }, 
    78 #         
    79 #    'DateOneAndOnly': { 
    80 #        'BAG_TYPE': datetime,  
    81 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:date-equal' 
    82 #    }, 
    83 #         
    84 #    'DateTimeOneAndOnly': { 
    85 #        'BAG_TYPE': datetime,  
    86 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:dateTime-equal' 
    87 #    }, 
    88 #         
    89 #    'TimeOneAndOnly': { 
    90 #        'BAG_TYPE': datetime,  
    91 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:time-equal' 
    92 #    }, 
    93 #         
    94 #    'DayTimeDurationOneAndOnly': { 
    95 #        'BAG_TYPE': timedelta,  
    96 #        'FUNCTION_NS': \ 
    97 #            'urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal' 
    98 #    }, 
    99 #     
    100 #    'YearMonthDurationOneAndOnly': { 
    101 #        'BAG_TYPE': timedelta,  
    102 #        'FUNCTION_NS': \ 
    103 #            'urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal' 
    104 #    }, 
    105 #     
    106 #    'X500NameOneAndOnly': { 
    107 #        # TODO: refactor - basestring type is inadequate for X.500 name  
    108 #        # comparison 
    109 #        'BAG_TYPE': basestring,  
    110 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:x500Name-equal' 
    111 #    }, 
    112 #     
    113 #    'Rfc822NameOneAndOnly': { 
    114 #        # TODO: refactor - basestring type is inadequate for RFC822 name  
    115 #        # comparison 
    116 #        'BAG_TYPE': basestring,  
    117 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal' 
    118 #    }, 
    119 #     
    120 #    'HexBinaryOneAndOnly': { 
    121 #        'BAG_TYPE': int,  
    122 #        'FUNCTION_NS': 'urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal' 
    123 #    }, 
    124 #     
    125 #    'Base64BinaryOneAndOnly': { 
    126 #        'BAG_TYPE': int,  
    127 #        'FUNCTION_NS': \ 
    128 #            'urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal' 
    129 #    } 
    130 #} 
    131 # 
    132 #import sys 
    133 #_thisModule = sys.modules[__name__] 
    134 # 
    135 #for className, classVars in FUNCTION_CLASS_MAP.items(): 
    136 #    setattr(_thisModule,  
    137 #            className,  
    138 #            type(className, (OneAndOnlyBase, ), classVars))    
     67     
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v1/round.py

    r6803 r6804  
    99__contact__ = "Philip.Kershaw@stfc.ac.uk" 
    1010__revision__ = '$Id: $' 
    11 from ndg.xacml.core.functions import AbstractFunction, FunctionClassFactoryBase 
     11from ndg.xacml.core.functions import (AbstractFunction,  
     12                                      FunctionClassFactoryInterface) 
    1213from ndg.xacml.core.context.exceptions import XacmlContextTypeError 
    1314 
    1415 
    15 class RoundBase(AbstractFunction): 
     16class Round(AbstractFunction): 
    1617    """Base class for XACML <type>-round functions""" 
    1718    FUNCTION_NS = AbstractFunction.V1_0_FUNCTION_NS + 'round' 
     
    2930 
    3031     
    31  
    32 class FunctionClassFactory(FunctionClassFactoryBase): 
    33     """Class Factory for *-round XACML function classes 
     32class FunctionClassFactory(FunctionClassFactoryInterface): 
     33    """Class Factory for round XACML function class 
    3434    """ 
    35     FUNCTION_NS_SUFFIX = '-round' 
    36     FUNCTION_BASE_CLASS = RoundBase 
     35    def __call__(self, identifier): 
     36        '''Create class for the Round XACML function identifier 
     37         
     38        @param identifier: XACML round function identifier 
     39        @type identifier: basestring 
     40        @return: round function class or None if identifier doesn't match 
     41        @rtype: ndg.xacml.core.functions.v1.round.Round / NoneType 
     42        ''' 
     43        if identifier == Round.FUNCTION_NS: 
     44            return Round 
     45        else: 
     46            return None 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/functions/v2/regexp_match.py

    r6803 r6804  
    99__contact__ = "Philip.Kershaw@stfc.ac.uk" 
    1010__revision__ = '$Id: $' 
    11 import re 
    12 #import sys 
     11from ndg.xacml.core.functions import FunctionClassFactoryBase 
    1312 
    14 from ndg.xacml.core.functions import AbstractFunction, FunctionClassFactoryBase 
    15 from ndg.xacml.core.context.exceptions import XacmlContextTypeError 
    16  
    17  
    18 class RegexpMatchBase(AbstractFunction): 
    19     """XACML 2.0 Regular Expression matching base class function 
    20     """ 
    21     FUNCTION_NS = None 
    22     FUNCTION_NS_SUFFIX = '-regexp-match' 
    23     CLASS_NAME_SUFFIX = 'RegexpMatch' 
    24     TYPE = None 
    25 #    TYPE_MAP = {}.fromkeys( 
    26 #        ('AnyURI',  
    27 #        'IpAddress',  
    28 #        'DnsName', 
    29 #        'Rfc822Name', 
    30 #        'X500Name'), 
    31 #        basestring) 
    32      
    33     def evaluate(self, pat, input): 
    34         """Match URI against regular expression pattern 
    35          
    36         @param pat: regular expression 
    37         @type pat: basestring 
    38         @param input: URI to match 
    39         @type input: type 
    40         @return: True if URI matches pattern, False otherwise 
    41         @rtype: bool 
    42         """ 
    43         if not isinstance(pat, basestring): 
    44             raise TypeError('Expecting %r derived type for "pat"; got %r' % 
    45                             (basestring, type(pat))) 
    46              
    47         if not isinstance(input, self.__class__.TYPE): 
    48             raise TypeError('Expecting %r derived type for "input"; got %r' % 
    49                             (self.__class__.TYPE, type(input))) 
    50              
    51         return bool(re.match(pat, input)) 
     13# Use v1.0 schema base class for version 2.0 additional types 
     14from ndg.xacml.core.functions.v1.regexp_match import RegexpMatchBase 
    5215     
    5316 
     
    5720    FUNCTION_NS_SUFFIX = RegexpMatchBase.FUNCTION_NS_SUFFIX 
    5821    FUNCTION_BASE_CLASS = RegexpMatchBase 
    59      
    60          
    61 #_thisModule = sys.modules[__name__] 
    62 # 
    63 #for typeName, _type in RegexpMatchBase.TYPE_MAP.items(): 
    64 #    className = typeName + RegexpMatchBase.CLASS_NAME_SUFFIX 
    65 #    classVars = { 
    66 #        'TYPE': _type, 
    67 #        'FUNCTION_NS': AbstractFunction.V2_0_FUNCTION_NS + typeName[0 
    68 #            ].lower() + typeName[1:] + RegexpMatchBase.FUNCTION_NS_SUFFIX 
    69 #    } 
    70 #    setattr(_thisModule,  
    71 #            className,  
    72 #            type(className, (RegexpMatchBase, ), classVars))  
     22    FUNCTION_NAMES = ( 
     23        'urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match', 
     24        'urn:oasis:names:tc:xacml:2.0:function:ipAddress-regexp-match', 
     25        'urn:oasis:names:tc:xacml:2.0:function:dnsName-regexp-match', 
     26        'urn:oasis:names:tc:xacml:2.0:function:rfc822Name-regexp-match', 
     27        'urn:oasis:names:tc:xacml:2.0:function:x500Name-regexp-match' 
     28    ) 
Note: See TracChangeset for help on using the changeset viewer.