예제 #1
0
def sign_and_save_db_signatures(kwargs):
    for folder in kwargs["codesigning_folders"]:
        # Generate tgz
        temp_folder = folder + "/db"
        output_tgz_file = temp_folder + ".tgz"
        codesigning_common.check_for_tgz(temp_folder, output_tgz_file)
        db_file = folder + "/" + codesigning_common.DB_NAME
        shutil.copyfile(db_file, temp_folder + "/" + os.path.basename(db_file))
        codesigning_common.create_tgz(temp_folder, output_tgz_file)

        # Send to server
        kwargs["tgzfile"] = output_tgz_file
        response = codesigning_common.sign_files(kwargs)
        if response["error"] != 0:
            logging.error(
                "Error message from server when signing codesigning DB: %s" %
                response["msg"])
            logging.error("DB at %s" % db_file)
            sys.exit(codesigning_common.SERVER_ERROR)
        os.remove(output_tgz_file)
        signature_b64 = response["signatures"][0]["signature"]
        signature = codesigning_common.b64_decode(signature_b64)

        # Save to file
        signature_file_name = folder + "/" + codesigning_common.DB_SIG_NAME
        signature_file = open(signature_file_name, "w+b")
        signature_file.write(signature)
예제 #2
0
def create_tgzs(kwargs):
    # Copy files into temp_folder and then create tgzs

    # Check if temporary folder or tgz file exists already
    tar_list = []
    for folder in kwargs["codesigning_folders"]:
        temp_folder = folder + "/tgz"
        output_tgz_file = temp_folder + ".tgz"
        codesigning_common.check_for_tgz(temp_folder, output_tgz_file)
        tar_list.append({"folder": temp_folder, "target": output_tgz_file})

    rows = codesigning_common.read_csv(kwargs["csv"])
    # Copy files into temp folders
    for row in rows:
        relative_path = row[1]
        absolute_path = row[2]
        src = os.path.join(kwargs["cwd"], relative_path)
        if not os.path.isfile(src):
            logging.warning("Cannot find file " + relative_path)
            continue
        platform = get_first_dir(relative_path)
        if platform == None:
            continue
        if platform == "shared":
            for folder in kwargs["codesigning_folders"]:
                temp_folder = folder + "/tgz"
                dst = temp_folder + absolute_path
                codesigning_common.copy_file(src, dst)
        else:
            temp_folder = os.path.join(kwargs["cwd"],
                                       platform) + "/.qcodesigning/tgz"
            dst = temp_folder + absolute_path
            codesigning_common.copy_file(src, dst)
    for tar_task in tar_list:
        codesigning_common.create_tgz(tar_task["folder"], tar_task["target"])
예제 #3
0
def create_tgz(kwargs):
    # Copy files into temp_folder and then create tgzs
    # Check if temporary folder or tgz file exists already
    temp_folder = kwargs["codesigning_folder"] + "/tgz"
    output_tgz_file = temp_folder + ".tgz"
    codesigning_common.check_for_tgz(temp_folder,output_tgz_file)

    rows = codesigning_common.read_csv(kwargs["csv"])
    # Copy files into temp folders
    for row in rows:
        relative_path = row[1]
        if row[2] == "":
            absolute_path = relative_path
        else:
            absolute_path = row[2]
        src = os.path.join(kwargs["cwd"], kwargs["srcpath"])
        src = src + relative_path
        if not os.path.isfile(src):
            if (kwargs["srcpath"] != kwargs["buildpath"]):
                src1 = os.path.join(kwargs["cwd"], kwargs["srcpath"])
                src1 = src1 + relative_path
                if not os.path.isfile(src1):
                    logging.warning("Cannot find file " + src)
                    logging.warning("Cannot find file " + src1)
                    continue
            else:
                logging.warning("Cannot find file " + src)
                continue
        dst = temp_folder + absolute_path
        codesigning_common.copy_file(src, dst)
    codesigning_common.create_tgz(temp_folder,output_tgz_file)
예제 #4
0
def create_tgz(kwargs):
    # Copy files into temp_folder and then create tgzs
    # Check if temporary folder or tgz file exists already
    temp_folder = kwargs["codesigning_folder"] + "/tgz"
    output_tgz_file = temp_folder + ".tgz"
    codesigning_common.check_for_tgz(temp_folder, output_tgz_file)

    rows = codesigning_common.read_csv(kwargs["csv"])
    # Copy files into temp folders
    for row in rows:
        relative_path = row[1]
        if row[2] == "":
            absolute_path = relative_path
        else:
            absolute_path = row[2]
        src = os.path.join(kwargs["cwd"], kwargs["srcpath"])
        src = os.path.join(src, relative_path.lstrip('/'))
        if not os.path.isfile(src):
            if (kwargs["srcpath"] != kwargs["buildpath"]):
                src1 = os.path.join(kwargs["cwd"], kwargs["srcpath"])
                src1 = os.path.join(src1, relative_path.lstrip('/'))
                if not os.path.isfile(src1):
                    logging.warning("Cannot find file " + src)
                    logging.warning("Cannot find file " + src1)
                    continue
            else:
                logging.warning("Cannot find file " + relative_path)
                continue
        dst = os.path.join(temp_folder, absolute_path.lstrip('/'))
        codesigning_common.copy_file(src, dst)
    codesigning_common.create_tgz(temp_folder, output_tgz_file)
예제 #5
0
def sign_and_save_db_signature(kwargs):
    # Generate tgz
    temp_folder = kwargs["codesigning_folder"] + "/db"
    output_tgz_file = temp_folder + ".tgz"
    codesigning_common.check_for_tgz(temp_folder,output_tgz_file)
    shutil.copyfile(kwargs["db"], temp_folder + "/" + os.path.basename(kwargs["db"]))
    codesigning_common.create_tgz(temp_folder, output_tgz_file)

    # Send to server
    kwargs["tgzfile"] = output_tgz_file
    response = codesigning_common.sign_files(kwargs)
    if response["error"] != 0:
        logging.error("Error message from server when signing codesigning DB: %s" % response["msg"])
        logging.error("DB at %s" % kwargs["db"])
        sys.exit(codesigning_common.SERVER_ERROR)
    os.remove(output_tgz_file)
    signature_b64 = response["signatures"][0]["signature"]
    signature = codesigning_common.b64_decode(signature_b64)

    # Save to file
    signature_file_name = kwargs["codesigning_folder"] + "/" + codesigning_common.DB_SIG_NAME
    signature_file = open(signature_file_name, "w+b")
    signature_file.write(signature)
    signature_file.close()