29 lines
649 B
Go
29 lines
649 B
Go
|
// Copyright (c) 2013-2014 Conformal Systems LLC.
|
||
|
// Use of this source code is governed by an ISC
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package btcec
|
||
|
|
||
|
import (
|
||
|
"crypto/ecdsa"
|
||
|
"math/big"
|
||
|
)
|
||
|
|
||
|
// PrivKeyFromBytes returns a private and public key for `curve' based on the
|
||
|
// private key passed as an argument as a byte slice.
|
||
|
func PrivKeyFromBytes(curve *KoblitzCurve, pk []byte) (*ecdsa.PrivateKey,
|
||
|
*PublicKey) {
|
||
|
x, y := curve.ScalarBaseMult(pk)
|
||
|
|
||
|
priv := &ecdsa.PrivateKey{
|
||
|
PublicKey: ecdsa.PublicKey{
|
||
|
Curve: curve,
|
||
|
X: x,
|
||
|
Y: y,
|
||
|
},
|
||
|
D: new(big.Int).SetBytes(pk),
|
||
|
}
|
||
|
|
||
|
return priv, (*PublicKey)(&priv.PublicKey)
|
||
|
}
|