mirror of
https://github.com/btcsuite/btcd.git
synced 2025-02-24 06:47:59 +01:00
In this commit, we turn the package into a new Go module (version 2), and then port over the current set of types and functions to mainly alias to the more optimized and maintained dcrec variant. Taking a look at the benchmarks, most operations other than normalization (which IIRC is a bit slower now due to constant time fixes) enjoy some nice speeds up: ``` benchcmp is deprecated in favor of benchstat: https://pkg.go.dev/golang.org/x/perf/cmd/benchstat benchmark old ns/op new ns/op delta BenchmarkAddJacobian-8 464 328 -29.20% BenchmarkAddJacobianNotZOne-8 1138 372 -67.27% BenchmarkScalarBaseMult-8 47336 31531 -33.39% BenchmarkScalarBaseMultLarge-8 42465 32057 -24.51% BenchmarkScalarMult-8 123355 117579 -4.68% BenchmarkNAF-8 582 168 -71.12% BenchmarkSigVerify-8 175414 120794 -31.14% BenchmarkFieldNormalize-8 23.8 24.4 +2.39% BenchmarkParseCompressedPubKey-8 24282 10907 -55.08% ```
31 lines
1,004 B
Go
31 lines
1,004 B
Go
// Copyright (c) 2013-2016 The btcsuite developers
|
|
// Use of this source code is governed by an ISC
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package btcec
|
|
|
|
import (
|
|
secp "github.com/decred/dcrd/dcrec/secp256k1/v4"
|
|
)
|
|
|
|
// PrivateKey wraps an ecdsa.PrivateKey as a convenience mainly for signing
|
|
// things with the the private key without having to directly import the ecdsa
|
|
// package.
|
|
type PrivateKey = secp.PrivateKey
|
|
|
|
// PrivKeyFromBytes returns a private and public key for `curve' based on the
|
|
// private key passed as an argument as a byte slice.
|
|
func PrivKeyFromBytes(pk []byte) (*PrivateKey, *PublicKey) {
|
|
privKey := secp.PrivKeyFromBytes(pk)
|
|
|
|
return privKey, privKey.PubKey()
|
|
}
|
|
|
|
// NewPrivateKey is a wrapper for ecdsa.GenerateKey that returns a PrivateKey
|
|
// instead of the normal ecdsa.PrivateKey.
|
|
func NewPrivateKey() (*PrivateKey, error) {
|
|
return secp.GeneratePrivateKey()
|
|
}
|
|
|
|
// PrivKeyBytesLen defines the length in bytes of a serialized private key.
|
|
const PrivKeyBytesLen = 32
|