github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/accounts/keystore/keystore_plain.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:26</date> 10 //</624342585397219328> 11 12 13 package keystore 14 15 import ( 16 "encoding/json" 17 "fmt" 18 "os" 19 "path/filepath" 20 21 "github.com/ethereum/go-ethereum/common" 22 ) 23 24 type keyStorePlain struct { 25 keysDirPath string 26 } 27 28 func (ks keyStorePlain) GetKey(addr common.Address, filename, auth string) (*Key, error) { 29 fd, err := os.Open(filename) 30 if err != nil { 31 return nil, err 32 } 33 defer fd.Close() 34 key := new(Key) 35 if err := json.NewDecoder(fd).Decode(key); err != nil { 36 return nil, err 37 } 38 if key.Address != addr { 39 return nil, fmt.Errorf("key content mismatch: have address %x, want %x", key.Address, addr) 40 } 41 return key, nil 42 } 43 44 func (ks keyStorePlain) StoreKey(filename string, key *Key, auth string) error { 45 content, err := json.Marshal(key) 46 if err != nil { 47 return err 48 } 49 return writeKeyFile(filename, content) 50 } 51 52 func (ks keyStorePlain) JoinPath(filename string) string { 53 if filepath.IsAbs(filename) { 54 return filename 55 } 56 return filepath.Join(ks.keysDirPath, filename) 57 } 58