csecp256k1

Haskell FFI bindings to bitcoin-core/secp256k1 (docs.ppad.tech/csecp256k1).
git clone git://git.ppad.tech/csecp256k1.git
Log | Files | Refs | README | LICENSE

README.md (1636B)


      1 # ppad-csecp256k1
      2 
      3 Bindings to bitcoin-core/secp256k1, which provides digital signatures
      4 and other cryptographic primitives on the secp256k1 elliptic curve.
      5 
      6 This library exposes a minimal subset of the underlying library, mainly
      7 supporting ECDSA/Schnorr signatures and ECDH secret computation, as well
      8 as utilities for public key manipulation.
      9 
     10 ## Documentation
     11 
     12 API documentation and examples are hosted at
     13 [docs.ppad.tech/csecp256k1][hadoc].
     14 
     15 ## Development
     16 
     17 You'll require [Nix][nixos] with [flake][flake] support enabled. Enter a
     18 development shell with:
     19 
     20 ```
     21 $ nix develop
     22 ```
     23 
     24 Then do e.g.:
     25 
     26 ```
     27 $ cabal repl ppad-csecp256k1
     28 ```
     29 
     30 to get a REPL for the main library, or:
     31 
     32 ```
     33 $ cabal repl secp256k1-sys-tests
     34 ```
     35 
     36 to get one for the internal test suite. You can run all tests via:
     37 
     38 ```
     39 $ cabal test
     40 ```
     41 
     42 and the benchmarks via:
     43 
     44 ```
     45 $ cabal bench
     46 ```
     47 
     48 ## Security
     49 
     50 These bindings aim at the maximum security achievable in a
     51 garbage-collected language under an optimizing compiler such as GHC, in
     52 which strict constant-timeness can be challenging to achieve.
     53 
     54 If you discover any vulnerabilities, please disclose them via
     55 security@ppad.tech.
     56 
     57 ## Attribution
     58 
     59 This implementation has benefited greatly and uses modified versions of
     60 code from both [secp256k1-haskell][hsecp] (test cases, FFI/bytestring
     61 manipulation) and [rust-secp256k1][rsecp] (dependency vendoring).
     62 
     63 [nixos]: https://nixos.org/
     64 [flake]: https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake.html
     65 [hadoc]: https://docs.ppad.tech/csecp256k1
     66 [hsecp]: https://github.com/haskoin/secp256k1-haskell
     67 [rsecp]: https://github.com/rust-bitcoin/rust-secp256k1