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