source: examples/python_tests/acme_friend_rt1/query.py @ 11ca336

mei_rt2
Last change on this file since 11ca336 was 646e57e, checked in by Mei <mei@…>, 12 years ago

1) add partial proof

  • Property mode set to 100755
File size: 3.7 KB
Line 
1#!/usr/bin/env python
2
3"""
4Run the queries described in README
5
6cmd1:env keystore=`pwd` ./query.py
7cmd2: env ABAC_CN=1 keystore=`pwd` ./query.py
8"""
9
10import os
11import ABAC
12
13ctxt = ABAC.Context()
14ctxt.set_no_partial_proof()
15
16# Keystore is the directory containing the principal credentials.
17# Load existing principals and/or policy credentials
18if (os.environ.has_key("keystore")) :
19    keystore=os.environ["keystore"]
20    ctxt.load_directory(keystore)
21else:
22    print("keystore is not set...")
23    exit(1)
24
25# extract principal's keyid from local principal cert files
26acmeID=ABAC.ID("Acme_ID.pem")
27acmeID.id_load_privkey_file("Acme_private.pem");
28acme=acmeID.id_keyid()
29
30coyoteID=ABAC.ID("Coyote_ID.pem")
31coyoteID.id_load_privkey_file("Coyote_private.pem");
32coyote=coyoteID.id_keyid()
33
34roadrunnerID=ABAC.ID("Roadrunner_ID.pem")
35roadrunnerID.id_load_privkey_file("Roadrunner_private.pem");
36roadrunner=roadrunnerID.id_keyid()
37
38jackrabbitID=ABAC.ID("Jackrabbit_ID.pem")
39jackrabbitID.id_load_privkey_file("Jackrabbit_private.pem");
40jackrabbit=jackrabbitID.id_keyid()
41
42##########################################################################
43# dump the loaded principals/policies
44#
45out = ctxt.context_principals()
46print "\n...final principal set..."
47for x in out[1]:
48    print "%s " % x.string()
49out = ctxt.context_credentials()
50print "\n...final policy attribute set..."
51for c in out[1]:
52    print "%s <- %s" % (c.head_string(), c.tail_string())
53
54##########################################################################
55# is coyote a friend of roadrunner?
56# role =[keyid:Acme].role:friendof([keyid:Roadrunner])
57# p= [keyid:Coyote]
58param=ABAC.DataTerm(roadrunnerID)
59role = ABAC.Role(acme,"friendof")
60role.role_add_data_term(param)
61p = ABAC.Role(coyote)
62print "\n===bad============ Acme.friendOf(Roadrunner) <- Coyote"
63out = ctxt.query(role, p)
64
65for c in out[1]:
66    print "%s <- %s" % (c.head_string(), c.tail_string())
67
68##########################################################################
69# is jackrabbit a friend of roadrunner ?
70# role =[keyid:Acme].role:friendof([keyid:Roadrunner])
71# p= [keyid:Jackrabbit]
72param=ABAC.DataTerm(roadrunnerID)
73role = ABAC.Role(acme,"friendof")
74role.role_add_data_term(param)
75p = ABAC.Role(jackrabbit)
76print "\n===good============ Acme.friendOf(Roadrunner) <- Jackrabbit"
77out = ctxt.query(role, p)
78
79for c in out[1]:
80    print "%s <- %s" % (c.head_string(), c.tail_string())
81
82
83##########################################################################
84# is jackrabbit a preferred_customer of Acme ?
85# role =[keyid:Acme].role:preferred_customer
86# p =[keyid:Jackrabbit]
87role = ABAC.Role(acme,"preferred_customer")
88p = ABAC.Role(jackrabbit)
89print "\n===good============ Acme.preferred_customer <- Jackrabbit"
90out = ctxt.query(role, p)
91
92for c in out[1]:
93    print "%s <- %s" % (c.head_string(), c.tail_string())
94
95##########################################################################
96# is coyote a preferred_customer of Acme ?
97# role =[keyid:Acme].role:preferred_customer
98# p =[keyid:Coyote]
99role = ABAC.Role(acme,"preferred_customer")
100p = ABAC.Role(coyote)
101print "\n===good============ Acme.preferred_customer <- Coyote"
102out = ctxt.query(role, p)
103
104for c in out[1]:
105    print "%s <- %s" % (c.head_string(), c.tail_string())
106
107
108##########################################################################
109# is blah_blah a preferred_customer of Acme ?
110# role =[keyid:Acme].role:preferred_customer
111# p =[keyid:badCoyote]
112role = ABAC.Role(acme,"preferred_customer")
113# some random SHA keyid value
114badcoyote="1fb66793d453226f0b93a48c7f6ae0d51632e628"
115p = ABAC.Role(badcoyote)
116print "\n===bad============ Acme.preferred_customer <- badcoyote"
117out = ctxt.query(role, p)
118
119for c in out[1]:
120    print "%s <- %s" % (c.head_string(), c.tail_string())
121
Note: See TracBrowser for help on using the repository browser.