source: examples/python_tests/basic_id/id.py @ 11ca336

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

1) added namespace
2) tweak ?This,
3) allowing linking role/oset as constraining conditions
4) adding access_tests regression testing that uses GENI's access policy
5) added couple multi contexts regression tests
6) add compression/uncompression calls to abac_encode_string/abac_decode_string
(libstrongwan only allows 512 char for attribute rule storage)
7) add attribute_now option to creddy that takes a whole char string for attribute
rule

  • Property mode set to 100755
File size: 3.1 KB
Line 
1#!/usr/bin/env python
2
3"""
4  to test with python
5
6cmd1:env keystore=`pwd` ./id.py
7cmd2:env ABAC_CN=1 keystore=`pwd` ./id.py
8
9"""
10
11import os
12import ABAC
13
14ctxt = ABAC.Context()
15
16print "ABAC version %s" % ctxt.version()
17
18# Keystore is the directory containing the principal credentials.
19# Load existing principals and/or policy credentials
20if (os.environ.has_key("keystore")) :
21    keystore=os.environ["keystore"]
22#    ctxt.load_directory(keystore)
23else:
24    print("keystore is not set...")
25    exit(1) 
26
27out = ctxt.context_principals()
28print "...initial principal set..."
29for x in out[1]:
30    print "%s " % x.string()
31print "\n" 
32
33## case 1
34## creating and writing out using libabac ID
35id=ABAC.ID("Mary", 0)
36print "adding -> %s(good)" % id.id_name()
37id.id_write_cert("Mary_ID.pem")
38id.id_write_privkey("Mary_private.pem")
39## load principal with id/key file pair
40## note, with this, we do not have handle on the keyid
41## to Mary but it will be in the db
42ctxt.load_id_files("Mary_ID.pem","Mary_private.pem")
43
44## case 2
45## creating principal using ID
46id2=ABAC.ID("Jack2", 0)
47print "adding -> %s(good)" % id2.id_name()
48## load principal directly with the ID, no external
49## credential files were created
50ctxt.load_id(id2)
51
52## case 3
53## creating principal using ID
54id3=ABAC.ID("Mark", 0)
55print "adding -> %s(good)" % id3.id_name()
56## write cert and key content to a combo file. One is appended
57## after another
58id3.id_write_privkey("Mark_IDKEY.pem")
59id3.id_write_cert("Mark_IDKEY.pem")
60## load principal in with the combo file with the tandem format
61ctxt.load_id_file("Mark2_IDKEY.pem")
62
63## case 4
64## creating principal using ID
65id4=ABAC.ID("John", 0)
66print "adding -> %s(good,invisible)" % id4.id_name()
67id4.id_write_cert("John_other.pem")
68## load id without the key file
69ctxt.load_id_file("John2_other.pem")
70
71## case 5
72## creating principal using ID
73id5=ABAC.ID("Lori", 0)
74print "adding -> %s(good,nokey)" % id5.id_name()
75## write just cert into the combo file
76id5.id_write_cert("Lori_IDKEY.pem")
77##load principal from a combo file that only contains cert part
78ctxt.load_id_file("Lori2_IDKEY.pem")
79
80## case 6
81## creating principal using ID
82id6=ABAC.ID("Tom", 0)
83print "adding -> %s(bad,nocert)" % id6.id_name()
84## write just key into the combo file
85id6.id_write_privkey("Tom_IDKEY.pem")
86## load principal from combo file that only contains key part
87ctxt.load_id_file("Tom2_IDKEY.pem")
88
89## case 7
90## creating ID using chunk
91## this already created a Tim with private key and
92## stored in the master list
93id7=ABAC.ID("Tim", 0)
94chunk=id7.id_cert_chunk() 
95id7=ABAC.ID_chunk(chunk)
96## load principal from new id file
97ctxt.load_id(id7)
98
99## case 8
100## load directly using chunk
101## this already created a Stanley with private key
102## and stored in the master list
103id8=ABAC.ID("Stanley", 0)
104chunk=id8.id_cert_chunk() 
105## load principal as chunk
106ctxt.load_id_chunk(chunk)
107
108## case 9
109## failure case, loading a non-existing combo file
110print "adding -> Casper(bad,unknown file)"
111ctxt.load_id_file("Casper_IDKEY.pem")
112
113
114print "...final principal set..."
115out = ctxt.context_principals()
116for x in out[1]:
117    print "%s " % x.string()
118print "\n"
119
120#ctxt.context_free_now();
121#ctxt.dump_yap_db()
Note: See TracBrowser for help on using the repository browser.