@airgap/icp 0.13.15-beta.1 → 0.13.15-beta.10
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/package.json +8 -6
- package/v1/block-explorer/ICPBlockExplorer.d.ts +1 -1
- package/v1/block-explorer/ICPBlockExplorer.js +16 -49
- package/v1/block-explorer/ICPBlockExplorer.js.map +1 -1
- package/v1/index.d.ts +3 -2
- package/v1/index.js +9 -5
- package/v1/index.js.map +1 -1
- package/v1/module/ICPModule.d.ts +2 -4
- package/v1/module/ICPModule.js +53 -94
- package/v1/module/ICPModule.js.map +1 -1
- package/v1/module.js +1 -1
- package/v1/module.js.map +1 -1
- package/v1/protocol/ICPGovernance.d.ts +39 -0
- package/v1/protocol/ICPGovernance.js +1177 -0
- package/v1/protocol/ICPGovernance.js.map +1 -0
- package/v1/protocol/ICPImplementation.d.ts +30 -5
- package/v1/protocol/ICPImplementation.js +317 -252
- package/v1/protocol/ICPImplementation.js.map +1 -1
- package/v1/protocol/ICPProtocol.d.ts +60 -8
- package/v1/protocol/ICPProtocol.js +765 -320
- package/v1/protocol/ICPProtocol.js.map +1 -1
- package/v1/protocol/icrc/CkBTCProtocol.js +138 -225
- package/v1/protocol/icrc/CkBTCProtocol.js.map +1 -1
- package/v1/protocol/icrc/ICRC1Protocol.d.ts +4 -4
- package/v1/protocol/icrc/ICRC1Protocol.js +338 -553
- package/v1/protocol/icrc/ICRC1Protocol.js.map +1 -1
- package/v1/serializer/v3/schemas/converter/transaction-converter.js +48 -5
- package/v1/serializer/v3/schemas/converter/transaction-converter.js.map +1 -1
- package/v1/serializer/v3/schemas/definitions/transaction-sign-request-icp.d.ts +8 -2
- package/v1/serializer/v3/schemas/generated/transaction-sign-request-icp.json +31 -1
- package/v1/serializer/v3/serializer-companion.js +85 -144
- package/v1/serializer/v3/serializer-companion.js.map +1 -1
- package/v1/serializer/v3/validators/transaction-validator.js +22 -60
- package/v1/serializer/v3/validators/transaction-validator.js.map +1 -1
- package/v1/serializer/v3/validators/validators.js +19 -58
- package/v1/serializer/v3/validators/validators.js.map +1 -1
- package/v1/types/governance.d.ts +29 -0
- package/v1/types/governance.js +279 -210
- package/v1/types/governance.js.map +1 -1
- package/v1/types/icrc/ledger.js +22 -23
- package/v1/types/icrc/ledger.js.map +1 -1
- package/v1/types/ledger.d.ts +1 -0
- package/v1/types/ledger.js +37 -38
- package/v1/types/ledger.js.map +1 -1
- package/v1/types/management_idl.js +6 -7
- package/v1/types/management_idl.js.map +1 -1
- package/v1/types/protocol.d.ts +2 -1
- package/v1/types/transaction.d.ts +22 -3
- package/v1/types/transaction.js +38 -0
- package/v1/types/transaction.js.map +1 -1
- package/v1/utils/account.js +42 -70
- package/v1/utils/account.js.map +1 -1
- package/v1/utils/actor.js +139 -322
- package/v1/utils/actor.js.map +1 -1
- package/v1/utils/auth.js +44 -134
- package/v1/utils/auth.js.map +1 -1
- package/v1/utils/bls.js +41 -109
- package/v1/utils/bls.js.map +1 -1
- package/v1/utils/buffer.js +47 -111
- package/v1/utils/buffer.js.map +1 -1
- package/v1/utils/cbor.js +50 -85
- package/v1/utils/cbor.js.map +1 -1
- package/v1/utils/certificate.js +116 -238
- package/v1/utils/certificate.js.map +1 -1
- package/v1/utils/convert.d.ts +1 -1
- package/v1/utils/convert.js +29 -49
- package/v1/utils/convert.js.map +1 -1
- package/v1/utils/der.js +37 -35
- package/v1/utils/der.js.map +1 -1
- package/v1/utils/errors.js +10 -30
- package/v1/utils/errors.js.map +1 -1
- package/v1/utils/hdkey.js +33 -33
- package/v1/utils/hdkey.js.map +1 -1
- package/v1/utils/http.d.ts +1 -1
- package/v1/utils/http.js +202 -426
- package/v1/utils/http.js.map +1 -1
- package/v1/utils/icrc1.js +24 -41
- package/v1/utils/icrc1.js.map +1 -1
- package/v1/utils/idl.js +780 -1159
- package/v1/utils/idl.js.map +1 -1
- package/v1/utils/json.d.ts +1 -0
- package/v1/utils/json.js +19 -0
- package/v1/utils/json.js.map +1 -0
- package/v1/utils/leb128.js +29 -30
- package/v1/utils/leb128.js.map +1 -1
- package/v1/utils/polling.js +84 -234
- package/v1/utils/polling.js.map +1 -1
- package/v1/utils/principal.js +78 -126
- package/v1/utils/principal.js.map +1 -1
- package/v1/utils/secp256k1.js +68 -134
- package/v1/utils/secp256k1.js.map +1 -1
- package/v1/utils/transaction.js +7 -7
- package/v1/utils/transaction.js.map +1 -1
package/v1/utils/certificate.js
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
3
|
if (k2 === undefined) k2 = k;
|
|
19
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -46,104 +31,62 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
46
31
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
32
|
});
|
|
48
33
|
};
|
|
49
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
50
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
51
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
52
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
53
|
-
function step(op) {
|
|
54
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
55
|
-
while (_) try {
|
|
56
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
57
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
58
|
-
switch (op[0]) {
|
|
59
|
-
case 0: case 1: t = op; break;
|
|
60
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
61
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
62
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
63
|
-
default:
|
|
64
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
65
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
66
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
67
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
68
|
-
if (t[2]) _.ops.pop();
|
|
69
|
-
_.trys.pop(); continue;
|
|
70
|
-
}
|
|
71
|
-
op = body.call(thisArg, _);
|
|
72
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
73
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
var __values = (this && this.__values) || function(o) {
|
|
77
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
78
|
-
if (m) return m.call(o);
|
|
79
|
-
if (o && typeof o.length === "number") return {
|
|
80
|
-
next: function () {
|
|
81
|
-
if (o && i >= o.length) o = void 0;
|
|
82
|
-
return { value: o && o[i++], done: !o };
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
86
|
-
};
|
|
87
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
88
35
|
exports.lookup_path = exports.reconstruct = exports.Certificate = exports.hashTreeToString = exports.CertificateVerificationError = void 0;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
36
|
+
const auth_1 = require("./auth");
|
|
37
|
+
const buffer_1 = require("./buffer");
|
|
38
|
+
const principal_1 = require("./principal");
|
|
39
|
+
const cbor = __importStar(require("./cbor"));
|
|
40
|
+
const bls_1 = require("./bls");
|
|
41
|
+
const errors_1 = require("./errors");
|
|
95
42
|
/**
|
|
96
43
|
* A certificate may fail verification with respect to the provided public key
|
|
97
44
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
return _super.call(this, "Invalid certificate: ".concat(reason)) || this;
|
|
45
|
+
class CertificateVerificationError extends errors_1.AgentError {
|
|
46
|
+
constructor(reason) {
|
|
47
|
+
super(`Invalid certificate: ${reason}`);
|
|
102
48
|
}
|
|
103
|
-
|
|
104
|
-
}(errors_1.AgentError));
|
|
49
|
+
}
|
|
105
50
|
exports.CertificateVerificationError = CertificateVerificationError;
|
|
106
51
|
/**
|
|
107
52
|
* Make a human readable string out of a hash tree.
|
|
108
53
|
* @param tree
|
|
109
54
|
*/
|
|
110
55
|
function hashTreeToString(tree) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
.join('\n');
|
|
116
|
-
};
|
|
56
|
+
const indent = (s) => s
|
|
57
|
+
.split('\n')
|
|
58
|
+
.map((x) => ' ' + x)
|
|
59
|
+
.join('\n');
|
|
117
60
|
function labelToString(label) {
|
|
118
|
-
|
|
61
|
+
const decoder = new TextDecoder(undefined, { fatal: true });
|
|
119
62
|
try {
|
|
120
63
|
return JSON.stringify(decoder.decode(label));
|
|
121
64
|
}
|
|
122
65
|
catch (e) {
|
|
123
|
-
return
|
|
66
|
+
return `data(...${label.byteLength} bytes)`;
|
|
124
67
|
}
|
|
125
68
|
}
|
|
126
69
|
switch (tree[0]) {
|
|
127
70
|
case 0 /* NodeId.Empty */:
|
|
128
71
|
return '()';
|
|
129
72
|
case 1 /* NodeId.Fork */: {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return
|
|
73
|
+
const left = hashTreeToString(tree[1]);
|
|
74
|
+
const right = hashTreeToString(tree[2]);
|
|
75
|
+
return `sub(\n left:\n${indent(left)}\n---\n right:\n${indent(right)}\n)`;
|
|
133
76
|
}
|
|
134
77
|
case 2 /* NodeId.Labeled */: {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
return
|
|
78
|
+
const label = labelToString(tree[1]);
|
|
79
|
+
const sub = hashTreeToString(tree[2]);
|
|
80
|
+
return `label(\n label:\n${indent(label)}\n sub:\n${indent(sub)}\n)`;
|
|
138
81
|
}
|
|
139
82
|
case 3 /* NodeId.Leaf */: {
|
|
140
|
-
return
|
|
83
|
+
return `leaf(...${tree[1].byteLength} bytes)`;
|
|
141
84
|
}
|
|
142
85
|
case 4 /* NodeId.Pruned */: {
|
|
143
|
-
return
|
|
86
|
+
return `pruned(${(0, buffer_1.toHex)(new Uint8Array(tree[1]))}`;
|
|
144
87
|
}
|
|
145
88
|
default: {
|
|
146
|
-
return
|
|
89
|
+
return `unknown(${JSON.stringify(tree[0])})`;
|
|
147
90
|
}
|
|
148
91
|
}
|
|
149
92
|
}
|
|
@@ -152,17 +95,17 @@ function isBufferEqual(a, b) {
|
|
|
152
95
|
if (a.byteLength !== b.byteLength) {
|
|
153
96
|
return false;
|
|
154
97
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
for (
|
|
98
|
+
const a8 = new Uint8Array(a);
|
|
99
|
+
const b8 = new Uint8Array(b);
|
|
100
|
+
for (let i = 0; i < a8.length; i++) {
|
|
158
101
|
if (a8[i] !== b8[i]) {
|
|
159
102
|
return false;
|
|
160
103
|
}
|
|
161
104
|
}
|
|
162
105
|
return true;
|
|
163
106
|
}
|
|
164
|
-
|
|
165
|
-
|
|
107
|
+
class Certificate {
|
|
108
|
+
constructor(certificate, _rootKey, _canisterId, _blsVerify) {
|
|
166
109
|
this._rootKey = _rootKey;
|
|
167
110
|
this._canisterId = _canisterId;
|
|
168
111
|
this._blsVerify = _blsVerify;
|
|
@@ -179,112 +122,78 @@ var Certificate = /** @class */ (function () {
|
|
|
179
122
|
* @param {Principal} options.canisterId The effective or signing canister ID
|
|
180
123
|
* @throws {CertificateVerificationError}
|
|
181
124
|
*/
|
|
182
|
-
|
|
183
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
cert = new Certificate(options.certificate, options.rootKey, options.canisterId, blsVerify);
|
|
193
|
-
return [4 /*yield*/, cert.verify()];
|
|
194
|
-
case 1:
|
|
195
|
-
_a.sent();
|
|
196
|
-
return [2 /*return*/, cert];
|
|
197
|
-
}
|
|
198
|
-
});
|
|
125
|
+
static create(options) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
let blsVerify = options.blsVerify;
|
|
128
|
+
if (!blsVerify) {
|
|
129
|
+
blsVerify = bls_1.blsVerify;
|
|
130
|
+
}
|
|
131
|
+
const cert = new Certificate(options.certificate, options.rootKey, options.canisterId, blsVerify);
|
|
132
|
+
yield cert.verify();
|
|
133
|
+
return cert;
|
|
199
134
|
});
|
|
200
|
-
}
|
|
201
|
-
|
|
135
|
+
}
|
|
136
|
+
lookup(path) {
|
|
202
137
|
return lookup_path(path, this.cert.tree);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
_a.trys.push([3, 5, , 6]);
|
|
222
|
-
return [4 /*yield*/, this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg))];
|
|
223
|
-
case 4:
|
|
224
|
-
sigVer = _a.sent();
|
|
225
|
-
return [3 /*break*/, 6];
|
|
226
|
-
case 5:
|
|
227
|
-
err_1 = _a.sent();
|
|
228
|
-
sigVer = false;
|
|
229
|
-
return [3 /*break*/, 6];
|
|
230
|
-
case 6:
|
|
231
|
-
if (!sigVer) {
|
|
232
|
-
throw new CertificateVerificationError('Signature verification failed');
|
|
233
|
-
}
|
|
234
|
-
return [2 /*return*/];
|
|
235
|
-
}
|
|
236
|
-
});
|
|
138
|
+
}
|
|
139
|
+
verify() {
|
|
140
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
const rootHash = yield reconstruct(this.cert.tree);
|
|
142
|
+
const derKey = yield this._checkDelegationAndGetKey(this.cert.delegation);
|
|
143
|
+
const sig = this.cert.signature;
|
|
144
|
+
const key = extractDER(derKey);
|
|
145
|
+
const msg = (0, buffer_1.concat)(domain_sep('ic-state-root'), rootHash);
|
|
146
|
+
let sigVer = false;
|
|
147
|
+
try {
|
|
148
|
+
sigVer = yield this._blsVerify(new Uint8Array(key), new Uint8Array(sig), new Uint8Array(msg));
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
sigVer = false;
|
|
152
|
+
}
|
|
153
|
+
if (!sigVer) {
|
|
154
|
+
throw new CertificateVerificationError('Signature verification failed');
|
|
155
|
+
}
|
|
237
156
|
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
249
|
-
return [4 /*yield*/, Certificate.create({
|
|
250
|
-
certificate: d.certificate,
|
|
251
|
-
rootKey: this._rootKey,
|
|
252
|
-
canisterId: this._canisterId
|
|
253
|
-
})];
|
|
254
|
-
case 1:
|
|
255
|
-
cert = _a.sent();
|
|
256
|
-
rangeLookup = cert.lookup(['subnet', d.subnet_id, 'canister_ranges']);
|
|
257
|
-
if (!rangeLookup) {
|
|
258
|
-
throw new CertificateVerificationError("Could not find canister ranges for subnet 0x".concat((0, buffer_1.toHex)(d.subnet_id)));
|
|
259
|
-
}
|
|
260
|
-
ranges_arr = cbor.decode(rangeLookup);
|
|
261
|
-
ranges = ranges_arr.map(function (v) { return [principal_1.Principal.fromUint8Array(v[0]), principal_1.Principal.fromUint8Array(v[1])]; });
|
|
262
|
-
canisterInRange = ranges.some(function (r) { return r[0].ltEq(_this._canisterId) && r[1].gtEq(_this._canisterId); });
|
|
263
|
-
if (!canisterInRange) {
|
|
264
|
-
throw new CertificateVerificationError("Canister ".concat(this._canisterId, " not in range of delegations for subnet 0x").concat((0, buffer_1.toHex)(d.subnet_id)));
|
|
265
|
-
}
|
|
266
|
-
publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);
|
|
267
|
-
if (!publicKeyLookup) {
|
|
268
|
-
throw new Error("Could not find subnet key for subnet 0x".concat((0, buffer_1.toHex)(d.subnet_id)));
|
|
269
|
-
}
|
|
270
|
-
return [2 /*return*/, publicKeyLookup];
|
|
271
|
-
}
|
|
157
|
+
}
|
|
158
|
+
_checkDelegationAndGetKey(d) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
if (!d) {
|
|
161
|
+
return this._rootKey;
|
|
162
|
+
}
|
|
163
|
+
const cert = yield Certificate.create({
|
|
164
|
+
certificate: d.certificate,
|
|
165
|
+
rootKey: this._rootKey,
|
|
166
|
+
canisterId: this._canisterId
|
|
272
167
|
});
|
|
168
|
+
const rangeLookup = cert.lookup(['subnet', d.subnet_id, 'canister_ranges']);
|
|
169
|
+
if (!rangeLookup) {
|
|
170
|
+
throw new CertificateVerificationError(`Could not find canister ranges for subnet 0x${(0, buffer_1.toHex)(d.subnet_id)}`);
|
|
171
|
+
}
|
|
172
|
+
const ranges_arr = cbor.decode(rangeLookup);
|
|
173
|
+
const ranges = ranges_arr.map((v) => [principal_1.Principal.fromUint8Array(v[0]), principal_1.Principal.fromUint8Array(v[1])]);
|
|
174
|
+
const canisterInRange = ranges.some((r) => r[0].ltEq(this._canisterId) && r[1].gtEq(this._canisterId));
|
|
175
|
+
if (!canisterInRange) {
|
|
176
|
+
throw new CertificateVerificationError(`Canister ${this._canisterId} not in range of delegations for subnet 0x${(0, buffer_1.toHex)(d.subnet_id)}`);
|
|
177
|
+
}
|
|
178
|
+
const publicKeyLookup = cert.lookup(['subnet', d.subnet_id, 'public_key']);
|
|
179
|
+
if (!publicKeyLookup) {
|
|
180
|
+
throw new Error(`Could not find subnet key for subnet 0x${(0, buffer_1.toHex)(d.subnet_id)}`);
|
|
181
|
+
}
|
|
182
|
+
return publicKeyLookup;
|
|
273
183
|
});
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
}());
|
|
184
|
+
}
|
|
185
|
+
}
|
|
277
186
|
exports.Certificate = Certificate;
|
|
278
|
-
|
|
279
|
-
|
|
187
|
+
const DER_PREFIX = (0, buffer_1.fromHex)('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100');
|
|
188
|
+
const KEY_LENGTH = 96;
|
|
280
189
|
function extractDER(buf) {
|
|
281
|
-
|
|
190
|
+
const expectedLength = DER_PREFIX.byteLength + KEY_LENGTH;
|
|
282
191
|
if (buf.byteLength !== expectedLength) {
|
|
283
|
-
throw new TypeError(
|
|
192
|
+
throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);
|
|
284
193
|
}
|
|
285
|
-
|
|
194
|
+
const prefix = buf.slice(0, DER_PREFIX.byteLength);
|
|
286
195
|
if (!isBufferEqual(prefix, DER_PREFIX)) {
|
|
287
|
-
throw new TypeError(
|
|
196
|
+
throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);
|
|
288
197
|
}
|
|
289
198
|
return buf.slice(DER_PREFIX.byteLength);
|
|
290
199
|
}
|
|
@@ -292,47 +201,27 @@ function extractDER(buf) {
|
|
|
292
201
|
* @param t
|
|
293
202
|
*/
|
|
294
203
|
function reconstruct(t) {
|
|
295
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
case 2: return [2 /*return*/, t[1]];
|
|
311
|
-
case 3: return [2 /*return*/, (0, auth_1.hash)((0, buffer_1.concat)(domain_sep('ic-hashtree-leaf'), t[1]))];
|
|
312
|
-
case 4:
|
|
313
|
-
_b = auth_1.hash;
|
|
314
|
-
_c = buffer_1.concat;
|
|
315
|
-
_d = [domain_sep('ic-hashtree-labeled'), t[1]];
|
|
316
|
-
return [4 /*yield*/, reconstruct(t[2])];
|
|
317
|
-
case 5: return [2 /*return*/, _b.apply(void 0, [_c.apply(void 0, _d.concat([_h.sent()]))])];
|
|
318
|
-
case 6:
|
|
319
|
-
_e = auth_1.hash;
|
|
320
|
-
_f = buffer_1.concat;
|
|
321
|
-
_g = [domain_sep('ic-hashtree-fork')];
|
|
322
|
-
return [4 /*yield*/, reconstruct(t[1])];
|
|
323
|
-
case 7:
|
|
324
|
-
_g = _g.concat([_h.sent()]);
|
|
325
|
-
return [4 /*yield*/, reconstruct(t[2])];
|
|
326
|
-
case 8: return [2 /*return*/, _e.apply(void 0, [_f.apply(void 0, _g.concat([_h.sent()]))])];
|
|
327
|
-
case 9: throw new Error('unreachable');
|
|
328
|
-
}
|
|
329
|
-
});
|
|
204
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
205
|
+
switch (t[0]) {
|
|
206
|
+
case 0 /* NodeId.Empty */:
|
|
207
|
+
return (0, auth_1.hash)(domain_sep('ic-hashtree-empty'));
|
|
208
|
+
case 4 /* NodeId.Pruned */:
|
|
209
|
+
return t[1];
|
|
210
|
+
case 3 /* NodeId.Leaf */:
|
|
211
|
+
return (0, auth_1.hash)((0, buffer_1.concat)(domain_sep('ic-hashtree-leaf'), t[1]));
|
|
212
|
+
case 2 /* NodeId.Labeled */:
|
|
213
|
+
return (0, auth_1.hash)((0, buffer_1.concat)(domain_sep('ic-hashtree-labeled'), t[1], yield reconstruct(t[2])));
|
|
214
|
+
case 1 /* NodeId.Fork */:
|
|
215
|
+
return (0, auth_1.hash)((0, buffer_1.concat)(domain_sep('ic-hashtree-fork'), yield reconstruct(t[1]), yield reconstruct(t[2])));
|
|
216
|
+
default:
|
|
217
|
+
throw new Error('unreachable');
|
|
218
|
+
}
|
|
330
219
|
});
|
|
331
220
|
}
|
|
332
221
|
exports.reconstruct = reconstruct;
|
|
333
222
|
function domain_sep(s) {
|
|
334
|
-
|
|
335
|
-
|
|
223
|
+
const len = new Uint8Array([s.length]);
|
|
224
|
+
const str = new TextEncoder().encode(s);
|
|
336
225
|
return (0, buffer_1.concat)(len, str);
|
|
337
226
|
}
|
|
338
227
|
/**
|
|
@@ -350,8 +239,8 @@ function lookup_path(path, tree) {
|
|
|
350
239
|
}
|
|
351
240
|
}
|
|
352
241
|
}
|
|
353
|
-
|
|
354
|
-
|
|
242
|
+
const label = typeof path[0] === 'string' ? new TextEncoder().encode(path[0]) : path[0];
|
|
243
|
+
const t = find_label(label, flatten_forks(tree));
|
|
355
244
|
if (t) {
|
|
356
245
|
return lookup_path(path.slice(1), t);
|
|
357
246
|
}
|
|
@@ -369,28 +258,17 @@ function flatten_forks(t) {
|
|
|
369
258
|
}
|
|
370
259
|
}
|
|
371
260
|
function find_label(l, trees) {
|
|
372
|
-
var e_1, _a;
|
|
373
261
|
if (trees.length === 0) {
|
|
374
262
|
return undefined;
|
|
375
263
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (
|
|
380
|
-
|
|
381
|
-
if (isBufferEqual(l, p)) {
|
|
382
|
-
return t[2];
|
|
383
|
-
}
|
|
264
|
+
for (const t of trees) {
|
|
265
|
+
if (t[0] === 2 /* NodeId.Labeled */) {
|
|
266
|
+
const p = t[1];
|
|
267
|
+
if (isBufferEqual(l, p)) {
|
|
268
|
+
return t[2];
|
|
384
269
|
}
|
|
385
270
|
}
|
|
386
271
|
}
|
|
387
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
388
|
-
finally {
|
|
389
|
-
try {
|
|
390
|
-
if (trees_1_1 && !trees_1_1.done && (_a = trees_1.return)) _a.call(trees_1);
|
|
391
|
-
}
|
|
392
|
-
finally { if (e_1) throw e_1.error; }
|
|
393
|
-
}
|
|
394
272
|
return undefined;
|
|
395
273
|
}
|
|
396
274
|
//# sourceMappingURL=certificate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificate.js","sourceRoot":"","sources":["../../../src/v1/utils/certificate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"certificate.js","sourceRoot":"","sources":["../../../src/v1/utils/certificate.ts"],"names":[],"mappings":"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"}
|
package/v1/utils/convert.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ export declare function hexStringToUint8Array(hexString: string): Uint8Array;
|
|
|
5
5
|
export declare function arrayBufferToHexString(buffer: ArrayBuffer): string;
|
|
6
6
|
export declare function hexStringToArrayBuffer(hex: string): ArrayBuffer;
|
|
7
7
|
export declare const calculateCrc32: (bytes: Uint8Array) => Buffer;
|
|
8
|
-
export declare const calculateCrc16: (bytes: Uint8Array) => Buffer;
|
|
9
8
|
export declare const e8sToTokens: (e8s: bigint) => Tokens;
|
|
10
9
|
export declare const asciiStringToByteArray: (text: string) => Array<number>;
|
|
10
|
+
export declare const uint8ArrayToBigInt: (array: Uint8Array) => bigint;
|
package/v1/utils/convert.js
CHANGED
|
@@ -1,37 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.
|
|
29
|
-
|
|
30
|
-
var crc_32_1 = require("crc-32");
|
|
3
|
+
exports.uint8ArrayToBigInt = exports.asciiStringToByteArray = exports.e8sToTokens = exports.calculateCrc32 = exports.hexStringToArrayBuffer = exports.arrayBufferToHexString = exports.hexStringToUint8Array = exports.uint8ArrayToHexString = void 0;
|
|
4
|
+
const crc_32_1 = require("crc-32");
|
|
31
5
|
function uint8ArrayToHexString(arr) {
|
|
32
|
-
|
|
33
|
-
for (
|
|
34
|
-
|
|
6
|
+
let hexStr = '';
|
|
7
|
+
for (let i = 0; i < arr.length; i++) {
|
|
8
|
+
let hex = (arr[i] & 0xff).toString(16);
|
|
35
9
|
hex = hex.length === 1 ? '0' + hex : hex;
|
|
36
10
|
hexStr += hex;
|
|
37
11
|
}
|
|
@@ -42,47 +16,53 @@ function hexStringToUint8Array(hexString) {
|
|
|
42
16
|
if (hexString.length % 2 !== 0) {
|
|
43
17
|
hexString = '0' + hexString;
|
|
44
18
|
}
|
|
45
|
-
|
|
46
|
-
for (
|
|
19
|
+
let arrayBuffer = new Uint8Array(hexString.length / 2);
|
|
20
|
+
for (let i = 0; i < hexString.length; i += 2) {
|
|
47
21
|
arrayBuffer[i / 2] = parseInt(hexString.substring(i, i + 2), 16);
|
|
48
22
|
}
|
|
49
23
|
return arrayBuffer;
|
|
50
24
|
}
|
|
51
25
|
exports.hexStringToUint8Array = hexStringToUint8Array;
|
|
52
26
|
function arrayBufferToHexString(buffer) {
|
|
53
|
-
return
|
|
27
|
+
return [...new Uint8Array(buffer)].map((x) => x.toString(16).padStart(2, '0')).join('');
|
|
54
28
|
}
|
|
55
29
|
exports.arrayBufferToHexString = arrayBufferToHexString;
|
|
56
30
|
function hexStringToArrayBuffer(hex) {
|
|
57
|
-
|
|
31
|
+
const hexRe = new RegExp(/^([0-9A-F]{2})*$/i);
|
|
58
32
|
if (!hexRe.test(hex)) {
|
|
59
33
|
throw new Error('Invalid hexadecimal string.');
|
|
60
34
|
}
|
|
61
|
-
|
|
35
|
+
const buffer = [...hex]
|
|
36
|
+
.reduce((acc, curr, i) => {
|
|
62
37
|
// tslint:disable-next-line:no-bitwise
|
|
63
38
|
acc[(i / 2) | 0] = (acc[(i / 2) | 0] || '') + curr;
|
|
64
39
|
return acc;
|
|
65
40
|
}, [])
|
|
66
|
-
.map(
|
|
41
|
+
.map((x) => Number.parseInt(x, 16));
|
|
67
42
|
return new Uint8Array(buffer).buffer;
|
|
68
43
|
}
|
|
69
44
|
exports.hexStringToArrayBuffer = hexStringToArrayBuffer;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
45
|
+
const calculateCrc32 = (bytes) => {
|
|
46
|
+
const checksumArrayBuf = new ArrayBuffer(4);
|
|
47
|
+
const view = new DataView(checksumArrayBuf);
|
|
73
48
|
view.setUint32(0, (0, crc_32_1.buf)(Buffer.from(bytes)), false);
|
|
74
49
|
return Buffer.from(checksumArrayBuf);
|
|
75
50
|
};
|
|
76
51
|
exports.calculateCrc32 = calculateCrc32;
|
|
77
|
-
|
|
78
|
-
var checksumArrayBuf = new ArrayBuffer(4);
|
|
79
|
-
var view = new DataView(checksumArrayBuf);
|
|
80
|
-
view.setUint16(0, (0, crc_1.crc16)(Buffer.from(bytes)), false);
|
|
81
|
-
return Buffer.from(checksumArrayBuf);
|
|
82
|
-
};
|
|
83
|
-
exports.calculateCrc16 = calculateCrc16;
|
|
84
|
-
var e8sToTokens = function (e8s) { return ({ e8s: e8s }); };
|
|
52
|
+
const e8sToTokens = (e8s) => ({ e8s });
|
|
85
53
|
exports.e8sToTokens = e8sToTokens;
|
|
86
|
-
|
|
54
|
+
const asciiStringToByteArray = (text) => Array.from(text).map((c) => c.charCodeAt(0));
|
|
87
55
|
exports.asciiStringToByteArray = asciiStringToByteArray;
|
|
56
|
+
const uint8ArrayToBigInt = (array) => {
|
|
57
|
+
const view = new DataView(array.buffer, array.byteOffset, array.byteLength);
|
|
58
|
+
if (typeof view.getBigUint64 === 'function') {
|
|
59
|
+
return view.getBigUint64(0);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const high = BigInt(view.getUint32(0));
|
|
63
|
+
const low = BigInt(view.getUint32(4));
|
|
64
|
+
return (high << BigInt(32)) + low;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
exports.uint8ArrayToBigInt = uint8ArrayToBigInt;
|
|
88
68
|
//# sourceMappingURL=convert.js.map
|