aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ethcrypto/keypair.go20
1 files changed, 18 insertions, 2 deletions
diff --git a/ethcrypto/keypair.go b/ethcrypto/keypair.go
index ae9db3698..18fa5b788 100644
--- a/ethcrypto/keypair.go
+++ b/ethcrypto/keypair.go
@@ -3,12 +3,14 @@ package ethcrypto
import (
"github.com/ethereum/eth-go/ethutil"
"github.com/obscuren/secp256k1-go"
+ "strings"
)
type KeyPair struct {
PrivateKey []byte
PublicKey []byte
-
+ address []byte
+ mnemonic string
// The associated account
// account *StateObject
}
@@ -29,7 +31,21 @@ func NewKeyPairFromSec(seckey []byte) (*KeyPair, error) {
}
func (k *KeyPair) Address() []byte {
- return Sha3Bin(k.PublicKey[1:])[12:]
+ if k.address == nil {
+ k.address = Sha3Bin(k.PublicKey[1:])[12:]
+ }
+ return k.address
+}
+
+func (k *KeyPair) Mnemonic() string {
+ if k.mnemonic == "" {
+ k.mnemonic = strings.Join(MnemonicEncode(ethutil.Bytes2Hex(k.PrivateKey)), " ")
+ }
+ return k.mnemonic
+}
+
+func (k *KeyPair) AsStrings() (string, string, string, string) {
+ return k.Mnemonic(), ethutil.Bytes2Hex(k.Address()), ethutil.Bytes2Hex(k.PrivateKey), ethutil.Bytes2Hex(k.PublicKey)
}
func (k *KeyPair) RlpEncode() []byte {