@@ -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; | |||
} |