diff options
Diffstat (limited to 'cmd/geth')
-rw-r--r-- | cmd/geth/admin.go | 25 | ||||
-rw-r--r-- | cmd/geth/js_test.go | 2 |
2 files changed, 26 insertions, 1 deletions
diff --git a/cmd/geth/admin.go b/cmd/geth/admin.go index 53dd0e6ad..523b7c406 100644 --- a/cmd/geth/admin.go +++ b/cmd/geth/admin.go @@ -35,6 +35,7 @@ func (js *jsre) adminBindings() { eth := ethO.Object() eth.Set("pendingTransactions", js.pendingTransactions) eth.Set("resend", js.resend) + eth.Set("sign", js.sign) js.re.Set("admin", struct{}{}) t, _ := js.re.Get("admin") @@ -177,6 +178,30 @@ func (js *jsre) resend(call otto.FunctionCall) otto.Value { return otto.FalseValue() } +func (js *jsre) sign(call otto.FunctionCall) otto.Value { + if len(call.ArgumentList) != 2 { + fmt.Println("requires 2 arguments: eth.sign(signer, data)") + return otto.UndefinedValue() + } + signer, err := call.Argument(0).ToString() + if err != nil { + fmt.Println(err) + return otto.UndefinedValue() + } + + data, err := call.Argument(1).ToString() + if err != nil { + fmt.Println(err) + return otto.UndefinedValue() + } + v, err := js.xeth.Sign(signer, data, false) + if err != nil { + fmt.Println(err) + return otto.UndefinedValue() + } + return js.re.ToVal(v) +} + func (js *jsre) debugBlock(call otto.FunctionCall) otto.Value { block, err := js.getBlock(call) if err != nil { diff --git a/cmd/geth/js_test.go b/cmd/geth/js_test.go index 71c1fedb9..41e1034e9 100644 --- a/cmd/geth/js_test.go +++ b/cmd/geth/js_test.go @@ -230,7 +230,7 @@ func TestSignature(t *testing.T) { defer ethereum.Stop() defer os.RemoveAll(tmp) - val, err := repl.re.Run(`eth.sign({from: "` + testAddress + `", data: "` + testHash + `"})`) + val, err := repl.re.Run(`eth.sign("` + testAddress + `", "` + testHash + `")`) // This is a very preliminary test, lacking actual signature verification if err != nil { |