-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpolicy.py
48 lines (40 loc) · 1.18 KB
/
policy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class Policy():
def __init__(self, S, vulnerability):
self.top = S
self.bottom = []
self.vulnerability = vulnerability
def glb(self, set1, set2):
'''
Greatest lower bound operator: intersection
'''
return list(set(set1) & set(set2))
def lub(self, set1, set2):
'''
Lowest upper bound operator: union
'''
return list(set(set1) | set(set2))
def bottom(self):
'''
Lowest level of taintedness
'''
return self.bottom
def top(self):
'''
Highest level of taintedness
'''
return self.top
def can_flow(self, set0):
'''
Can-flow relation: order between the set of security levels
'''
ret = [[]]
for i in range(len(set0) + 1):
for j in range(i):
ret.append(set0[j: i])
return ret
def get_vulnerability(self):
return self.vulnerability
def get_vultype(self, name):
return self.vulnerability.get_vultype(name)
def __str__(self) -> str:
return 'Policy({})'.format(str(self.vulnerability))