/* * Copyright (C) 2018 Kaspar Schleiser * * This file is subject to the terms and conditions of the GNU Lesser * General Public License v2.1. See the file LICENSE in the top level * directory for more details. */ /** * @ingroup unittests * @{ * * @file * @brief qDSA crypto library tests * * @author Kaspar Schleiser * * @} */ #include "embUnit.h" #include "random.h" #include "sign.h" static const unsigned char m[] = "0123456789abcdef"; #define SMLEN (sizeof(m) + 64) static unsigned char sm[SMLEN]; static unsigned char m_result[sizeof(m)]; static unsigned char sk[64]; static unsigned char pk[32]; static void setUp(void) { /* Initialize */ random_init(0); } static void tearDown(void) { /* Finalize */ } static void test_qDSA_sign_verify(void) { unsigned long long smlen; random_bytes(sk, 32); keypair(pk, sk); sign(sm, &smlen, m, sizeof(m), pk, sk); TEST_ASSERT_EQUAL_INT(SMLEN, smlen); TEST_ASSERT_EQUAL_STRING("0123456789abcdef", (const char *)(sm + 64)); TEST_ASSERT_EQUAL_INT(0, verify(m_result, 0, sm, smlen, pk)); TEST_ASSERT_EQUAL_STRING("0123456789abcdef", (const char *)m_result); sm[70] = 'x'; TEST_ASSERT_EQUAL_INT(1, verify(m_result, 0, sm, smlen, pk)); } Test *tests_qDSA(void) { EMB_UNIT_TESTFIXTURES(fixtures) { new_TestFixture(test_qDSA_sign_verify), }; EMB_UNIT_TESTCALLER(qDSA_tests, setUp, tearDown, fixtures); return (Test*)&qDSA_tests; } int main(void) { TESTS_START(); TESTS_RUN(tests_qDSA()); TESTS_END(); return 0; }