Пример #1
0
 def download_and_sign_file(self, task_id, run_id, url, checksum, cert_type,
                            signing_formats, work_dir):
     # TODO: better parsing
     filename = urlparse.urlsplit(url).path.split("/")[-1]
     abs_filename = os.path.join(work_dir, filename)
     log.debug("Downloading %s", url)
     r = requests.get(url)
     r.raise_for_status()
     with open(abs_filename, 'wb') as fd:
         for chunk in r.iter_content(4096):
             fd.write(chunk)
     log.debug("Done")
     got_checksum = get_hash(abs_filename)
     if not got_checksum == checksum:
         log.debug("Checksum mismatch, cleaning up...")
         raise ChecksumMismatchError("Expected {}, got {} for {}".format(
             checksum, got_checksum, url))
     log.debug("Signing %s", filename)
     self.sign_file(work_dir, filename, cert_type, signing_formats)
     self.create_artifact(task_id, run_id, "public/env/%s" % filename,
                          abs_filename)
     detached_signatures = []
     for s_type, s_ext, s_mime in get_detached_signatures(signing_formats):
         d_filename = "{filename}{ext}".format(filename=filename, ext=s_ext)
         d_abs_filename = os.path.join(work_dir, d_filename)
         self.create_artifact(task_id,
                              run_id,
                              "public/env/%s" % d_filename,
                              d_abs_filename,
                              content_type=s_mime)
         detached_signatures.append((s_type, d_filename))
     return abs_filename, detached_signatures
Пример #2
0
 def download_and_sign_file(self, task_id, run_id, url, checksum, cert_type,
                            signing_formats, work_dir):
     # TODO: better parsing
     filename = urlparse.urlsplit(url).path.split("/")[-1]
     abs_filename = os.path.join(work_dir, filename)
     log.debug("Downloading %s", url)
     r = requests.get(url)
     r.raise_for_status()
     with open(abs_filename, 'wb') as fd:
         for chunk in r.iter_content(4096):
             fd.write(chunk)
     log.debug("Done")
     got_checksum = get_hash(abs_filename)
     if not got_checksum == checksum:
         log.debug("Checksum mismatch, cleaning up...")
         raise ChecksumMismatchError("Expected {}, got {} for {}".format(
             checksum, got_checksum, url
         ))
     log.debug("Signing %s", filename)
     self.sign_file(work_dir, filename, cert_type, signing_formats)
     self.create_artifact(task_id, run_id, "public/env/%s" % filename,
                          abs_filename)
     detached_signatures = []
     for s_type, s_ext, s_mime in get_detached_signatures(signing_formats):
         d_filename = "{filename}{ext}".format(filename=filename,
                                               ext=s_ext)
         d_abs_filename = os.path.join(work_dir, d_filename)
         self.create_artifact(task_id, run_id, "public/env/%s" % d_filename,
                              d_abs_filename, content_type=s_mime)
         detached_signatures.append((s_type, d_filename))
     return abs_filename, detached_signatures
Пример #3
0
 def test_detached_signatures(self):
     self.assertEqual(get_detached_signatures(["mar", "gpg", "pgp"]),
                      [("gpg", ".asc", "text/plain")])
Пример #4
0
 def test_detached_signatures(self):
     self.assertEqual(
         get_detached_signatures(["mar", "gpg", "pgp"]),
         [("gpg", ".asc", "text/plain")]
     )