def issue_certificates(conf, interactive=False):
    # check if issuance address has not been revoked!
    # TODO: REVOKE ADDRESS CMD

    pdf_utils.add_metadata_only_to_pdf_certificates(conf, interactive)

    # get certificate file list here (to ensure it is identical to both
    # 'hash_certificates' and 'insert_proof_to_certificates')
    certificates_directory = os.path.join(conf.working_directory,
                                          conf.certificates_directory)
    cert_files = glob.glob(certificates_directory + os.path.sep +
                           "*.[pP][dD][fF]")

    cert_hashes = pdf_utils.hash_certificates(cert_files)
    cp = prepare_chainpoint_tree(cert_hashes)

    # create OP_RETURN in bytes
    if conf.expiry_date:
        op_return_bstring = cred_protocol.issue_abs_expiry_cmd(
            conf.issuer_identifier, cp.get_merkle_root(), conf.expiry_date)
    else:
        op_return_bstring = cred_protocol.issue_cmd(conf.issuer_identifier,
                                                    cp.get_merkle_root())

    txid = publish_hash.issue_op_return(conf, op_return_bstring, interactive)
    insert_proof_to_certificates(conf, cp, txid, cert_files, interactive)

    return txid
def main():
    if sys.version_info.major < 3:
        sys.stderr.write('Python 3 is required!')
        sys.exit(1)

    conf = load_config()

    # check if issuance address has not been revoked!
    # TODO: REVOKE ADDRESS CMD

    pdf_utils.populate_pdf_certificates(conf)

    # get certificate file list here (to ensure it is identical to both
    # 'hash_certificates' and 'insert_proof_to_certificates'
    certificates_directory = os.path.join(conf.working_directory,
                                          conf.certificates_directory)
    cert_files = glob.glob(certificates_directory + os.path.sep + "*.pdf")

    cert_hashes = pdf_utils.hash_certificates(cert_files)
    cp = prepare_chainpoint_tree(cert_hashes)

    # create OP_RETURN in hex
    op_return_hex = cred_protocol.issue_cmd(conf.issuer_identifier,
                                            cp.get_merkle_root())
    txid = publish_hash.issue_op_return(conf, op_return_hex)
    insert_proof_to_certificates(conf, cp, txid, cert_files)
    print('\nTx hash: {}'.format(txid))