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
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
def test_detached_signatures(self): self.assertEqual(get_detached_signatures(["mar", "gpg", "pgp"]), [("gpg", ".asc", "text/plain")])
def test_detached_signatures(self): self.assertEqual( get_detached_signatures(["mar", "gpg", "pgp"]), [("gpg", ".asc", "text/plain")] )