2
0
mirror of synced 2025-02-16 15:46:49 +00:00
Gruruya 6e18455a63
Enable and expose Schnorrsig (#44)
* Enable Schnorrsig module in wrapper

The extrakeys module is a dependency for Schnorrsig, so that's enabled as well.

* Add {.bycopy.} pragma

* Add Schnorrsig interface to `abi.nim`

Multikey interface is a dependency the for schnorrsig, so it was added
as well.

* Add tests for Schnorr signing

* Fix schnorr magic const declaration on 1.6 and below

* Remove unnecessary {.bycopy.} pragmas

Done under the impression that {.bycopy.} is not necessary when only
passing the object to C via ptr.

* Make SkKeyPair a wrapper around secp256k1_keypair

* Add more helper procs for new SkKeyPair

* Small fixes

* Re-order

* Rework patch. Implement Schnorr signing and undo breaking changes.

* Reduce code duplication

* Fix type

* Remove accidental extra indentation

* Add `default` {.error.} proc for SkSchnorrSignature

* Remove extra test

* Add from/to raw/hex

* Comments

* Add low-level test for `secp256k1_keypair`

* Fix errors on Nim 1.2

* Comment

* Allow passing a `Rng`/`FoolproofRng` to `signSchnorr` for improved security

* Comments

* Correct `noncefp` to be a pointer in `extraparams` object

* Remove unneeded {.bycopy.}

Co-authored-by: Jacek Sieka <arnetheduck@gmail.com>

* Don't check the RNG for Schnorr sig using private key requirements.

* Add comment detailing that `signSchnorr` without an `rng` is discouraged

* Remove non-`rng` signSchnorr variant from tests

* Rename `signSchnorr` without `rng` to `signSchnorrUnsafe`

* Unify `schnorrSig` implementations and add `array[32, bytes]` variant

* Fix on Nim 1.2

* Make `signSchnorr` accept `Opt[array[32, byte]]` rather than `[array[32,byte]]`

* Remove unused template param

* Inline `signSchnorr Rng` procs

* Remove `nimble.lock`, was breaking tests on Nim >1.6

Was causing
`Error: cannot open file: stew/byteutils`

* Correct template parameter naming

* Consistently apply {.noinit.} pragma

* `{.noinit.}` random byte array

* Revert "`{.noinit.}` random byte array"

This reverts commit a3f99817d9627880974be1ae81014fa17d14f2db.

* Correct template pragmas

* Explicitly declare `noncefp` as `nil`

* Create and export `xonly_pubkey` wrapping type

* Complete implementation of `SkXOnlyPublicKey`

* Correct comment

* Add tests for 'SkXOnlyPublicKey`

* Correct conversion proc name

* Correct conversion proc name cont.

---------

Co-authored-by: Jacek Sieka <arnetheduck@gmail.com>
2023-04-11 10:17:03 +02:00
2023-04-11 10:17:03 +02:00
2019-08-24 05:03:42 +02:00
2019-08-24 05:03:42 +02:00
2022-07-25 22:08:33 +03:00
2018-09-04 23:05:11 -06:00
2018-09-04 23:05:11 -06:00
2022-07-25 21:57:38 +03:00

secp256k1

Build Status (Travis) Windows build status (Appveyor) License: Apache License: MIT Stability: experimental Github action

Introduction

This library is a wrapper for Bitcoin's secp256k1 library. Two interfaces are exposed - secp256k1 which thinly wraps the raw C interface found in secp256k1_abi. The thin wrapper is recommended.

Installation

Add to your .nimble file:

requires "secp256k1"

Build and test

# Upstream secp256k1 c library is tracked with a submodule
git submodule update --init
nimble test

License

Licensed and distributed under either of

or

at your option. This file may not be copied, modified, or distributed except according to those terms.

Description
A wrapper for libsecp256k1
Readme
Languages
Nim 98.6%
Makefile 1.4%