some stuff
- finish BRANDT_destroy() - fix include mess related to platform.h and brandt_config.h - add first brandt.c testcase
This commit is contained in:
parent
01c2b8d710
commit
fe7b138892
@ -16,9 +16,13 @@ libbrandt_la_LDFLAGS = \
|
|||||||
-version-info 0:0:0
|
-version-info 0:0:0
|
||||||
|
|
||||||
check_PROGRAMS = \
|
check_PROGRAMS = \
|
||||||
test_crypto
|
test_crypto \
|
||||||
|
test_brandt
|
||||||
|
|
||||||
test_crypto_SOURCES = test_crypto.c
|
test_crypto_SOURCES = test_crypto.c
|
||||||
test_crypto_LDADD = libbrandt.la -lgcrypt -lgpg-error -lgnunetutil
|
test_crypto_LDADD = libbrandt.la -lgcrypt -lgpg-error -lgnunetutil
|
||||||
|
|
||||||
|
test_brandt_SOURCES = test_brandt.c
|
||||||
|
test_brandt_LDADD = libbrandt.la -lgcrypt -lgpg-error -lgnunetutil
|
||||||
|
|
||||||
TESTS = $(check_PROGRAMS)
|
TESTS = $(check_PROGRAMS)
|
||||||
|
28
brandt.c
28
brandt.c
@ -20,7 +20,8 @@
|
|||||||
* @author Markus Teich
|
* @author Markus Teich
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "brandt_config.h"
|
#include "platform.h"
|
||||||
|
|
||||||
#include "crypto.h"
|
#include "crypto.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
@ -52,7 +53,7 @@ BRANDT_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
|
|||||||
static void
|
static void
|
||||||
start_auction (void *arg)
|
start_auction (void *arg)
|
||||||
{
|
{
|
||||||
struct BRANDT_Auction *ad = (struct BRANDT_Auction *)arg;
|
// struct BRANDT_Auction *ad = (struct BRANDT_Auction *)arg;
|
||||||
|
|
||||||
/* \todo: broadcast start message to all participants */
|
/* \todo: broadcast start message to all participants */
|
||||||
}
|
}
|
||||||
@ -64,18 +65,18 @@ BRANDT_new (BRANDT_CbBroadcast broadcast,
|
|||||||
void *auction_closure,
|
void *auction_closure,
|
||||||
void **auction_desc,
|
void **auction_desc,
|
||||||
size_t *auction_desc_len,
|
size_t *auction_desc_len,
|
||||||
|
const void *description,
|
||||||
|
uint32_t description_len,
|
||||||
struct GNUNET_TIME_Absolute time_start,
|
struct GNUNET_TIME_Absolute time_start,
|
||||||
struct GNUNET_TIME_Relative time_round,
|
struct GNUNET_TIME_Relative time_round,
|
||||||
void *description,
|
|
||||||
uint32_t description_len,
|
|
||||||
uint16_t num_prices,
|
uint16_t num_prices,
|
||||||
uint16_t m,
|
uint16_t m,
|
||||||
int outcome_public)
|
int outcome_public)
|
||||||
{
|
{
|
||||||
struct BRANDT_Auction *ret = GNUNET_new (struct BRANDT_Auction);
|
struct BRANDT_Auction *ret = GNUNET_new (struct BRANDT_Auction);
|
||||||
struct BRANDT_DescrP *desc = GNUNET_new (struct BRANDT_DescrP);
|
struct BRANDT_DescrP *desc = GNUNET_new (struct BRANDT_DescrP);
|
||||||
struct GNUNET_TIME_Relative until_start;
|
|
||||||
struct GNUNET_HashContext *hc = GNUNET_CRYPTO_hash_context_start ();
|
struct GNUNET_HashContext *hc = GNUNET_CRYPTO_hash_context_start ();
|
||||||
|
struct GNUNET_TIME_Relative until_start;
|
||||||
|
|
||||||
desc->time_start = GNUNET_TIME_absolute_hton (time_start);
|
desc->time_start = GNUNET_TIME_absolute_hton (time_start);
|
||||||
desc->time_round = GNUNET_TIME_relative_hton (time_round);
|
desc->time_round = GNUNET_TIME_relative_hton (time_round);
|
||||||
@ -220,7 +221,22 @@ BRANDT_join (BRANDT_CbBroadcast broadcast,
|
|||||||
void
|
void
|
||||||
BRANDT_destroy (struct BRANDT_Auction *auction)
|
BRANDT_destroy (struct BRANDT_Auction *auction)
|
||||||
{
|
{
|
||||||
GNUNET_SCHEDULER_cancel (auction->task);
|
if (auction->task)
|
||||||
|
GNUNET_SCHEDULER_cancel (auction->task);
|
||||||
|
gcry_mpi_release (auction->round_progress);
|
||||||
|
gcry_mpi_release (auction->x);
|
||||||
|
smc_free1 (auction->y, auction->n);
|
||||||
|
gcry_mpi_point_release (auction->Y);
|
||||||
|
smc_free2 (auction->alpha, auction->n, auction->k);
|
||||||
|
smc_free2 (auction->beta, auction->n, auction->k);
|
||||||
|
smc_free2 (auction->gamma2, auction->n, auction->k);
|
||||||
|
smc_free3 (auction->gamma3, auction->n, auction->n, auction->k);
|
||||||
|
smc_free2 (auction->delta2, auction->n, auction->k);
|
||||||
|
smc_free3 (auction->delta3, auction->n, auction->n, auction->k);
|
||||||
|
smc_free2 (auction->phi2, auction->n, auction->k);
|
||||||
|
smc_free3 (auction->phi3, auction->n, auction->n, auction->k);
|
||||||
|
smc_free1 (auction->tmpa1, auction->k);
|
||||||
|
smc_free1 (auction->tmpb1, auction->k);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
4
brandt.h
4
brandt.h
@ -187,10 +187,10 @@ BRANDT_new (BRANDT_CbBroadcast broadcast,
|
|||||||
void *auction_closure,
|
void *auction_closure,
|
||||||
void **auction_desc,
|
void **auction_desc,
|
||||||
size_t *auction_desc_len,
|
size_t *auction_desc_len,
|
||||||
|
const void *description,
|
||||||
|
uint32_t description_len,
|
||||||
struct GNUNET_TIME_Absolute time_start,
|
struct GNUNET_TIME_Absolute time_start,
|
||||||
struct GNUNET_TIME_Relative time_round,
|
struct GNUNET_TIME_Relative time_round,
|
||||||
void *description,
|
|
||||||
uint32_t description_len,
|
|
||||||
uint16_t num_prices,
|
uint16_t num_prices,
|
||||||
uint16_t m,
|
uint16_t m,
|
||||||
int outcome_public);
|
int outcome_public);
|
||||||
|
15
configure.ac
15
configure.ac
@ -22,8 +22,13 @@ CC=$(echo "${CC}" | sed 's/-std=gnu99/-std=c99/')
|
|||||||
CPP=$(echo "${CPP}" | sed 's/-std=gnu99/-std=c99/')
|
CPP=$(echo "${CPP}" | sed 's/-std=gnu99/-std=c99/')
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_TYPE_PID_T
|
||||||
AC_TYPE_SIZE_T
|
AC_TYPE_SIZE_T
|
||||||
AC_TYPE_UINT16_T
|
AC_TYPE_UINT16_T
|
||||||
|
AC_TYPE_UINT32_T
|
||||||
|
AC_TYPE_UINT64_T
|
||||||
|
AC_TYPE_INTMAX_T
|
||||||
|
AC_TYPE_UINTMAX_T
|
||||||
|
|
||||||
# Checks for libraries.
|
# Checks for libraries.
|
||||||
AC_SEARCH_LIBS([gcry_check_version], [gcrypt], [], [AC_MSG_ERROR([unable to find the gcry_check_version() function from libgcrypt])])
|
AC_SEARCH_LIBS([gcry_check_version], [gcrypt], [], [AC_MSG_ERROR([unable to find the gcry_check_version() function from libgcrypt])])
|
||||||
@ -105,16 +110,6 @@ AC_ARG_ENABLE(linker-hardening,
|
|||||||
LDFLAGS="$LDFLAGS -z relro -z now"
|
LDFLAGS="$LDFLAGS -z relro -z now"
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_TYPE_PID_T
|
|
||||||
AC_TYPE_SIZE_T
|
|
||||||
AC_TYPE_UINT16_T
|
|
||||||
AC_TYPE_UINT32_T
|
|
||||||
AC_TYPE_UINT64_T
|
|
||||||
AC_TYPE_INTMAX_T
|
|
||||||
AC_TYPE_UINTMAX_T
|
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile
|
Makefile
|
||||||
doc/Makefile
|
doc/Makefile
|
||||||
|
16
crypto.c
16
crypto.c
@ -20,15 +20,15 @@
|
|||||||
* @author Markus Teich
|
* @author Markus Teich
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "brandt_config.h"
|
#include "platform.h"
|
||||||
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <gcrypt.h>
|
#include <gcrypt.h>
|
||||||
|
|
||||||
#include "crypto.h"
|
#include "crypto.h"
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
#define CURVE "Ed25519"
|
#define CURVE "Ed25519"
|
||||||
|
|
||||||
|
|
||||||
@ -377,7 +377,7 @@ ec_point_parse (gcry_mpi_point_t dst, const struct ec_mpi *src)
|
|||||||
* @param[in,out] dst The 1 dimensional array to clean up
|
* @param[in,out] dst The 1 dimensional array to clean up
|
||||||
* @param[in] size1 size of the first dimension
|
* @param[in] size1 size of the first dimension
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
smc_free1 (gcry_mpi_point_t *dst, uint16_t size1)
|
smc_free1 (gcry_mpi_point_t *dst, uint16_t size1)
|
||||||
{
|
{
|
||||||
if (NULL == dst)
|
if (NULL == dst)
|
||||||
@ -399,7 +399,7 @@ smc_free1 (gcry_mpi_point_t *dst, uint16_t size1)
|
|||||||
* @return a pointer to the array or NULL on error.
|
* @return a pointer to the array or NULL on error.
|
||||||
* If not used anymore use smc_free2 to reclaim the memory.
|
* If not used anymore use smc_free2 to reclaim the memory.
|
||||||
*/
|
*/
|
||||||
static gcry_mpi_point_t *
|
gcry_mpi_point_t *
|
||||||
smc_init1 (uint16_t size1)
|
smc_init1 (uint16_t size1)
|
||||||
{
|
{
|
||||||
gcry_mpi_point_t *ret;
|
gcry_mpi_point_t *ret;
|
||||||
@ -427,7 +427,7 @@ smc_init1 (uint16_t size1)
|
|||||||
* @param[in] size1 size of the first dimension
|
* @param[in] size1 size of the first dimension
|
||||||
* @param[in] size2 size of the second dimension
|
* @param[in] size2 size of the second dimension
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
smc_free2 (gcry_mpi_point_t **dst, uint16_t size1, uint16_t size2)
|
smc_free2 (gcry_mpi_point_t **dst, uint16_t size1, uint16_t size2)
|
||||||
{
|
{
|
||||||
if (NULL == dst)
|
if (NULL == dst)
|
||||||
@ -451,7 +451,7 @@ smc_free2 (gcry_mpi_point_t **dst, uint16_t size1, uint16_t size2)
|
|||||||
* @return a pointer to the array or NULL on error.
|
* @return a pointer to the array or NULL on error.
|
||||||
* If not used anymore use smc_free2 to reclaim the memory.
|
* If not used anymore use smc_free2 to reclaim the memory.
|
||||||
*/
|
*/
|
||||||
static gcry_mpi_point_t **
|
gcry_mpi_point_t **
|
||||||
smc_init2 (uint16_t size1, uint16_t size2)
|
smc_init2 (uint16_t size1, uint16_t size2)
|
||||||
{
|
{
|
||||||
gcry_mpi_point_t **ret;
|
gcry_mpi_point_t **ret;
|
||||||
@ -490,7 +490,7 @@ smc_init2 (uint16_t size1, uint16_t size2)
|
|||||||
* @param[in] size2 size of the second dimension
|
* @param[in] size2 size of the second dimension
|
||||||
* @param[in] size3 size of the third dimension
|
* @param[in] size3 size of the third dimension
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
smc_free3 (gcry_mpi_point_t ***dst,
|
smc_free3 (gcry_mpi_point_t ***dst,
|
||||||
uint16_t size1,
|
uint16_t size1,
|
||||||
uint16_t size2,
|
uint16_t size2,
|
||||||
@ -519,7 +519,7 @@ smc_free3 (gcry_mpi_point_t ***dst,
|
|||||||
* @return a pointer to the array or NULL on error.
|
* @return a pointer to the array or NULL on error.
|
||||||
* If not used anymore use smc_free3 to reclaim the memory.
|
* If not used anymore use smc_free3 to reclaim the memory.
|
||||||
*/
|
*/
|
||||||
static gcry_mpi_point_t ***
|
gcry_mpi_point_t ***
|
||||||
smc_init3 (uint16_t size1, uint16_t size2, uint16_t size3)
|
smc_init3 (uint16_t size1, uint16_t size2, uint16_t size3)
|
||||||
{
|
{
|
||||||
gcry_mpi_point_t ***ret;
|
gcry_mpi_point_t ***ret;
|
||||||
|
11
crypto.h
11
crypto.h
@ -26,7 +26,6 @@
|
|||||||
#include <gcrypt.h>
|
#include <gcrypt.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "platform.h"
|
|
||||||
#include <gnunet/gnunet_util_lib.h>
|
#include <gnunet/gnunet_util_lib.h>
|
||||||
|
|
||||||
#include "internals.h"
|
#include "internals.h"
|
||||||
@ -42,6 +41,16 @@ struct ec_mpi {
|
|||||||
unsigned char data[256 / 8];
|
unsigned char data[256 / 8];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gcry_mpi_point_t *smc_init1 (uint16_t size1);
|
||||||
|
gcry_mpi_point_t **smc_init2 (uint16_t size1, uint16_t size2);
|
||||||
|
gcry_mpi_point_t ***smc_init3 (uint16_t size1, uint16_t size2, uint16_t size3);
|
||||||
|
void smc_free1 (gcry_mpi_point_t *dst, uint16_t size1);
|
||||||
|
void smc_free2 (gcry_mpi_point_t **dst, uint16_t size1, uint16_t size2);
|
||||||
|
void smc_free3 (gcry_mpi_point_t ***dst,
|
||||||
|
uint16_t size1,
|
||||||
|
uint16_t size2,
|
||||||
|
uint16_t size3);
|
||||||
|
|
||||||
void ec_point_copy (gcry_mpi_point_t dst, const gcry_mpi_point_t src);
|
void ec_point_copy (gcry_mpi_point_t dst, const gcry_mpi_point_t src);
|
||||||
int ec_point_cmp (const gcry_mpi_point_t a, const gcry_mpi_point_t b);
|
int ec_point_cmp (const gcry_mpi_point_t a, const gcry_mpi_point_t b);
|
||||||
void ec_skey_create (gcry_mpi_t skey);
|
void ec_skey_create (gcry_mpi_t skey);
|
||||||
|
44
platform.h
44
platform.h
@ -1,24 +1,25 @@
|
|||||||
/*
|
/* This file is part of libbrandt.
|
||||||
This file is part of TALER
|
* Copyright (C) 2016 GNUnet e.V.
|
||||||
Copyright (C) 2014 Chrisitan Grothoff (and other contributing authors)
|
*
|
||||||
|
* libbrandt is free software: you can redistribute it and/or modify it under
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
terms of the GNU General Public License as published by the Free Software
|
* Foundation, either version 3 of the License, or (at your option) any later
|
||||||
Foundation; either version 3, or (at your option) any later version.
|
* version.
|
||||||
|
*
|
||||||
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
* libbrandt is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
You should have received a copy of the GNU General Public License along with
|
* You should have received a copy of the GNU General Public License along with
|
||||||
TALER; see the file COPYING. If not, If not, see <http://www.gnu.org/licenses/>
|
* libbrandt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file platform.h
|
* @file platform.h
|
||||||
* @brief This file contains the includes and definitions which are used by the
|
* @brief This file was adapted from TALER and contains some magic
|
||||||
* rest of the modules
|
* configuration. It should be included in every compilation as the first
|
||||||
* @author Sree Harsha Totakura <sreeharsha@totakura.in>
|
* include directive, since it sets up defines which are used in other includes.
|
||||||
|
* @author Markus Teich
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef PLATFORM_H_
|
#ifndef PLATFORM_H_
|
||||||
@ -29,11 +30,8 @@
|
|||||||
# define HAVE_USED_CONFIG_H
|
# define HAVE_USED_CONFIG_H
|
||||||
# ifdef HAVE_CONFIG_H
|
# ifdef HAVE_CONFIG_H
|
||||||
# include "brandt_config.h"
|
# include "brandt_config.h"
|
||||||
# endif
|
# endif /* ifdef HAVE_CONFIG_H */
|
||||||
#endif
|
#endif /* ifndef HAVE_USED_CONFIG_H */
|
||||||
|
|
||||||
/* Include the features available for GNU source */
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
|
|
||||||
/* Include GNUnet's platform file */
|
/* Include GNUnet's platform file */
|
||||||
#include <gnunet/platform.h>
|
#include <gnunet/platform.h>
|
||||||
|
124
test_brandt.c
Normal file
124
test_brandt.c
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
/* This file is part of libbrandt.
|
||||||
|
* Copyright (C) 2016 GNUnet e.V.
|
||||||
|
*
|
||||||
|
* libbrandt is free software: you can redistribute it and/or modify it under
|
||||||
|
* the terms of the GNU General Public License as published by the Free Software
|
||||||
|
* Foundation, either version 3 of the License, or (at your option) any later
|
||||||
|
* version.
|
||||||
|
*
|
||||||
|
* libbrandt is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* libbrandt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file test_brandt.c
|
||||||
|
* @brief testing API functions.
|
||||||
|
* @author Markus Teich
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "platform.h"
|
||||||
|
|
||||||
|
#include <gnunet/gnunet_util_lib.h>
|
||||||
|
|
||||||
|
#include "brandt.h"
|
||||||
|
#include "crypto.h"
|
||||||
|
#include "test.h"
|
||||||
|
#include "util.h"
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
run_new_join (void *arg)
|
||||||
|
{
|
||||||
|
int *ret = arg;
|
||||||
|
const char description[] = "test description for test_new_join";
|
||||||
|
struct BRANDT_Auction *ad_seller;
|
||||||
|
struct BRANDT_Auction *ad_bidder;
|
||||||
|
void *desc;
|
||||||
|
size_t desc_len;
|
||||||
|
|
||||||
|
ad_seller = BRANDT_new (NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&desc,
|
||||||
|
&desc_len,
|
||||||
|
description,
|
||||||
|
sizeof (description),
|
||||||
|
GNUNET_TIME_absolute_get (),
|
||||||
|
GNUNET_TIME_UNIT_MINUTES,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
1);
|
||||||
|
if (!ad_seller)
|
||||||
|
{
|
||||||
|
weprintf ("BRANDT_new() failed.");
|
||||||
|
*ret = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ad_bidder = BRANDT_join (NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
desc,
|
||||||
|
desc_len,
|
||||||
|
description,
|
||||||
|
sizeof (description));
|
||||||
|
if (!ad_bidder)
|
||||||
|
{
|
||||||
|
weprintf ("BRANDT_join() failed.");
|
||||||
|
*ret = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BRANDT_destroy (ad_seller);
|
||||||
|
BRANDT_destroy (ad_bidder);
|
||||||
|
|
||||||
|
*ret = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
test_new_join ()
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
GNUNET_SCHEDULER_run (&run_new_join, &ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
static void
|
||||||
|
cleanup_auction_data ()
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < bidders; i++)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
free (ad);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int repeat = 1;
|
||||||
|
struct GNUNET_CRYPTO_EccDlogContext *edc;
|
||||||
|
|
||||||
|
edc = GNUNET_CRYPTO_ecc_dlog_prepare (1024, 16);
|
||||||
|
BRANDT_init (edc);
|
||||||
|
|
||||||
|
RUN (test_new_join);
|
||||||
|
|
||||||
|
for (tests_run = 0; tests_run < repeat; tests_run++)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
GNUNET_CRYPTO_ecc_dlog_release (edc);
|
||||||
|
return ret;
|
||||||
|
}
|
@ -20,13 +20,11 @@
|
|||||||
* @author Markus Teich
|
* @author Markus Teich
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "brandt_config.h"
|
#include "platform.h"
|
||||||
|
|
||||||
/* For testing static functions and variables we include the whole source */
|
/* For testing static functions and variables we include the whole source */
|
||||||
#include "crypto.c"
|
#include "crypto.c"
|
||||||
|
|
||||||
#include "brandt.h"
|
|
||||||
#include "crypto.h"
|
|
||||||
#include "test.h"
|
#include "test.h"
|
||||||
|
|
||||||
|
|
||||||
@ -198,6 +196,7 @@ test_setup_auction_data ()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
#define ROUND(type, oc, index) do { \
|
#define ROUND(type, oc, index) do { \
|
||||||
|
Loading…
Reference in New Issue
Block a user