aboutsummaryrefslogtreecommitdiff
path: root/crypto.c
diff options
context:
space:
mode:
authorMarkus Teich <markus.teich@stusta.mhn.de>2016-12-02 09:43:04 +0100
committerMarkus Teich <markus.teich@stusta.mhn.de>2016-12-02 09:43:04 +0100
commit50c476877e2fdbf6e97259e7790b0c42e0ddd487 (patch)
tree6ed4e5b26d23d1d03f259bd72f02ce8737e2f4a4 /crypto.c
parent56b43dab7ff80acc4cd0e7ad3057abd5e6bad680 (diff)
downloadlibbrandt-50c476877e2fdbf6e97259e7790b0c42e0ddd487.tar.gz
libbrandt-50c476877e2fdbf6e97259e7790b0c42e0ddd487.zip
migrate to GNUNET_assert
Diffstat (limited to 'crypto.c')
-rw-r--r--crypto.c45
1 files changed, 34 insertions, 11 deletions
diff --git a/crypto.c b/crypto.c
index 6c1b501..dea1617 100644
--- a/crypto.c
+++ b/crypto.c
@@ -32,6 +32,25 @@
32#define CURVE "Ed25519" 32#define CURVE "Ed25519"
33 33
34 34
35/**
36 * Log an error message at log-level 'error' that indicates a failure of the
37 * command 'cmd' with the message given by gcry_strerror(rc) and abort the
38 * programm.
39 */
40#define ASSERT_GCRY(cmd, rc) do { \
41 if (0 != rc) { \
42 GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, \
43 "libbrandt", \
44 "`%s' failed at %s:%d with error: %s\n", \
45 cmd, \
46 __FILE__, \
47 __LINE__, \
48 gcry_strerror (rc)); \
49 GNUNET_abort_ (); \
50 } \
51} while (0)
52
53
35struct zkp_challenge_dl { 54struct zkp_challenge_dl {
36 struct ec_mpi g; 55 struct ec_mpi g;
37 struct ec_mpi v; 56 struct ec_mpi v;
@@ -79,7 +98,7 @@ brandt_crypto_init (struct GNUNET_CRYPTO_EccDlogContext *dlogctx)
79 ec_dlogctx = dlogctx; 98 ec_dlogctx = dlogctx;
80 99
81 rc = gcry_mpi_ec_new (&ec_ctx, NULL, CURVE); 100 rc = gcry_mpi_ec_new (&ec_ctx, NULL, CURVE);
82 brandt_assert_gpgerr (rc); 101 ASSERT_GCRY ("gcry_mpi_ec_new", rc);
83 102
84 ec_gen = gcry_mpi_ec_get_point ("g", ec_ctx, 0); 103 ec_gen = gcry_mpi_ec_get_point ("g", ec_ctx, 0);
85 brandt_assert (NULL != ec_gen); 104 brandt_assert (NULL != ec_gen);
@@ -113,10 +132,10 @@ ec_skey_create (gcry_mpi_t skey)
113 132
114 rc = gcry_sexp_build (&s_keyparam, NULL, "(genkey(ecc(curve \"" CURVE "\")" 133 rc = gcry_sexp_build (&s_keyparam, NULL, "(genkey(ecc(curve \"" CURVE "\")"
115 "(flags)))"); 134 "(flags)))");
116 brandt_assert_gpgerr (rc); 135 ASSERT_GCRY ("gcry_sexp_build", rc);
117 136
118 rc = gcry_pk_genkey (&priv_sexp, s_keyparam); 137 rc = gcry_pk_genkey (&priv_sexp, s_keyparam);
119 brandt_assert_gpgerr (rc); 138 ASSERT_GCRY ("gcry_pk_genkey", rc);
120 gcry_sexp_release (s_keyparam); 139 gcry_sexp_release (s_keyparam);
121 140
122 priv_key = gcry_sexp_find_token (priv_sexp, "private-key", 11); 141 priv_key = gcry_sexp_find_token (priv_sexp, "private-key", 11);
@@ -148,7 +167,11 @@ ec_keypair_create (gcry_mpi_point_t pkey, gcry_mpi_t skey)
148{ 167{
149 gcry_mpi_t sk; 168 gcry_mpi_t sk;
150 169
151 brandt_assert (NULL != pkey); 170 if (NULL == pkey)
171 {
172 GNUNET_break (NULL != pkey);
173 return;
174 }
152 sk = (NULL == skey) ? gcry_mpi_new (256) : skey; 175 sk = (NULL == skey) ? gcry_mpi_new (256) : skey;
153 176
154 ec_skey_create (sk); 177 ec_skey_create (sk);
@@ -271,7 +294,7 @@ mpi_serialize (struct ec_mpi *dst, gcry_mpi_t src)
271 294
272 rc = gcry_mpi_print (GCRYMPI_FMT_USG, (void *)dst, 295 rc = gcry_mpi_print (GCRYMPI_FMT_USG, (void *)dst,
273 sizeof (struct ec_mpi), &rsize, src); 296 sizeof (struct ec_mpi), &rsize, src);
274 brandt_assert_gpgerr (rc); 297 ASSERT_GCRY ("gcry_mpi_print", rc);
275 298
276 /* Shift the output to the right, if shorter than available space */ 299 /* Shift the output to the right, if shorter than available space */
277 if (rsize && rsize < sizeof (struct ec_mpi)) 300 if (rsize && rsize < sizeof (struct ec_mpi))
@@ -301,7 +324,7 @@ mpi_parse (gcry_mpi_t dst, const struct ec_mpi *src)
301 src, 324 src,
302 sizeof (struct ec_mpi), 325 sizeof (struct ec_mpi),
303 NULL); 326 NULL);
304 brandt_assert_gpgerr (rc); 327 ASSERT_GCRY ("gcry_mpi_scan", rc);
305 328
306 gcry_mpi_snatch (dst, ret); 329 gcry_mpi_snatch (dst, ret);
307} 330}
@@ -324,15 +347,15 @@ ec_point_serialize (struct ec_mpi *dst, const gcry_mpi_point_t src)
324 brandt_assert (dst); 347 brandt_assert (dst);
325 348
326 rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")))"); 349 rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")))");
327 brandt_assert_gpgerr (rc); 350 ASSERT_GCRY ("gcry_sexp_build", rc);
328 brandt_assert (NULL != s); 351 brandt_assert (NULL != s);
329 352
330 rc = gcry_mpi_ec_new (&ctx, s, NULL); 353 rc = gcry_mpi_ec_new (&ctx, s, NULL);
331 brandt_assert_gpgerr (rc); 354 ASSERT_GCRY ("gcry_mpi_ec_new", rc);
332 gcry_sexp_release (s); 355 gcry_sexp_release (s);
333 356
334 rc = gcry_mpi_ec_set_point ("q", src, ctx); 357 rc = gcry_mpi_ec_set_point ("q", src, ctx);
335 brandt_assert_gpgerr (rc); 358 ASSERT_GCRY ("gcry_mpi_ec_set_point", rc);
336 359
337 q = gcry_mpi_ec_get_mpi ("q@eddsa", ctx, 0); 360 q = gcry_mpi_ec_get_mpi ("q@eddsa", ctx, 0);
338 brandt_assert (NULL != q); 361 brandt_assert (NULL != q);
@@ -359,10 +382,10 @@ ec_point_parse (gcry_mpi_point_t dst, const struct ec_mpi *src)
359 382
360 rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")(q %b)))", 383 rc = gcry_sexp_build (&s, NULL, "(public-key(ecc(curve " CURVE ")(q %b)))",
361 sizeof (struct ec_mpi), src); 384 sizeof (struct ec_mpi), src);
362 brandt_assert_gpgerr (rc); 385 ASSERT_GCRY ("gcry_sexp_build", rc);
363 386
364 rc = gcry_mpi_ec_new (&ctx, s, NULL); 387 rc = gcry_mpi_ec_new (&ctx, s, NULL);
365 brandt_assert_gpgerr (rc); 388 ASSERT_GCRY ("gcry_mpi_ec_new", rc);
366 gcry_sexp_release (s); 389 gcry_sexp_release (s);
367 390
368 ret = gcry_mpi_ec_get_point ("q", ctx, 0); 391 ret = gcry_mpi_ec_get_point ("q", ctx, 0);