migrate to GNUNET_log

This commit is contained in:
Markus Teich 2016-12-02 09:34:25 +01:00
parent aee7167739
commit 56b43dab7f
7 changed files with 149 additions and 205 deletions

View File

@ -37,12 +37,17 @@ BRANDT_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
/* SECMEM cannot be resized dynamically. We do not know how much we need */
if ((err = gcry_control (GCRYCTL_DISABLE_SECMEM, 0)))
weprintf ("failed to set libgcrypt option DISABLE_SECMEM: %s",
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"failed to set libgcrypt option DISABLE_SECMEM: %s\n",
gcry_strerror (err));
/* ecc is slow otherwise and we don't create long term keys anyway. */
if ((err = gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0)))
weprintf ("failed to set libgcrypt option ENABLE_QUICK_RANDOM: %s",
GNUNET_log_from (
GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"failed to set libgcrypt option ENABLE_QUICK_RANDOM: %s\n",
gcry_strerror (err));
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
@ -110,7 +115,9 @@ BRANDT_bidder_start (struct BRANDT_Auction *auction,
!(buf = handler_out[atype][outcome][msg_init](auction, &buflen)))
{
/** \todo */
weprintf ("wow fail out");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"wow fail out\n");
return;
}
@ -132,7 +139,9 @@ seller_start (void *arg)
ad->n = ad->start (ad->closure);
if (0 == ad->n)
{
weprintf ("no bidders registered for auction");
GNUNET_log_from (GNUNET_ERROR_TYPE_INFO,
"libbrandt",
"no bidders registered for auction\n");
ad->result (ad->closure, NULL, 0);
return;
}
@ -141,7 +150,9 @@ seller_start (void *arg)
struct BRANDT_Result *res = GNUNET_new_array (ad->n,
struct BRANDT_Result);
weprintf ("less bidders than needed, selling for lowest price");
GNUNET_log_from (GNUNET_ERROR_TYPE_INFO,
"libbrandt",
"less bidders than needed, selling for lowest price\n");
for (uint16_t i = 0; i < ad->n; i++)
{
res[i].bidder = i;
@ -237,13 +248,17 @@ BRANDT_parse_desc (const void *auction_desc,
if (sizeof (struct BRANDT_DescrP) != auction_desc_len)
{
weprintf ("auction desc struct size mismatch");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"auction desc struct size mismatch\n");
return -1;
}
if (0 != memcmp (&desc->reserved, &zero, sizeof (desc->reserved)))
{
weprintf ("reserved field in auction description must be zero");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"reserved field in auction description must be zero\n");
return -1;
}
@ -282,7 +297,9 @@ BRANDT_join (BRANDT_CbResult result,
&ret->outcome_public))
{
GNUNET_free (ret);
weprintf ("failed to parse auction description blob");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"failed to parse auction description blob\n");
return NULL;
}
ret->cur_round = msg_init;
@ -378,7 +395,9 @@ advance_round (struct BRANDT_Auction *ad,
if (!handler_out[atype][outcome][ad->cur_round] ||
!(buf = handler_out[atype][outcome][ad->cur_round](ad, &buflen)))
{
weprintf ("failed to create msg %d buffer as seller",
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"failed to create msg %d buffer as seller\n",
ad->cur_round);
return;
}
@ -410,7 +429,10 @@ advance_round (struct BRANDT_Auction *ad,
if (!handler_out[atype][outcome][ad->cur_round] ||
!(buf = handler_out[atype][outcome][ad->cur_round](ad, &buflen)))
{
weprintf ("failed to create msg %d buffer as bidder", ad->cur_round);
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"failed to create msg %d buffer as bidder\n",
ad->cur_round);
return;
}
@ -441,14 +463,18 @@ BRANDT_got_message (struct BRANDT_Auction *auction,
/** \todo: cache out of order messages instead of discarding */
if (ntohl (head->msg_type) != round || ntohl (head->prot_version) != 0)
{
weprintf ("got unexpected message, ignoring...");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"got unexpected message, ignoring...\n");
return;
}
/* check if we already got that round message from the same user */
if (gcry_mpi_test_bit (auction->round_progress, sender))
{
weprintf ("got a duplicate message from user %d", sender);
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"got a duplicate message from user %d\n", sender);
return;
}
@ -459,7 +485,9 @@ BRANDT_got_message (struct BRANDT_Auction *auction,
sender))
{
/** \todo */
weprintf ("wow fail in");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"wow fail in\n");
return;
}
gcry_mpi_set_bit (auction->round_progress, sender);

View File

@ -219,7 +219,9 @@ ec_point_cmp (const gcry_mpi_point_t a, const gcry_mpi_point_t b)
brandt_assert (a && b);
if (!ax || !bx || !ay || !by)
{
weprintf ("could not init point in point_cmp");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"could not init point in point_cmp\n");
return 1;
}
@ -410,8 +412,10 @@ smc_init1 (uint16_t size1)
{
if (NULL == (ret[i] = gcry_mpi_point_new (0)))
{
weprintf ("could not init point in 1 dimensional array. "
"out of memory?");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"could not init point in 1 dimensional array. "
"out of memory?\n");
smc_free1 (ret, size1);
return NULL;
}
@ -464,8 +468,11 @@ smc_init2 (uint16_t size1, uint16_t size2)
{
if (NULL == (ret[i][j] = gcry_mpi_point_new (0)))
{
weprintf ("could not init point in 2 dimensional array. "
"out of memory?");
GNUNET_log_from (
GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"could not init point in 2 dimensional array. "
"out of memory?\n");
smc_free2 (ret, size1, size2);
GNUNET_assert (0);
}
@ -527,8 +534,11 @@ smc_init3 (uint16_t size1, uint16_t size2, uint16_t size3)
{
if (NULL == (ret[i][j][k] = gcry_mpi_point_new (0)))
{
weprintf ("could not init point in 2 dimensional array. "
"out of memory?");
GNUNET_log_from (
GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"could not init point in 2 dimensional array. "
"out of memory?\n");
smc_free3 (ret, size1, size2, size3);
GNUNET_assert (0);
}
@ -651,7 +661,9 @@ smc_recv_keyshare (struct BRANDT_Auction *ad,
if (buflen != (sizeof (struct ec_mpi) + sizeof (*proof1)))
{
weprintf ("wrong size of received key share");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received key share\n");
goto quit;
}
@ -659,7 +671,9 @@ smc_recv_keyshare (struct BRANDT_Auction *ad,
ec_point_parse (y, (struct ec_mpi *)buf);
if (smc_zkp_dl_check (y, proof1))
{
weprintf ("wrong zkp1 for public key share received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp1 for public key share received\n");
goto quit;
}
@ -785,7 +799,9 @@ smc_recv_encrypted_bid (struct BRANDT_Auction *ad,
(0 < ad->m ? 2 : 1) * sizeof (struct proof_2dle)) ||
NULL == (ct = smc_init2 (2, ad->k)))
{
weprintf ("wrong size of received encrypted bid");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received encrypted bid\n");
goto quit;
}
@ -801,7 +817,9 @@ smc_recv_encrypted_bid (struct BRANDT_Auction *ad,
proof3 = (struct proof_0og *)(cur + 2 * sizeof (struct ec_mpi));
if (smc_zkp_0og_check (ad->Y, ct[0][j], ct[1][j], proof3))
{
weprintf ("wrong zkp3 for alpha, beta received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp3 for alpha, beta received\n");
goto quit;
}
gcry_mpi_ec_add (alpha_sum, alpha_sum, ct[0][j], ec_ctx);
@ -825,7 +843,9 @@ smc_recv_encrypted_bid (struct BRANDT_Auction *ad,
ec_gen,
(struct proof_2dle *)cur))
{
weprintf ("wrong zkp2 for alpha, beta received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for alpha, beta received\n");
goto quit;
}
@ -841,8 +861,11 @@ smc_recv_encrypted_bid (struct BRANDT_Auction *ad,
ec_gen,
(struct proof_2dle *)cur))
{
weprintf ("wrong second zkp2 for alpha, beta received. "
"bid not allowed for this user in M+1st price auctions.");
GNUNET_log_from (
GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong second zkp2 for alpha, beta received. "
"bid not allowed for this user in M+1st price auctions.\n");
goto quit;
}
}
@ -1381,7 +1404,5 @@ smc_zkp_0og_check (const gcry_mpi_point_t y,
gcry_mpi_point_release (right);
gcry_mpi_point_release (tmp);
if (ret)
weprintf ("ret: 0x%x", ret);
return ret;
}

View File

@ -226,7 +226,9 @@ fp_priv_recv_outcome (struct BRANDT_Auction *ad,
if (buflen != (ad->n * ad->k *
(2 * sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome\n");
goto quit;
}
@ -243,7 +245,9 @@ fp_priv_recv_outcome (struct BRANDT_Auction *ad,
ad->delta3[sender][i][j],
proof2))
{
weprintf ("wrong zkp2 for gamma, delta received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for gamma, delta received\n");
goto quit;
}
ec_point_copy (ad->gamma3[sender][i][j], gamma);
@ -420,7 +424,10 @@ fp_priv_recv_decryption_seller (struct BRANDT_Auction *ad,
if (buflen != (ad->n * ad->k * (sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome decryption from bidder");
GNUNET_log_from (
GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome decryption from bidder\n");
goto quit;
}
@ -436,7 +443,9 @@ fp_priv_recv_decryption_seller (struct BRANDT_Auction *ad,
ec_gen,
proof2))
{
weprintf ("wrong zkp2 for phi, y received from bidder");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for phi, y received from bidder\n");
goto quit;
}
@ -469,7 +478,10 @@ fp_priv_recv_decryption_bidder (struct BRANDT_Auction *ad,
if (buflen != ((ad->n - 1) * ad->n * ad->k * (sizeof (struct ec_mpi) +
sizeof (*proof2))))
{
weprintf ("wrong size of received outcome decryption from seller");
GNUNET_log_from (
GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome decryption from seller\n");
goto quit;
}
@ -498,7 +510,10 @@ fp_priv_recv_decryption_bidder (struct BRANDT_Auction *ad,
ec_gen,
proof2))
{
weprintf ("wrong zkp2 for phi, y received from seller");
GNUNET_log_from (
GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for phi, y received from seller\n");
goto quit;
}
ec_point_copy (ad->phi3[h][i][j], phi);
@ -554,12 +569,16 @@ fp_priv_determine_outcome (struct BRANDT_Auction *ad,
{
if (-1 != price)
{
weprintf ("multiple winning prices detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"multiple winning prices detected\n");
return NULL;
}
if (-1 != winner)
{
weprintf ("multiple winners detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"multiple winners detected\n");
return NULL;
}
price = j;

View File

@ -216,7 +216,9 @@ fp_pub_recv_outcome (struct BRANDT_Auction *ad,
if (buflen != (ad->k * (2 * sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome\n");
goto quit;
}
@ -231,7 +233,9 @@ fp_pub_recv_outcome (struct BRANDT_Auction *ad,
ad->delta2[sender][j],
proof2))
{
weprintf ("wrong zkp2 for gamma, delta received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for gamma, delta received\n");
goto quit;
}
ec_point_copy (ad->gamma2[sender][j], gamma);
@ -350,7 +354,9 @@ fp_pub_recv_decryption (struct BRANDT_Auction *ad,
if (buflen != (ad->k * (sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome decryption");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome decryption\n");
goto quit;
}
@ -364,7 +370,9 @@ fp_pub_recv_decryption (struct BRANDT_Auction *ad,
ec_gen,
proof2))
{
weprintf ("wrong zkp2 for phi, y received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for phi, y received\n");
goto quit;
}
ec_point_copy (ad->phi2[sender][j], phi);

View File

@ -179,12 +179,16 @@ mp_priv_determine_outcome (struct BRANDT_Auction *ad,
{
if (winners >= max_winners)
{
weprintf ("too many winners detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"too many winners detected\n");
goto fail;
}
if (-1 != price && j != price)
{
weprintf ("multiple winning prices detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"multiple winning prices detected\n");
goto fail;
}
price = j;
@ -201,7 +205,9 @@ mp_priv_determine_outcome (struct BRANDT_Auction *ad,
gcry_mpi_point_release (sum_phi);
if (ad->m <= ad->n && winners < max_winners && -1 != price)
weprintf ("too few winners detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"too few winners detected\n");
if (0 == winners)
goto fail;

View File

@ -267,7 +267,9 @@ mp_pub_recv_outcome (struct BRANDT_Auction *ad,
if (buflen != (ad->k * (2 * sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"wrong size of received outcome\n");
goto quit;
}
@ -282,7 +284,9 @@ mp_pub_recv_outcome (struct BRANDT_Auction *ad,
ad->delta3[sender][0][j],
proof2))
{
weprintf ("wrong zkp2 for gamma, delta received");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"wrong zkp2 for gamma, delta received\n");
goto quit;
}
ec_point_copy (ad->gamma3[sender][0][j], gamma);
@ -411,7 +415,9 @@ mp_pub_recv_decryption (struct BRANDT_Auction *ad,
if (buflen != (2 * ad->k * (sizeof (struct ec_mpi) + sizeof (*proof2))))
{
weprintf ("wrong size of received outcome decryption");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong size of received outcome decryption\n");
goto quit;
}
@ -429,7 +435,9 @@ mp_pub_recv_decryption (struct BRANDT_Auction *ad,
ec_gen,
proof2))
{
weprintf ("wrong zkp2 for phi, y received");
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING,
"libbrandt",
"wrong zkp2 for phi, y received\n");
goto quit;
}
ec_point_copy (ad->phi3[sender][comp][j], phi);
@ -496,7 +504,9 @@ mp_pub_determine_outcome (struct BRANDT_Auction *ad,
{
if (cur_winner >= ad->m)
{
weprintf ("too many winners detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"too many winners detected\n");
GNUNET_free (ret);
ret = NULL;
goto quit;
@ -511,7 +521,9 @@ mp_pub_determine_outcome (struct BRANDT_Auction *ad,
if (cur_winner != ad->m)
{
weprintf ("too few winners detected");
GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR,
"libbrandt",
"too few winners detected\n");
GNUNET_free (ret);
ret = NULL;
goto quit;

View File

@ -28,10 +28,6 @@
#include "test.h"
static uint16_t bidders;
static uint16_t prizes;
static struct BRANDT_Auction *ad;
static int
test_serialization ()
{
@ -137,158 +133,14 @@ test_smc_zkp_0og ()
}
static int
test_setup_auction_data ()
{
uint16_t i;
ad = GNUNET_new_array (bidders, struct BRANDT_Auction);
for (i = 0; i < bidders; i++)
{
ad[i].n = bidders;
ad[i].i = i;
ad[i].k = prizes;
ad[i].b = i;
}
return 1;
}
/**
* compute round @a index of the protocol specified by @a type and @a oc
*
* @param[in] type auction type
* @param[in] oc outcome type
* @param[in] index round index
*/
#define ROUND(type, oc, index) do { \
for (uint16_t i = 0; i < bidders; i++) \
{ \
handler_prep[type][oc][index] (&ad[i]); \
bufs[i] = handler_out[type][oc][index] (&ad[i], &lens[i]); \
CHECK (bufs[i], "failed to gen message buffer"); \
} \
\
for (uint16_t i = 0; i < bidders; i++) \
{ \
/* enable seller mode for receiving decryption messages */ \
if (msg_decrypt == index) \
ad[i].seller_mode = 1; \
for (uint16_t s = 0; s < bidders; s++) \
{ \
if (s == i) \
continue; \
CHECK (handler_in[type][oc][index] (&ad[i], \
bufs[s] + \
sizeof (struct msg_head), \
lens[s] - \
sizeof (struct msg_head), \
s), \
"failed to parse message buffer"); \
} \
/* disable seller mode again */ \
if (msg_decrypt == index) \
ad[i].seller_mode = 0; \
} \
\
for (uint16_t i = 0; i < bidders; i++) \
free (bufs[i]); \
} while (0)
static int
test_auction (enum auction_type atype, enum outcome_type oc)
{
unsigned char *bufs[bidders];
size_t lens[bidders];
int32_t winner = -1;
int32_t price = -1;
weprintf ("testing auction type %d and outcome format %d...", atype, oc);
ROUND (atype, oc, msg_init);
ROUND (atype, oc, msg_bid);
ROUND (atype, oc, msg_outcome);
ROUND (atype, oc, msg_decrypt);
/* outcome */
for (uint16_t i = 0; i < ad->n; i++)
{
struct BRANDT_Result *res;
uint16_t reslen;
res = handler_res[atype][oc] (&ad[i], &reslen);
if (res && -1 == price && -1 != res->price)
price = res->price;
if (res)
weprintf ("price: %d", res->price);
CHECK (!res || res->price == price, "different prices detected");
if (res && -1 == winner && -1 != res->bidder)
winner = res->bidder;
CHECK (!res || res->bidder == winner, "different winners detected");
}
CHECK (-1 != winner, "no winner detected");
CHECK (-1 != price, "no price detected");
fputs ("good: one winner detected\n", stderr);
return 1;
}
static void
cleanup_auction_data ()
{
for (uint16_t i = 0; i < bidders; i++)
{
gcry_mpi_point_release (ad[i].Y);
gcry_mpi_release (ad[i].x);
smc_free1 (ad[i].y, ad[i].n);
smc_free2 (ad[i].alpha, ad[i].n, ad[i].k);
smc_free2 (ad[i].beta, ad[i].n, ad[i].k);
smc_free2 (ad[i].gamma2, ad[i].n, ad[i].k);
smc_free2 (ad[i].delta2, ad[i].n, ad[i].k);
smc_free2 (ad[i].phi2, ad[i].n, ad[i].k);
smc_free3 (ad[i].gamma3, ad[i].n, ad[i].n, ad[i].k);
smc_free3 (ad[i].delta3, ad[i].n, ad[i].n, ad[i].k);
smc_free3 (ad[i].phi3, ad[i].n, ad[i].n, ad[i].k);
smc_free1 (ad[i].tmpa1, ad[i].k);
smc_free1 (ad[i].tmpb1, ad[i].k);
}
free (ad);
}
static int
test_all_auctions ()
{
for (size_t atype = 0; atype < auction_last; atype++)
{
if (auction_firstPrice != atype) /* others not yet implemented */
continue;
for (size_t oc = 0; oc < outcome_last; oc++)
{
if (!test_setup_auction_data () || !test_auction (atype, oc))
{
cleanup_auction_data ();
return 0;
}
cleanup_auction_data ();
}
}
return 1;
}
int
main (int argc, char *argv[])
{
int repeat = 1;
struct GNUNET_CRYPTO_EccDlogContext *edc;
bidders = 3;
prizes = 3;
if (GNUNET_OK != GNUNET_log_setup ("test_crypto", "WARNING", NULL))
return 1;
edc = GNUNET_CRYPTO_ecc_dlog_prepare (1024, 16);
BRANDT_init (edc);
@ -303,8 +155,6 @@ main (int argc, char *argv[])
RUN (test_smc_zkp_0og);
}
RUN (test_all_auctions);
GNUNET_CRYPTO_ecc_dlog_release (edc);
return ret;
}