NTRU_IoT/legacy-code/test/check_common.c

65 lines
1.3 KiB
C
Raw Permalink Normal View History

2022-02-01 11:45:47 -05:00
#include <check.h>
#include "ntru_crypto.h"
#include "ntru_crypto_drbg.h"
#include "test_common.h"
#include "check_common.h"
void
test_drbg_setup(void)
{
uint32_t rc;
rc = ntru_crypto_drbg_external_instantiate(
(RANDOM_BYTES_FN) &randombytes, &drbg);
ck_assert_uint_eq(rc, DRBG_RESULT(DRBG_OK));
}
void
test_drbg_teardown(void)
{
uint32_t rc;
rc = ntru_crypto_drbg_uninstantiate(drbg);
ck_assert_uint_eq(rc, DRBG_RESULT(DRBG_OK));
}
uint8_t *
ntru_ck_malloc(NTRU_CK_MEM *obj, size_t size)
{
uint32_t i;
obj->_alloc = (uint8_t *)malloc(size+32);
ck_assert_ptr_ne(obj->_alloc, NULL);
/* Fill first 16 bytes with random data */
randombytes(obj->_alloc, 16);
/* Fill last 16 bytes with bit-wise negation of first 16 */
for(i=0; i<16; i++)
{
obj->_alloc[16+size+i] = ~(obj->_alloc[i]);
}
obj->ptr = obj->_alloc+16;
obj->len = size;
return obj->ptr;
}
void
ntru_ck_mem_ok(NTRU_CK_MEM *obj)
{
uint32_t i;
uint8_t r=0;
/* check that xor of first 16 bytes with last 16 bytes gives all 1s */
for(i=0; i<16; i++)
{
r |= (obj->_alloc[i] ^ obj->_alloc[16 + obj->len + i]) + 1;
}
ck_assert_uint_eq(r, 0);
}
void
ntru_ck_mem_free(NTRU_CK_MEM *obj)
{
free(obj->_alloc);
obj->ptr = NULL;
obj->len = 0;
}