ECC-LIB : A Library for Elliptic Curve Cryptography

ECC-LIB is a fully-equipped, portable, and modular library for Elliptic Curve (EC) Cryptography that allows for the easy development of EC cryptographic protocols, and which can be readily tailored to suit different requirements and user needs. The library is implemented in ANSI C using the GNU Multiple Precision library for high-precision floating point arithmetic. The full source code is included, written entirely in standard, portable ANSI C.

The basic constants of the library are:

  1. bitlength: is defined in int_arithmetic.h and set the size of the underlying finite field F_p in bits.
  2. num_of_digits: is defined in create_e_and_pi.c and defines the size of the floating point number (in bits) that are used in the construction of the Weber and Hilbert polynomials.
  3. POLY_SIZE: is defined in poly_arithmetic.h and determines the maximum degree of the polynomials that are used.
  4. n_loops: is defined in hilbert.c and determines the number of the loops in function F() in weber.c and in function Delta() in hilbert.c.
  5. n_loops_baier: is defined in weber.h and determines the number of the loops in functions F_baier(), f0_baier(), f1_baier() and
  6. f2_baier() in weber.c.

The library consists of twelve source files and the corresponding twelve eader files. In particular:

In rmd160.c there are functions for the implementation of the 160-bit hash function ripemd-160. In create_e_and_pi.c there are functions that create the irrational numbers pi and e. Functions for floating point arithmetic like cos, sin, ln, etc., exist in file float_point_arithmetic.c. Some basic functions for modulo arithmetic, generation of a prime and factoring of an integer are in the file int_arithmetic.c. In file complex_arithmetic.c there are functions for complex arithmetic and in poly_arithmetic.c there are functions for manipulating polynomials together with a function for finding polynomial roots modulo a prime. The construction of Hilbert and Weber polynomials is accomplished with the corresponding files hilbert.c and weber.c. The basic elliptic curve operations are implemented in the file ec_operations.c whereas file cm.c includes the necessary functions for the CM method. In file cm_prime_order.c there are functions that are used for construction of prime order elliptic curves. Finally, the file protocols.c includes all the functions for the implementation of basic protocols (ECDSA, ECES, one-time pad encryption).

You can read more information at the ECC-LIB home page.