This repository was archived by the owner on Mar 5, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5.1k
/
Copy pathEthSignMethod.js
82 lines (70 loc) · 2.19 KB
/
EthSignMethod.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
This file is part of web3.js.
web3.js is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
web3.js is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* @file EthSignMethod.js
* @author Samuel Furter <[email protected]>
* @date 2018
*/
import {SignMethod} from 'web3-core-method';
export default class EthSignMethod extends SignMethod {
/**
* @param {Utils} utils
* @param {Object} formatters
* @param {AbstractWeb3Module} moduleInstance
*
* @constructor
*/
constructor(utils, formatters, moduleInstance) {
super(utils, formatters, moduleInstance);
}
/**
* Sends a JSON-RPC call request
*
* @method execute
*
* @callback callback callback(error, result)
* @returns {Promise<Object|String>}
*/
execute() {
if (this.moduleInstance.accounts.wallet[this.parameters[1]]) {
return this.signLocally();
}
return super.execute();
}
/**
* Signs the message on the client.
*
* @method signLocally
*
* @returns {Promise<String>}
*/
async signLocally() {
try {
this.beforeExecution(this.moduleInstance);
let signedMessage = this.moduleInstance.accounts.sign(
this.parameters[0],
this.moduleInstance.accounts.wallet[this.parameters[1]].address
);
if (this.callback) {
this.callback(false, signedMessage);
}
return signedMessage;
} catch (error) {
if (this.callback) {
this.callback(error, null);
}
throw error;
}
}
}