+ def _get_metadata(self):
+ if os.path.isfile(self.cfg.idp_metadata_file):
+ s = os.stat(self.cfg.idp_metadata_file)
+ if s.st_mtime > time.time() - METADATA_RENEW_INTERVAL:
+ with open(self.cfg.idp_metadata_file) as m:
+ return m.read()
+
+ # Otherwise generate and save
+ idp_cert = Certificate()
+ idp_cert.import_cert(self.cfg.idp_certificate_file,
+ self.cfg.idp_key_file)
+ meta = IdpMetadataGenerator(self.instance_base_url(), idp_cert,
+ timedelta(METADATA_VALIDITY_PERIOD))
+ body = meta.output()
+ with open(self.cfg.idp_metadata_file, 'w+') as m:
+ m.write(body)
+ return body
+