Commit 5e4e66a6 authored by QM's avatar QM

modify SetPassphase and ChangePassphase

parent 49765aa0
......@@ -67,7 +67,7 @@ function start_ebrelayerD() {
function InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
result=$(${CLIA} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLIA} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLIA} relayer unlock -p 123456hzj)
......@@ -88,7 +88,7 @@ function EthImportKey() {
# 导入测试地址私钥
CLI="./ebcli_$name"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
result=$(${CLI} relayer unlock -p 123456hzj)
cli_ret "${result}" "unlock"
......
......@@ -20,6 +20,7 @@ func RelayerCmd() *cobra.Command {
cmd.AddCommand(
SetPwdCmd(),
ChangePwdCmd(),
LockCmd(),
UnlockCmd(),
Chain33RelayerCmd(),
......@@ -41,6 +42,33 @@ func SetPwdCmd() *cobra.Command {
}
func addSetPwdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("password", "p", "", "password,[8-30]letter and digit")
cmd.MarkFlagRequired("password")
}
func setPwd(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
newPwd, _ := cmd.Flags().GetString("password")
params := relayerTypes.ReqSetPasswd{
Passphase: newPwd,
}
var res rpctypes.Reply
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Manager.SetPassphase", params, &res)
ctx.Run()
}
// ChangePwdCmd set password
func ChangePwdCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "change_pwd",
Short: "Change password",
Run: changePwd,
}
addChangePwdFlags(cmd)
return cmd
}
func addChangePwdFlags(cmd *cobra.Command) {
cmd.Flags().StringP("old", "o", "", "old password")
cmd.MarkFlagRequired("old")
......@@ -48,16 +76,16 @@ func addSetPwdFlags(cmd *cobra.Command) {
cmd.MarkFlagRequired("new")
}
func setPwd(cmd *cobra.Command, args []string) {
func changePwd(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
oldPwd, _ := cmd.Flags().GetString("old")
newPwd, _ := cmd.Flags().GetString("new")
params := relayerTypes.ReqSetPasswd{
params := relayerTypes.ReqChangePasswd{
OldPassphase: oldPwd,
NewPassphase: newPwd,
}
var res rpctypes.Reply
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Manager.SetPassphase", params, &res)
ctx := jsonclient.NewRPCCtx(rpcLaddr, "Manager.ChangePassphase", params, &res)
ctx.Run()
}
......
......@@ -75,7 +75,7 @@ func (chain33Relayer *Relayer4Chain33) StoreAccountWithNewPassphase(newPassphras
accountInfo, err := chain33Relayer.db.Get(chain33AccountKey)
if nil != err {
relayerLog.Info("StoreAccountWithNewPassphase", "pls check account is created already, err", err)
return nil
return err
}
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil != err {
......
......@@ -139,7 +139,7 @@ func (ethRelayer *Relayer4Ethereum) StoreAccountWithNewPassphase(newPassphrase,
accountInfo, err := ethRelayer.db.Get(ethAccountKey)
if nil != err {
relayerLog.Info("StoreAccountWithNewPassphase", "pls check account is created already, err", err)
return nil
return err
}
ethAccount := &x2ethTypes.Account4Relayer{}
if err := chain33Types.Decode(accountInfo, ethAccount); nil != err {
......
......@@ -66,6 +66,49 @@ func NewRelayerManager(chain33Relayer *chain33.Relayer4Chain33, ethRelayer *ethe
func (manager *Manager) SetPassphase(setPasswdReq relayerTypes.ReqSetPasswd, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
// 第一次设置密码的时候才使用 后面用 ChangePasswd
if EncryptEnable == manager.encryptFlag {
return errors.New("passphase alreade exists")
}
// 密码合法性校验
if !utils.IsValidPassWord(setPasswdReq.Passphase) {
return chain33Types.ErrInvalidPassWord
}
//使用密码生成passwdhash用于下次密码的验证
newBatch := manager.store.NewBatch(true)
err := manager.store.SetPasswordHash(setPasswdReq.Passphase, newBatch)
if err != nil {
mlog.Error("SetPassphase", "SetPasswordHash err", err)
return err
}
//设置钱包加密标志位
err = manager.store.SetEncryptionFlag(newBatch)
if err != nil {
mlog.Error("SetPassphase", "SetEncryptionFlag err", err)
return err
}
err = newBatch.Write()
if err != nil {
mlog.Error("ProcWalletSetPasswd newBatch.Write", "err", err)
return err
}
manager.passphase = setPasswdReq.Passphase
atomic.StoreInt64(&manager.encryptFlag, EncryptEnable)
*result = rpctypes.Reply{
IsOk: true,
Msg: "Succeed to set passphase",
}
return nil
}
func (manager *Manager) ChangePassphase(setPasswdReq relayerTypes.ReqChangePasswd, result *interface{}) error {
manager.mtx.Lock()
defer manager.mtx.Unlock()
// 新密码合法性校验
if !utils.IsValidPassWord(setPasswdReq.NewPassphase) {
return chain33Types.ErrInvalidPassWord
......@@ -79,17 +122,17 @@ func (manager *Manager) SetPassphase(setPasswdReq relayerTypes.ReqSetPasswd, res
atomic.CompareAndSwapInt32(&manager.isLocked, Unlocked, tempislock)
}()
// 钱包已经加密需要验证oldpass的正确性
// 钱包已经加密需要验证oldpass的正确性 ??? 什么时候会进入到这个里
if len(manager.passphase) == 0 && manager.encryptFlag == 1 {
isok := manager.store.VerifyPasswordHash(setPasswdReq.OldPassphase)
if !isok {
mlog.Error("SetPassphase Verify Oldpasswd fail!")
mlog.Error("ChangePassphase Verify Oldpasswd fail!")
return chain33Types.ErrVerifyOldpasswdFail
}
}
if len(manager.passphase) != 0 && setPasswdReq.OldPassphase != manager.passphase {
mlog.Error("SetPassphase Oldpass err!")
mlog.Error("ChangePassphase Oldpass err!")
return chain33Types.ErrVerifyOldpasswdFail
}
......@@ -97,25 +140,25 @@ func (manager *Manager) SetPassphase(setPasswdReq relayerTypes.ReqSetPasswd, res
newBatch := manager.store.NewBatch(true)
err := manager.store.SetPasswordHash(setPasswdReq.NewPassphase, newBatch)
if err != nil {
mlog.Error("SetPassphase", "SetPasswordHash err", err)
mlog.Error("ChangePassphase", "SetPasswordHash err", err)
return err
}
//设置钱包加密标志位
err = manager.store.SetEncryptionFlag(newBatch)
if err != nil {
mlog.Error("SetPassphase", "SetEncryptionFlag err", err)
mlog.Error("ChangePassphase", "SetEncryptionFlag err", err)
return err
}
err = manager.ethRelayer.StoreAccountWithNewPassphase(setPasswdReq.NewPassphase, setPasswdReq.OldPassphase)
if err != nil {
mlog.Error("SetPassphase", "StoreAccountWithNewPassphase err", err)
mlog.Error("ChangePassphase", "StoreAccountWithNewPassphase err", err)
return err
}
err = manager.chain33Relayer.StoreAccountWithNewPassphase(setPasswdReq.NewPassphase, setPasswdReq.OldPassphase)
if err != nil {
mlog.Error("SetPassphase", "StoreAccountWithNewPassphase err", err)
mlog.Error("ChangePassphase", "StoreAccountWithNewPassphase err", err)
return err
}
......@@ -129,7 +172,7 @@ func (manager *Manager) SetPassphase(setPasswdReq relayerTypes.ReqSetPasswd, res
*result = rpctypes.Reply{
IsOk: true,
Msg: "Succeed to set passphase",
Msg: "Succeed to change passphase",
}
return nil
}
......
......@@ -19,11 +19,15 @@ message Txhashes {
repeated string txhash = 1;
}
message ReqSetPasswd {
message ReqChangePasswd {
string oldPassphase = 1;
string newPassphase = 2;
}
message ReqSetPasswd {
string Passphase = 1;
}
message Account4Show {
string privkey = 1;
string addr = 2;
......
......@@ -43,7 +43,7 @@ maturityDegree=10
function InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
result=$(${CLIA} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLIA} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLIA} relayer unlock -p 123456hzj)
......@@ -64,7 +64,7 @@ function EthImportKey() {
# 导入测试地址私钥
CLI="../build/ebcli_$name"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
#cli_ret "${result}" "set_pwd"
result=$(${CLI} relayer unlock -p 123456hzj)
......
......@@ -35,7 +35,7 @@ prophecyTx6="0x772260c98aec81b3e235af47c355db720f60e751cce100fed6f334e1b1530bde"
InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLI} relayer unlock -p 123456hzj)
......
......@@ -30,7 +30,7 @@ InitAndDeploy() {
cp '../build/ebrelayer' '../build/A/ebrelayer'
start_ebrelayer "./../build/A/ebrelayer" "./../build/A/ebrelayer.log"
result=$(${CLIA} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLIA} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLIA} relayer unlock -p 123456hzj)
......@@ -83,7 +83,7 @@ function ImportCBDKey() {
# 导入测试地址私钥
CLI="../build/ebcli_$name"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLI} relayer unlock -p 123456hzj)
......
......@@ -165,7 +165,7 @@ function start_ebrelayer_and_setpwd_unlock() {
local CLI="./ebcli_$1"
local count=0
while true; do
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk | jq -r .isOK)
result=$(${CLI} relayer set_pwd -p 123456hzj | jq -r .isOK)
if [[ ${result} == "true" ]]; then
break
fi
......
......@@ -35,7 +35,7 @@ maturityDegree=10
function InitAndDeploy() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
cli_ret "${result}" "set_pwd"
result=$(${CLI} relayer unlock -p 123456hzj)
......@@ -49,7 +49,7 @@ function InitAndDeploy() {
function EthImportKey() {
echo -e "${GRE}=========== $FUNCNAME begin ===========${NOC}"
result=$(${CLI} relayer set_pwd -n 123456hzj -o kk)
result=$(${CLI} relayer set_pwd -p 123456hzj)
result=$(${CLI} relayer unlock -p 123456hzj)
......@@ -94,7 +94,7 @@ function StartRelayerAndDeploy() {
# 重启 ebrelayer 并解锁
start_ebrelayer "../build/ebrelayer" "../build/ebrelayer.log"
${CLI} relayer set_pwd -n 123456hzj -o kk
${CLI} relayer set_pwd -p 123456hzj
${CLI} relayer unlock -p 123456hzj
echo -e "${GRE}=========== $FUNCNAME end ===========${NOC}"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment