Skip to content

Libsec update #149

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,6 @@ You can speed this library up ~100x by using C-bindings to [bitcoin core's `libs

### `libsecp256k1` Dependency Installation


#### Easy (MacOS only)
Use [brew](https://brew.sh/) to install `libsecp256k1`:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why get rid of this?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unfortunately, the brew install doesn't have these options enabled --enable-module-extrakeys --enable-module-schnorrsig --enable-experimental so it fails.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That used to be true, but I fixed that upstream in 2021!
cuber/homebrew-libsecp256k1@50639e1

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, then the upstream libsecp256k1 needs to upgrade to the latest version because that one still uses the deprecated function. How do I do that?

Copy link
Collaborator

@mflaxman mflaxman Jun 9, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like you just change the version number and hash digest here:
https://github.com/cuber/homebrew-libsecp256k1/blob/master/libsecp256k1.rb

(You can do it on your own branch/repo and use $ brew tap for testing)

```
$ brew tap buidl-bitcoin/homebrew-libsecp256k1
$ brew install pkg-config libffi libsecp256k1
```

#### Hard (Linux/Mac)
Compile `libsecp256k1` from scratch with experimental modules enabled to make Schnorr signatures work:
```bash
$ git clone https://github.com/bitcoin-core/secp256k1
Expand All @@ -97,6 +88,6 @@ $ sudo make install
### `buidl` Installation

```bash
$ git clone [email protected]:buidl-bitcoin/buidl-python.git && cd buidl-python && python3 -m pip install -r requirements-libsec.txt && python3 -m pip install --editable . && cd buidl && python3 libsec_build.py && cd .. && python3 -c "from buidl import *; print('success') if is_libsec_enabled() else print('LIBSEC INSTALL FAIL')"
$ git clone [email protected]:buidl-bitcoin/buidl-python.git && cd buidl-python && python3 -m pip install -r requirements-libsec.txt && python3 -m pip install --editable . && cd buidl && CPATH=/usr/local/include LIBRARY_PATH=/usr/local/lib python3 libsec_build.py && cd .. && python3 -c "from buidl import *; print('success') if is_libsec_enabled() else print('LIBSEC INSTALL FAIL')"

```
2 changes: 1 addition & 1 deletion buidl/cecc.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ def sign_schnorr(self, msg, aux):
):
raise RuntimeError("libsecp256k1 keypair creation problem")
raw_sig = ffi.new("unsigned char [64]")
if not lib.secp256k1_schnorrsig_sign(GLOBAL_CTX, raw_sig, msg, keypair, aux):
if not lib.secp256k1_schnorrsig_sign32(GLOBAL_CTX, raw_sig, msg, keypair, aux):
raise RuntimeError("libsecp256k1 schnorr signing problem")
return SchnorrSignature(bytes(ffi.buffer(raw_sig, 64)))

Expand Down
2 changes: 1 addition & 1 deletion buidl/libsec.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ int secp256k1_keypair_create(
const unsigned char *seckey
);

int secp256k1_schnorrsig_sign(
int secp256k1_schnorrsig_sign32(
const secp256k1_context* ctx,
unsigned char *sig64,
const unsigned char *msg32,
Expand Down