# to perform this encoding.
class Credential(Certificate):
+ gidOriginCaller = None
gidCaller = None
gidObject = None
lifeTime = None
def __init__(self, create=False, subject=None, string=None, filename=None):
Certificate.__init__(self, create, subject, string, filename)
+ ## set the GID of the original caller
+ #
+ # @param gid GID object of the original caller
+ def set_gid_origin_caller(self, gid):
+ self.gidOriginCaller = gid
+
+ ##
+ # get the GID of the object
+
+ def get_gid_origin_caller(self):
+ if not self.gidOriginCaller:
+ self.decode()
+ return self.gidOriginCaller
+
##
# set the GID of the caller
#
def set_gid_caller(self, gid):
self.gidCaller = gid
+ # gid origin caller is the caller's gid by default
+ self.gidOriginCaller = gid
##
# get the GID of the object
# done immediately before signing the credential.
def encode(self):
- dict = {"gidCaller": None,
+ dict = {"gidOriginCaller": None,
+ "gidCaller": None,
"gidObject": None,
"lifeTime": self.lifeTime,
"privileges": None,
"delegate": self.delegate}
+ if self.gidOriginCaller:
+ dict["gidOriginCaller"] = self.gidOriginCaller.save_to_string(save_parents=True)
if self.gidCaller:
dict["gidCaller"] = self.gidCaller.save_to_string(save_parents=True)
if self.gidObject:
else:
self.privileges = None
+ gidOriginCallerStr = dict.get("gidOriginCaller", None)
+ if gidOriginCallerStr:
+ self.gidOriginCaller = GID(string=gidOriginCallerStr)
+ else:
+ self.gidOriginCaller = None
+
gidCallerStr = dict.get("gidCaller", None)
if gidCallerStr:
self.gidCaller = GID(string=gidCallerStr)
print " privs:", self.get_privileges().save_to_string()
+ print " gidOriginCaller:"
+ gidOriginCaller = self.get_gid_origin_caller()
+ if gidOriginCaller:
+ gidOriginCaller.dump(8, dump_parents)
+
print " gidCaller:"
gidCaller = self.get_gid_caller()
if gidCaller: