Commit 050dcc18 authored by Michael Hamburg's avatar Michael Hamburg

test/bench now uses run_for_all_curves<>

parent c0310ba5
......@@ -17,12 +17,27 @@ from decaf_h import decaf_h
from crypto_h import crypto_h
from crypto_hxx import crypto_hxx
from f_field_h import f_field_h
from curve_data import curve_data
root_hxx_code = "\n".join((
"#include <%s>" % name
for name in sorted(gend_files)
if re.match("^decaf/decaf_\d+.hxx$",name)
))
root_hxx_code += """
namespace decaf {
template <template<typename Group> class Run>
void run_for_all_curves() {
"""
root_hxx_code += "\n".join((
" Run<%s>::run();" % cd["cxx_ns"]
for cd in sorted(curve_data.values(), key=lambda x:x["c_ns"])
))
root_hxx_code += """
}
}
"""
decaf_root_hxx = gen_file(
public = True,
per = "global",
......
......@@ -387,6 +387,9 @@ static void micro() {
}; /* template <typename group> struct Benches */
template <typename Group> struct Macro { static void run() { Benches<Group>::macro(); } };
template <typename Group> struct Micro { static void run() { Benches<Group>::micro(); } };
int main(int argc, char **argv) {
bool micro = false;
......@@ -422,13 +425,10 @@ int main(int argc, char **argv) {
strobe.encrypt_no_auth(Buffer(b1024,1024),Buffer(b1024,1024));
}
Benches<IsoEd25519>::micro();
Benches<Ed448Goldilocks>::micro();
run_for_all_curves<Micro>();
}
Benches<IsoEd25519>::macro();
Benches<Ed448Goldilocks>::macro();
run_for_all_curves<Macro>();
printf("\n");
Benchmark::calib();
......
......@@ -134,27 +134,21 @@ static void test_crypto() {
}
}
}; /* template<GroupId GROUP> */
static void run() {
printf("Testing %s:\n",Group::name());
test_arithmetic();
test_elligator();
test_ec();
test_cfrg();
test_crypto();
printf("\n");
}
}; /* template<GroupId GROUP> struct Tests */
int main(int argc, char **argv) {
(void) argc; (void) argv;
VALGRIND_MAKE_MEM_UNDEFINED(undef_str, strlen(undef_str));
printf("Testing %s:\n",IsoEd25519::name());
Tests<IsoEd25519>::test_arithmetic();
Tests<IsoEd25519>::test_elligator();
Tests<IsoEd25519>::test_ec();
Tests<IsoEd25519>::test_cfrg();
Tests<IsoEd25519>::test_crypto();
printf("\n");
printf("Testing %s:\n", Ed448Goldilocks::name());
Tests<Ed448Goldilocks>::test_arithmetic();
Tests<Ed448Goldilocks>::test_elligator();
Tests<Ed448Goldilocks>::test_ec();
Tests<Ed448Goldilocks>::test_cfrg();
Tests<Ed448Goldilocks>::test_crypto();
run_for_all_curves<Tests>();
return 0;
}
......@@ -489,6 +489,20 @@ static void test_cfrg_vectors() {
}
}
static void run() {
printf("Testing %s:\n",Group::name());
test_arithmetic();
test_elligator();
test_ec();
test_cfrg_crypto();
test_cfrg_vectors();
test_crypto();
printf("\n");
}
}; /* template<GroupId GROUP> struct Tests */
template<> const uint8_t Tests<IsoEd25519>::rfc7748_1[32] = {
......@@ -566,30 +580,10 @@ const uint8_t elli_patho_448[56] = {
};
template<> const Block Tests<Ed448Goldilocks>::elli_patho(elli_patho_448,56);
template<> const Block Tests<IsoEd25519>::elli_patho(NULL,0);
int main(int argc, char **argv) {
(void) argc; (void) argv;
printf("Testing %s:\n",IsoEd25519::name());
Tests<IsoEd25519>::test_arithmetic();
Tests<IsoEd25519>::test_elligator();
Tests<IsoEd25519>::test_ec();
Tests<IsoEd25519>::test_cfrg_crypto();
Tests<IsoEd25519>::test_cfrg_vectors();
Tests<IsoEd25519>::test_crypto();
printf("\n");
printf("Testing %s:\n", Ed448Goldilocks::name());
Tests<Ed448Goldilocks>::test_arithmetic();
Tests<Ed448Goldilocks>::test_elligator();
Tests<Ed448Goldilocks>::test_ec();
Tests<Ed448Goldilocks>::test_cfrg_crypto();
Tests<Ed448Goldilocks>::test_cfrg_vectors();
Tests<Ed448Goldilocks>::test_crypto();
run_for_all_curves<Tests>();
if (passing) printf("Passed all tests.\n");
return passing ? 0 : 1;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment