github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/valkeystore/encryption/migration.go (about) 1 package encryption 2 3 import ( 4 "encoding/json" 5 "io/ioutil" 6 "os" 7 8 "github.com/unicornultrafoundation/go-u2u/accounts/keystore" 9 "github.com/unicornultrafoundation/go-u2u/common" 10 11 "github.com/unicornultrafoundation/go-u2u/native/validatorpk" 12 ) 13 14 type encryptedAccountKeyJSONV3 struct { 15 Address string `json:"address"` 16 Crypto keystore.CryptoJSON `json:"crypto"` 17 Id string `json:"id"` 18 Version int `json:"version"` 19 } 20 21 func MigrateAccountToValidatorKey(acckeypath string, valkeypath string, pubkey validatorpk.PubKey) error { 22 acckeyjson, err := ioutil.ReadFile(acckeypath) 23 if err != nil { 24 return err 25 } 26 acck := new(encryptedAccountKeyJSONV3) 27 if err := json.Unmarshal(acckeyjson, acck); err != nil { 28 return err 29 } 30 31 valk := EncryptedKeyJSON{ 32 Type: validatorpk.Types.Secp256k1, 33 PublicKey: common.Bytes2Hex(pubkey.Raw), 34 Crypto: acck.Crypto, 35 } 36 valkeyjson, err := json.Marshal(valk) 37 if err != nil { 38 return err 39 } 40 tmpName, err := writeTemporaryKeyFile(valkeypath, valkeyjson) 41 if err != nil { 42 return err 43 } 44 return os.Rename(tmpName, valkeypath) 45 }