109 lines
2.5 KiB
Go
109 lines
2.5 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/ethereum/eth-go/ethutil"
|
|
"github.com/obscuren/secp256k1-go"
|
|
)
|
|
|
|
func CreateKeyPair(force bool) {
|
|
if force {
|
|
ethutil.GetKeyRing().Reset()
|
|
fmt.Println("resetting")
|
|
}
|
|
|
|
if ethutil.GetKeyRing().Get(0) == nil {
|
|
_, prv := secp256k1.GenerateKeyPair()
|
|
|
|
keyPair, err := ethutil.GetKeyRing().NewKeyPair(prv)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
mne := ethutil.MnemonicEncode(ethutil.Hex(keyPair.PrivateKey))
|
|
|
|
fmt.Printf(`
|
|
Generating new address and keypair.
|
|
Please keep your keys somewhere save.
|
|
|
|
++++++++++++++++ KeyRing +++++++++++++++++++
|
|
addr: %x
|
|
prvk: %x
|
|
pubk: %x
|
|
++++++++++++++++++++++++++++++++++++++++++++
|
|
save these words so you can restore your account later: %s
|
|
`, keyPair.Address(), keyPair.PrivateKey, keyPair.PublicKey, mne)
|
|
}
|
|
}
|
|
|
|
func ImportPrivateKey(sec string) {
|
|
ethutil.GetKeyRing().Reset()
|
|
|
|
keyPair, err := ethutil.GetKeyRing().NewKeyPair(ethutil.FromHex(sec))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
mne := ethutil.MnemonicEncode(ethutil.Hex(keyPair.PrivateKey))
|
|
|
|
fmt.Printf(`
|
|
Generating new address and keypair.
|
|
Please keep your keys somewhere save.
|
|
|
|
++++++++++++++++ KeyRing +++++++++++++++++++
|
|
addr: %x
|
|
prvk: %x
|
|
pubk: %x
|
|
++++++++++++++++++++++++++++++++++++++++++++
|
|
save these words so you can restore your account later: %s
|
|
`, keyPair.Address(), keyPair.PrivateKey, keyPair.PublicKey, mne)
|
|
}
|
|
|
|
/*
|
|
func CreateKeyPair(force bool) {
|
|
data, _ := ethutil.Config.Db.Get([]byte("KeyRing"))
|
|
if len(data) == 0 || force {
|
|
pub, prv := secp256k1.GenerateKeyPair()
|
|
pair := ðutil.Key{PrivateKey: prv, PublicKey: pub}
|
|
ethutil.Config.Db.Put([]byte("KeyRing"), pair.RlpEncode())
|
|
mne := ethutil.MnemonicEncode(ethutil.Hex(prv))
|
|
|
|
fmt.Printf(`
|
|
Generating new address and keypair.
|
|
Please keep your keys somewhere save.
|
|
|
|
++++++++++++++++ KeyRing +++++++++++++++++++
|
|
addr: %x
|
|
prvk: %x
|
|
pubk: %x
|
|
++++++++++++++++++++++++++++++++++++++++++++
|
|
save these words so you can restore your account later: %s
|
|
`, pair.Address(), prv, pub, mne)
|
|
|
|
}
|
|
}
|
|
*/
|
|
|
|
/*
|
|
func ImportPrivateKey(prvKey string) {
|
|
key := ethutil.FromHex(prvKey)
|
|
msg := []byte("tmp")
|
|
// Couldn't think of a better way to get the pub key
|
|
sig, _ := secp256k1.Sign(msg, key)
|
|
pub, _ := secp256k1.RecoverPubkey(msg, sig)
|
|
pair := ðutil.Key{PrivateKey: key, PublicKey: pub}
|
|
ethutil.Config.Db.Put([]byte("KeyRing"), pair.RlpEncode())
|
|
|
|
fmt.Printf(`
|
|
Importing private key
|
|
|
|
++++++++++++++++ KeyRing +++++++++++++++++++
|
|
addr: %x
|
|
prvk: %x
|
|
pubk: %x
|
|
++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
`, pair.Address(), key, pub)
|
|
}
|
|
*/
|