ox 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Base32/package.json +6 -0
- package/Bech32m/package.json +6 -0
- package/CHANGELOG.md +25 -0
- package/CompactSize/package.json +6 -0
- package/_cjs/core/Base32.js +73 -0
- package/_cjs/core/Base32.js.map +1 -0
- package/_cjs/core/Bech32m.js +205 -0
- package/_cjs/core/Bech32m.js.map +1 -0
- package/_cjs/core/CompactSize.js +91 -0
- package/_cjs/core/CompactSize.js.map +1 -0
- package/_cjs/index.js +5 -2
- package/_cjs/index.js.map +1 -1
- package/_cjs/tempo/KeyAuthorization.js +4 -4
- package/_cjs/tempo/KeyAuthorization.js.map +1 -1
- package/_cjs/tempo/SignatureEnvelope.js +18 -3
- package/_cjs/tempo/SignatureEnvelope.js.map +1 -1
- package/_cjs/tempo/TempoAddress.js +117 -0
- package/_cjs/tempo/TempoAddress.js.map +1 -0
- package/_cjs/tempo/TxEnvelopeTempo.js +5 -2
- package/_cjs/tempo/TxEnvelopeTempo.js.map +1 -1
- package/_cjs/tempo/index.js +2 -1
- package/_cjs/tempo/index.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_esm/core/Base32.js +119 -0
- package/_esm/core/Base32.js.map +1 -0
- package/_esm/core/Bech32m.js +238 -0
- package/_esm/core/Bech32m.js.map +1 -0
- package/_esm/core/CompactSize.js +150 -0
- package/_esm/core/CompactSize.js.map +1 -0
- package/_esm/index.js +72 -0
- package/_esm/index.js.map +1 -1
- package/_esm/tempo/KeyAuthorization.js +19 -9
- package/_esm/tempo/KeyAuthorization.js.map +1 -1
- package/_esm/tempo/SignatureEnvelope.js +22 -5
- package/_esm/tempo/SignatureEnvelope.js.map +1 -1
- package/_esm/tempo/TempoAddress.js +182 -0
- package/_esm/tempo/TempoAddress.js.map +1 -0
- package/_esm/tempo/TxEnvelopeTempo.js +42 -2
- package/_esm/tempo/TxEnvelopeTempo.js.map +1 -1
- package/_esm/tempo/index.js +21 -0
- package/_esm/tempo/index.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_types/core/Base32.d.ts +79 -0
- package/_types/core/Base32.d.ts.map +1 -0
- package/_types/core/Bech32m.d.ts +93 -0
- package/_types/core/Bech32m.d.ts.map +1 -0
- package/_types/core/CompactSize.d.ts +107 -0
- package/_types/core/CompactSize.d.ts.map +1 -0
- package/_types/index.d.ts +72 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/tempo/KeyAuthorization.d.ts +17 -7
- package/_types/tempo/KeyAuthorization.d.ts.map +1 -1
- package/_types/tempo/SignatureEnvelope.d.ts +19 -5
- package/_types/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/_types/tempo/TempoAddress.d.ts +126 -0
- package/_types/tempo/TempoAddress.d.ts.map +1 -0
- package/_types/tempo/TxEnvelopeTempo.d.ts +47 -1
- package/_types/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- package/_types/tempo/index.d.ts +21 -0
- package/_types/tempo/index.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/core/Base32.ts +134 -0
- package/core/Bech32m.ts +263 -0
- package/core/CompactSize.ts +169 -0
- package/index.ts +74 -1
- package/package.json +21 -1
- package/tempo/KeyAuthorization.test.ts +70 -23
- package/tempo/KeyAuthorization.ts +21 -18
- package/tempo/SignatureEnvelope.test.ts +15 -8
- package/tempo/SignatureEnvelope.ts +43 -8
- package/tempo/TempoAddress/package.json +6 -0
- package/tempo/TempoAddress.test.ts +237 -0
- package/tempo/TempoAddress.ts +222 -0
- package/tempo/Transaction.test.ts +4 -2
- package/tempo/TxEnvelopeTempo.test.ts +7 -3
- package/tempo/TxEnvelopeTempo.ts +52 -1
- package/tempo/e2e.test.ts +45 -10
- package/tempo/index.ts +22 -0
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.14.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#178](https://github.com/wevm/ox/pull/178) [`4a79ac5`](https://github.com/wevm/ox/commit/4a79ac540c05796ebc92a0d54ce0049a6ff5e195) Thanks [@jxom](https://github.com/jxom)! - **Breaking (`ox/tempo`):** `KeyAuthorization.chainId` is now required.
|
|
8
|
+
|
|
9
|
+
```diff
|
|
10
|
+
const authorization = KeyAuthorization.from({
|
|
11
|
+
address,
|
|
12
|
+
+ chainId: 1n,
|
|
13
|
+
expiry: 1234567890,
|
|
14
|
+
type: 'secp256k1',
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [#178](https://github.com/wevm/ox/pull/178) [`4a79ac5`](https://github.com/wevm/ox/commit/4a79ac540c05796ebc92a0d54ce0049a6ff5e195) Thanks [@jxom](https://github.com/jxom)! - **`ox/tempo`:** Added support for V2 keychain signature type (`0x04`) which binds the inner signature to the user account via `keccak256(0x04 || sigHash || userAddress)`.
|
|
21
|
+
|
|
22
|
+
## 0.13.2
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- [#179](https://github.com/wevm/ox/pull/179) [`4b91335`](https://github.com/wevm/ox/commit/4b91335b5a68cfee39248ab91c78a0b98b1d1859) Thanks [@jxom](https://github.com/jxom)! - Added `Base32`, `CompactSize`, and `TempoAddress` modules. `Base32` implements BIP-173 bech32 base32 encoding/decoding. `CompactSize` implements Bitcoin's variable-length integer encoding. `TempoAddress` provides human-readable Tempo address formatting and parsing with `tempo1`/`tempoz1` prefixes, CompactSize zone ID encoding, and double-SHA256 checksumming.
|
|
27
|
+
|
|
3
28
|
## 0.13.1
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidCharacterError = void 0;
|
|
4
|
+
exports.fromBytes = fromBytes;
|
|
5
|
+
exports.fromHex = fromHex;
|
|
6
|
+
exports.toBytes = toBytes;
|
|
7
|
+
exports.toHex = toHex;
|
|
8
|
+
const Bytes = require("./Bytes.js");
|
|
9
|
+
const Errors = require("./Errors.js");
|
|
10
|
+
const Hex = require("./Hex.js");
|
|
11
|
+
const alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
12
|
+
const alphabetMap = (() => {
|
|
13
|
+
const map = {};
|
|
14
|
+
for (let i = 0; i < alphabet.length; i++)
|
|
15
|
+
map[alphabet[i]] = i;
|
|
16
|
+
return map;
|
|
17
|
+
})();
|
|
18
|
+
function fromBytes(value) {
|
|
19
|
+
let bits = 0;
|
|
20
|
+
let acc = 0;
|
|
21
|
+
let result = '';
|
|
22
|
+
for (const byte of value) {
|
|
23
|
+
acc = (acc << 8) | byte;
|
|
24
|
+
bits += 8;
|
|
25
|
+
while (bits >= 5) {
|
|
26
|
+
bits -= 5;
|
|
27
|
+
result += alphabet[(acc >>> bits) & 0x1f];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (bits > 0)
|
|
31
|
+
result += alphabet[(acc << (5 - bits)) & 0x1f];
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
function fromHex(value) {
|
|
35
|
+
return fromBytes(Bytes.fromHex(value));
|
|
36
|
+
}
|
|
37
|
+
function toBytes(value) {
|
|
38
|
+
const values = [];
|
|
39
|
+
for (const char of value) {
|
|
40
|
+
const v = alphabetMap[char];
|
|
41
|
+
if (v === undefined)
|
|
42
|
+
throw new InvalidCharacterError({ character: char });
|
|
43
|
+
values.push(v);
|
|
44
|
+
}
|
|
45
|
+
let bits = 0;
|
|
46
|
+
let acc = 0;
|
|
47
|
+
const bytes = [];
|
|
48
|
+
for (const v of values) {
|
|
49
|
+
acc = (acc << 5) | v;
|
|
50
|
+
bits += 5;
|
|
51
|
+
if (bits >= 8) {
|
|
52
|
+
bits -= 8;
|
|
53
|
+
bytes.push((acc >>> bits) & 0xff);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return new Uint8Array(bytes);
|
|
57
|
+
}
|
|
58
|
+
function toHex(value) {
|
|
59
|
+
return Hex.fromBytes(toBytes(value));
|
|
60
|
+
}
|
|
61
|
+
class InvalidCharacterError extends Errors.BaseError {
|
|
62
|
+
constructor({ character }) {
|
|
63
|
+
super(`Invalid bech32 base32 character: "${character}".`);
|
|
64
|
+
Object.defineProperty(this, "name", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true,
|
|
67
|
+
writable: true,
|
|
68
|
+
value: 'Base32.InvalidCharacterError'
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.InvalidCharacterError = InvalidCharacterError;
|
|
73
|
+
//# sourceMappingURL=Base32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base32.js","sourceRoot":"","sources":["../../core/Base32.ts"],"names":[],"mappings":";;;AAyBA,8BAcC;AAmBD,0BAEC;AAmBD,0BAoBC;AAmBD,sBAEC;AAxHD,oCAAmC;AACnC,sCAAqC;AACrC,gCAA+B;AAG/B,MAAM,QAAQ,GAAG,kCAAkC,CAAA;AACnD,MAAM,WAAW,GAAiB,CAAC,GAAG,EAAE;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAA;IAC/D,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,EAAE,CAAA;AAeJ,SAAgB,SAAS,CAAC,KAAkB;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QACvB,IAAI,IAAI,CAAC,CAAA;QACT,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,CAAA;YACT,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAA;AACf,CAAC;AAmBD,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACxC,CAAC;AAmBD,SAAgB,OAAO,CAAC,KAAa;IACnC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,CAAA;QACT,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAA;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAmBD,SAAgB,KAAK,CAAC,KAAa;IACjC,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AACtC,CAAC;AAOD,MAAa,qBAAsB,SAAQ,MAAM,CAAC,SAAS;IAGzD,YAAY,EAAE,SAAS,EAAyB;QAC9C,KAAK,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAA;QAHzC;;;;mBAAO,8BAA8B;WAAA;IAIvD,CAAC;CACF;AAND,sDAMC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExceedsLengthError = exports.InvalidHrpError = exports.MixedCaseError = exports.InvalidPaddingError = exports.InvalidCharacterError = exports.InvalidChecksumError = exports.NoSeparatorError = void 0;
|
|
4
|
+
exports.encode = encode;
|
|
5
|
+
exports.decode = decode;
|
|
6
|
+
const Errors_js_1 = require("./Errors.js");
|
|
7
|
+
function encode(hrp, data, options = {}) {
|
|
8
|
+
const { limit = 90 } = options;
|
|
9
|
+
hrp = hrp.toLowerCase();
|
|
10
|
+
if (hrp.length === 0)
|
|
11
|
+
throw new InvalidHrpError();
|
|
12
|
+
for (let i = 0; i < hrp.length; i++) {
|
|
13
|
+
const c = hrp.charCodeAt(i);
|
|
14
|
+
if (c < 33 || c > 126)
|
|
15
|
+
throw new InvalidHrpError();
|
|
16
|
+
}
|
|
17
|
+
const data5 = convertBits(data, 8, 5, true);
|
|
18
|
+
if (hrp.length + 1 + data5.length + 6 > limit)
|
|
19
|
+
throw new ExceedsLengthError({ limit });
|
|
20
|
+
const checksum = createChecksum(hrp, data5);
|
|
21
|
+
let result = hrp + '1';
|
|
22
|
+
for (const d of data5.concat(checksum))
|
|
23
|
+
result += alphabet[d];
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function decode(str, options = {}) {
|
|
27
|
+
const { limit = 90 } = options;
|
|
28
|
+
if (str.length > limit)
|
|
29
|
+
throw new ExceedsLengthError({ limit });
|
|
30
|
+
if (str !== str.toLowerCase() && str !== str.toUpperCase())
|
|
31
|
+
throw new MixedCaseError();
|
|
32
|
+
const lower = str.toLowerCase();
|
|
33
|
+
const pos = lower.lastIndexOf('1');
|
|
34
|
+
if (pos === -1)
|
|
35
|
+
throw new NoSeparatorError();
|
|
36
|
+
if (pos === 0)
|
|
37
|
+
throw new InvalidHrpError();
|
|
38
|
+
if (pos + 7 > lower.length)
|
|
39
|
+
throw new InvalidChecksumError();
|
|
40
|
+
const hrp = lower.slice(0, pos);
|
|
41
|
+
for (let i = 0; i < hrp.length; i++) {
|
|
42
|
+
const c = hrp.charCodeAt(i);
|
|
43
|
+
if (c < 33 || c > 126)
|
|
44
|
+
throw new InvalidHrpError();
|
|
45
|
+
}
|
|
46
|
+
const dataChars = lower.slice(pos + 1);
|
|
47
|
+
const data5 = [];
|
|
48
|
+
for (const c of dataChars) {
|
|
49
|
+
const v = alphabetMap[c];
|
|
50
|
+
if (v === undefined)
|
|
51
|
+
throw new InvalidCharacterError({ character: c });
|
|
52
|
+
data5.push(v);
|
|
53
|
+
}
|
|
54
|
+
if (!verifyChecksum(hrp, data5))
|
|
55
|
+
throw new InvalidChecksumError();
|
|
56
|
+
const data8 = convertBits(data5.slice(0, -6), 5, 8, false);
|
|
57
|
+
return { hrp, data: new Uint8Array(data8) };
|
|
58
|
+
}
|
|
59
|
+
class NoSeparatorError extends Errors_js_1.BaseError {
|
|
60
|
+
constructor() {
|
|
61
|
+
super('Bech32m string has no separator.');
|
|
62
|
+
Object.defineProperty(this, "name", {
|
|
63
|
+
enumerable: true,
|
|
64
|
+
configurable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: 'Bech32m.NoSeparatorError'
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.NoSeparatorError = NoSeparatorError;
|
|
71
|
+
class InvalidChecksumError extends Errors_js_1.BaseError {
|
|
72
|
+
constructor() {
|
|
73
|
+
super('Invalid bech32m checksum.');
|
|
74
|
+
Object.defineProperty(this, "name", {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
configurable: true,
|
|
77
|
+
writable: true,
|
|
78
|
+
value: 'Bech32m.InvalidChecksumError'
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.InvalidChecksumError = InvalidChecksumError;
|
|
83
|
+
class InvalidCharacterError extends Errors_js_1.BaseError {
|
|
84
|
+
constructor({ character }) {
|
|
85
|
+
super(`Invalid bech32m character: "${character}".`);
|
|
86
|
+
Object.defineProperty(this, "name", {
|
|
87
|
+
enumerable: true,
|
|
88
|
+
configurable: true,
|
|
89
|
+
writable: true,
|
|
90
|
+
value: 'Bech32m.InvalidCharacterError'
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
exports.InvalidCharacterError = InvalidCharacterError;
|
|
95
|
+
class InvalidPaddingError extends Errors_js_1.BaseError {
|
|
96
|
+
constructor() {
|
|
97
|
+
super('Invalid padding in bech32m data.');
|
|
98
|
+
Object.defineProperty(this, "name", {
|
|
99
|
+
enumerable: true,
|
|
100
|
+
configurable: true,
|
|
101
|
+
writable: true,
|
|
102
|
+
value: 'Bech32m.InvalidPaddingError'
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.InvalidPaddingError = InvalidPaddingError;
|
|
107
|
+
class MixedCaseError extends Errors_js_1.BaseError {
|
|
108
|
+
constructor() {
|
|
109
|
+
super('Bech32m string must not contain mixed case.');
|
|
110
|
+
Object.defineProperty(this, "name", {
|
|
111
|
+
enumerable: true,
|
|
112
|
+
configurable: true,
|
|
113
|
+
writable: true,
|
|
114
|
+
value: 'Bech32m.MixedCaseError'
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.MixedCaseError = MixedCaseError;
|
|
119
|
+
class InvalidHrpError extends Errors_js_1.BaseError {
|
|
120
|
+
constructor() {
|
|
121
|
+
super('Invalid bech32m human-readable part (HRP). Must be 1+ characters in ASCII range 33-126.');
|
|
122
|
+
Object.defineProperty(this, "name", {
|
|
123
|
+
enumerable: true,
|
|
124
|
+
configurable: true,
|
|
125
|
+
writable: true,
|
|
126
|
+
value: 'Bech32m.InvalidHrpError'
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.InvalidHrpError = InvalidHrpError;
|
|
131
|
+
class ExceedsLengthError extends Errors_js_1.BaseError {
|
|
132
|
+
constructor({ limit }) {
|
|
133
|
+
super(`Bech32m string exceeds length limit of ${limit}.`);
|
|
134
|
+
Object.defineProperty(this, "name", {
|
|
135
|
+
enumerable: true,
|
|
136
|
+
configurable: true,
|
|
137
|
+
writable: true,
|
|
138
|
+
value: 'Bech32m.ExceedsLengthError'
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.ExceedsLengthError = ExceedsLengthError;
|
|
143
|
+
const alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
144
|
+
const alphabetMap = (() => {
|
|
145
|
+
const map = {};
|
|
146
|
+
for (let i = 0; i < alphabet.length; i++)
|
|
147
|
+
map[alphabet[i]] = i;
|
|
148
|
+
return map;
|
|
149
|
+
})();
|
|
150
|
+
const BECH32M_CONST = 0x2bc830a3;
|
|
151
|
+
const GEN = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
|
|
152
|
+
function polymod(values) {
|
|
153
|
+
let chk = 1;
|
|
154
|
+
for (const v of values) {
|
|
155
|
+
const b = chk >> 25;
|
|
156
|
+
chk = ((chk & 0x1ffffff) << 5) ^ v;
|
|
157
|
+
for (let i = 0; i < 5; i++)
|
|
158
|
+
if ((b >> i) & 1)
|
|
159
|
+
chk ^= GEN[i];
|
|
160
|
+
}
|
|
161
|
+
return chk;
|
|
162
|
+
}
|
|
163
|
+
function hrpExpand(hrp) {
|
|
164
|
+
const ret = [];
|
|
165
|
+
for (let i = 0; i < hrp.length; i++)
|
|
166
|
+
ret.push(hrp.charCodeAt(i) >> 5);
|
|
167
|
+
ret.push(0);
|
|
168
|
+
for (let i = 0; i < hrp.length; i++)
|
|
169
|
+
ret.push(hrp.charCodeAt(i) & 31);
|
|
170
|
+
return ret;
|
|
171
|
+
}
|
|
172
|
+
function createChecksum(hrp, data) {
|
|
173
|
+
const values = hrpExpand(hrp).concat(data).concat([0, 0, 0, 0, 0, 0]);
|
|
174
|
+
const mod = polymod(values) ^ BECH32M_CONST;
|
|
175
|
+
const ret = [];
|
|
176
|
+
for (let i = 0; i < 6; i++)
|
|
177
|
+
ret.push((mod >> (5 * (5 - i))) & 31);
|
|
178
|
+
return ret;
|
|
179
|
+
}
|
|
180
|
+
function verifyChecksum(hrp, data) {
|
|
181
|
+
return polymod(hrpExpand(hrp).concat(data)) === BECH32M_CONST;
|
|
182
|
+
}
|
|
183
|
+
function convertBits(data, fromBits, toBits, pad) {
|
|
184
|
+
let acc = 0;
|
|
185
|
+
let bits = 0;
|
|
186
|
+
const maxv = (1 << toBits) - 1;
|
|
187
|
+
const ret = [];
|
|
188
|
+
for (const value of data) {
|
|
189
|
+
acc = (acc << fromBits) | value;
|
|
190
|
+
bits += fromBits;
|
|
191
|
+
while (bits >= toBits) {
|
|
192
|
+
bits -= toBits;
|
|
193
|
+
ret.push((acc >> bits) & maxv);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (pad) {
|
|
197
|
+
if (bits > 0)
|
|
198
|
+
ret.push((acc << (toBits - bits)) & maxv);
|
|
199
|
+
}
|
|
200
|
+
else if (bits >= fromBits || (acc << (toBits - bits)) & maxv) {
|
|
201
|
+
throw new InvalidPaddingError();
|
|
202
|
+
}
|
|
203
|
+
return ret;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=Bech32m.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bech32m.js","sourceRoot":"","sources":["../../core/Bech32m.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsufficientBytesError = exports.NegativeValueError = void 0;
|
|
4
|
+
exports.toBytes = toBytes;
|
|
5
|
+
exports.toHex = toHex;
|
|
6
|
+
exports.fromBytes = fromBytes;
|
|
7
|
+
exports.fromHex = fromHex;
|
|
8
|
+
const Bytes = require("./Bytes.js");
|
|
9
|
+
const Errors = require("./Errors.js");
|
|
10
|
+
const Hex = require("./Hex.js");
|
|
11
|
+
function toBytes(value) {
|
|
12
|
+
const n = BigInt(value);
|
|
13
|
+
if (n < 0n)
|
|
14
|
+
throw new NegativeValueError({ value: n });
|
|
15
|
+
if (n <= 252n)
|
|
16
|
+
return new Uint8Array([Number(n)]);
|
|
17
|
+
if (n <= 0xffffn) {
|
|
18
|
+
const buf = new Uint8Array(3);
|
|
19
|
+
buf[0] = 0xfd;
|
|
20
|
+
const view = new DataView(buf.buffer);
|
|
21
|
+
view.setUint16(1, Number(n), true);
|
|
22
|
+
return buf;
|
|
23
|
+
}
|
|
24
|
+
if (n <= 0xffffffffn) {
|
|
25
|
+
const buf = new Uint8Array(5);
|
|
26
|
+
buf[0] = 0xfe;
|
|
27
|
+
const view = new DataView(buf.buffer);
|
|
28
|
+
view.setUint32(1, Number(n), true);
|
|
29
|
+
return buf;
|
|
30
|
+
}
|
|
31
|
+
const buf = new Uint8Array(9);
|
|
32
|
+
buf[0] = 0xff;
|
|
33
|
+
const view = new DataView(buf.buffer);
|
|
34
|
+
view.setBigUint64(1, n, true);
|
|
35
|
+
return buf;
|
|
36
|
+
}
|
|
37
|
+
function toHex(value) {
|
|
38
|
+
return Hex.fromBytes(toBytes(value));
|
|
39
|
+
}
|
|
40
|
+
function fromBytes(data) {
|
|
41
|
+
if (data.length === 0)
|
|
42
|
+
throw new InsufficientBytesError({ expected: 1, actual: 0 });
|
|
43
|
+
const first = data[0];
|
|
44
|
+
if (first < 0xfd)
|
|
45
|
+
return { value: BigInt(first), size: 1 };
|
|
46
|
+
const view = new DataView(data.buffer, data.byteOffset);
|
|
47
|
+
if (first === 0xfd) {
|
|
48
|
+
if (data.length < 3)
|
|
49
|
+
throw new InsufficientBytesError({ expected: 3, actual: data.length });
|
|
50
|
+
return { value: BigInt(view.getUint16(1, true)), size: 3 };
|
|
51
|
+
}
|
|
52
|
+
if (first === 0xfe) {
|
|
53
|
+
if (data.length < 5)
|
|
54
|
+
throw new InsufficientBytesError({ expected: 5, actual: data.length });
|
|
55
|
+
return { value: BigInt(view.getUint32(1, true)), size: 5 };
|
|
56
|
+
}
|
|
57
|
+
if (data.length < 9)
|
|
58
|
+
throw new InsufficientBytesError({ expected: 9, actual: data.length });
|
|
59
|
+
return {
|
|
60
|
+
value: view.getBigUint64(1, true),
|
|
61
|
+
size: 9,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function fromHex(data) {
|
|
65
|
+
return fromBytes(Bytes.fromHex(data));
|
|
66
|
+
}
|
|
67
|
+
class NegativeValueError extends Errors.BaseError {
|
|
68
|
+
constructor({ value }) {
|
|
69
|
+
super(`CompactSize value must be non-negative, got ${value}.`);
|
|
70
|
+
Object.defineProperty(this, "name", {
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
value: 'CompactSize.NegativeValueError'
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.NegativeValueError = NegativeValueError;
|
|
79
|
+
class InsufficientBytesError extends Errors.BaseError {
|
|
80
|
+
constructor({ expected, actual }) {
|
|
81
|
+
super(`Insufficient bytes for CompactSize decoding. Expected at least ${expected}, got ${actual}.`);
|
|
82
|
+
Object.defineProperty(this, "name", {
|
|
83
|
+
enumerable: true,
|
|
84
|
+
configurable: true,
|
|
85
|
+
writable: true,
|
|
86
|
+
value: 'CompactSize.InsufficientBytesError'
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.InsufficientBytesError = InsufficientBytesError;
|
|
91
|
+
//# sourceMappingURL=CompactSize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompactSize.js","sourceRoot":"","sources":["../../core/CompactSize.ts"],"names":[],"mappings":"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"}
|
package/_cjs/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.X25519 = exports.Withdrawal = exports.WebCryptoP256 = exports.WebAuthnP256 = exports.Value = exports.ValidatorData = exports.TypedData = exports.TxEnvelopeLegacy = exports.TxEnvelopeEip7702 = exports.TxEnvelopeEip4844 = exports.TxEnvelopeEip2930 = exports.TxEnvelopeEip1559 = exports.TransactionEnvelope = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.StateOverrides = exports.Solidity = exports.Siwe = void 0;
|
|
3
|
+
exports.RpcSchema = exports.RpcResponse = exports.RpcRequest = exports.Rlp = exports.PublicKey = exports.Provider = exports.PersonalMessage = exports.P256 = exports.Mnemonic = exports.Log = exports.Kzg = exports.Keystore = exports.Json = exports.Hex = exports.HdKey = exports.Hash = exports.Filter = exports.Fee = exports.Errors = exports.Ens = exports.Ed25519 = exports.CoseKey = exports.ContractAddress = exports.CompactSize = exports.Cbor = exports.Caches = exports.Bytes = exports.BlsPoint = exports.Bls = exports.Bloom = exports.BlockOverrides = exports.Block = exports.Blobs = exports.BinaryStateTree = exports.Bech32m = exports.Base64 = exports.Base58 = exports.Base32 = exports.Authorization = exports.AesGcm = exports.Address = exports.AccountProof = exports.AccessList = exports.AbiParameters = exports.AbiItem = exports.AbiFunction = exports.AbiEvent = exports.AbiError = exports.AbiConstructor = exports.Abi = void 0;
|
|
4
|
+
exports.X25519 = exports.Withdrawal = exports.WebCryptoP256 = exports.WebAuthnP256 = exports.Value = exports.ValidatorData = exports.TypedData = exports.TxEnvelopeLegacy = exports.TxEnvelopeEip7702 = exports.TxEnvelopeEip4844 = exports.TxEnvelopeEip2930 = exports.TxEnvelopeEip1559 = exports.TransactionEnvelope = exports.TransactionRequest = exports.TransactionReceipt = exports.Transaction = exports.StateOverrides = exports.Solidity = exports.Siwe = exports.Signature = exports.Secp256k1 = exports.RpcTransport = void 0;
|
|
5
5
|
exports.Abi = require("./core/Abi.js");
|
|
6
6
|
exports.AbiConstructor = require("./core/AbiConstructor.js");
|
|
7
7
|
exports.AbiError = require("./core/AbiError.js");
|
|
@@ -14,8 +14,10 @@ exports.AccountProof = require("./core/AccountProof.js");
|
|
|
14
14
|
exports.Address = require("./core/Address.js");
|
|
15
15
|
exports.AesGcm = require("./core/AesGcm.js");
|
|
16
16
|
exports.Authorization = require("./core/Authorization.js");
|
|
17
|
+
exports.Base32 = require("./core/Base32.js");
|
|
17
18
|
exports.Base58 = require("./core/Base58.js");
|
|
18
19
|
exports.Base64 = require("./core/Base64.js");
|
|
20
|
+
exports.Bech32m = require("./core/Bech32m.js");
|
|
19
21
|
exports.BinaryStateTree = require("./core/BinaryStateTree.js");
|
|
20
22
|
exports.Blobs = require("./core/Blobs.js");
|
|
21
23
|
exports.Block = require("./core/Block.js");
|
|
@@ -26,6 +28,7 @@ exports.BlsPoint = require("./core/BlsPoint.js");
|
|
|
26
28
|
exports.Bytes = require("./core/Bytes.js");
|
|
27
29
|
exports.Caches = require("./core/Caches.js");
|
|
28
30
|
exports.Cbor = require("./core/Cbor.js");
|
|
31
|
+
exports.CompactSize = require("./core/CompactSize.js");
|
|
29
32
|
exports.ContractAddress = require("./core/ContractAddress.js");
|
|
30
33
|
exports.CoseKey = require("./core/CoseKey.js");
|
|
31
34
|
exports.Ed25519 = require("./core/Ed25519.js");
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAuHA,uCAAoC;AA4EpC,6DAA0D;AAwE1D,iDAA8C;AAmH9C,iDAA8C;AA8F9C,uDAAoD;AA8EpD,+CAA4C;AAwG5C,2DAAwD;AAOxD,qDAAkD;AAOlD,yDAAsD;AAuDtD,+CAA4C;AAqC5C,6CAA0C;AA0E1C,2DAAwD;AAyBxD,6CAA0C;AAsD1C,6CAA0C;AAqD1C,6CAA0C;AAwB1C,+CAA4C;AAO5C,+DAA4D;AAO5D,2CAAwC;AAgCxC,2CAAwC;AAOxC,6DAA0D;AAO1D,2CAAwC;AAoHxC,uCAAoC;AA6CpC,iDAA8C;AAgI9C,2CAAwC;AAExC,6CAA0C;AAiC1C,yCAAsC;AAyBtC,uDAAoD;AAsCpD,+DAA4D;AAgC5D,+CAA4C;AAgC5C,+CAA4C;AA+B5C,uCAAoC;AAEpC,6CAA0C;AAI1C,uCAAoC;AAMpC,6CAA0C;AAc1C,yCAAsC;AAatC,2CAAwC;AAkHxC,uCAAoC;AAkCpC,yCAAsC;AA+DtC,iDAA8C;AAQ9C,uCAAoC;AA0DpC,uCAAoC;AA4DpC,iDAA8C;AAwE9C,yCAAsC;AAmBtC,+DAA4D;AAoF5D,iDAA8C;AAwC9C,mDAAgD;AAiBhD,uCAAoC;AAmCpC,qDAAkD;AAmFlD,uDAAoD;AAMpD,mDAAgD;AAyBhD,yDAAsD;AAwEtD,mDAAgD;AAmChD,mDAAgD;AAqGhD,yCAAsC;AAEtC,iDAA8C;AAO9C,6DAA0D;AAuC1D,uDAAoD;AA4CpD,qEAAkE;AAwBlE,qEAAkE;AAelE,8DAA2D;AAsK3D,mEAAgE;AA8JhE,mEAAgE;AAuLhE,mEAAgE;AAoIhE,mEAAgE;AA0JhE,iEAA8D;AAkD9D,mDAAgD;AAOhD,2DAAwD;AAsBxD,2CAAwC;AAkFxC,yDAAsD;AAiEtD,2DAAwD;AAOxD,qDAAkD;AAmClD,6CAA0C"}
|
|
@@ -24,7 +24,7 @@ function from(authorization, options = {}) {
|
|
|
24
24
|
return authorization;
|
|
25
25
|
}
|
|
26
26
|
function fromRpc(authorization) {
|
|
27
|
-
const { chainId
|
|
27
|
+
const { chainId, keyId, expiry = 0, limits, keyType } = authorization;
|
|
28
28
|
const signature = SignatureEnvelope.fromRpc(authorization.signature);
|
|
29
29
|
return {
|
|
30
30
|
address: keyId,
|
|
@@ -58,7 +58,7 @@ function fromTuple(tuple) {
|
|
|
58
58
|
address: keyId,
|
|
59
59
|
expiry: typeof expiry !== 'undefined' ? hexToNumber(expiry) : undefined,
|
|
60
60
|
type: keyType,
|
|
61
|
-
|
|
61
|
+
chainId: chainId === '0x' ? 0n : Hex.toBigInt(chainId),
|
|
62
62
|
...(typeof expiry !== 'undefined' ? { expiry: hexToNumber(expiry) } : {}),
|
|
63
63
|
...(typeof limits !== 'undefined'
|
|
64
64
|
? {
|
|
@@ -90,7 +90,7 @@ function serialize(authorization) {
|
|
|
90
90
|
return Rlp.fromHex(tuple);
|
|
91
91
|
}
|
|
92
92
|
function toRpc(authorization) {
|
|
93
|
-
const { address, chainId
|
|
93
|
+
const { address, chainId, expiry, limits, type, signature } = authorization;
|
|
94
94
|
return {
|
|
95
95
|
chainId: chainId === 0n ? '0x' : Hex.fromNumber(chainId),
|
|
96
96
|
expiry: typeof expiry === 'number' ? Hex.fromNumber(expiry) : null,
|
|
@@ -104,7 +104,7 @@ function toRpc(authorization) {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
function toTuple(authorization) {
|
|
107
|
-
const { address, chainId
|
|
107
|
+
const { address, chainId, expiry, limits } = authorization;
|
|
108
108
|
const signature = authorization.signature
|
|
109
109
|
? SignatureEnvelope.serialize(authorization.signature)
|
|
110
110
|
: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"KeyAuthorization.js","sourceRoot":"","sources":["../../tempo/KeyAuthorization.ts"],"names":[],"mappings":";;AA0PA,oBAeC;AAqDD,0BAcC;AA6CD,8BAoCC;AA4CD,wCAEC;AAgCD,kCAGC;AAkCD,oBAIC;AAoCD,8BAGC;AAwCD,sBAcC;AAqCD,0BAkCC;AAtrBD,wCAAuC;AACvC,sCAAqC;AAErC,sCAAqC;AACrC,4DAA2D;AAoP3D,SAAgB,IAAI,CAIlB,aAA+C,EAC/C,UAAmC,EAAE;IAErC,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ;QAC1C,OAAO,OAAO,CAAC,aAAoB,CAAU,CAAA;IAC/C,IAAI,OAAO,CAAC,SAAS;QACnB,OAAO;YACL,GAAG,aAAa;YAChB,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SAC5C,CAAA;IACZ,OAAO,aAAsB,CAAA;AAC/B,CAAC;AAqDD,SAAgB,OAAO,CAAC,aAAkB;IACxC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAA;IACrE,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IACpE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;SAC3B,CAAC,CAAC;QACH,SAAS;QACT,IAAI,EAAE,OAAO;KACd,CAAA;AACH,CAAC;AA6CD,SAAgB,SAAS,CACvB,KAAY;IAEZ,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAA;IAClD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAAA;IACnE,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,OAAO,WAAW,CAAA;YACpB,KAAK,MAAM;gBACT,OAAO,MAAM,CAAA;YACf,KAAK,MAAM;gBACT,OAAO,UAAU,CAAA;YACnB;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAA;QACvD,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,IAAI,GAAqB;QAC7B,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACvE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtD,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;YAC/B,CAAC,CAAC;gBACE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtC,KAAK;oBACL,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;iBAC1B,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IACD,IAAI,mBAAmB;QACrB,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAA;IACrE,OAAO,IAAI,CAAC,IAAI,CAAU,CAAA;AAC5B,CAAC;AA4CD,SAAgB,cAAc,CAAC,aAA+B;IAC5D,OAAO,IAAI,CAAC,aAAa,CAAC,CAAA;AAC5B,CAAC;AAgCD,SAAgB,WAAW,CAAC,UAAmB;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAqB,CAAA;IACvD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAkCD,SAAgB,IAAI,CAAC,aAA+B;IAClD,MAAM,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAClD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC;AAoCD,SAAgB,SAAS,CAAC,aAA+B;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IACpC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAY,CAAC,CAAA;AAClC,CAAC;AAwCD,SAAgB,KAAK,CAAC,aAAqB;IACzC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,aAAa,CAAA;IAE3E,OAAO;QACL,OAAO,EAAE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QACxD,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAClE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACzC,KAAK;YACL,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;SAC7B,CAAC,CAAC;QACH,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC7C,OAAO,EAAE,IAAI;KACd,CAAA;AACH,CAAC;AAqCD,SAAgB,OAAO,CACrB,aAA4B;IAE5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAA;IAC1D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;QACvC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;QACtD,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,QAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,WAAW;gBACd,OAAO,IAAI,CAAA;YACb,KAAK,MAAM;gBACT,OAAO,MAAM,CAAA;YACf,KAAK,UAAU;gBACb,OAAO,MAAM,CAAA;YACf;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,MAAM,WAAW,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACzC,KAAK,CAAC,KAAK;QACX,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;KACzB,CAAC,CAAA;IACF,MAAM,kBAAkB,GAAG;QACzB,WAAW,CAAC,OAAO,CAAC;QACpB,IAAI;QACJ,OAAO;QAEP,OAAO,MAAM,KAAK,QAAQ,IAAI,WAAW;YACvC,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,SAAS;QACb,WAAW;KACZ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACjB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAU,CAAA;AACzE,CAAC;AASD,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AACnD,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -23,6 +23,7 @@ const ox_WebAuthnP256 = require("../core/WebAuthnP256.js");
|
|
|
23
23
|
const serializedP256Type = '0x01';
|
|
24
24
|
const serializedWebAuthnType = '0x02';
|
|
25
25
|
const serializedKeychainType = '0x03';
|
|
26
|
+
const serializedKeychainV2Type = '0x04';
|
|
26
27
|
exports.magicBytes = '0x7777777777777777777777777777777777777777777777777777777777777777';
|
|
27
28
|
exports.types = ['secp256k1', 'p256', 'webAuthn'];
|
|
28
29
|
function assert(envelope) {
|
|
@@ -187,17 +188,19 @@ function deserialize(value) {
|
|
|
187
188
|
type: 'webAuthn',
|
|
188
189
|
};
|
|
189
190
|
}
|
|
190
|
-
if (typeId === serializedKeychainType
|
|
191
|
+
if (typeId === serializedKeychainType ||
|
|
192
|
+
typeId === serializedKeychainV2Type) {
|
|
191
193
|
const userAddress = Hex.slice(data, 0, 20);
|
|
192
194
|
const inner = deserialize(Hex.slice(data, 20));
|
|
193
195
|
return {
|
|
194
196
|
userAddress,
|
|
195
197
|
inner,
|
|
196
198
|
type: 'keychain',
|
|
199
|
+
version: typeId === serializedKeychainV2Type ? 'v2' : 'v1',
|
|
197
200
|
};
|
|
198
201
|
}
|
|
199
202
|
throw new InvalidSerializedError({
|
|
200
|
-
reason: `Unknown signature type identifier: ${typeId}. Expected ${serializedP256Type} (P256)
|
|
203
|
+
reason: `Unknown signature type identifier: ${typeId}. Expected ${serializedP256Type} (P256), ${serializedWebAuthnType} (WebAuthn), ${serializedKeychainType} (Keychain V1), or ${serializedKeychainV2Type} (Keychain V2)`,
|
|
201
204
|
serialized,
|
|
202
205
|
});
|
|
203
206
|
}
|
|
@@ -214,6 +217,13 @@ function from(value) {
|
|
|
214
217
|
return {
|
|
215
218
|
...value,
|
|
216
219
|
...(type === 'p256' ? { prehash: value.prehash } : {}),
|
|
220
|
+
...(type === 'keychain' &&
|
|
221
|
+
!(typeof value === 'object' &&
|
|
222
|
+
value !== null &&
|
|
223
|
+
'version' in value &&
|
|
224
|
+
value.version)
|
|
225
|
+
? { version: 'v1' }
|
|
226
|
+
: {}),
|
|
217
227
|
type,
|
|
218
228
|
};
|
|
219
229
|
}
|
|
@@ -283,6 +293,7 @@ function fromRpc(envelope) {
|
|
|
283
293
|
type: 'keychain',
|
|
284
294
|
userAddress: envelope.userAddress,
|
|
285
295
|
inner: fromRpc(envelope.signature),
|
|
296
|
+
...(envelope.version ? { version: envelope.version } : {}),
|
|
286
297
|
};
|
|
287
298
|
throw new CoercionError({ envelope });
|
|
288
299
|
}
|
|
@@ -333,7 +344,10 @@ function serialize(envelope, options = {}) {
|
|
|
333
344
|
}
|
|
334
345
|
if (type === 'keychain') {
|
|
335
346
|
const keychain = envelope;
|
|
336
|
-
|
|
347
|
+
const keychainTypeId = keychain.version === 'v1'
|
|
348
|
+
? serializedKeychainType
|
|
349
|
+
: serializedKeychainV2Type;
|
|
350
|
+
return Hex.concat(keychainTypeId, keychain.userAddress, serialize(keychain.inner), options.magic ? exports.magicBytes : '0x');
|
|
337
351
|
}
|
|
338
352
|
throw new CoercionError({ envelope });
|
|
339
353
|
}
|
|
@@ -375,6 +389,7 @@ function toRpc(envelope) {
|
|
|
375
389
|
type: 'keychain',
|
|
376
390
|
userAddress: keychain.userAddress,
|
|
377
391
|
signature: toRpc(keychain.inner),
|
|
392
|
+
...(keychain.version ? { version: keychain.version } : {}),
|
|
378
393
|
};
|
|
379
394
|
}
|
|
380
395
|
throw new CoercionError({ envelope });
|