]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - ecdsa/ecc.h
fixing E-Mail-Address & Copyright
[avr-crypto-lib.git] / ecdsa / ecc.h
index ac7d98c4f03e1343bfdc953739b78df3ecd18cbc..df613f63fd762e7c6dbe4fb669232bb7147ba2f9 100644 (file)
@@ -1,7 +1,7 @@
 /* ecc.h */
 /*
     This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2012 Daniel Otte (daniel.otte@rub.de)
+    Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -20,6 +20,8 @@
 #ifndef ECC_H_
 #define ECC_H_
 
+#include <stddef.h>
+
 typedef struct {
     bigint_t x;
     bigint_t y;
@@ -33,17 +35,23 @@ typedef struct {
     bigint_t y;
 } ecc_affine_point_t;
 
-typedef struct __attribute__((packed)){
+typedef union __attribute__((packed)){
     ecc_affine_point_t affine;
     ecc_chudnovsky_point_t chudnovsky;
 } ecc_combi_point_t;
 
 typedef struct {
-    bigint_t* p;
-    bigint_t* b;
+    bigint_t *p;
+    bigint_t *n;
+    bigint_t *b;
     int (*reduce_p)(bigint_t*);
 } ecc_curve_sp_t;
 
+
+uint8_t ecc_chudnovsky_point_alloc(ecc_chudnovsky_point_t *p, size_t length_B);
+
+void ecc_chudnovsky_point_free(ecc_chudnovsky_point_t *p);
+
 void ecc_chudnovsky_point_print(const ecc_chudnovsky_point_t *p);
 
 
@@ -64,15 +72,15 @@ uint8_t ecc_chudnovsky_point_add_sp(ecc_chudnovsky_point_t *dest,
 uint8_t ecc_chudnovsky_double_and_add(ecc_chudnovsky_point_t *dest,
                                       const bigint_t *k,
                                       const ecc_chudnovsky_point_t *p,
-                                      const ecc_curve_sp_tcurve);
-uint8_t bigint_to_naf(uint8_tdest, uint16_t *length, const bigint_t *src);
+                                      const ecc_curve_sp_t *curve);
+uint8_t bigint_to_naf(uint8_t *dest, uint16_t *length, const bigint_t *src);
 uint8_t ecc_chudnovsky_naf_multiplication(ecc_chudnovsky_point_t *dest,
                                           const bigint_t *k,
                                           const ecc_chudnovsky_point_t *p,
-                                          const ecc_curve_sp_tcurve);
+                                          const ecc_curve_sp_t *curve);
 uint8_t ecc_chudnovsky_multiplication(ecc_chudnovsky_point_t *dest,
                                       const bigint_t *k,
                                       const ecc_chudnovsky_point_t *p,
-                                      const ecc_curve_sp_tcurve);
+                                      const ecc_curve_sp_t *curve);
 
 #endif /* ECC_H_ */