Browse Source

Add windows definitions.

anonswap
tecnovert 2 years ago
parent
commit
654be83506
No known key found for this signature in database GPG Key ID: 6C1A887B4701EAE3
  1. 34
      Dockerfile_compile_dll
  2. 19
      _cffi_build/secp256k1_ed25519.h
  3. 101
      coincurve/_windows_libsecp256k1.py

34
Dockerfile_compile_dll

@ -0,0 +1,34 @@
FROM ubuntu:bionic as build
# Install required system packages
RUN apt-get update && apt-get install -y \
build-essential \
mingw-w64 \
autoconf \
libtool \
wget \
unzip
ARG UNAME=user
ARG UID=1000
ARG GID=1000
RUN groupadd -g $GID -o $UNAME
RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
USER $UNAME
WORKDIR /home/user
RUN wget -O secp256k1_anonswap.zip https://github.com/tecnovert/secp256k1/archive/refs/tags/anonswap_v0.1.zip && \
unzip secp256k1_anonswap.zip && \
mv secp256k1-anonswap_v0.1 64bit
RUN cd 64bit && \
./autogen.sh && \
echo "LDFLAGS = -no-undefined" >> Makefile.am && \
./configure --host=x86_64-w64-mingw32 --enable-module-recovery --enable-experimental --enable-module-ecdh --enable-module-extrakeys --enable-module-schnorrsig --enable-benchmark=no --enable-tests=no --enable-openssl-tests=no --enable-exhaustive-tests=no --enable-static --disable-dependency-tracking --with-pic --enable-module-ed25519 --enable-module-generator --enable-module-dleag --enable-module-ecdsaotves && \
make && \
mv .libs/libsecp256k1-0.dll .
FROM scratch as artifact
COPY --from=build /home/user/64bit/libsecp256k1-0.dll /coincurve/libsecp256k1.dll

19
_cffi_build/secp256k1_ed25519.h

@ -1,10 +1,19 @@
extern const unsigned char ed25519_gen[32];
extern const unsigned char ed25519_gen2[32];
int crypto_scalarmult_ed25519_base_noclamp(unsigned char *q, const unsigned char *n);
int crypto_scalarmult_ed25519_base_noclamp(
unsigned char *q,
const unsigned char *n
);
int crypto_core_ed25519_add(unsigned char *r,
const unsigned char *p, const unsigned char *q);
int crypto_core_ed25519_add(
unsigned char *r,
const unsigned char *p,
const unsigned char *q
);
void crypto_core_ed25519_scalar_add(unsigned char *z, const unsigned char *x,
const unsigned char *y);
void crypto_core_ed25519_scalar_add(
unsigned char *z,
const unsigned char *x,
const unsigned char *y
);

101
coincurve/_windows_libsecp256k1.py

@ -364,6 +364,104 @@ int secp256k1_ecdh(
);
"""
DLEAG_DEFINITIONS = """
typedef struct {
unsigned char data[64];
} secp256k1_generator;
size_t secp256k1_dleag_size(size_t n_bits);
int secp256k1_dleag_prove(
const secp256k1_context *ctx,
unsigned char *proof_out,
size_t *proof_len, /* Input length of proof_out buffer, output length of proof. */
const unsigned char *key, /* 32 bytes */
size_t n_bits,
const unsigned char *nonce, /* 32 bytes */
const secp256k1_generator *gen_s_a,
const secp256k1_generator *gen_s_b,
const unsigned char *gen_e_a,
const unsigned char *gen_e_b
);
int secp256k1_dleag_verify(
const secp256k1_context *ctx,
const unsigned char *proof,
size_t proof_len,
const secp256k1_generator *gen_s_a,
const secp256k1_generator *gen_s_b,
const unsigned char *gen_e_a,
const unsigned char *gen_e_b
);
int secp256k1_dleag_verify_secp256k1_point(
const secp256k1_context *ctx,
const unsigned char *p
);
int secp256k1_dleag_verify_ed25519_point(
const secp256k1_context *ctx,
const unsigned char *p
);
"""
ECDSA_OTVES_DEFINITIONS = """
int ecdsaotves_enc_sign(
const secp256k1_context *ctx,
unsigned char *ct_out,
const unsigned char *skS,
const unsigned char *pkE,
const unsigned char *msg32
);
int ecdsaotves_enc_verify(
const secp256k1_context *ctx,
const unsigned char *pkS,
const unsigned char *pkE,
const unsigned char *msg32,
const unsigned char *ct
);
int ecdsaotves_dec_sig(
const secp256k1_context *ctx,
unsigned char *sig_out,
size_t *sig_length,
const unsigned char *skE,
const unsigned char *ct
);
int ecdsaotves_rec_enc_key(
const secp256k1_context *ctx,
unsigned char *key_out,
const unsigned char *pkE,
const unsigned char *ct,
const unsigned char *dersig,
size_t sig_length
);
"""
ED25519_DEFINITIONS = """
extern const unsigned char ed25519_gen[32];
extern const unsigned char ed25519_gen2[32];
int crypto_scalarmult_ed25519_base_noclamp(
unsigned char *q,
const unsigned char *n
);
int crypto_core_ed25519_add(
unsigned char *r,
const unsigned char *p,
const unsigned char *q
);
void crypto_core_ed25519_scalar_add(
unsigned char *z,
const unsigned char *x,
const unsigned char *y
);
"""
ffi = FFI()
ffi.cdef(BASE_DEFINITIONS)
@ -371,6 +469,9 @@ ffi.cdef(EXTRAKEYS_DEFINITIONS)
ffi.cdef(RECOVERY_DEFINITIONS)
ffi.cdef(SCHNORRSIG_DEFINITIONS)
ffi.cdef(ECDH_DEFINITIONS)
ffi.cdef(DLEAG_DEFINITIONS)
ffi.cdef(ECDSA_OTVES_DEFINITIONS)
ffi.cdef(ED25519_DEFINITIONS)
here = os.path.dirname(os.path.abspath(__file__))
lib = ffi.dlopen(os.path.join(here, 'libsecp256k1.dll'))

Loading…
Cancel
Save