@@ -584,9 +584,56 @@ uint256 juint256(cJSON *obj)
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
#include "sudoku.cpp"
|
#include "sudoku.cpp"
|
||||||
//#define USE_BASIC_CONFIG
|
#define USE_BASIC_CONFIG
|
||||||
//#include "../secp256k1/src/basic-config.h"
|
#define ENABLE_MODULE_MUSIG
|
||||||
|
#include "../secp256k1/src/basic-config.h"
|
||||||
|
#include "../secp256k1/include/secp256k1.h"
|
||||||
|
#include "../secp256k1/src/ecmult.h"
|
||||||
|
#include "../secp256k1/src/ecmult_gen.h"
|
||||||
|
|
||||||
|
typedef struct { unsigned char data[64]; } secp256k1_schnorrsig;
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include "../secp256k1/src/util.h"
|
||||||
|
#include "../secp256k1/src/num_impl.h"
|
||||||
|
#include "../secp256k1/src/field_impl.h"
|
||||||
|
#include "../secp256k1/src/scalar_impl.h"
|
||||||
|
#include "../secp256k1/src/group_impl.h"
|
||||||
|
#include "../secp256k1/src/scratch_impl.h"
|
||||||
|
#include "../secp256k1/src/ecmult_impl.h"
|
||||||
|
#include "../secp256k1/src/ecmult_const_impl.h"
|
||||||
|
#include "../secp256k1/src/ecmult_gen_impl.h"
|
||||||
|
#include "../secp256k1/src/ecdsa_impl.h"
|
||||||
|
#include "../secp256k1/src/eckey_impl.h"
|
||||||
|
#include "../secp256k1/src/hash_impl.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef int (secp256k1_ecmult_multi_callback)(secp256k1_scalar *sc, secp256k1_ge *pt, size_t idx, void *data);
|
||||||
|
extern "C" void secp256k1_pubkey_save(secp256k1_pubkey* pubkey, secp256k1_ge* ge);
|
||||||
|
extern "C" int secp256k1_nonce_function_bipschnorr(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, void *data, unsigned int counter);
|
||||||
|
extern "C" int secp256k1_pubkey_load(const secp256k1_context* ctx, secp256k1_ge* ge, const secp256k1_pubkey* pubkey);
|
||||||
|
extern "C" void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx);
|
||||||
|
|
||||||
|
#define ARG_CHECK(cond) do { \
|
||||||
|
if (EXPECT(!(cond), 0)) { \
|
||||||
|
secp256k1_callback_call(&ctx->illegal_callback, #cond); \
|
||||||
|
return 0; \
|
||||||
|
} \
|
||||||
|
} while(0)*/
|
||||||
|
|
||||||
//#include "../secp256k1/src/secp256k1.c"
|
//#include "../secp256k1/src/secp256k1.c"
|
||||||
|
struct secp256k1_context_struct {
|
||||||
|
secp256k1_ecmult_context ecmult_ctx;
|
||||||
|
secp256k1_ecmult_gen_context ecmult_gen_ctx;
|
||||||
|
secp256k1_callback illegal_callback;
|
||||||
|
secp256k1_callback error_callback;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern "C" int secp256k1_ecmult_multi_var(const secp256k1_ecmult_context *ctx, secp256k1_scratch *scratch, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n);
|
||||||
|
extern "C" int secp256k1_schnorrsig_verify(const secp256k1_context* ctx, const secp256k1_schnorrsig *sig, const unsigned char *msg32, const secp256k1_pubkey *pk);
|
||||||
|
extern "C" int secp256k1_schnorrsig_parse(const secp256k1_context* ctx, secp256k1_schnorrsig* sig, const unsigned char *in64);
|
||||||
|
|
||||||
#include "musig.cpp"
|
#include "musig.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -15,9 +15,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "../secp256k1/include/secp256k1.h"
|
#include "../secp256k1/include/secp256k1.h"
|
||||||
#include "../secp256k1/include/secp256k1_schnorrsig.h"
|
//#include "../secp256k1/include/secp256k1_schnorrsig.h"
|
||||||
#include "../secp256k1/include/secp256k1_musig.h"
|
#include "../secp256k1/include/secp256k1_musig.h"
|
||||||
|
|
||||||
|
|
||||||
#define MUSIG_PREVN 0 // for now, just use vout0 for the musig output
|
#define MUSIG_PREVN 0 // for now, just use vout0 for the musig output
|
||||||
#define MUSIG_TXFEE 10000
|
#define MUSIG_TXFEE 10000
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ endif
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
libsecp256k1_la_SOURCES = src/secp256k1.c
|
libsecp256k1_la_SOURCES = src/secp256k1.c
|
||||||
libsecp256k1_la_CPPFLAGS = -DENABLE_MODULE_MUSIG -DSECP256K1_BUILD -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
|
libsecp256k1_la_CPPFLAGS = -DSECP256K1_BUILD -DENABLE_MODULE_MUSIG -I$(top_srcdir)/include -I$(top_srcdir)/src $(SECP_INCLUDES)
|
||||||
libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
|
libsecp256k1_la_LIBADD = $(JNI_LIB) $(SECP_LIBS) $(COMMON_LIB)
|
||||||
|
|
||||||
libsecp256k1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c
|
libsecp256k1_jni_la_SOURCES = src/java/org_bitcoin_NativeSecp256k1.c src/java/org_bitcoin_Secp256k1Context.c
|
||||||
|
|||||||
@@ -78,7 +78,11 @@ typedef int (secp256k1_ecmult_multi_callback)(secp256k1_scalar *sc, secp256k1_ge
|
|||||||
* 0 if there is not enough scratch space for a single point or
|
* 0 if there is not enough scratch space for a single point or
|
||||||
* callback returns 0
|
* callback returns 0
|
||||||
*/
|
*/
|
||||||
static int secp256k1_ecmult_multi_var(const secp256k1_ecmult_context *ctx, secp256k1_scratch *scratch, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n);
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C"
|
||||||
|
#endif
|
||||||
|
int secp256k1_ecmult_multi_var(const secp256k1_ecmult_context *ctx, secp256k1_scratch *scratch, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n);
|
||||||
|
|
||||||
#endif /* SECP256K1_ECMULT_H */
|
#endif /* SECP256K1_ECMULT_H */
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#include "ecmult_const.h"
|
#include "ecmult_const.h"
|
||||||
#include "ecmult_impl.h"
|
#include "ecmult_impl.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_ENDOMORPHISM
|
#ifdef USE_ENDOMORPHISM
|
||||||
#define WNAF_BITS 128
|
#define WNAF_BITS 128
|
||||||
#else
|
#else
|
||||||
@@ -256,6 +257,14 @@ static void secp256k1_ecmult_const(secp256k1_gej *r, const secp256k1_ge *a, cons
|
|||||||
#include "ecmult_const.h"
|
#include "ecmult_const.h"
|
||||||
#include "ecmult_impl.h"
|
#include "ecmult_impl.h"
|
||||||
|
|
||||||
|
#ifdef USE_ENDOMORPHISM
|
||||||
|
#define WNAF_BITS 128
|
||||||
|
#else
|
||||||
|
#define WNAF_BITS 256
|
||||||
|
#endif
|
||||||
|
#define WNAF_SIZE_BITS(bits, w) (((bits) + (w) - 1) / (w))
|
||||||
|
#define WNAF_SIZE(w) WNAF_SIZE_BITS(WNAF_BITS, w)
|
||||||
|
|
||||||
/* This is like `ECMULT_TABLE_GET_GE` but is constant time */
|
/* This is like `ECMULT_TABLE_GET_GE` but is constant time */
|
||||||
#define ECMULT_CONST_TABLE_GET_GE(r,pre,n,w) do { \
|
#define ECMULT_CONST_TABLE_GET_GE(r,pre,n,w) do { \
|
||||||
int m; \
|
int m; \
|
||||||
|
|||||||
@@ -1497,7 +1497,7 @@ static size_t secp256k1_pippenger_max_points(secp256k1_scratch *scratch) {
|
|||||||
|
|
||||||
/* Computes ecmult_multi by simply multiplying and adding each point. Does not
|
/* Computes ecmult_multi by simply multiplying and adding each point. Does not
|
||||||
* require a scratch space */
|
* require a scratch space */
|
||||||
static int secp256k1_ecmult_multi_var_simple(const secp256k1_ecmult_context *ctx, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n_points) {
|
int secp256k1_ecmult_multi_var_simple(const secp256k1_ecmult_context *ctx, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n_points) {
|
||||||
size_t point_idx;
|
size_t point_idx;
|
||||||
secp256k1_scalar szero;
|
secp256k1_scalar szero;
|
||||||
secp256k1_gej tmpj;
|
secp256k1_gej tmpj;
|
||||||
@@ -1522,9 +1522,9 @@ static int secp256k1_ecmult_multi_var_simple(const secp256k1_ecmult_context *ctx
|
|||||||
}
|
}
|
||||||
|
|
||||||
typedef int (*secp256k1_ecmult_multi_func)(const secp256k1_ecmult_context*, secp256k1_scratch*, secp256k1_gej*, const secp256k1_scalar*, secp256k1_ecmult_multi_callback cb, void*, size_t);
|
typedef int (*secp256k1_ecmult_multi_func)(const secp256k1_ecmult_context*, secp256k1_scratch*, secp256k1_gej*, const secp256k1_scalar*, secp256k1_ecmult_multi_callback cb, void*, size_t);
|
||||||
static int secp256k1_ecmult_multi_var(const secp256k1_ecmult_context *ctx, secp256k1_scratch *scratch, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n) {
|
|
||||||
|
int secp256k1_ecmult_multi_var(const secp256k1_ecmult_context *ctx, secp256k1_scratch *scratch, secp256k1_gej *r, const secp256k1_scalar *inp_g_sc, secp256k1_ecmult_multi_callback cb, void *cbdata, size_t n) {
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
int (*f)(const secp256k1_ecmult_context*, secp256k1_scratch*, secp256k1_gej*, const secp256k1_scalar*, secp256k1_ecmult_multi_callback cb, void*, size_t, size_t);
|
int (*f)(const secp256k1_ecmult_context*, secp256k1_scratch*, secp256k1_gej*, const secp256k1_scalar*, secp256k1_ecmult_multi_callback cb, void*, size_t, size_t);
|
||||||
size_t max_points;
|
size_t max_points;
|
||||||
size_t n_batches;
|
size_t n_batches;
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ static void secp256k1_scalar_split_lambda(secp256k1_scalar *r1, secp256k1_scalar
|
|||||||
static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift);
|
static void secp256k1_scalar_mul_shift_var(secp256k1_scalar *r, const secp256k1_scalar *a, const secp256k1_scalar *b, unsigned int shift);
|
||||||
|
|
||||||
/** Generate two scalars from a 32-byte seed and an integer using the chacha20 stream cipher */
|
/** Generate two scalars from a 32-byte seed and an integer using the chacha20 stream cipher */
|
||||||
static void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx);
|
void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx);
|
||||||
|
|
||||||
#endif /* SECP256K1_SCALAR_H */
|
#endif /* SECP256K1_SCALAR_H */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1925,7 +1925,7 @@ c += d; b = ROTL32(b ^ c, 7);
|
|||||||
#define LE32(p) (p)
|
#define LE32(p) (p)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx) {
|
void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx) {
|
||||||
size_t n;
|
size_t n;
|
||||||
size_t over_count = 0;
|
size_t over_count = 0;
|
||||||
uint32_t seed32[8];
|
uint32_t seed32[8];
|
||||||
|
|||||||
@@ -1471,7 +1471,7 @@ c += d; b = ROTL32(b ^ c, 7);
|
|||||||
#define LE32(p) (p)
|
#define LE32(p) (p)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx) {
|
void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t idx) {
|
||||||
size_t n;
|
size_t n;
|
||||||
size_t over_count = 0;
|
size_t over_count = 0;
|
||||||
uint32_t seed32[8];
|
uint32_t seed32[8];
|
||||||
|
|||||||
@@ -230,7 +230,7 @@ SECP256K1_INLINE static int secp256k1_scalar_eq(const secp256k1_scalar *a, const
|
|||||||
return *a == *b;
|
return *a == *b;
|
||||||
}
|
}
|
||||||
|
|
||||||
SECP256K1_INLINE static void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t n) {
|
void secp256k1_scalar_chacha20(secp256k1_scalar *r1, secp256k1_scalar *r2, const unsigned char *seed, uint64_t n) {
|
||||||
*r1 = (seed[0] + n) % EXHAUSTIVE_TEST_ORDER;
|
*r1 = (seed[0] + n) % EXHAUSTIVE_TEST_ORDER;
|
||||||
*r2 = (seed[1] + n) % EXHAUSTIVE_TEST_ORDER;
|
*r2 = (seed[1] + n) % EXHAUSTIVE_TEST_ORDER;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ void secp256k1_context_set_error_callback(secp256k1_context* ctx, void (*fun)(co
|
|||||||
ctx->error_callback.data = data;
|
ctx->error_callback.data = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int secp256k1_pubkey_load(const secp256k1_context* ctx, secp256k1_ge* ge, const secp256k1_pubkey* pubkey) {
|
int secp256k1_pubkey_load(const secp256k1_context* ctx, secp256k1_ge* ge, const secp256k1_pubkey* pubkey) {
|
||||||
if (sizeof(secp256k1_ge_storage) == 64) {
|
if (sizeof(secp256k1_ge_storage) == 64) {
|
||||||
/* When the secp256k1_ge_storage type is exactly 64 byte, use its
|
/* When the secp256k1_ge_storage type is exactly 64 byte, use its
|
||||||
* representation inside secp256k1_pubkey, as conversion is very fast.
|
* representation inside secp256k1_pubkey, as conversion is very fast.
|
||||||
@@ -134,7 +134,7 @@ static int secp256k1_pubkey_load(const secp256k1_context* ctx, secp256k1_ge* ge,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void secp256k1_pubkey_save(secp256k1_pubkey* pubkey, secp256k1_ge* ge) {
|
void secp256k1_pubkey_save(secp256k1_pubkey* pubkey, secp256k1_ge* ge) {
|
||||||
if (sizeof(secp256k1_ge_storage) == 64) {
|
if (sizeof(secp256k1_ge_storage) == 64) {
|
||||||
secp256k1_ge_storage s;
|
secp256k1_ge_storage s;
|
||||||
secp256k1_ge_to_storage(&s, ge);
|
secp256k1_ge_to_storage(&s, ge);
|
||||||
@@ -342,7 +342,7 @@ static int nonce_function_rfc6979(unsigned char *nonce32, const unsigned char *m
|
|||||||
|
|
||||||
/* This nonce function is described in BIP-schnorr
|
/* This nonce function is described in BIP-schnorr
|
||||||
* (https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki) */
|
* (https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki) */
|
||||||
static int secp256k1_nonce_function_bipschnorr(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, void *data, unsigned int counter) {
|
int secp256k1_nonce_function_bipschnorr(unsigned char *nonce32, const unsigned char *msg32, const unsigned char *key32, const unsigned char *algo16, void *data, unsigned int counter) {
|
||||||
secp256k1_sha256 sha;
|
secp256k1_sha256 sha;
|
||||||
(void) data;
|
(void) data;
|
||||||
(void) counter;
|
(void) counter;
|
||||||
@@ -601,9 +601,8 @@ int secp256k1_ec_pubkey_combine(const secp256k1_context* ctx, secp256k1_pubkey *
|
|||||||
# include "modules/ecdh/main_impl.h"
|
# include "modules/ecdh/main_impl.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "modules/schnorrsig/main_impl.h"
|
#include "../secp256k1/src/modules/schnorrsig/main_impl.h"
|
||||||
#include "modules/musig/main_impl.h"
|
#include "../secp256k1/src/modules/musig/main_impl.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef ENABLE_MODULE_RECOVERY
|
#ifdef ENABLE_MODULE_RECOVERY
|
||||||
# include "modules/recovery/main_impl.h"
|
# include "modules/recovery/main_impl.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user