diff --git a/rpc/api/personal.go b/rpc/api/personal.go index 1b0dea330a..1fb412612b 100644 --- a/rpc/api/personal.go +++ b/rpc/api/personal.go @@ -110,7 +110,7 @@ func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error) return nil, shared.NewDecodeParamError(err.Error()) } - if len(args.Passphrase) == 0 { + if args.Passphrase == nil { fe := self.xeth.Frontend() if fe == nil { return false, fmt.Errorf("No password provided") @@ -121,6 +121,6 @@ func (self *personalApi) UnlockAccount(req *shared.Request) (interface{}, error) am := self.ethereum.AccountManager() addr := common.HexToAddress(args.Address) - err := am.TimedUnlock(addr, args.Passphrase, time.Duration(args.Duration)*time.Second) + err := am.TimedUnlock(addr, *args.Passphrase, time.Duration(args.Duration)*time.Second) return err == nil, err } diff --git a/rpc/api/personal_args.go b/rpc/api/personal_args.go index 89419029bd..73dc6285ef 100644 --- a/rpc/api/personal_args.go +++ b/rpc/api/personal_args.go @@ -46,7 +46,7 @@ func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) { type UnlockAccountArgs struct { Address string - Passphrase string + Passphrase *string Duration int } @@ -70,7 +70,7 @@ func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) { if len(obj) >= 2 && obj[1] != nil { if passphrasestr, ok := obj[1].(string); ok { - args.Passphrase = passphrasestr + args.Passphrase = &passphrasestr } else { return shared.NewInvalidTypeError("passphrase", "not a string") }