]> git.cryptolib.org Git - avr-crypto-lib.git/commitdiff
fixing ecdsa signature generation (stupid me confused p and n) bigint2-dev
authorbg <bg@nerilex.org>
Tue, 8 Jul 2014 19:17:36 +0000 (21:17 +0200)
committerbg <bg@nerilex.org>
Tue, 8 Jul 2014 19:17:36 +0000 (21:17 +0200)
ecdsa/ecc.h
ecdsa/ecdsa_sign.c
ecdsa/nist_p192.c

index a38f32d4a48bf234064c2f59d36ce406597adb57..652b50ad0d97df1bc1f96f89d427ee9284e3b7c1 100644 (file)
@@ -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;
index 7b3671ea76ffc1ba5ce3ac983865672277dda8a7..bd5ff9097466cb8e950ae231ab5e6404c7b39eaf 100644 (file)
@@ -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;
index 6e914c872a9f240fe145147d7c2360d17a79f39d..3045762933aaa6d2fff5df090fde8bbe90fe7801 100644 (file)
@@ -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
 };