]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - ecdsa/ecdsa_sign.c
minimal edit
[avr-crypto-lib.git] / ecdsa / ecdsa_sign.c
index 8bcf4f41bc6be599047285c976893c9d95e25920..7b3671ea76ffc1ba5ce3ac983865672277dda8a7 100644 (file)
@@ -31,7 +31,7 @@
 #include "bigint_io.h"
 
 
-uint8_t ecdsa_signature_alloc(ecdsa_signature_ts, size_t length_B){
+uint8_t ecdsa_signature_alloc(ecdsa_signature_t *s, size_t length_B){
     if(!(s->r.wordv = malloc(length_B))){
         printf_P(PSTR("DBG: XXX <%S %s %d>\n"), PSTR(__FILE__), __func__, __LINE__);
         return 1;
@@ -46,13 +46,13 @@ uint8_t ecdsa_signature_alloc(ecdsa_signature_t* s, size_t length_B){
     return 0;
 }
 
-void ecdsa_signature_free(ecdsa_signature_ts){
+void ecdsa_signature_free(ecdsa_signature_t *s){
     free(s->r.wordv);
     free(s->s.wordv);
 }
 
-uint8_t ecdsa_sign_bigint(ecdsa_signature_t* s, const bigint_t* m,
-                          const ecdsa_ctx_t* ctx, const bigint_t* k){
+uint8_t ecdsa_sign_bigint(ecdsa_signature_t *s, const bigint_t *m,
+                          const ecdsa_ctx_t *ctx, const bigint_t *k){
 
     bigint_t t;
     ecc_combi_point_t q;
@@ -77,8 +77,14 @@ uint8_t ecdsa_sign_bigint(ecdsa_signature_t* s, const bigint_t* m,
     }
     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_mul_u(&t, &q.affine.x, ctx->priv);
     ctx->curve->reduce_p(&t);
+
     printf_P(PSTR("msg:   "));
     bigint_print_hex(m);
     putchar('\n');
@@ -91,6 +97,7 @@ uint8_t ecdsa_sign_bigint(ecdsa_signature_t* s, const bigint_t* m,
     printf_P(PSTR("t (1): "));
     bigint_print_hex(&t);
     putchar('\n');
+
     bigint_add_u(&t, &t, m);
     ctx->curve->reduce_p(&t);
     printf_P(PSTR("t (2): "));
@@ -111,8 +118,8 @@ uint8_t ecdsa_sign_bigint(ecdsa_signature_t* s, const bigint_t* m,
     return 0;
 }
 
-uint8_t ecdsa_sign_hash(ecdsa_signature_t* s, const void* hash,
-                           size_t hash_len_B, const ecdsa_ctx_tctx,
+uint8_t ecdsa_sign_hash(ecdsa_signature_t *s, const void *hash,
+                           size_t hash_len_B, const ecdsa_ctx_t *ctx,
                            const void *rand_in){
     bigint_t m_int;
     bigint_t r_int;
@@ -151,6 +158,7 @@ uint8_t ecdsa_sign_hash(ecdsa_signature_t* s, const void* hash,
             ((uint8_t*)m_int.wordv)[idx++] = ((uint8_t*)hash)[--hash_len_B];
         }
     }
+    bigint_adjust(&m_int);
     do{
         if(rand_in == NULL){
             size_t i;
@@ -169,8 +177,8 @@ uint8_t ecdsa_sign_hash(ecdsa_signature_t* s, const void* hash,
     return r;
 }
 
-uint8_t ecdsa_sign_message(ecdsa_signature_t* s, const void* m, uint16_t m_len_b,
-                       const hfdesc_t* hash_desc, const ecdsa_ctx_t* ctx,
+uint8_t ecdsa_sign_message(ecdsa_signature_t *s, const void *m, uint16_t m_len_b,
+                       const hfdesc_t *hash_desc, const ecdsa_ctx_t *ctx,
                        const void *rand_in){
 
     uint8_t *hash;