2013-06-13 19:45:48 +02:00
|
|
|
btcec
|
|
|
|
=====
|
|
|
|
|
2021-03-04 23:12:45 +01:00
|
|
|
[![Build Status](https://github.com/btcsuite/btcd/workflows/Build%20and%20Test/badge.svg)](https://github.com/btcsuite/btcd/actions)
|
2017-05-25 18:29:23 +02:00
|
|
|
[![ISC License](http://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org)
|
2021-03-04 23:12:45 +01:00
|
|
|
[![GoDoc](https://pkg.go.dev/github.com/btcsuite/btcd/btcec?status.png)](https://pkg.go.dev/github.com/btcsuite/btcd/btcec)
|
2013-12-23 18:41:02 +01:00
|
|
|
|
2013-12-28 22:04:12 +01:00
|
|
|
Package btcec implements elliptic curve cryptography needed for working with
|
|
|
|
Bitcoin (secp256k1 only for now). It is designed so that it may be used with the
|
2014-08-10 22:10:55 +02:00
|
|
|
standard crypto/ecdsa packages provided with go. A comprehensive suite of test
|
|
|
|
is provided to ensure proper functionality. Package btcec was originally based
|
|
|
|
on work from ThePiachu which is licensed under the same terms as Go, but it has
|
2015-05-01 08:28:01 +02:00
|
|
|
signficantly diverged since then. The btcsuite developers original is licensed
|
|
|
|
under the liberal ISC license.
|
2013-06-13 20:27:23 +02:00
|
|
|
|
2015-02-06 17:09:24 +01:00
|
|
|
Although this package was primarily written for btcd, it has intentionally been
|
2013-06-13 20:27:23 +02:00
|
|
|
designed so it can be used as a standalone package for any projects needing to
|
|
|
|
use secp256k1 elliptic curve cryptography.
|
|
|
|
|
2015-10-23 18:34:50 +02:00
|
|
|
## Installation and Updating
|
2013-06-13 20:27:23 +02:00
|
|
|
|
|
|
|
```bash
|
2015-10-23 18:34:50 +02:00
|
|
|
$ go get -u github.com/btcsuite/btcd/btcec
|
2013-06-13 20:27:23 +02:00
|
|
|
```
|
|
|
|
|
2014-08-10 22:13:11 +02:00
|
|
|
## Examples
|
|
|
|
|
2021-03-04 23:12:45 +01:00
|
|
|
* [Sign Message](https://pkg.go.dev/github.com/btcsuite/btcd/btcec#example-package--SignMessage)
|
2014-08-10 22:13:11 +02:00
|
|
|
Demonstrates signing a message with a secp256k1 private key that is first
|
|
|
|
parsed form raw bytes and serializing the generated signature.
|
|
|
|
|
2021-03-04 23:12:45 +01:00
|
|
|
* [Verify Signature](https://pkg.go.dev/github.com/btcsuite/btcd/btcec#example-package--VerifySignature)
|
2014-08-10 22:13:11 +02:00
|
|
|
Demonstrates verifying a secp256k1 signature against a public key that is
|
|
|
|
first parsed from raw bytes. The signature is also parsed from raw bytes.
|
|
|
|
|
2021-03-04 23:12:45 +01:00
|
|
|
* [Encryption](https://pkg.go.dev/github.com/btcsuite/btcd/btcec#example-package--EncryptMessage)
|
2015-04-10 00:13:35 +02:00
|
|
|
Demonstrates encrypting a message for a public key that is first parsed from
|
|
|
|
raw bytes, then decrypting it using the corresponding private key.
|
|
|
|
|
2021-03-04 23:12:45 +01:00
|
|
|
* [Decryption](https://pkg.go.dev/github.com/btcsuite/btcd/btcec#example-package--DecryptMessage)
|
2015-04-10 00:13:35 +02:00
|
|
|
Demonstrates decrypting a message using a private key that is first parsed
|
|
|
|
from raw bytes.
|
|
|
|
|
2013-06-13 20:27:23 +02:00
|
|
|
## GPG Verification Key
|
|
|
|
|
|
|
|
All official release tags are signed by Conformal so users can ensure the code
|
2015-05-01 08:28:01 +02:00
|
|
|
has not been tampered with and is coming from the btcsuite developers. To
|
|
|
|
verify the signature perform the following:
|
2013-06-13 20:27:23 +02:00
|
|
|
|
|
|
|
- Download the public key from the Conformal website at
|
|
|
|
https://opensource.conformal.com/GIT-GPG-KEY-conformal.txt
|
|
|
|
|
|
|
|
- Import the public key into your GPG keyring:
|
|
|
|
```bash
|
|
|
|
gpg --import GIT-GPG-KEY-conformal.txt
|
|
|
|
```
|
|
|
|
|
|
|
|
- Verify the release tag with the following command where `TAG_NAME` is a
|
|
|
|
placeholder for the specific tag:
|
|
|
|
```bash
|
|
|
|
git tag -v TAG_NAME
|
|
|
|
```
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
2014-08-10 22:12:28 +02:00
|
|
|
Package btcec is licensed under the [copyfree](http://copyfree.org) ISC License
|
|
|
|
except for btcec.go and btcec_test.go which is under the same license as Go.
|
2013-06-13 20:27:23 +02:00
|
|
|
|