Changeset 5093 for TI12-security


Ignore:
Timestamp:
11/03/09 16:40:22 (11 years ago)
Author:
pjkersha
Message:

More functionality added to xacml module.

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

Legend:

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

    r5092 r5093  
    5454        '''Encode the policy''' 
    5555        raise NotImplemented() 
    56      
     56 
     57class MatchResult(XacmlBase): 
     58    pass 
     59 
    5760class Target(XacmlBase): 
    5861    '''The target selects policies relevant to a request''' 
    5962 
    60     def __init__(self): 
    61         self.subjects = [] 
    62         self.resources = [] 
    63         self.actions = [] 
     63    def __init__(self, subjects=[], resources=[], actions=[]): 
     64        self.subjects = subjects 
     65        self.resources = resources 
     66        self.actions = actions 
    6467        self.rules = [] 
    6568 
     69    def Match(self, evaluationCtx): 
     70        return MatchResult() 
     71     
     72     
    6673class AttributeDesignator(XacmlBase): 
    6774    ACTION_TARGET, ENVIRONMENT_TARGET, RESOURCE_TARGET, SUBJECT_TARGET=range(4) 
     
    8592        pass 
    8693class FunctionBase(XacmlBase): 
    87     def __init__(self, id): 
    88         id = None 
    89         returnType = None 
    90         returnsBag = False 
     94    def __init__(self, functionName): 
     95        self.functionName = functionName 
     96        self.returnType = None 
     97        self.returnsBag = False 
     98         
     99    def _setFunctionName(self, functionName): 
     100        if functionName not in MatchFunction.supportedIdentifiers: 
     101            matchFunctionList = ', '.join(MatchFunction.matchFunctionNames) 
     102            raise TypeError("Function name [%s] is not on of the recognised " 
     103                            "types: %s" % (functionName, matchFunctionList)) 
     104        self._functionName = functionName 
     105         
     106    def _getFunctionName(self): 
     107        return getattr(self, '_functionName', None) 
     108     
     109    functionName = property(fset=_setFunctionName, 
     110                            fget=_getFunctionName) 
    91111         
    92112    def checkInputs(self, inputs): 
     
    122142    } 
    123143    def __init__(self, functionName): 
    124         self.functionName = functionName 
    125          
    126     def _setFunctionName(self, functionName): 
    127         if functionName not in MatchFunction.supportedIdentifiers: 
    128             matchFunctionList = ', '.join(MatchFunction.matchFunctionNames) 
    129             raise TypeError("Function name [%s] is not on of the recognised " 
    130                             "types: %s" % (functionName, matchFunctionList)) 
    131         self._functionName = functionName 
    132          
    133     def _getFunctionName(self): 
    134         return self._functionName 
    135      
    136     functionName = property(fset=_setFunctionName, 
    137                             fget=_getFunctionName) 
     144        super(MatchFunction, self).__init__(functionName) 
    138145 
    139146    def regexpStringMatch(self, regex, val): 
     
    151158        if match: 
    152159            return EvaluationResult(status=Status.STATUS_OK) 
    153          
     160 
     161 
     162class EqualFunction(FunctionBase): 
     163     NAME_ANYURI_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:anyURI-equal" 
     164     NAME_BASE64BINARY_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal" 
     165     NAME_BOOLEAN_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:boolean-equal" 
     166     NAME_DATE_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:date-equal" 
     167     NAME_DATETIME_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:dateTime-equal" 
     168     NAME_DAYTIME_DURATION_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:dayTimeDuration-equal" 
     169     NAME_DOUBLE_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:double-equal" 
     170     NAME_HEXBINARY_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal" 
     171     NAME_INTEGER_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:integer-equal" 
     172     NAME_RFC822NAME_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal" 
     173     NAME_STRING_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:string-equal" 
     174     NAME_TIME_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:time-equal" 
     175     NAME_X500NAME_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:x500Name-equal" 
     176     NAME_YEARMONTH_DURATION_EQUAL = "urn:oasis:names:tc:xacml:1.0:function:yearMonthDuration-equal" 
     177 
     178     lut = { 
     179         NAME_STRING_EQUAL: 'stringEqual' 
     180     } 
     181      
     182     def __init__(self, functionName, argumentType): 
     183         super(MatchFunction, self).__init__(functionName) 
     184         self.argumentType = argumentType 
     185 
     186     def evaluate(self, inputs, evaluationCtx): 
     187         function = EqualFunction.lut.get(self.functionName) 
     188         if function is None: 
     189             raise NotImplementedError("No implementation is available for " 
     190                                       "%s" % self.functionName) 
     191              
     192          
     193    def stringEqual(self, ): 
     194        pass 
     195     
    154196class Status(XacmlBase): 
    155197    STATUS_MISSING_ATTRIBUTE = \ 
Note: See TracChangeset for help on using the changeset viewer.