From eb93fe133e89210accaed7bf22c00a4168c514cc Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Thu, 2 Jul 2020 22:35:11 +0100 Subject: [PATCH] tuf.api: make expires a property Signed-off-by: Joshua Lock --- tuf/api/metadata.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tuf/api/metadata.py b/tuf/api/metadata.py index 695a468d..92a44baa 100644 --- a/tuf/api/metadata.py +++ b/tuf/api/metadata.py @@ -70,6 +70,10 @@ def signable(self) -> JsonDict: """ raise NotImplementedError() + @property + def expires(self) -> str: + return self.expiration.replace(tzinfo=None).isoformat()+'Z' + def bump_version(self) -> None: self.version = self.version + 1 @@ -138,11 +142,10 @@ def read_from_json(self, filename: str) -> None: tuf.formats.TIMESTAMP_SCHEMA.check_match(self.signed) def signable(self): - expires = self.expiration.replace(tzinfo=None).isoformat()+'Z' filedict = self.signed['meta'] return tuf.formats.build_dict_conforming_to_schema( tuf.formats.TIMESTAMP_SCHEMA, version=self.version, - expires=expires, meta=filedict) + expires=self.expires, meta=filedict) # Update metadata about the snapshot metadata. def update(self, version: int, length: int, hashes: JsonDict): @@ -168,11 +171,9 @@ def read_from_json(self, filename: str) -> None: self.targets_fileinfo[target_role] = tuf.formats.make_metadata_fileinfo(version, length, hashes) def signable(self): - # TODO: probably want to generalise this, a @property.getter in Metadata? - expires = self.expiration.replace(tzinfo=None).isoformat()+'Z' return tuf.formats.build_dict_conforming_to_schema( tuf.formats.SNAPSHOT_SCHEMA, version=self.version, - expires=expires, meta=self.targets_fileinfo) + expires=self.expires, meta=self.targets_fileinfo) # Add or update metadata about the targets metadata. def update(self, rolename: str, version: int, length: Optional[int] = None, hashes: Optional[JsonDict] = None): @@ -192,12 +193,10 @@ def read_from_json(self, filename: str) -> None: self.delegations = self.signed.get('delegations', None) def signable(self): - # TODO: probably want to generalise this, a @property.getter in Metadata? - expires = self.expiration.replace(tzinfo=None).isoformat()+'Z' return tuf.formats.build_dict_conforming_to_schema( tuf.formats.TARGETS_SCHEMA, version=self.version, - expires=expires, + expires=self.expires, targets=self.targets, delegations=self.delegations)