diff --git a/get_algos.py b/compile_all.py similarity index 65% rename from get_algos.py rename to compile_all.py index d30b604..429ae54 100755 --- a/get_algos.py +++ b/compile_all.py @@ -6,8 +6,7 @@ import shutil import random import subprocess -def bench(algo_dir, template_dir="templates/linux"): - print(algo_dir) +def build(algo_dir, template_dir="templates/linux"): build_dir = None while build_dir is None: r = "%09d" % random.randint(0, 999999999) @@ -40,35 +39,41 @@ def bench(algo_dir, template_dir="templates/linux"): else: raise Exception("I don't know what %s is" % src) + env = os.environ + env['SRC_FILES'] = ' '.join(cfiles) + env['HDR_FILES'] = ' '.join(hfiles) + wd = os.getcwd() try: - env = os.environ - - env['SRC_FILES'] = ' '.join(cfiles) - env['HDR_FILES'] = ' '.join(hfiles) - os.chdir(build_dir) if os.path.isfile('./configure'): - p = subprocess.Popen(["./configure"], env=env) - compout, comperr = p.communicate() - print(compout) - print("---") - print(comperr) + p = subprocess.Popen(["./configure"]) + p.wait() + assert p.returncode == 0 pargs = ['make'] - p = subprocess.Popen(pargs, env=env) - compout, comperr = p.communicate() - print(compout) - print("---") - print(comperr) + p = subprocess.Popen(['make']) + p.wait() + assert p.returncode == 0 finally: os.chdir(wd) - # shutil.rmtree(build_dir) - - exit(0) # stop immediately for now - + return build_dir + +def find_test_vectors(d): + kat = None + while kat is None: + if d == '': + raise Exception("Test vector not found") + for f in os.listdir(d): + if f.startswith("LWC_AEAD_KAT_") and f.endswith(".txt"): + if kat is not None: + raise Exception("Multiple test vectors?") + kat = f + d = os.path.split(d)[0] + kat = os.path.join(d, kat) + return kat def main(argv): submissions_dir = "all-lwc-submission-files" @@ -78,20 +83,51 @@ def main(argv): print("Using template %s" % template_dir) subs = os.listdir(submissions_dir) - files = set() + # get all the submissions by looking for files named "encrypt.c" + files = [] for submission in subs: implementations_dir = os.path.join(submissions_dir, submission, "Implementations", "crypto_aead") + if not os.path.isdir(implementations_dir): + continue + + if "NOT ACCEPTED" in implementations_dir: + continue + + print() + print("### %s ###" % submission) + + c = 0 # r=root, d=directories, f = files for r, d, f in os.walk(implementations_dir): for file in f: - if file == "encrypt.c": + if file == "api.h": f = os.path.join(r, file) d = os.path.split(f)[0] - bench(d, template_dir) assert os.path.isdir(d) - files.add(d) + print(d) + t = find_test_vectors(d) + print(t) + files.append(d) + c += 1 + + if c == 0: + raise Exception("No implementations found") + + + + # For testing, we only do the first + files = files[:1] + + if os.path.isdir('build'): + shutil.rmtree('build') + + print() + + for d in files: print() + print(d) + b = build(d) if __name__ == "__main__": diff --git a/templates/linux/configure b/templates/linux/configure index 7a693aa..bfeb1ac 100755 --- a/templates/linux/configure +++ b/templates/linux/configure @@ -1,3 +1,4 @@ #!/bin/bash +echo "test ./configure has been run" diff --git a/templates/linux/main.c b/templates/linux/main.c index 01ab177..53d612a 100644 --- a/templates/linux/main.c +++ b/templates/linux/main.c @@ -4,6 +4,7 @@ #include #include #include "crypto_aead.h" +#include "api.h" #ifndef KEY_LENGTH #define KEY_LENGTH 16