From 109c9312f3f0d3b09f24b9c849ba390f17767c26 Mon Sep 17 00:00:00 2001 From: bg Date: Tue, 8 Jul 2014 21:17:36 +0200 Subject: [PATCH] fixing ecdsa signature generation (stupid me confused p and n) --- ecdsa/ecc.h | 1 + ecdsa/ecdsa_sign.c | 29 ++++------------------------- ecdsa/nist_p192.c | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/ecdsa/ecc.h b/ecdsa/ecc.h index a38f32d..652b50a 100644 --- a/ecdsa/ecc.h +++ b/ecdsa/ecc.h @@ -42,6 +42,7 @@ typedef union __attribute__((packed)){ typedef struct { bigint_t *p; + bigint_t *n; bigint_t *b; int (*reduce_p)(bigint_t*); } ecc_curve_sp_t; diff --git a/ecdsa/ecdsa_sign.c b/ecdsa/ecdsa_sign.c index 7b3671e..bd5ff90 100644 --- a/ecdsa/ecdsa_sign.c +++ b/ecdsa/ecdsa_sign.c @@ -76,35 +76,14 @@ uint8_t ecdsa_sign_bigint(ecdsa_signature_t *s, const bigint_t *m, return 2; } ecc_chudnovsky_to_affine_point(&q.affine, &q.chudnovsky, ctx->curve); - bigint_inverse(&s->s, k, ctx->curve->p); - - printf_P(PSTR("x: ")); - bigint_print_hex(&q.affine.x); - putchar('\n'); + bigint_inverse(&s->s, k, ctx->curve->n); bigint_mul_u(&t, &q.affine.x, ctx->priv); - ctx->curve->reduce_p(&t); - - printf_P(PSTR("msg: ")); - bigint_print_hex(m); - putchar('\n'); - printf_P(PSTR("k: ")); - bigint_print_hex(k); - putchar('\n'); - printf_P(PSTR("k-inv: ")); - bigint_print_hex(&s->s); - putchar('\n'); - printf_P(PSTR("t (1): ")); - bigint_print_hex(&t); - putchar('\n'); - + bigint_reduce(&t, ctx->curve->n); bigint_add_u(&t, &t, m); - ctx->curve->reduce_p(&t); - printf_P(PSTR("t (2): ")); - bigint_print_hex(&t); - putchar('\n'); + bigint_reduce(&t, ctx->curve->n); bigint_mul_u(&t, &t, &s->s); - ctx->curve->reduce_p(&t); + bigint_reduce(&t, ctx->curve->n); if(t.length_W == 0){ printf_P(PSTR("DBG: XXX <%S %s %d>\n"), PSTR(__FILE__), __func__, __LINE__); return 2; diff --git a/ecdsa/nist_p192.c b/ecdsa/nist_p192.c index 6e914c8..3045762 100644 --- a/ecdsa/nist_p192.c +++ b/ecdsa/nist_p192.c @@ -46,6 +46,12 @@ uint8_t nist_curve_p192_p_w[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; +uint8_t nist_curve_p192_n_w[] = { + 0x31, 0x28, 0xd2, 0xb4, 0xb1, 0xc9, 0x6b, 0x14, + 0x36, 0xf8, 0xde, 0x99, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff +}; + uint8_t nist_curve_p192_b_w[] = { 0xb1, 0xb9, 0x46, 0xc1, 0xec, 0xde, 0xb8, 0xfe, 0x49, 0x30, 0x24, 0x72, 0xab, 0xe9, 0xa7, 0x0f, @@ -85,6 +91,13 @@ bigint_t nist_curve_p192_p = { .info = 7 }; + +bigint_t nist_curve_p192_n = { + .length_W = 192 / BIGINT_WORD_SIZE, + .wordv = nist_curve_p192_n_w, + .info = 7 +}; + bigint_t nist_curve_p192_b = { .length_W = 192 / BIGINT_WORD_SIZE, .wordv = nist_curve_p192_b_w, @@ -124,6 +137,7 @@ ecc_combi_point_t nist_curve_p192_basepoint = { ecc_curve_sp_t nist_curve_p192 = { .b = &nist_curve_p192_b, .p = &nist_curve_p192_p, + .n = &nist_curve_p192_n, .reduce_p = bigint_reduce_p192 }; -- 2.39.5