1 | #!/bin/sh |
---|
2 | |
---|
3 | ##################################################################### |
---|
4 | # This example demostrates how to use 'this' as a data term of a RT1 |
---|
5 | # policy credential where it is implicitly translated to a variable. |
---|
6 | # |
---|
7 | # Credential 1 is the policy credential with 2 intersecting rules. |
---|
8 | # A employee is up for a pay raise if the evaluator of the employee |
---|
9 | # affirms his/her good performance and the manager of the employee |
---|
10 | # affirms his/her pleasantness. |
---|
11 | # |
---|
12 | # Credential 2 is the policy credential that states an evaluator of |
---|
13 | # an employee is also the manager of the employee. |
---|
14 | # |
---|
15 | # Credential 3, 4 and 5 state Bob is the evaluator of Maryann and she |
---|
16 | # is showing good performance and is a nice coworker. Credential 6 and |
---|
17 | # 7 state Bob is also the evaluator of Joe and he is showing good |
---|
18 | # performance. But, there is no fact that says Joe is a nice coworker. |
---|
19 | # |
---|
20 | # The attached ./run_query file asks if a given principal is |
---|
21 | # entitled to a pay raise. Maryann is but not Joe, because his manager |
---|
22 | # did not affirm his pleasantness(but neither did he deny it) |
---|
23 | |
---|
24 | rm -rf *der *pem |
---|
25 | |
---|
26 | # [keyid:Alpha].role:payRaise <-?- [keyid:Maryann] (yes) |
---|
27 | # [keyid:Alpha].role:payRaise <-?- [keyid:Joe] (no) |
---|
28 | |
---|
29 | creddy --generate --cn Alpha |
---|
30 | creddy --generate --cn Bob |
---|
31 | creddy --generate --cn Maryann |
---|
32 | creddy --generate --cn Joe |
---|
33 | |
---|
34 | alpha_keyid=`creddy --keyid --cert Alpha_ID.pem` |
---|
35 | |
---|
36 | bob_keyid=`creddy --keyid --cert Bob_ID.pem` |
---|
37 | maryann_keyid=`creddy --keyid --cert Maryann_ID.pem` |
---|
38 | joe_keyid=`creddy --keyid --cert Joe_ID.pem` |
---|
39 | |
---|
40 | performance_qT="evaluatorOf([principal:?this]).goodPerformance" |
---|
41 | niceguy_qT="managerOf([principal:?this]).niceCoworker" |
---|
42 | |
---|
43 | manager_qZ="managerOf([principal:?Z])" |
---|
44 | evaluator_qZ="evaluatorOf([principal:?Z])" |
---|
45 | |
---|
46 | evaluator_m="evaluatorOf([keyid:$maryann_keyid])" |
---|
47 | evaluator_j="evaluatorOf([keyid:$joe_keyid])" |
---|
48 | |
---|
49 | # [keyid:alpha].role:payRaise <- |
---|
50 | # [keyid:alpha].role:evaluatorOf([principal:?this]).role:goodPerformance & |
---|
51 | # [keyid:alpha].role:managerOf([principal:?this]).role:niceCoworker |
---|
52 | # Credential 1 |
---|
53 | creddy --attribute \ |
---|
54 | --issuer Alpha_ID.pem --key Alpha_private.pem --role payRaise \ |
---|
55 | --subject-cert Alpha_ID.pem --subject-role "$performance_qT" \ |
---|
56 | --subject-cert Alpha_ID.pem --subject-role "$niceguy_qT" \ |
---|
57 | --out Alpha_payraise__Alpha_performance_qT_niceguy_qT_attr.der |
---|
58 | |
---|
59 | # [keyid:alpha].role:managerOf([principal:?Z])<- |
---|
60 | # [keyid:alpha].role:evaluatorOf([principal:?Z]) |
---|
61 | # Credential 2 |
---|
62 | creddy --attribute \ |
---|
63 | --issuer Alpha_ID.pem --key Alpha_private.pem --role "$manager_qZ" \ |
---|
64 | --subject-cert Alpha_ID.pem --subject-role "$evaluator_qZ" \ |
---|
65 | --out Alpha_manager_qZ__Alpha_evaluator_qZ_attr.der |
---|
66 | |
---|
67 | # [keyid:alpha].role:evaluatorOf([keyid:Maryann]) <-[keyid:Bob] |
---|
68 | # Credential 3 |
---|
69 | creddy --attribute \ |
---|
70 | --issuer Alpha_ID.pem --key Alpha_private.pem --role "$evaluator_m" \ |
---|
71 | --subject-cert Bob_ID.pem \ |
---|
72 | --out Alpha_evaluator_m__Bob_attr.der |
---|
73 | |
---|
74 | # [keyid:Bob].role:goodPerformance <- [keyid:Maryann]) |
---|
75 | # Credential 4 |
---|
76 | creddy --attribute \ |
---|
77 | --issuer Bob_ID.pem --key Bob_private.pem --role goodPerformance \ |
---|
78 | --subject-cert Maryann_ID.pem \ |
---|
79 | --out Bob_goodperformance__Maryann_attr.der |
---|
80 | |
---|
81 | # [keyid:Bob].role:niceCoworker <- [keyid:Maryann]) |
---|
82 | # Credential 5 |
---|
83 | creddy --attribute \ |
---|
84 | --issuer Bob_ID.pem --key Bob_private.pem --role niceCoworker \ |
---|
85 | --subject-cert Maryann_ID.pem \ |
---|
86 | --out Bob_niceworker__Maryann_attr.der |
---|
87 | |
---|
88 | # [keyid:alpha].role:evaluatorOf([keyid:Joe]) <-[keyid:Bob] |
---|
89 | # Credential 6 |
---|
90 | creddy --attribute \ |
---|
91 | --issuer Alpha_ID.pem --key Alpha_private.pem --role "$evaluator_j" \ |
---|
92 | --subject-cert Bob_ID.pem \ |
---|
93 | --out Alpha_evaluator_j__Bob_attr.der |
---|
94 | |
---|
95 | # [keyid:Bob].role:goodPerformance <- [keyid:Joe]) |
---|
96 | # Credential 7 |
---|
97 | creddy --attribute \ |
---|
98 | --issuer Bob_ID.pem --key Bob_private.pem --role goodPerformance \ |
---|
99 | --subject-cert Joe_ID.pem \ |
---|
100 | --out Bob_goodperformance__Joe_attr.der |
---|
101 | |
---|
102 | |
---|
103 | ##################################################################### |
---|
104 | # |
---|
105 | # alpha.payRaise <- alpha.evaluatorOf(this).goodPerformance & |
---|
106 | # alpha.managerOf(this).niceCoworker |
---|
107 | # [keyid:alpha].role:payRaise <- |
---|
108 | # [keyid:alpha].role:evaluatorOf([principal:?this]).role:goodPerformance & |
---|
109 | # [keyid:alpha].role:managerOf([principal:?this]).role:niceCoworker |
---|
110 | # |
---|
111 | # alpha.managerOf(this) <- alpha.evaluatorOf(this) |
---|
112 | # [keyid:alpha].role:managerOf([principal:?this])<- |
---|
113 | # [keyid:alpha].role:evaluatorOf([principal:?this]) |
---|
114 | # |
---|
115 | # alpha.evaluatorOf(Maryann)<-Bob |
---|
116 | # [keyid:alpha].role:evaluatorOf([keyid:Maryann]) <-[keyid:Bob] |
---|
117 | # Bob.goodPerformance<-Maryann |
---|
118 | # [keyid:Bob].role:goodPerformance <- [keyid:Maryann]) |
---|
119 | # Bob.niceCoworker<-Maryann |
---|
120 | # [keyid:Bob].role:niceCoworker <- [keyid:Maryann]) |
---|
121 | # |
---|
122 | # alpha.evaluatorOf(Joe)<-Bob |
---|
123 | # [keyid:alpha].role:evaluatorOf([keyid:Joe]) <-[keyid:Bob] |
---|
124 | # Bob.goodPerformance<-Joe |
---|
125 | # [keyid:Bob].role:goodPerformance <- [keyid:Joe]) |
---|