61 Commits

Author SHA1 Message Date
kngako
64e15574db Fix for handling nonce processing 2024-08-21 22:28:30 +02:00
kngako
d74895079d Fix for handling ids33 in JNI 2024-08-21 21:35:27 +02:00
kngako
e6cba2b505 A few JNI fixes 2024-08-21 18:35:41 +02:00
kngako
c39590a859 Broke the JNI now 2024-08-20 22:29:29 +02:00
kngako
83141916e8 JVM Tests hacks 2024-08-20 02:19:43 +02:00
kngako
f5ab7fdeb7 Improve JNI handling of frost share gen 2024-08-20 01:39:22 +02:00
kngako
08f0304d4c Most test cases on JNI 2024-08-20 01:05:29 +02:00
kngako
af3f44f426 Tests JNI share aggregate 2024-08-20 00:09:56 +02:00
kngako
be7f11d657 Return outputs of frost_shares_gen on jni 2024-08-19 23:58:15 +02:00
kngako
6e578d43d7 More logic for the JNI stuff 2024-08-19 22:14:27 +02:00
kngako
b1e96f329b Increase test and fix some compiler errors on the JNI side. 2024-08-19 21:40:56 +02:00
kngako
e7f074d36e Getting started with unit tests 2024-08-18 01:27:04 +02:00
kngako
32ee077995 Improve pointer handling logic 2024-08-14 09:14:34 +02:00
kngako
41ddd40691 Return byteArray instead of array of byteArrays 2024-08-13 01:41:45 +02:00
kngako
3efca867e6 Fix NativeSecp256k1 call 2024-08-12 23:23:26 +02:00
kngako
45c713d56e Conditional checks 2024-08-12 23:02:56 +02:00
kngako
8b56662685 Correct use of whitespace 2024-08-12 22:15:17 +02:00
kngako
28d255daca Knock out some todos 2024-08-12 02:55:41 +02:00
kngako
1b29cfa2d7 JNI implementations continued 2024-08-12 02:16:54 +02:00
kngako
b439181376 JNI implementations 2024-08-11 03:43:30 +02:00
kngako
5c4186770f Fix comments on secp256k1_frost_partial_sig_agg 2024-08-07 03:09:20 +02:00
kngako
86d7d9835f Handle inputs/outputs and nulls correctly. 2024-08-07 02:48:25 +02:00
kngako
23739e13a8 Add comments to Secp256k1CFunctions.h 2024-08-07 02:30:43 +02:00
kngako
e7ec7b7478 Update Secp256k1CFunctions.h 2024-08-06 02:13:12 +02:00
kngako
eb71fd5ff4 Improve arguments 2024-08-06 02:11:57 +02:00
kngako
b064c0bcf0 Check arguments to constraints 2024-08-06 00:19:55 +02:00
kngako
9e287feb26 Cinterop for arrays of pointers 2024-08-05 22:34:45 +02:00
kngako
3c01a2aad4 Use frost in Secp256k1 native logic 2024-08-04 23:53:28 +02:00
Kgothatso
099dcccf49 Make use of libsecp256k1 for musig+frost functions 2024-08-01 02:45:16 +02:00
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
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
8ba5d4652e
Use kotlin 1.9 (#92)
Use kotlin 1.9
2024-01-23 15:44:06 +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
3706a546a2
Use secp256k1 0.4.0 (#85) 2023-09-18 14:05:36 +02:00
Fabrice Drouin
6fedb1577c
Update build for macos M1 (#77) 2023-04-13 09:15:43 +02:00
Fabrice Drouin
bf05a001fe
Update Android build plugin and tools (#75) 2023-04-11 18:42:06 +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
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
ac7d4983d5
Export Schnorr signature API (#32)
Implement Schnorr signatures (BIP 340)
2021-11-23 17:38:46 +01:00
Bastien Teinturier
2ae6abcf93
Clarify public key encoding and enrich tests (#37)
Don't throw in `seckey_verify`: it's inconsistent to have this function throw
for some invalid inputs and return false for other invalid inputs.

Document public key compression and add tests.
2021-11-05 10:45:49 +01:00
Bastien Teinturier
f695e7453d
Clean up and enrich tests (#35)
* Harmonize parameter names
* Document methods
* Replace pubKeyAdd with pubKeyCombine
* Clean-up tests
2021-10-26 17:16:36 +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
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
ad1979c11e
Update libsecp256k1 code (#16)
There are no external dependencies now
2021-03-19 19:07:05 +01:00
Romain Boisselle
f493edfdfb
New publication configuration (#14)
* add Dokka + align POM metadatas with sonatype requirements

* update snapshot CI

* update JNI publication

* update CI scripts

* remove maven-metadata-local.xml

* add snapshot publication with maven-publish plugin
2021-03-11 17:53:50 +01:00
Salomon BRYS
7272a55b8a
Changed deployment artifact-id to secp256k1-kmp (#12)
Co-authored-by: Salomon BRYS <salomon@kodein.net>
2020-09-09 11:00:04 +02:00
Salomon BRYS
d702925e40
Kotlin 1.4.0 (#11)
Co-authored-by: Salomon BRYS <salomon@kodein.net>
2020-08-18 10:52:42 +02:00
Salomon BRYS
dbf8301f34
Android loading may fallback to standard JVM (#9)
* Android loading may fallback to standard JVM

* Java code must target JVM 1.8 in order to be compatible Android.

Co-authored-by: Salomon BRYS <salomon@kodein.net>
2020-07-16 22:21:30 +02:00