Commit Graph
66 Commits
Author SHA1 Message Date
Fabrice Drouin 567f411e12 Verify musig2 secret nonces (#108)
* Verify musig2 secret nonces

Trying to generate a musig2 partial signature with a secret nonce that was generated with a public key that does not match the signing key's public key will trigger secp256k1's illegal callback (which calls abort()) and crash the application.

=> Here we verify that the secret nonce matches the signing key before we call secp256k1_musig_partial_sign().
The verification method is a bit hackish (we extract the public key from the secret nonce blob) because secp256k1 does not export the methods we need to do this cleanly.
2024-04-18 09:54:51 +02:00
Fabrice Drouin eb92fccbd6 Build a universal JNI binary for macos (#106)
Universal libraries embed both arm64 and x64 binaries.
2024-03-12 10:09:34 +01:00
Fabrice Drouin d30e2a1b59 Set version to 0.15.0 (#105) 2024-03-04 19:29:52 +01:00
Fabrice Drouin bae4744bcb Add macos build targets (#104)
* Add macos build targets

* Update snapshot publishing script
2024-03-04 17:58:20 +01:00
Fabrice Drouin b2eb68bf83 Post release cleanup (#103)
* Set version to 0.15.0-SNAPSHOT

* Update publishing scripts
2024-02-14 18:28:19 +01:00
Fabrice Drouin c582396b96 Set version to 0.14.0 (#102) 2024-02-14 13:51:52 +01:00
Fabrice DrouinandBastien Teinturier 202b0c94b6 Add support for musig2 (#93)
* Use Jonas Nick's musig2 branch

* Reformat c code (no functional changes)

* Implement musig2

* Add documentation to musig2 functions (#97)

Usage of the Musig2 functions isn't intuitive at all, especially with
the key aggregation cache and session data. It's important to provide
accurate documentation to help users understand how to correctly produce
musig2 signatures.

We also change argument names to match Kotlin best practices instead of
using the same argument names as C functions.

* Add musig2 reference tests (no functional changes)

---------

Co-authored-by: Bastien Teinturier <31281497+t-bast@users.noreply.github.com>
2024-02-14 13:28:22 +01:00
Fabrice Drouin 780f97e46d Set version to 0.14.0-SNAPSHOT (#99) 2024-01-23 22:27:31 +01:00
Fabrice Drouin da2cf93fcf Update README.md 2024-01-23 21:55:59 +01:00
Fabrice Drouin f5e1655ff0 Set version to 0.13.0 (#98) 2024-01-23 16:46:55 +01:00
Fabrice Drouin 8ba5d4652e Use kotlin 1.9 (#92)
Use kotlin 1.9
2024-01-23 15:44:06 +01:00
Fabrice Drouin e94e41b896 Update secp256k1 to version 0.4.1 (#96)
Use secp256k1 0.4.1
2024-01-02 11:16:36 +01:00
Fabrice Drouin 1a4c8b37cb Release 0.12.0 (#95) 2023-12-13 16:40:32 +01:00
Fabrice Drouin f242b4ffe8 Check arguments passed to secp256k1 methods (#94)
* Check arguments passed to secp256k1 methods

Illegal arguments will trigger an internal callback that prints to stderr and calls abort.
We already check arguments in our JNI and kotlin native code but had missed 2 checks (recid in ecdsaRecover, empty arrays in pubkeyCombine).

* Implement the same "tweak" checks in the native code and JNI code

The native code was missing checks on the "tweak" size (which must be 32 bytes)
2023-12-13 13:42:14 +01:00
Fabrice Drouin 161da89ee1 Set version to 0.11.0 (#86) 2023-09-28 09:50:24 +02:00
Fabrice Drouin 3706a546a2 Use secp256k1 0.4.0 (#85) 2023-09-18 14:05:36 +02:00
Fabrice Drouin ffcaaf1b64 Set version to 0.10.1 (#84) 2023-06-28 13:03:19 +02:00
Fabrice Drouin 6ef94df247 Use secp256k1 0.3.2 (#83) 2023-06-28 10:43:05 +02:00
Fabrice Drouin 5169073a92 Update README.md 2023-05-15 11:15:30 +02:00
Fabrice Drouin 317e086cba Set version to 0.10.0 (#82) 2023-05-11 18:29:50 +02:00
Fabrice Drouin 7c7aabba80 Upgrade to Kotlin 1.8 (#81)
* Upgrade to Kotlin 1.8

* Update snapshot deployment script

Kotlin 1.8 creates a new metadata jar for ios modules.
2023-05-11 17:53:41 +02:00
Fabrice Drouin b6823cbda6 Update CI build (#80) 2023-04-25 09:55:48 +02:00
Fabrice Drouin d50d9060c2 Set version to 0.9.0 (#78) 2023-04-13 09:36:07 +02:00
Fabrice Drouin 6fedb1577c Update build for macos M1 (#77) 2023-04-13 09:15:43 +02:00
Fabrice Drouin 94bb2d67cf Use secp256k1 0.3.1 (#76) 2023-04-11 19:10:51 +02:00
Fabrice Drouin bf05a001fe Update Android build plugin and tools (#75) 2023-04-11 18:42:06 +02:00
Fabrice Drouin d9e5fda600 Set version to 0.8.0 (#73) 2023-03-09 11:41:08 +01:00
Fabrice Drouin 8c984678be Use secp256k1 0.3.0 (#72)
* Use secp256k1 0.3.0

* Set version to 0.8.0-SNAPSHOT
2023-03-09 11:10:41 +01:00
Fabrice Drouin cec3fb385f Set version to 0.7.1 (#70) 2023-01-04 15:33:55 +01:00
Fabrice Drouin d59def1c79 Use secp256k1 0.2.0 (#67) 2022-12-13 19:33:28 +01:00
Fabrice Drouin 52d73951e6 Set version to 0.7.1-SNAPSHOT (#68) 2022-12-13 19:33:06 +01:00
Fabrice Drouin 08669500b6 Update README.md
Upgrade to a kotlin 1.6.21 badge
2022-09-22 10:29:21 +02:00
Fabrice Drouin 5e59132e2a Set version to 0.7.0 (#64) 2022-09-21 16:25:50 +02:00
Fabrice Drouin d4eba9fb96 Update to kotlin 1.6 (#63)
Use kotlin 1.6 (and gradle 7.5.1)
2022-09-21 16:00:19 +02:00
Fabrice Drouin d01a067159 Update secp256k1 sources (#60)
* Set version to 0.6.5-SNAPSHOT

* Update secp256k1 sources

We use 44c2452fd387f7ca604ab42d73746e7d3a44d8a2, same as bitcoin core at c41bfd1070176efcaae7fa33313cb4c3e88b44b0
2022-08-03 10:01:40 +02:00
Fabrice Drouin 75f45e9191 Set version to 0.6.4 (#53) 2022-04-11 15:17:42 +02:00
Fabrice Drouin 118c72064c Update secp256k1 sources (#52)
We're now at 8746600eec5e7fcd35dabd480839a3a4bdfee87b, same as bitcoin core at 747cdf1d652d8587e9f2e3d4436c3ecdbf56d0a5
2022-04-11 13:34:59 +02:00
Fabrice Drouin 7af7b7760e Document how to add custom JNI bindings (#50)
This is how we add Linux Arm64 JNI bindings.
2022-04-04 11:26:18 +02:00
Fabrice Drouin 4df49dd8f6 Document publishing process (#46)
Document publishing process
2022-03-29 18:42:01 +02:00
Fabrice Drouin 48c3e4723b Set version to 0.6.4-SNAPSHOT (#49) 2022-03-24 16:26:17 +01:00
Fabrice Drouin df183e88b2 Set version to 0.6.3 (#45) 2022-03-23 19:15:00 +01:00
Fabrice Drouin de3fc7fe11 CI: fix windows tests (#48)
Github Actions modified their windows runners which broke our build. As recommended, we now uses `msys2` on windows and install the packages that we need.
2022-03-23 15:45:45 +01:00
Fabrice Drouin 5942ccc977 Set version to 0.6.2 (#41) 2022-01-04 11:27:49 +01:00
Fabrice Drouin c3602dc649 Update secp256k1 sources (#40)
We're now at 0559fc6e41b65af6e52c32eb9b1286494412a162, same as bitcoin core at 98a2ddcd6ed01a38cd0dad7c1abc7023a60d3fd0
2021-12-20 19:35:23 +01:00
Fabrice Drouin ac7d4983d5 Export Schnorr signature API (#32)
Implement Schnorr signatures (BIP 340)
2021-11-23 17:38:46 +01:00
Fabrice Drouin 050cc83dd0 Set version to 0.6.1 (#38)
* Set version to 0.6.1

* Don't set up Android CI env on windows

It's useless as we just run Android CI checks on Android.
2021-11-07 20:37:50 +01:00
Fabrice Drouin 3389795a52 Update build instructions (#34) 2021-10-26 16:28:04 +02:00
Fabrice Drouin 6955c7416a Add option to skip building and testing Android libraries (#33)
* Add otpion to skip building and testing Android libraries

Add `skip.android=true` to the local.properties files at the project's root to skip Android builds.
2021-10-25 14:27:02 +02:00
Fabrice Drouin 32ef659f82 Update README 2021-09-22 17:48:15 +02:00
Fabrice Drouin 60801787f9 Release 0.6.0 (#30) 2021-09-22 15:51:58 +02:00
Fabrice Drouin e7644b7ddb Upgrade to kotlin 1.5 (#27)
* Upgrade to kotlin 1.5.31

* Upgrade dokka gradle plugins to 1.5.30
2021-09-22 15:22:05 +02:00
Fabrice Drouin 3a394cdddc Update secp256k1 sources to be8d9c262f (#29) 2021-09-22 15:03:20 +02:00
Fabrice Drouin 4aa4dc2a50 Set version to 0.5.3-SNASPHOT (#25)
* Set version to 0.5.3-SNAPSHOT

* Use Android API level 27
2021-08-10 09:48:31 +02:00
Fabrice Drouin 7bc3aafd08 Set version to 0.5.2 (#22) 2021-06-28 11:30:05 +02:00
Fabrice Drouin 9c1afc715a Fix Android build (#23)
* Upgrade Android NDK

* Use Android emulator 30.7.3 on macos
2021-06-28 10:31:57 +02:00
Fabrice Drouin b544b24cc3 Fix memory leak in pubkeyCreate() (#20) 2021-06-22 16:16:08 +02:00
Fabrice Drouin 2b0254affb Update secp256k1 sources (#19)
We're now at efad350, the same commit that bitcoin core is using
2021-06-17 11:42:50 +02:00
Fabrice Drouin b23733d5d4 Use kotlin 1.4.32, set version to 0.5.2-SNAPSHOT, remove bintray settings. (#18) 2021-04-08 10:12:36 +02:00
Fabrice Drouin 0751d7c103 Update README.md 2021-03-26 14:35:15 +01:00
Fabrice Drouin eadd428895 Set version to 0.5.1 (#17) 2021-03-22 21:44:01 +01:00
Fabrice Drouin ad1979c11e Update libsecp256k1 code (#16)
There are no external dependencies now
2021-03-19 19:07:05 +01:00
Fabrice Drouin 0cc4c251f9 Fixup for #6 (native signature format detection) (#8)
* Fixup for #6

Behaviour was changed in the JNI wapper but not in Kotlin native code.

* Set version to 0.2.1-1.4-M3
2020-07-09 20:16:39 +02:00
Fabrice Drouin 5af1807f38 Fix signature format detection (#6)
64 bytes means compact, less is invalid, other try DER and let the library handle the actual check.
2020-07-09 15:59:07 +02:00
Fabrice Drouin e2e250fb16 Update README.md 2020-07-04 13:39:26 +02:00
sstone 08d1692932 Add compact2der() method 2020-07-02 21:39:33 +02:00
Fabrice DrouinandSalomon BRYS 3ee2635d93 Upgrade JNI interface (#1)
* Upgrade JNI interface

* Input signatures can be DER or compact format, output signatures are always in compact format

* Input public keys can be compressed or uncompressed, output public keys are always uncompressed

* Name and parameters match libsecp256k1's

* JNI implementation is now straightforward

  No more ByteBuffers
  Exceptions are thrown in case of failures

* Update src/nativeMain/kotlin/fr/acinq/secp256k1/Secp256k1Native.kt

* Add public key compression method

Co-authored-by: Salomon BRYS <salomon.brys@gmail.com>
2020-07-02 17:52:21 +02:00