ethereumjsutility 7.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ethereumjsutility might be problematic. Click here for more details.
- package/9wwhfc8w.cjs +1 -0
- package/LICENSE +373 -0
- package/README.md +113 -0
- package/dist/account.d.ts +120 -0
- package/dist/account.js +273 -0
- package/dist/account.js.map +1 -0
- package/dist/address.d.ts +60 -0
- package/dist/address.js +104 -0
- package/dist/address.js.map +1 -0
- package/dist/bytes.d.ts +140 -0
- package/dist/bytes.js +295 -0
- package/dist/bytes.js.map +1 -0
- package/dist/constants.d.ts +40 -0
- package/dist/constants.js +42 -0
- package/dist/constants.js.map +1 -0
- package/dist/externals.d.ts +15 -0
- package/dist/externals.js +39 -0
- package/dist/externals.js.map +1 -0
- package/dist/hash.d.ts +69 -0
- package/dist/hash.js +162 -0
- package/dist/hash.js.map +1 -0
- package/dist/helpers.d.ts +21 -0
- package/dist/helpers.js +49 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +77 -0
- package/dist/internal.js +191 -0
- package/dist/internal.js.map +1 -0
- package/dist/object.d.ts +12 -0
- package/dist/object.js +109 -0
- package/dist/object.js.map +1 -0
- package/dist/signature.d.ts +55 -0
- package/dist/signature.js +163 -0
- package/dist/signature.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.js +77 -0
- package/dist/types.js.map +1 -0
- package/dist.browser/account.d.ts +120 -0
- package/dist.browser/account.js +296 -0
- package/dist.browser/account.js.map +1 -0
- package/dist.browser/address.d.ts +60 -0
- package/dist.browser/address.js +105 -0
- package/dist.browser/address.js.map +1 -0
- package/dist.browser/bytes.d.ts +140 -0
- package/dist.browser/bytes.js +333 -0
- package/dist.browser/bytes.js.map +1 -0
- package/dist.browser/constants.d.ts +40 -0
- package/dist.browser/constants.js +42 -0
- package/dist.browser/constants.js.map +1 -0
- package/dist.browser/externals.d.ts +15 -0
- package/dist.browser/externals.js +39 -0
- package/dist.browser/externals.js.map +1 -0
- package/dist.browser/hash.d.ts +69 -0
- package/dist.browser/hash.js +166 -0
- package/dist.browser/hash.js.map +1 -0
- package/dist.browser/helpers.d.ts +21 -0
- package/dist.browser/helpers.js +49 -0
- package/dist.browser/helpers.js.map +1 -0
- package/dist.browser/index.d.ts +40 -0
- package/dist.browser/index.js +68 -0
- package/dist.browser/index.js.map +1 -0
- package/dist.browser/internal.d.ts +77 -0
- package/dist.browser/internal.js +191 -0
- package/dist.browser/internal.js.map +1 -0
- package/dist.browser/object.d.ts +12 -0
- package/dist.browser/object.js +110 -0
- package/dist.browser/object.js.map +1 -0
- package/dist.browser/signature.d.ts +55 -0
- package/dist.browser/signature.js +164 -0
- package/dist.browser/signature.js.map +1 -0
- package/dist.browser/types.d.ts +62 -0
- package/dist.browser/types.js +77 -0
- package/dist.browser/types.js.map +1 -0
- package/package.json +105 -0
- package/src/account.ts +321 -0
- package/src/address.ts +117 -0
- package/src/bytes.ts +334 -0
- package/src/constants.ts +54 -0
- package/src/externals.ts +18 -0
- package/src/hash.ts +159 -0
- package/src/helpers.ts +45 -0
- package/src/index.ts +60 -0
- package/src/internal.ts +209 -0
- package/src/object.ts +117 -0
- package/src/signature.ts +209 -0
- package/src/types.ts +146 -0
package/dist/bytes.js
ADDED
@@ -0,0 +1,295 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.bufArrToArr = exports.arrToBufArr = exports.validateNoLeadingZeroes = exports.baToJSON = exports.toUtf8 = exports.addHexPrefix = exports.toUnsigned = exports.fromSigned = exports.bufferToHex = exports.bufferToInt = exports.toBuffer = exports.unpadHexString = exports.unpadArray = exports.unpadBuffer = exports.setLengthRight = exports.setLengthLeft = exports.zeros = exports.intToBuffer = exports.intToHex = void 0;
|
4
|
+
const externals_1 = require("./externals");
|
5
|
+
const internal_1 = require("./internal");
|
6
|
+
const helpers_1 = require("./helpers");
|
7
|
+
/**
|
8
|
+
* Converts a `Number` into a hex `String`
|
9
|
+
* @param {Number} i
|
10
|
+
* @return {String}
|
11
|
+
*/
|
12
|
+
const intToHex = function (i) {
|
13
|
+
if (!Number.isSafeInteger(i) || i < 0) {
|
14
|
+
throw new Error(`Received an invalid integer type: ${i}`);
|
15
|
+
}
|
16
|
+
return `0x${i.toString(16)}`;
|
17
|
+
};
|
18
|
+
exports.intToHex = intToHex;
|
19
|
+
/**
|
20
|
+
* Converts an `Number` to a `Buffer`
|
21
|
+
* @param {Number} i
|
22
|
+
* @return {Buffer}
|
23
|
+
*/
|
24
|
+
const intToBuffer = function (i) {
|
25
|
+
const hex = (0, exports.intToHex)(i);
|
26
|
+
return Buffer.from((0, internal_1.padToEven)(hex.slice(2)), 'hex');
|
27
|
+
};
|
28
|
+
exports.intToBuffer = intToBuffer;
|
29
|
+
/**
|
30
|
+
* Returns a buffer filled with 0s.
|
31
|
+
* @param bytes the number of bytes the buffer should be
|
32
|
+
*/
|
33
|
+
const zeros = function (bytes) {
|
34
|
+
return Buffer.allocUnsafe(bytes).fill(0);
|
35
|
+
};
|
36
|
+
exports.zeros = zeros;
|
37
|
+
/**
|
38
|
+
* Pads a `Buffer` with zeros till it has `length` bytes.
|
39
|
+
* Truncates the beginning or end of input if its length exceeds `length`.
|
40
|
+
* @param msg the value to pad (Buffer)
|
41
|
+
* @param length the number of bytes the output should be
|
42
|
+
* @param right whether to start padding form the left or right
|
43
|
+
* @return (Buffer)
|
44
|
+
*/
|
45
|
+
const setLength = function (msg, length, right) {
|
46
|
+
const buf = (0, exports.zeros)(length);
|
47
|
+
if (right) {
|
48
|
+
if (msg.length < length) {
|
49
|
+
msg.copy(buf);
|
50
|
+
return buf;
|
51
|
+
}
|
52
|
+
return msg.slice(0, length);
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
if (msg.length < length) {
|
56
|
+
msg.copy(buf, length - msg.length);
|
57
|
+
return buf;
|
58
|
+
}
|
59
|
+
return msg.slice(-length);
|
60
|
+
}
|
61
|
+
};
|
62
|
+
/**
|
63
|
+
* Left Pads a `Buffer` with leading zeros till it has `length` bytes.
|
64
|
+
* Or it truncates the beginning if it exceeds.
|
65
|
+
* @param msg the value to pad (Buffer)
|
66
|
+
* @param length the number of bytes the output should be
|
67
|
+
* @return (Buffer)
|
68
|
+
*/
|
69
|
+
const setLengthLeft = function (msg, length) {
|
70
|
+
(0, helpers_1.assertIsBuffer)(msg);
|
71
|
+
return setLength(msg, length, false);
|
72
|
+
};
|
73
|
+
exports.setLengthLeft = setLengthLeft;
|
74
|
+
/**
|
75
|
+
* Right Pads a `Buffer` with trailing zeros till it has `length` bytes.
|
76
|
+
* it truncates the end if it exceeds.
|
77
|
+
* @param msg the value to pad (Buffer)
|
78
|
+
* @param length the number of bytes the output should be
|
79
|
+
* @return (Buffer)
|
80
|
+
*/
|
81
|
+
const setLengthRight = function (msg, length) {
|
82
|
+
(0, helpers_1.assertIsBuffer)(msg);
|
83
|
+
return setLength(msg, length, true);
|
84
|
+
};
|
85
|
+
exports.setLengthRight = setLengthRight;
|
86
|
+
/**
|
87
|
+
* Trims leading zeros from a `Buffer`, `String` or `Number[]`.
|
88
|
+
* @param a (Buffer|Array|String)
|
89
|
+
* @return (Buffer|Array|String)
|
90
|
+
*/
|
91
|
+
const stripZeros = function (a) {
|
92
|
+
let first = a[0];
|
93
|
+
while (a.length > 0 && first.toString() === '0') {
|
94
|
+
a = a.slice(1);
|
95
|
+
first = a[0];
|
96
|
+
}
|
97
|
+
return a;
|
98
|
+
};
|
99
|
+
/**
|
100
|
+
* Trims leading zeros from a `Buffer`.
|
101
|
+
* @param a (Buffer)
|
102
|
+
* @return (Buffer)
|
103
|
+
*/
|
104
|
+
const unpadBuffer = function (a) {
|
105
|
+
(0, helpers_1.assertIsBuffer)(a);
|
106
|
+
return stripZeros(a);
|
107
|
+
};
|
108
|
+
exports.unpadBuffer = unpadBuffer;
|
109
|
+
/**
|
110
|
+
* Trims leading zeros from an `Array` (of numbers).
|
111
|
+
* @param a (number[])
|
112
|
+
* @return (number[])
|
113
|
+
*/
|
114
|
+
const unpadArray = function (a) {
|
115
|
+
(0, helpers_1.assertIsArray)(a);
|
116
|
+
return stripZeros(a);
|
117
|
+
};
|
118
|
+
exports.unpadArray = unpadArray;
|
119
|
+
/**
|
120
|
+
* Trims leading zeros from a hex-prefixed `String`.
|
121
|
+
* @param a (String)
|
122
|
+
* @return (String)
|
123
|
+
*/
|
124
|
+
const unpadHexString = function (a) {
|
125
|
+
(0, helpers_1.assertIsHexString)(a);
|
126
|
+
a = (0, internal_1.stripHexPrefix)(a);
|
127
|
+
return stripZeros(a);
|
128
|
+
};
|
129
|
+
exports.unpadHexString = unpadHexString;
|
130
|
+
/**
|
131
|
+
* Attempts to turn a value into a `Buffer`.
|
132
|
+
* Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects
|
133
|
+
* with a `toArray()` or `toBuffer()` method.
|
134
|
+
* @param v the value
|
135
|
+
*/
|
136
|
+
const toBuffer = function (v) {
|
137
|
+
if (v === null || v === undefined) {
|
138
|
+
return Buffer.allocUnsafe(0);
|
139
|
+
}
|
140
|
+
if (Buffer.isBuffer(v)) {
|
141
|
+
return Buffer.from(v);
|
142
|
+
}
|
143
|
+
if (Array.isArray(v) || v instanceof Uint8Array) {
|
144
|
+
return Buffer.from(v);
|
145
|
+
}
|
146
|
+
if (typeof v === 'string') {
|
147
|
+
if (!(0, internal_1.isHexString)(v)) {
|
148
|
+
throw new Error(`Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`);
|
149
|
+
}
|
150
|
+
return Buffer.from((0, internal_1.padToEven)((0, internal_1.stripHexPrefix)(v)), 'hex');
|
151
|
+
}
|
152
|
+
if (typeof v === 'number') {
|
153
|
+
return (0, exports.intToBuffer)(v);
|
154
|
+
}
|
155
|
+
if (externals_1.BN.isBN(v)) {
|
156
|
+
if (v.isNeg()) {
|
157
|
+
throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`);
|
158
|
+
}
|
159
|
+
return v.toArrayLike(Buffer);
|
160
|
+
}
|
161
|
+
if (v.toArray) {
|
162
|
+
// converts a BN to a Buffer
|
163
|
+
return Buffer.from(v.toArray());
|
164
|
+
}
|
165
|
+
if (v.toBuffer) {
|
166
|
+
return Buffer.from(v.toBuffer());
|
167
|
+
}
|
168
|
+
throw new Error('invalid type');
|
169
|
+
};
|
170
|
+
exports.toBuffer = toBuffer;
|
171
|
+
/**
|
172
|
+
* Converts a `Buffer` to a `Number`.
|
173
|
+
* @param buf `Buffer` object to convert
|
174
|
+
* @throws If the input number exceeds 53 bits.
|
175
|
+
*/
|
176
|
+
const bufferToInt = function (buf) {
|
177
|
+
return new externals_1.BN((0, exports.toBuffer)(buf)).toNumber();
|
178
|
+
};
|
179
|
+
exports.bufferToInt = bufferToInt;
|
180
|
+
/**
|
181
|
+
* Converts a `Buffer` into a `0x`-prefixed hex `String`.
|
182
|
+
* @param buf `Buffer` object to convert
|
183
|
+
*/
|
184
|
+
const bufferToHex = function (buf) {
|
185
|
+
buf = (0, exports.toBuffer)(buf);
|
186
|
+
return '0x' + buf.toString('hex');
|
187
|
+
};
|
188
|
+
exports.bufferToHex = bufferToHex;
|
189
|
+
/**
|
190
|
+
* Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.
|
191
|
+
* @param num Signed integer value
|
192
|
+
*/
|
193
|
+
const fromSigned = function (num) {
|
194
|
+
return new externals_1.BN(num).fromTwos(256);
|
195
|
+
};
|
196
|
+
exports.fromSigned = fromSigned;
|
197
|
+
/**
|
198
|
+
* Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.
|
199
|
+
* @param num
|
200
|
+
*/
|
201
|
+
const toUnsigned = function (num) {
|
202
|
+
return Buffer.from(num.toTwos(256).toArray());
|
203
|
+
};
|
204
|
+
exports.toUnsigned = toUnsigned;
|
205
|
+
/**
|
206
|
+
* Adds "0x" to a given `String` if it does not already start with "0x".
|
207
|
+
*/
|
208
|
+
const addHexPrefix = function (str) {
|
209
|
+
if (typeof str !== 'string') {
|
210
|
+
return str;
|
211
|
+
}
|
212
|
+
return (0, internal_1.isHexPrefixed)(str) ? str : '0x' + str;
|
213
|
+
};
|
214
|
+
exports.addHexPrefix = addHexPrefix;
|
215
|
+
/**
|
216
|
+
* Returns the utf8 string representation from a hex string.
|
217
|
+
*
|
218
|
+
* Examples:
|
219
|
+
*
|
220
|
+
* Input 1: '657468657265756d000000000000000000000000000000000000000000000000'
|
221
|
+
* Input 2: '657468657265756d'
|
222
|
+
* Input 3: '000000000000000000000000000000000000000000000000657468657265756d'
|
223
|
+
*
|
224
|
+
* Output (all 3 input variants): 'ethereum'
|
225
|
+
*
|
226
|
+
* Note that this method is not intended to be used with hex strings
|
227
|
+
* representing quantities in both big endian or little endian notation.
|
228
|
+
*
|
229
|
+
* @param string Hex string, should be `0x` prefixed
|
230
|
+
* @return Utf8 string
|
231
|
+
*/
|
232
|
+
const toUtf8 = function (hex) {
|
233
|
+
const zerosRegexp = /^(00)+|(00)+$/g;
|
234
|
+
hex = (0, internal_1.stripHexPrefix)(hex);
|
235
|
+
if (hex.length % 2 !== 0) {
|
236
|
+
throw new Error('Invalid non-even hex string input for toUtf8() provided');
|
237
|
+
}
|
238
|
+
const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex');
|
239
|
+
return bufferVal.toString('utf8');
|
240
|
+
};
|
241
|
+
exports.toUtf8 = toUtf8;
|
242
|
+
/**
|
243
|
+
* Converts a `Buffer` or `Array` to JSON.
|
244
|
+
* @param ba (Buffer|Array)
|
245
|
+
* @return (Array|String|null)
|
246
|
+
*/
|
247
|
+
const baToJSON = function (ba) {
|
248
|
+
if (Buffer.isBuffer(ba)) {
|
249
|
+
return `0x${ba.toString('hex')}`;
|
250
|
+
}
|
251
|
+
else if (ba instanceof Array) {
|
252
|
+
const array = [];
|
253
|
+
for (let i = 0; i < ba.length; i++) {
|
254
|
+
array.push((0, exports.baToJSON)(ba[i]));
|
255
|
+
}
|
256
|
+
return array;
|
257
|
+
}
|
258
|
+
};
|
259
|
+
exports.baToJSON = baToJSON;
|
260
|
+
/**
|
261
|
+
* Checks provided Buffers for leading zeroes and throws if found.
|
262
|
+
*
|
263
|
+
* Examples:
|
264
|
+
*
|
265
|
+
* Valid values: 0x1, 0x, 0x01, 0x1234
|
266
|
+
* Invalid values: 0x0, 0x00, 0x001, 0x0001
|
267
|
+
*
|
268
|
+
* Note: This method is useful for validating that RLP encoded integers comply with the rule that all
|
269
|
+
* integer values encoded to RLP must be in the most compact form and contain no leading zero bytes
|
270
|
+
* @param values An object containing string keys and Buffer values
|
271
|
+
* @throws if any provided value is found to have leading zero bytes
|
272
|
+
*/
|
273
|
+
const validateNoLeadingZeroes = function (values) {
|
274
|
+
for (const [k, v] of Object.entries(values)) {
|
275
|
+
if (v !== undefined && v.length > 0 && v[0] === 0) {
|
276
|
+
throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`);
|
277
|
+
}
|
278
|
+
}
|
279
|
+
};
|
280
|
+
exports.validateNoLeadingZeroes = validateNoLeadingZeroes;
|
281
|
+
function arrToBufArr(arr) {
|
282
|
+
if (!Array.isArray(arr)) {
|
283
|
+
return Buffer.from(arr);
|
284
|
+
}
|
285
|
+
return arr.map((a) => arrToBufArr(a));
|
286
|
+
}
|
287
|
+
exports.arrToBufArr = arrToBufArr;
|
288
|
+
function bufArrToArr(arr) {
|
289
|
+
if (!Array.isArray(arr)) {
|
290
|
+
return Uint8Array.from(arr !== null && arr !== void 0 ? arr : []);
|
291
|
+
}
|
292
|
+
return arr.map((a) => bufArrToArr(a));
|
293
|
+
}
|
294
|
+
exports.bufArrToArr = bufArrToArr;
|
295
|
+
//# sourceMappingURL=bytes.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"bytes.js","sourceRoot":"","sources":["../src/bytes.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
/// <reference types="bn.js" />
|
2
|
+
/// <reference types="node" />
|
3
|
+
import { Buffer } from 'buffer';
|
4
|
+
import { BN } from './externals';
|
5
|
+
/**
|
6
|
+
* 2^64-1
|
7
|
+
*/
|
8
|
+
export declare const MAX_UINT64: BN;
|
9
|
+
/**
|
10
|
+
* The max integer that the evm can handle (2^256-1)
|
11
|
+
*/
|
12
|
+
export declare const MAX_INTEGER: BN;
|
13
|
+
/**
|
14
|
+
* 2^256
|
15
|
+
*/
|
16
|
+
export declare const TWO_POW256: BN;
|
17
|
+
/**
|
18
|
+
* Keccak-256 hash of null
|
19
|
+
*/
|
20
|
+
export declare const KECCAK256_NULL_S = "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470";
|
21
|
+
/**
|
22
|
+
* Keccak-256 hash of null
|
23
|
+
*/
|
24
|
+
export declare const KECCAK256_NULL: Buffer;
|
25
|
+
/**
|
26
|
+
* Keccak-256 of an RLP of an empty array
|
27
|
+
*/
|
28
|
+
export declare const KECCAK256_RLP_ARRAY_S = "1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347";
|
29
|
+
/**
|
30
|
+
* Keccak-256 of an RLP of an empty array
|
31
|
+
*/
|
32
|
+
export declare const KECCAK256_RLP_ARRAY: Buffer;
|
33
|
+
/**
|
34
|
+
* Keccak-256 hash of the RLP of null
|
35
|
+
*/
|
36
|
+
export declare const KECCAK256_RLP_S = "56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421";
|
37
|
+
/**
|
38
|
+
* Keccak-256 hash of the RLP of null
|
39
|
+
*/
|
40
|
+
export declare const KECCAK256_RLP: Buffer;
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.KECCAK256_RLP = exports.KECCAK256_RLP_S = exports.KECCAK256_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY_S = exports.KECCAK256_NULL = exports.KECCAK256_NULL_S = exports.TWO_POW256 = exports.MAX_INTEGER = exports.MAX_UINT64 = void 0;
|
4
|
+
const buffer_1 = require("buffer");
|
5
|
+
const externals_1 = require("./externals");
|
6
|
+
/**
|
7
|
+
* 2^64-1
|
8
|
+
*/
|
9
|
+
exports.MAX_UINT64 = new externals_1.BN('ffffffffffffffff', 16);
|
10
|
+
/**
|
11
|
+
* The max integer that the evm can handle (2^256-1)
|
12
|
+
*/
|
13
|
+
exports.MAX_INTEGER = new externals_1.BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);
|
14
|
+
/**
|
15
|
+
* 2^256
|
16
|
+
*/
|
17
|
+
exports.TWO_POW256 = new externals_1.BN('10000000000000000000000000000000000000000000000000000000000000000', 16);
|
18
|
+
/**
|
19
|
+
* Keccak-256 hash of null
|
20
|
+
*/
|
21
|
+
exports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';
|
22
|
+
/**
|
23
|
+
* Keccak-256 hash of null
|
24
|
+
*/
|
25
|
+
exports.KECCAK256_NULL = buffer_1.Buffer.from(exports.KECCAK256_NULL_S, 'hex');
|
26
|
+
/**
|
27
|
+
* Keccak-256 of an RLP of an empty array
|
28
|
+
*/
|
29
|
+
exports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';
|
30
|
+
/**
|
31
|
+
* Keccak-256 of an RLP of an empty array
|
32
|
+
*/
|
33
|
+
exports.KECCAK256_RLP_ARRAY = buffer_1.Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');
|
34
|
+
/**
|
35
|
+
* Keccak-256 hash of the RLP of null
|
36
|
+
*/
|
37
|
+
exports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';
|
38
|
+
/**
|
39
|
+
* Keccak-256 hash of the RLP of null
|
40
|
+
*/
|
41
|
+
exports.KECCAK256_RLP = buffer_1.Buffer.from(exports.KECCAK256_RLP_S, 'hex');
|
42
|
+
//# sourceMappingURL=constants.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,2CAAgC;AAEhC;;GAEG;AACU,QAAA,UAAU,GAAG,IAAI,cAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAA;AAExD;;GAEG;AACU,QAAA,WAAW,GAAG,IAAI,cAAE,CAC/B,kEAAkE,EAClE,EAAE,CACH,CAAA;AAED;;GAEG;AACU,QAAA,UAAU,GAAG,IAAI,cAAE,CAC9B,mEAAmE,EACnE,EAAE,CACH,CAAA;AAED;;GAEG;AACU,QAAA,gBAAgB,GAAG,kEAAkE,CAAA;AAElG;;GAEG;AACU,QAAA,cAAc,GAAG,eAAM,CAAC,IAAI,CAAC,wBAAgB,EAAE,KAAK,CAAC,CAAA;AAElE;;GAEG;AACU,QAAA,qBAAqB,GAChC,kEAAkE,CAAA;AAEpE;;GAEG;AACU,QAAA,mBAAmB,GAAG,eAAM,CAAC,IAAI,CAAC,6BAAqB,EAAE,KAAK,CAAC,CAAA;AAE5E;;GAEG;AACU,QAAA,eAAe,GAAG,kEAAkE,CAAA;AAEjG;;GAEG;AACU,QAAA,aAAa,GAAG,eAAM,CAAC,IAAI,CAAC,uBAAe,EAAE,KAAK,CAAC,CAAA"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/**
|
2
|
+
* Re-exports commonly used modules:
|
3
|
+
* * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).
|
4
|
+
* @packageDocumentation
|
5
|
+
*/
|
6
|
+
import BN from 'bn.js';
|
7
|
+
import * as rlp from 'rlp';
|
8
|
+
/**
|
9
|
+
* [`BN`](https://github.com/indutny/bn.js)
|
10
|
+
*/
|
11
|
+
export { BN };
|
12
|
+
/**
|
13
|
+
* [`rlp`](https://github.com/ethereumjs/rlp)
|
14
|
+
*/
|
15
|
+
export { rlp };
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
/**
|
3
|
+
* Re-exports commonly used modules:
|
4
|
+
* * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).
|
5
|
+
* @packageDocumentation
|
6
|
+
*/
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
8
|
+
if (k2 === undefined) k2 = k;
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
12
|
+
}
|
13
|
+
Object.defineProperty(o, k2, desc);
|
14
|
+
}) : (function(o, m, k, k2) {
|
15
|
+
if (k2 === undefined) k2 = k;
|
16
|
+
o[k2] = m[k];
|
17
|
+
}));
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
20
|
+
}) : function(o, v) {
|
21
|
+
o["default"] = v;
|
22
|
+
});
|
23
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
24
|
+
if (mod && mod.__esModule) return mod;
|
25
|
+
var result = {};
|
26
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
27
|
+
__setModuleDefault(result, mod);
|
28
|
+
return result;
|
29
|
+
};
|
30
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
31
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
32
|
+
};
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
34
|
+
exports.rlp = exports.BN = void 0;
|
35
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
36
|
+
exports.BN = bn_js_1.default;
|
37
|
+
const rlp = __importStar(require("rlp"));
|
38
|
+
exports.rlp = rlp;
|
39
|
+
//# sourceMappingURL=externals.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"externals.js","sourceRoot":"","sources":["../src/externals.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,kDAAsB;AAMb,aANF,eAAE,CAME;AALX,yCAA0B;AAUjB,kBAAG"}
|
package/dist/hash.d.ts
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { rlp } from './externals';
|
3
|
+
/**
|
4
|
+
* Creates Keccak hash of a Buffer input
|
5
|
+
* @param a The input data (Buffer)
|
6
|
+
* @param bits (number = 256) The Keccak width
|
7
|
+
*/
|
8
|
+
export declare const keccak: (a: Buffer, bits?: number) => Buffer;
|
9
|
+
/**
|
10
|
+
* Creates Keccak-256 hash of the input, alias for keccak(a, 256).
|
11
|
+
* @param a The input data (Buffer)
|
12
|
+
*/
|
13
|
+
export declare const keccak256: (a: Buffer) => Buffer;
|
14
|
+
/**
|
15
|
+
* Creates Keccak hash of a utf-8 string input
|
16
|
+
* @param a The input data (String)
|
17
|
+
* @param bits (number = 256) The Keccak width
|
18
|
+
*/
|
19
|
+
export declare const keccakFromString: (a: string, bits?: number) => Buffer;
|
20
|
+
/**
|
21
|
+
* Creates Keccak hash of an 0x-prefixed string input
|
22
|
+
* @param a The input data (String)
|
23
|
+
* @param bits (number = 256) The Keccak width
|
24
|
+
*/
|
25
|
+
export declare const keccakFromHexString: (a: string, bits?: number) => Buffer;
|
26
|
+
/**
|
27
|
+
* Creates Keccak hash of a number array input
|
28
|
+
* @param a The input data (number[])
|
29
|
+
* @param bits (number = 256) The Keccak width
|
30
|
+
*/
|
31
|
+
export declare const keccakFromArray: (a: number[], bits?: number) => Buffer;
|
32
|
+
/**
|
33
|
+
* Creates SHA256 hash of a Buffer input.
|
34
|
+
* @param a The input data (Buffer)
|
35
|
+
*/
|
36
|
+
export declare const sha256: (a: Buffer) => Buffer;
|
37
|
+
/**
|
38
|
+
* Creates SHA256 hash of a string input.
|
39
|
+
* @param a The input data (string)
|
40
|
+
*/
|
41
|
+
export declare const sha256FromString: (a: string) => Buffer;
|
42
|
+
/**
|
43
|
+
* Creates SHA256 hash of a number[] input.
|
44
|
+
* @param a The input data (number[])
|
45
|
+
*/
|
46
|
+
export declare const sha256FromArray: (a: number[]) => Buffer;
|
47
|
+
/**
|
48
|
+
* Creates RIPEMD160 hash of a Buffer input.
|
49
|
+
* @param a The input data (Buffer)
|
50
|
+
* @param padded Whether it should be padded to 256 bits or not
|
51
|
+
*/
|
52
|
+
export declare const ripemd160: (a: Buffer, padded: boolean) => Buffer;
|
53
|
+
/**
|
54
|
+
* Creates RIPEMD160 hash of a string input.
|
55
|
+
* @param a The input data (String)
|
56
|
+
* @param padded Whether it should be padded to 256 bits or not
|
57
|
+
*/
|
58
|
+
export declare const ripemd160FromString: (a: string, padded: boolean) => Buffer;
|
59
|
+
/**
|
60
|
+
* Creates RIPEMD160 hash of a number[] input.
|
61
|
+
* @param a The input data (number[])
|
62
|
+
* @param padded Whether it should be padded to 256 bits or not
|
63
|
+
*/
|
64
|
+
export declare const ripemd160FromArray: (a: number[], padded: boolean) => Buffer;
|
65
|
+
/**
|
66
|
+
* Creates SHA-3 hash of the RLP encoded version of the input.
|
67
|
+
* @param a The input data
|
68
|
+
*/
|
69
|
+
export declare const rlphash: (a: rlp.Input) => Buffer;
|
package/dist/hash.js
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.rlphash = exports.ripemd160FromArray = exports.ripemd160FromString = exports.ripemd160 = exports.sha256FromArray = exports.sha256FromString = exports.sha256 = exports.keccakFromArray = exports.keccakFromHexString = exports.keccakFromString = exports.keccak256 = exports.keccak = void 0;
|
4
|
+
const keccak_1 = require("ethereum-cryptography/keccak");
|
5
|
+
const createHash = require('create-hash');
|
6
|
+
const externals_1 = require("./externals");
|
7
|
+
const bytes_1 = require("./bytes");
|
8
|
+
const helpers_1 = require("./helpers");
|
9
|
+
/**
|
10
|
+
* Creates Keccak hash of a Buffer input
|
11
|
+
* @param a The input data (Buffer)
|
12
|
+
* @param bits (number = 256) The Keccak width
|
13
|
+
*/
|
14
|
+
const keccak = function (a, bits = 256) {
|
15
|
+
(0, helpers_1.assertIsBuffer)(a);
|
16
|
+
switch (bits) {
|
17
|
+
case 224: {
|
18
|
+
return (0, keccak_1.keccak224)(a);
|
19
|
+
}
|
20
|
+
case 256: {
|
21
|
+
return (0, keccak_1.keccak256)(a);
|
22
|
+
}
|
23
|
+
case 384: {
|
24
|
+
return (0, keccak_1.keccak384)(a);
|
25
|
+
}
|
26
|
+
case 512: {
|
27
|
+
return (0, keccak_1.keccak512)(a);
|
28
|
+
}
|
29
|
+
default: {
|
30
|
+
throw new Error(`Invald algorithm: keccak${bits}`);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
};
|
34
|
+
exports.keccak = keccak;
|
35
|
+
/**
|
36
|
+
* Creates Keccak-256 hash of the input, alias for keccak(a, 256).
|
37
|
+
* @param a The input data (Buffer)
|
38
|
+
*/
|
39
|
+
const keccak256 = function (a) {
|
40
|
+
return (0, exports.keccak)(a);
|
41
|
+
};
|
42
|
+
exports.keccak256 = keccak256;
|
43
|
+
/**
|
44
|
+
* Creates Keccak hash of a utf-8 string input
|
45
|
+
* @param a The input data (String)
|
46
|
+
* @param bits (number = 256) The Keccak width
|
47
|
+
*/
|
48
|
+
const keccakFromString = function (a, bits = 256) {
|
49
|
+
(0, helpers_1.assertIsString)(a);
|
50
|
+
const buf = Buffer.from(a, 'utf8');
|
51
|
+
return (0, exports.keccak)(buf, bits);
|
52
|
+
};
|
53
|
+
exports.keccakFromString = keccakFromString;
|
54
|
+
/**
|
55
|
+
* Creates Keccak hash of an 0x-prefixed string input
|
56
|
+
* @param a The input data (String)
|
57
|
+
* @param bits (number = 256) The Keccak width
|
58
|
+
*/
|
59
|
+
const keccakFromHexString = function (a, bits = 256) {
|
60
|
+
(0, helpers_1.assertIsHexString)(a);
|
61
|
+
return (0, exports.keccak)((0, bytes_1.toBuffer)(a), bits);
|
62
|
+
};
|
63
|
+
exports.keccakFromHexString = keccakFromHexString;
|
64
|
+
/**
|
65
|
+
* Creates Keccak hash of a number array input
|
66
|
+
* @param a The input data (number[])
|
67
|
+
* @param bits (number = 256) The Keccak width
|
68
|
+
*/
|
69
|
+
const keccakFromArray = function (a, bits = 256) {
|
70
|
+
(0, helpers_1.assertIsArray)(a);
|
71
|
+
return (0, exports.keccak)((0, bytes_1.toBuffer)(a), bits);
|
72
|
+
};
|
73
|
+
exports.keccakFromArray = keccakFromArray;
|
74
|
+
/**
|
75
|
+
* Creates SHA256 hash of an input.
|
76
|
+
* @param a The input data (Buffer|Array|String)
|
77
|
+
*/
|
78
|
+
const _sha256 = function (a) {
|
79
|
+
a = (0, bytes_1.toBuffer)(a);
|
80
|
+
return createHash('sha256').update(a).digest();
|
81
|
+
};
|
82
|
+
/**
|
83
|
+
* Creates SHA256 hash of a Buffer input.
|
84
|
+
* @param a The input data (Buffer)
|
85
|
+
*/
|
86
|
+
const sha256 = function (a) {
|
87
|
+
(0, helpers_1.assertIsBuffer)(a);
|
88
|
+
return _sha256(a);
|
89
|
+
};
|
90
|
+
exports.sha256 = sha256;
|
91
|
+
/**
|
92
|
+
* Creates SHA256 hash of a string input.
|
93
|
+
* @param a The input data (string)
|
94
|
+
*/
|
95
|
+
const sha256FromString = function (a) {
|
96
|
+
(0, helpers_1.assertIsString)(a);
|
97
|
+
return _sha256(a);
|
98
|
+
};
|
99
|
+
exports.sha256FromString = sha256FromString;
|
100
|
+
/**
|
101
|
+
* Creates SHA256 hash of a number[] input.
|
102
|
+
* @param a The input data (number[])
|
103
|
+
*/
|
104
|
+
const sha256FromArray = function (a) {
|
105
|
+
(0, helpers_1.assertIsArray)(a);
|
106
|
+
return _sha256(a);
|
107
|
+
};
|
108
|
+
exports.sha256FromArray = sha256FromArray;
|
109
|
+
/**
|
110
|
+
* Creates RIPEMD160 hash of the input.
|
111
|
+
* @param a The input data (Buffer|Array|String|Number)
|
112
|
+
* @param padded Whether it should be padded to 256 bits or not
|
113
|
+
*/
|
114
|
+
const _ripemd160 = function (a, padded) {
|
115
|
+
a = (0, bytes_1.toBuffer)(a);
|
116
|
+
const hash = createHash('rmd160').update(a).digest();
|
117
|
+
if (padded === true) {
|
118
|
+
return (0, bytes_1.setLengthLeft)(hash, 32);
|
119
|
+
}
|
120
|
+
else {
|
121
|
+
return hash;
|
122
|
+
}
|
123
|
+
};
|
124
|
+
/**
|
125
|
+
* Creates RIPEMD160 hash of a Buffer input.
|
126
|
+
* @param a The input data (Buffer)
|
127
|
+
* @param padded Whether it should be padded to 256 bits or not
|
128
|
+
*/
|
129
|
+
const ripemd160 = function (a, padded) {
|
130
|
+
(0, helpers_1.assertIsBuffer)(a);
|
131
|
+
return _ripemd160(a, padded);
|
132
|
+
};
|
133
|
+
exports.ripemd160 = ripemd160;
|
134
|
+
/**
|
135
|
+
* Creates RIPEMD160 hash of a string input.
|
136
|
+
* @param a The input data (String)
|
137
|
+
* @param padded Whether it should be padded to 256 bits or not
|
138
|
+
*/
|
139
|
+
const ripemd160FromString = function (a, padded) {
|
140
|
+
(0, helpers_1.assertIsString)(a);
|
141
|
+
return _ripemd160(a, padded);
|
142
|
+
};
|
143
|
+
exports.ripemd160FromString = ripemd160FromString;
|
144
|
+
/**
|
145
|
+
* Creates RIPEMD160 hash of a number[] input.
|
146
|
+
* @param a The input data (number[])
|
147
|
+
* @param padded Whether it should be padded to 256 bits or not
|
148
|
+
*/
|
149
|
+
const ripemd160FromArray = function (a, padded) {
|
150
|
+
(0, helpers_1.assertIsArray)(a);
|
151
|
+
return _ripemd160(a, padded);
|
152
|
+
};
|
153
|
+
exports.ripemd160FromArray = ripemd160FromArray;
|
154
|
+
/**
|
155
|
+
* Creates SHA-3 hash of the RLP encoded version of the input.
|
156
|
+
* @param a The input data
|
157
|
+
*/
|
158
|
+
const rlphash = function (a) {
|
159
|
+
return (0, exports.keccak)(externals_1.rlp.encode(a));
|
160
|
+
};
|
161
|
+
exports.rlphash = rlphash;
|
162
|
+
//# sourceMappingURL=hash.js.map
|