diff --git a/Makefile b/Makefile index 1c093f89..a1ab3fdc 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ FLAGS_DEBUG:=-DVERIFY -ggdb3 -O1 FLAGS_TEST:=-DVERIFY -ggdb3 -O2 -march=native SECP256K1_FILES := src/num.h src/field.h src/field_5x52.h src/group.h src/ecmult.h src/ecdsa.h \ - src/num.c src/field.c src/field_5x52.c src/group.c src/ecmult.c src/ecdsa.c + src/impl/*.h JAVA_FILES := src/java/org_bitcoin_NativeSecp256k1.h src/java/org_bitcoin_NativeSecp256k1.c @@ -19,33 +19,33 @@ default: all ifeq ($(CONF), gmpgmp) FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP -DUSE_FIELD_GMP LIBS := -lgmp -SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_gmp.c src/field_gmp.h +SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/field_gmp.h else ifeq ($(CONF), gmp32) FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP -DUSE_FIELD_10X26 LIBS := -lgmp -SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_10x26.c src/field_10x26.h +SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/field_10x26.h else ifeq ($(CONF), openssl) FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_OPENSSL -DUSE_FIELD_INV_BUILTIN LIBS := -lcrypto -SECP256K1_FILES := $(SECP256K1_FILES) src/num_openssl.h src/num_openssl.c src/field_5x52_int128.c +SECP256K1_FILES := $(SECP256K1_FILES) src/num_openssl.h src/field_5x52.h else ifeq ($(CONF), gmp) FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP LIBS := -lgmp -SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_5x52_int128.c +SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/field_5x52.h else ifeq ($(CONF), gmpasm) FLAGS_COMMON := $(FLAGS_COMMON) -DUSE_NUM_GMP -DUSE_FIELD_5X52_ASM LIBS := -lgmp OBJS := $(OBJS) obj/field_5x52_asm.o -SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/num_gmp.c src/field_5x52_asm.c +SECP256K1_FILES := $(SECP256K1_FILES) src/num_gmp.h src/field_5x52.h obj/field_5x52_asm.o: src/field_5x52_asm.asm yasm -f elf64 -o obj/field_5x52_asm.o src/field_5x52_asm.asm else -SECP256K1_FILES := $(SECP256K1_FILES) src/field_5x52_int128.c +error endif endif endif diff --git a/src/bench.c b/src/bench.c index 09a49b71..eeee710b 100644 --- a/src/bench.c +++ b/src/bench.c @@ -1,10 +1,10 @@ #include -#include "num.c" -#include "field.c" -#include "group.c" -#include "ecmult.c" -#include "ecdsa.c" +#include "impl/num.h" +#include "impl/field.h" +#include "impl/group.h" +#include "impl/ecmult.h" +#include "impl/ecdsa.h" int main() { secp256k1_num_start(); diff --git a/src/field_10x26.h b/src/field_10x26.h index 11f6cf99..72c58290 100644 --- a/src/field_10x26.h +++ b/src/field_10x26.h @@ -1,5 +1,5 @@ -#ifndef _SECP256K1_FIELD_10x26_ -#define _SECP256K1_FIELD_10x26_ +#ifndef _SECP256K1_FIELD_REPR_ +#define _SECP256K1_FIELD_REPR_ #include diff --git a/src/field_5x52.h b/src/field_5x52.h index f6be2089..8ccad034 100644 --- a/src/field_5x52.h +++ b/src/field_5x52.h @@ -1,5 +1,5 @@ -#ifndef _SECP256K1_FIELD_5x52_ -#define _SECP256K1_FIELD_5x52_ +#ifndef _SECP256K1_FIELD_REPR_ +#define _SECP256K1_FIELD_REPR_ #include diff --git a/src/field_gmp.h b/src/field_gmp.h index 03b83aac..44a8c60c 100644 --- a/src/field_gmp.h +++ b/src/field_gmp.h @@ -1,5 +1,5 @@ -#ifndef _SECP256K1_FIELD_GMP_ -#define _SECP256K1_FIELD_GMP_ +#ifndef _SECP256K1_FIELD_REPR_ +#define _SECP256K1_FIELD_REPR_ #include diff --git a/src/ecdsa.c b/src/impl/ecdsa.h similarity index 96% rename from src/ecdsa.c rename to src/impl/ecdsa.h index 879e01be..8589a225 100644 --- a/src/ecdsa.c +++ b/src/impl/ecdsa.h @@ -1,8 +1,11 @@ -#include "num.h" -#include "field.h" -#include "group.h" -#include "ecmult.h" -#include "ecdsa.h" +#ifndef _SECP256K1_ECDSA_IMPL_H_ +#define _SECP256K1_ECDSA_IMPL_H_ + +#include "../num.h" +#include "../field.h" +#include "../group.h" +#include "../ecmult.h" +#include "../ecdsa.h" void static secp256k1_ecdsa_sig_init(secp256k1_ecdsa_sig_t *r) { secp256k1_num_init(&r->r); @@ -141,3 +144,5 @@ void static secp256k1_ecdsa_sig_set_rs(secp256k1_ecdsa_sig_t *sig, const secp256 secp256k1_num_copy(&sig->r, r); secp256k1_num_copy(&sig->s, s); } + +#endif diff --git a/src/ecmult.c b/src/impl/ecmult.h similarity index 98% rename from src/ecmult.c rename to src/impl/ecmult.h index b9301dc6..0261a277 100644 --- a/src/ecmult.c +++ b/src/impl/ecmult.h @@ -1,6 +1,9 @@ -#include "num.h" -#include "group.h" -#include "ecmult.h" +#ifndef _SECP256K1_ECMULT_IMPL_H_ +#define _SECP256K1_ECMULT_IMPL_H_ + +#include "../num.h" +#include "../group.h" +#include "../ecmult.h" // optimal for 128-bit and 256-bit exponents. #define WINDOW_A 5 @@ -226,3 +229,5 @@ void static secp256k1_ecmult(secp256k1_gej_t *r, const secp256k1_gej_t *a, const secp256k1_num_free(&ng_1); secp256k1_num_free(&ng_128); } + +#endif diff --git a/src/field.c b/src/impl/field.h similarity index 97% rename from src/field.c rename to src/impl/field.h index 26c721b3..13274e1b 100644 --- a/src/field.c +++ b/src/impl/field.h @@ -1,10 +1,13 @@ +#ifndef _SECP256K1_FIELD_IMPL_H_ +#define _SECP256K1_FIELD_IMPL_H_ + #ifdef USE_FIELD_GMP -#include "field_gmp.c" +#include "field_gmp.h" #else #ifdef USE_FIELD_10X26 -#include "field_10x26.c" +#include "field_10x26.h" #else -#include "field_5x52.c" +#include "field_5x52.h" #endif #endif @@ -158,3 +161,5 @@ void static secp256k1_fe_stop(void) { secp256k1_fe_consts = NULL; } } + +#endif diff --git a/src/field_10x26.c b/src/impl/field_10x26.h similarity index 99% rename from src/field_10x26.c rename to src/impl/field_10x26.h index 9f9edb9d..d1767b55 100644 --- a/src/field_10x26.c +++ b/src/impl/field_10x26.h @@ -1,8 +1,11 @@ +#ifndef _SECP256K1_FIELD_REPR_IMPL_H_ +#define _SECP256K1_FIELD_REPR_IMPL_H_ + #include #include #include -#include "num.h" -#include "field.h" +#include "../num.h" +#include "../field.h" void static secp256k1_fe_normalize(secp256k1_fe_t *r) { // fog("normalize in: ", r); @@ -473,3 +476,5 @@ void static secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { #endif secp256k1_fe_sqr_inner(a->n, r->n); } + +#endif diff --git a/src/field_5x52.c b/src/impl/field_5x52.h similarity index 96% rename from src/field_5x52.c rename to src/impl/field_5x52.h index 0d53352f..e11d1e20 100644 --- a/src/field_5x52.c +++ b/src/impl/field_5x52.h @@ -1,12 +1,15 @@ +#ifndef _SECP256K1_FIELD_REPR_IMPL_H_ +#define _SECP256K1_FIELD_REPR_IMPL_H_ + #include #include -#include "num.h" -#include "field.h" +#include "../num.h" +#include "../field.h" #ifdef USE_FIELD_5X52_ASM -#include "field_5x52_asm.c" +#include "field_5x52_asm.h" #else -#include "field_5x52_int128.c" +#include "field_5x52_int128.h" #endif /** Implements arithmetic modulo FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F, @@ -180,3 +183,5 @@ void static secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { #endif secp256k1_fe_sqr_inner(a->n, r->n); } + +#endif diff --git a/src/field_5x52_asm.c b/src/impl/field_5x52_asm.h similarity index 67% rename from src/field_5x52_asm.c rename to src/impl/field_5x52_asm.h index 1082c634..32cd55d0 100644 --- a/src/field_5x52_asm.c +++ b/src/impl/field_5x52_asm.h @@ -1,2 +1,7 @@ +#ifndef _SECP256K1_FIELD_INNER5X52_IMPL_H_ +#define _SECP256K1_FIELD_INNER5X52_IMPL_H_ + void __attribute__ ((sysv_abi)) secp256k1_fe_mul_inner(const uint64_t *a, const uint64_t *b, uint64_t *r); void __attribute__ ((sysv_abi)) secp256k1_fe_sqr_inner(const uint64_t *a, uint64_t *r); + +#endif diff --git a/src/field_5x52_int128.c b/src/impl/field_5x52_int128.h similarity index 97% rename from src/field_5x52_int128.c rename to src/impl/field_5x52_int128.h index 6ad3fa12..8f187def 100644 --- a/src/field_5x52_int128.c +++ b/src/impl/field_5x52_int128.h @@ -1,4 +1,7 @@ -#include "field.h" +#ifndef _SECP256K1_FIELD_INNER5X52_IMPL_H_ +#define _SECP256K1_FIELD_INNER5X52_IMPL_H_ + +#include void static inline secp256k1_fe_mul_inner(const uint64_t *a, const uint64_t *b, uint64_t *r) { __int128 c = (__int128)a[0] * b[0]; @@ -94,3 +97,5 @@ void static inline secp256k1_fe_sqr_inner(const uint64_t *a, uint64_t *r) { r[1] = t1 + c; } + +#endif diff --git a/src/field_gmp.c b/src/impl/field_gmp.h similarity index 96% rename from src/field_gmp.c rename to src/impl/field_gmp.h index a34667b7..387cb3af 100644 --- a/src/field_gmp.c +++ b/src/impl/field_gmp.h @@ -1,8 +1,11 @@ +#ifndef _SECP256K1_FIELD_REPR_IMPL_H_ +#define _SECP256K1_FIELD_REPR_IMPL_H_ + #include #include #include -#include "num.h" -#include "field.h" +#include "../num.h" +#include "../field.h" void static secp256k1_fe_normalize(secp256k1_fe_t *r) { #if (GMP_NUMB_BITS >= 40) @@ -119,3 +122,5 @@ void static secp256k1_fe_sqr(secp256k1_fe_t *r, const secp256k1_fe_t *a) { mpn_sqr(tmp, ac.n, FIELD_LIMBS); secp256k1_fe_reduce(r, tmp); } + +#endif diff --git a/src/group.c b/src/impl/group.h similarity index 99% rename from src/group.c rename to src/impl/group.h index d0cf9c77..6c038695 100644 --- a/src/group.c +++ b/src/impl/group.h @@ -1,8 +1,11 @@ +#ifndef _SECP256K1_GROUP_IMPL_H_ +#define _SECP256K1_GROUP_IMPL_H_ + #include -#include "num.h" -#include "field.h" -#include "group.h" +#include "../num.h" +#include "../field.h" +#include "../group.h" void static secp256k1_ge_set_infinity(secp256k1_ge_t *r) { r->infinity = 1; @@ -370,3 +373,5 @@ void static secp256k1_ge_stop(void) { secp256k1_ge_consts = NULL; } } + +#endif diff --git a/src/impl/num.h b/src/impl/num.h new file mode 100644 index 00000000..f27f0d1f --- /dev/null +++ b/src/impl/num.h @@ -0,0 +1,14 @@ +#ifndef _SECP256K1_NUM_IMPL_H_ +#define _SECP256K1_NUM_IMPL_H_ + +#include "../num.h" + +#if defined(USE_NUM_GMP) +#include "num_gmp.h" +#elif defined(USE_NUM_OPENSSL) +#include "num_openssl.h" +#else +#error "Please select num implementation" +#endif + +#endif diff --git a/src/num_gmp.c b/src/impl/num_gmp.h similarity index 98% rename from src/num_gmp.c rename to src/impl/num_gmp.h index 4c3f0a4a..f3599ddc 100644 --- a/src/num_gmp.c +++ b/src/impl/num_gmp.h @@ -1,3 +1,6 @@ +#ifndef _SECP256K1_NUM_REPR_IMPL_H_ +#define _SECP256K1_NUM_REPR_IMPL_H_ + #include #include #include @@ -153,3 +156,5 @@ void static secp256k1_num_negate(secp256k1_num_t *r) { void static secp256k1_num_set_rand(secp256k1_num_t *r, const secp256k1_num_t *a) { mpz_urandomm(r->bn, secp256k1_num_state.rng, a->bn); } + +#endif diff --git a/src/num_openssl.c b/src/impl/num_openssl.h similarity index 97% rename from src/num_openssl.c rename to src/impl/num_openssl.h index 5b88d98b..93b26d7d 100644 --- a/src/num_openssl.c +++ b/src/impl/num_openssl.h @@ -1,10 +1,13 @@ +#ifndef _SECP256K1_NUM_REPR_IMPL_H_ +#define _SECP256K1_NUM_REPR_IMPL_H_ + #include #include #include #include #include -#include "num.h" +#include "../num.h" void static secp256k1_num_start() { } @@ -148,3 +151,5 @@ void static secp256k1_num_negate(secp256k1_num_t *r) { void static secp256k1_num_set_rand(secp256k1_num_t *r, const secp256k1_num_t *a) { BN_pseudo_rand_range(&r->bn, &a->bn); } + +#endif diff --git a/src/num.c b/src/num.c deleted file mode 100644 index bcc1c018..00000000 --- a/src/num.c +++ /dev/null @@ -1,7 +0,0 @@ -#if defined(USE_NUM_GMP) -#include "num_gmp.c" -#elif defined(USE_NUM_OPENSSL) -#include "num_openssl.c" -#else -#error "Please select num implementation" -#endif diff --git a/src/num_gmp.h b/src/num_gmp.h index d908e001..f1c910d1 100644 --- a/src/num_gmp.h +++ b/src/num_gmp.h @@ -1,5 +1,5 @@ -#ifndef _SECP256K1_NUM_GMP_ -#define _SECP256K1_NUM_GMP_ +#ifndef _SECP256K1_NUM_REPR_ +#define _SECP256K1_NUM_REPR_ #include diff --git a/src/num_openssl.h b/src/num_openssl.h index 22c502a6..de3f1a47 100644 --- a/src/num_openssl.h +++ b/src/num_openssl.h @@ -1,5 +1,5 @@ -#ifndef _SECP256K1_NUM_OPENSSL_ -#define _SECP256K1_NUM_OPENSSL_ +#ifndef _SECP256K1_NUM_REPR_ +#define _SECP256K1_NUM_REPR_ #include diff --git a/src/secp256k1.c b/src/secp256k1.c index 8b93100c..aecdad98 100644 --- a/src/secp256k1.c +++ b/src/secp256k1.c @@ -1,8 +1,8 @@ -#include "num.c" -#include "field.c" -#include "group.c" -#include "ecmult.c" -#include "ecdsa.c" +#include "impl/num.h" +#include "impl/field.h" +#include "impl/group.h" +#include "impl/ecmult.h" +#include "impl/ecdsa.h" void secp256k1_start(void) { secp256k1_num_start(); diff --git a/src/tests.c b/src/tests.c index f0c61905..1d5b48cd 100644 --- a/src/tests.c +++ b/src/tests.c @@ -1,10 +1,10 @@ #include -#include "num.c" -#include "field.c" -#include "group.c" -#include "ecmult.c" -#include "ecdsa.c" +#include "impl/num.h" +#include "impl/field.h" +#include "impl/group.h" +#include "impl/ecmult.h" +#include "impl/ecdsa.h" // #define COUNT 2 #define COUNT 100