@ledgerhq/revault-sdk 0.21.3 → 0.21.5
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/lib/bake.cjs +11 -11
- package/lib/bake.js +2 -2
- package/lib/{chunk-JGXOGWYB.cjs → chunk-CKNBRCHA.cjs} +2 -2
- package/lib/chunk-CKNBRCHA.cjs.map +1 -0
- package/lib/{chunk-WVCYFF2Z.cjs → chunk-I6B5U4JR.cjs} +1 -1
- package/lib/{chunk-WVCYFF2Z.cjs.map → chunk-I6B5U4JR.cjs.map} +1 -1
- package/lib/{chunk-PEHCVOGV.js → chunk-IHGVWOD7.js} +1 -1
- package/lib/chunk-IHGVWOD7.js.map +1 -0
- package/lib/{chunk-CZLZUISN.js → chunk-QVDZOA4O.js} +2 -2
- package/lib/chunk-QVDZOA4O.js.map +1 -0
- package/lib/crypto.cjs +2 -2
- package/lib/crypto.js +1 -1
- package/lib/engine.cjs +2 -2
- package/lib/engine.d.cts +1 -1
- package/lib/engine.d.ts +1 -1
- package/lib/engine.js +1 -1
- package/package.json +6 -6
- package/lib/chunk-CZLZUISN.js.map +0 -1
- package/lib/chunk-JGXOGWYB.cjs.map +0 -1
- package/lib/chunk-PEHCVOGV.js.map +0 -1
package/lib/bake.cjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkI6B5U4JRcjs = require('./chunk-I6B5U4JR.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkCKNBRCHAcjs = require('./chunk-CKNBRCHA.cjs');
|
|
8
8
|
|
|
9
9
|
// src/bake/index.ts
|
|
10
10
|
var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
|
|
@@ -65,12 +65,12 @@ var flattenApprovers = (groups) => {
|
|
|
65
65
|
};
|
|
66
66
|
async function bakePledgeAdjustment(options, logger) {
|
|
67
67
|
const { pledgeAdjustment, engine } = options;
|
|
68
|
-
const getDeviceIndex =
|
|
68
|
+
const getDeviceIndex = _chunkI6B5U4JRcjs.createDeviceIndexResolver.call(void 0, engine);
|
|
69
69
|
logger.info("Logging in with admin...");
|
|
70
70
|
const admin = await engine.withDeviceIndex(4).login();
|
|
71
71
|
logger.info("Fetching account, tradelink blueprint and network...");
|
|
72
72
|
const [matchingAccounts, blueprint, network] = await Promise.all([
|
|
73
|
-
|
|
73
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin.client.accounts.list.query, { name: pledgeAdjustment.account }),
|
|
74
74
|
admin.client.tradelink.getNetworkBlueprint.query(),
|
|
75
75
|
admin.client.tradelink.getNetwork.query()
|
|
76
76
|
]);
|
|
@@ -215,7 +215,7 @@ async function bakeWorkspace(options, logger) {
|
|
|
215
215
|
const { workspace, engine, workspaceName } = options;
|
|
216
216
|
const workspaceEngine = engine.withWorkspace(workspaceName);
|
|
217
217
|
const { logTitle, logStep, logSubStep } = createBakeLogHelpers(logger);
|
|
218
|
-
const findDeviceIndex =
|
|
218
|
+
const findDeviceIndex = _chunkI6B5U4JRcjs.createDeviceIndexResolver.call(void 0, workspaceEngine);
|
|
219
219
|
logger.info("Authenticating with two admins...");
|
|
220
220
|
const [admin1, admin2] = await Promise.all([
|
|
221
221
|
workspaceEngine.withDeviceIndex(4).login(),
|
|
@@ -230,11 +230,11 @@ async function bakeWorkspace(options, logger) {
|
|
|
230
230
|
existingAccounts,
|
|
231
231
|
tradelinkNetworkBlueprint
|
|
232
232
|
] = await Promise.all([
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
233
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin1.client.users.list.query, { status: "ACTIVE" }),
|
|
234
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin1.client.groups.list.query, { status: "ACTIVE" }),
|
|
235
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin1.client.whitelists.list.query, { status: "ACTIVE" }),
|
|
236
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin1.client.policies.list.query, { isPrivate: false }),
|
|
237
|
+
_chunkI6B5U4JRcjs.fetchAll.call(void 0, admin1.client.accounts.list.query, { status: "ACTIVE" }),
|
|
238
238
|
admin1.client.tradelink.getNetworkBlueprint.query()
|
|
239
239
|
]);
|
|
240
240
|
const tradelinkOrgExchangesByName = _lodash2.default.keyBy(_optionalChain([tradelinkNetworkBlueprint, 'optionalAccess', _3 => _3.exchanges]), "name");
|
|
@@ -446,7 +446,7 @@ async function bakeWorkspace(options, logger) {
|
|
|
446
446
|
usersWithDeviceIndex.push({ user: createdUser, deviceIndex });
|
|
447
447
|
}
|
|
448
448
|
async function createApiUser(apiUser) {
|
|
449
|
-
const pubKey = _nullishCoalesce(apiUser.pubKey, () => (
|
|
449
|
+
const pubKey = _nullishCoalesce(apiUser.pubKey, () => ( _chunkCKNBRCHAcjs.genKeys.call(void 0, apiUser.name).hexPubKey));
|
|
450
450
|
const existing = existingApiUsers.find(
|
|
451
451
|
(user) => user.pubKey === pubKey || user.name === apiUser.name
|
|
452
452
|
);
|
package/lib/bake.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createDeviceIndexResolver,
|
|
3
3
|
fetchAll
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IHGVWOD7.js";
|
|
5
5
|
import {
|
|
6
6
|
genKeys
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-QVDZOA4O.js";
|
|
8
8
|
|
|
9
9
|
// src/bake/index.ts
|
|
10
10
|
import invariant4 from "invariant";
|
|
@@ -221,7 +221,7 @@ function extractPublicKey(pemKey) {
|
|
|
221
221
|
pem.pop();
|
|
222
222
|
const keyBuffer = Buffer.from(pem.join(""), "base64");
|
|
223
223
|
const actualKeyBuffer = keyBuffer.slice(26);
|
|
224
|
-
return actualKeyBuffer.toString("hex");
|
|
224
|
+
return actualKeyBuffer.toString("hex").toUpperCase();
|
|
225
225
|
}
|
|
226
226
|
function hexToPem(hexString, { isPrivate = true } = {}) {
|
|
227
227
|
const keyEncoder = new KeyEncoder("p256");
|
|
@@ -259,4 +259,4 @@ function genKeys(entropy) {
|
|
|
259
259
|
|
|
260
260
|
|
|
261
261
|
exports.genKeys = genKeys;
|
|
262
|
-
//# sourceMappingURL=chunk-
|
|
262
|
+
//# sourceMappingURL=chunk-CKNBRCHA.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-CKNBRCHA.cjs","../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"names":["elliptic"],"mappings":"AAAA;ACAA,gFAAmB;AACnB,wFAAqB;ADErB;AACA;AEMA,iFAAiB;AACjB,yEAAe;AACf;AAGA,IAAM,gBAAA,EAAkB,gBAAA,CAAK,MAAA,CAAO,cAAA,EAAgB,QAAA,CAAA,EAAY;AAG9D,EAAA,MAAM,KAAA,EAAO,IAAA;AACb,EAAA,IAAA,CACG,GAAA,CAAI,CAAA,CACJ,GAAA;AAAA,IACC,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,CAAE,GAAA,CAAI,CAAA;AAAA,IACxB,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IAC9B,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,IACpD,IAAA,CAAK,GAAA,CAAI,WAAW,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS;AAAA,EACtD,CAAA;AACJ,CAAC,CAAA;AAED,IAAM,iBAAA,EAAmB,gBAAA,CAAK,MAAA;AAAA,EAC5B,cAAA;AAAA;AAAA,EAEA,QAAA,CAAA,EAAY;AAGV,IAAA,MAAM,KAAA,EAAO,IAAA;AACb,IAAA,IAAA,CACG,GAAA,CAAI,CAAA,CACJ,GAAA;AAAA,MACC,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,CAAE,GAAA,CAAI,CAAA;AAAA,MACxB,IAAA,CACG,GAAA,CAAI,qBAAqB,CAAA,CACzB,GAAA,CAAI,CAAA,CACJ,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,aAAa,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAAA,MACjE,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,eAAe,CAAA;AAAA,MACxD,IAAA,CAAK,GAAA,CAAI,YAAY,CAAA,CAAE,QAAA,CAAS,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS;AAAA,IACvD,CAAA;AAAA,EACJ;AAAA;AAEF,CAAA;AAEA,IAAM,wBAAA,EAA0B,gBAAA,CAAK,MAAA,CAAO,sBAAA,EAAwB,QAAA,CAAA,EAAY;AAG9E,EAAA,MAAM,KAAA,EAAO,IAAA;AACb,EAAA,IAAA,CACG,GAAA,CAAI,CAAA,CACJ,GAAA;AAAA,IACC,IAAA,CAAK,GAAA,CAAI,WAAW,CAAA,CAAE,GAAA,CAAI,CAAA,CAAE,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AAAA,IACjF,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,CAAE,MAAA,CAAO;AAAA,EACzB,CAAA;AACJ,CAAC,CAAA;AASD,IAAM,OAAA,EAAuC;AAAA,EAC3C,SAAA,EAAW;AAAA,IACT,eAAA,EAAiB,CAAC,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,CAAA,EAAG,EAAE,CAAA;AAAA,IAClC,iBAAA,EAAmB,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAAA,IAC7C,gBAAA,EAAkB,EAAE,KAAA,EAAO,aAAa,CAAA;AAAA,IACxC,KAAA,EAAO,IAAI,kBAAA,CAAS,EAAA,CAAG,WAAW;AAAA,EACpC,CAAA;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,eAAA,EAAiB,CAAC,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAAA;AAAA,IAC3C,iBAAA,EAAmB,EAAE,KAAA,EAAO,iBAAiB,CAAA;AAAA,IAC7C,gBAAA,EAAkB,EAAE,KAAA,EAAO,aAAa,CAAA;AAAA,IACxC,KAAA,EAAO,IAAI,kBAAA,CAAS,EAAA,CAAG,MAAM;AAAA,EAC/B;AACF,CAAA;AAoBO,IAAM,WAAA,EAAN,MAAiB;AAAA,EACtB;AAAA,EACA;AAAA,EAEA,WAAA,CAAY,OAAA,EAAgC;AAC1C,IAAA,GAAA,CAAI,OAAO,QAAA,IAAY,QAAA,EAAU;AAE/B,MAAA,GAAA,CAAI,QAAA,IAAY,YAAA,GAAe,QAAA,IAAY,MAAA,EAAQ;AACjD,QAAA,MAAM,IAAI,KAAA,CAAM,iBAAA,EAAmB,OAAO,CAAA;AAAA,MAC5C;AAEA,MAAA,QAAA,EAAU,MAAA,CAAO,OAAO,CAAA;AAAA,IAC1B;AACA,IAAA,IAAA,CAAK,QAAA,EAAU,OAAA;AACf,IAAA,IAAA,CAAK,YAAA,EAAc,CAAC,CAAA,EAAG,CAAA,EAAG,GAAA,EAAK,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,EAC5C;AAAA;AAAA,EAGQ,YAAA,CAAa,UAAA,EAA8C;AACjE,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAI,mBAAA,CAAG,CAAC,CAAA;AAAA,MACjB,UAAA;AAAA,MACA,mBAAA,EAAqB;AAAA,QACnB,WAAA,EAAa,IAAA,CAAK,WAAA;AAAA,QAClB,KAAA,EAAO,UAAA,CAAW;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGA,gBAAA,CAAiB,aAAA,EAAuB,YAAA,EAAuC;AAC7E,IAAA,MAAM,iBAAA,EAAoC;AAAA,MACxC,OAAA,EAAS,IAAI,mBAAA,CAAG,CAAC,CAAA;AAAA,MACjB,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA;AAAA,MAC5C,UAAA,EAAY,IAAA,CAAK,OAAA,CAAQ;AAAA,IAC3B,CAAA;AAEA,IAAA,GAAA,CAAI,YAAA,EAAc;AAChB,MAAA,gBAAA,CAAiB,UAAA,EAAY;AAAA,QAC3B,MAAA,EAAQ,CAAA;AAAA,QACR,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,KAAK;AAAA,MACvC,CAAA;AAAA,IACF;AAEA,IAAA,OAAO,gBAAA;AAAA,EACT;AAAA,EAEA,eAAA,CAAgB,YAAA,EAGd;AACA,IAAA,OAAO;AAAA,MACL,SAAA,EAAW;AAAA,QACT,EAAA,EAAI,IAAA,CAAK,WAAA;AAAA,QACT,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ;AAAA,MACtB,CAAA;AAAA,MACA,GAAA,EAAK;AAAA,QACH,MAAA,EAAQ,CAAA;AAAA,QACR,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,KAAK;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEA,aAAA,CACE,UAAA,EACA,cAAA,EACA,iBAAA,EACA,sBAAA,EAA2C,OAAA,EACnC;AACR,IAAA,IAAI,gBAAA;AAGJ,IAAA,OAAA,CAAQ,cAAA,EAAgB;AAAA,MACtB,KAAK,KAAA,EAAO;AACV,QAAA,GAAA,CAAI,OAAO,WAAA,IAAe,QAAA,EAAU;AAClC,UAAA,MAAM,IAAI,KAAA,CAAM,8BAA8B,CAAA;AAAA,QAChD;AACA,QAAA,MAAM,QAAA,EAAU,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,cAAA,CAAe,UAAA,EAAY,KAAK,CAAA;AACnE,QAAA,MAAM,aAAA,EAAe,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAA;AAC5C,QAAA,iBAAA,EAAmB,IAAA,CAAK,gBAAA,CAAiB,UAAA,EAAY,YAAY,CAAA;AACjE,QAAA,KAAA;AAAA,MACF;AAAA,MACA,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,OAAO,WAAA,IAAe,QAAA,EAAU;AAClC,UAAA,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,KAAK,CAAA;AAAA,QAC5C;AACA,QAAA,iBAAA,EAAmB,eAAA,CAAgB,MAAA,CAAO,UAAA,EAAY,KAAK,CAAA;AAC3D,QAAA,KAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,OAAO,WAAA,IAAe,QAAA,EAAU;AAClC,UAAA,MAAM,IAAI,KAAA,CAAM,8BAA8B,CAAA;AAAA,QAChD;AACA,QAAA,iBAAA,EAAmB,eAAA,CAAgB,MAAA;AAAA,UACjC,UAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA,CAAK,OAAA,CAAQ;AAAA,QACf,CAAA;AACA,QAAA,KAAA;AAAA;AAAA,MAEF,OAAA;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,4BAA4B,CAAA;AAAA,IAEhD;AAGA,IAAA,OAAA,CAAQ,iBAAA,EAAmB;AAAA,MACzB,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,sBAAA,IAA0B,OAAA,EAAS;AACrC,UAAA,OAAO,gBAAA,CAAiB,UAAA,CAAW,QAAA,CAAS,KAAK,CAAA;AAAA,QACnD,EAAA,KAAA,GAAA,CAAW,sBAAA,IAA0B,OAAA,EAAS;AAC5C,UAAA,OAAO,IAAA,CAAK,YAAA,CAAa,gBAAgB,CAAA,CAAE,UAAA,CAAW,UAAA,CAAW,QAAA,CAAS,KAAK,CAAA;AAAA,QACjF;AACA,QAAA,KAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,sBAAA,IAA0B,OAAA,EAAS;AACrC,UAAA,OAAO,eAAA,CAAgB,MAAA,CAAO,gBAAA,EAAkB,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA;AAAA,QACvE,EAAA,KAAA,GAAA,CAAW,sBAAA,IAA0B,OAAA,EAAS;AAC5C,UAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,gBAAgB,CAAA,EAAG,KAAK,CAAA,CAAE,QAAA;AAAA,YACzE;AAAA,UACF,CAAA;AAAA,QACF;AACA,QAAA,KAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,sBAAA,IAA0B,OAAA,EAAS;AACrC,UAAA,OAAO,eAAA,CAAgB,MAAA,CAAO,gBAAA,EAAkB,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,iBAAiB,CAAA;AAAA,QACvF,EAAA,KAAA,GAAA,CAAW,sBAAA,IAA0B,OAAA,EAAS;AAC5C,UAAA,OAAO,gBAAA,CAAiB,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,gBAAgB,CAAA,EAAG,KAAA,EAAO;AAAA,YACzE,GAAG,IAAA,CAAK,OAAA,CAAQ,iBAAA;AAAA,YAChB,KAAA,EAAO;AAAA,UACT,CAAC,CAAA;AAAA,QACH;AACA,QAAA,KAAA;AAAA;AAAA,MAEF,OAAA;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,4CAA4C,CAAA;AAAA,IAEhE;AAEA,IAAA,MAAM,IAAI,KAAA,CAAM,wCAAwC,CAAA;AAAA,EAC1D;AAAA,EAEA,YAAA,CACE,SAAA,EACA,cAAA,EACA,iBAAA,EACQ;AACR,IAAA,IAAI,eAAA;AAEJ,IAAA,OAAA,CAAQ,cAAA,EAAgB;AAAA,MACtB,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,OAAO,UAAA,IAAc,QAAA,EAAU;AACjC,UAAA,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA;AAAA,QAC/C;AACA,QAAA,gBAAA,EAAkB,IAAA,CAAK,eAAA,CAAgB,SAAS,CAAA;AAChD,QAAA,KAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,OAAO,UAAA,IAAc,QAAA,EAAU;AACjC,UAAA,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,KAAK,CAAA;AAAA,QAC1C;AACA,QAAA,gBAAA,EAAkB,uBAAA,CAAwB,MAAA,CAAO,SAAA,EAAW,KAAK,CAAA;AACjE,QAAA,KAAA;AAAA,MACF,KAAK,KAAA;AACH,QAAA,GAAA,CAAI,OAAO,UAAA,IAAc,QAAA,EAAU;AACjC,UAAA,MAAM,IAAI,KAAA,CAAM,6BAA6B,CAAA;AAAA,QAC/C;AACA,QAAA,gBAAA,EAAkB,uBAAA,CAAwB,MAAA;AAAA,UACxC,SAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA,CAAK,OAAA,CAAQ;AAAA,QACf,CAAA;AACA,QAAA,KAAA;AAAA;AAAA,MAEF,OAAA;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,2BAA2B,CAAA;AAAA,IAE/C;AAGA,IAAA,OAAA,CAAQ,iBAAA,EAAmB;AAAA,MACzB,KAAK,KAAA;AACH,QAAA,OAAO,eAAA,CAAgB,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA;AAAA,MAChD,KAAK,KAAA;AACH,QAAA,OAAO,uBAAA,CAAwB,MAAA,CAAO,eAAA,EAAiB,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA;AAAA,MAC9E,KAAK,KAAA;AACH,QAAA,OAAO,uBAAA,CAAwB,MAAA;AAAA,UAC7B,eAAA;AAAA,UACA,KAAA;AAAA,UACA,IAAA,CAAK,OAAA,CAAQ;AAAA,QACf,CAAA;AAAA;AAAA,MAEF,OAAA;AACE,QAAA,MAAM,IAAI,KAAA,CAAM,2CAA2C,CAAA;AAAA,IAE/D;AAAA,EACF;AACF,CAAA;AFnFA;AACA;AClNA,SAAS,gBAAA,CAAiB,MAAA,EAAwB;AAGhD,EAAA,MAAM,IAAA,EAAM,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA;AAC7B,EAAA,GAAA,CAAI,KAAA,CAAM,CAAA;AACV,EAAA,GAAA,CAAI,GAAA,CAAI,CAAA;AAER,EAAA,MAAM,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,QAAQ,CAAA;AAGpD,EAAA,MAAM,gBAAA,EAAkB,SAAA,CAAU,KAAA,CAAM,EAAE,CAAA;AAC1C,EAAA,OAAO,eAAA,CAAgB,QAAA,CAAS,KAAK,CAAA,CAAE,WAAA,CAAY,CAAA;AACrD;AAEA,SAAS,QAAA,CAAS,SAAA,EAAmB,EAAE,UAAA,EAAY,KAAK,EAAA,EAAI,CAAC,CAAA,EAAW;AACtE,EAAA,MAAM,WAAA,EAAa,IAAI,UAAA,CAAW,MAAM,CAAA;AACxC,EAAA,GAAA,CAAI,SAAA,EAAW;AACb,IAAA,OAAO,UAAA,CAAW,aAAA,CAAc,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA;AAAA,EACzD;AACA,EAAA,OAAO,UAAA,CAAW,YAAA,CAAa,SAAA,EAAW,KAAA,EAAO,KAAK,CAAA;AACxD;AAMO,SAAS,OAAA,CAAQ,OAAA,EAAiC;AACvD,EAAA,GAAA,CAAI,OAAA,EAAS;AACX,IAAA,MAAM,GAAA,EAAK,IAAIA,kBAAAA,CAAS,EAAA,CAAG,MAAM,CAAA;AACjC,IAAA,MAAM,cAAA,EAAgB,gBAAA,CAAO,UAAA,CAAW,QAAQ,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAC9E,IAAA,MAAM,QAAA,EAAU,EAAA,CAAG,UAAA,CAAW;AAAA,MAC5B,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,aAAA,EAAe,KAAK;AAAA,IAC3C,CAAC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,UAAA,EAAY,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAC,CAAC,CAAA;AAAA,MACtD,SAAA,EAAW,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAA,EAAG,EAAE,SAAA,EAAW,MAAM,CAAC,CAAC,CAAA;AAAA,MAC1E,SAAA,EAAW,gBAAA,CAAiB,MAAA,CAAO,QAAA,CAAS,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAA,EAAG,EAAE,SAAA,EAAW,MAAM,CAAC,CAAC,CAAC;AAAA,IAC9F,CAAA;AAAA,EACF;AACA,EAAA,MAAM,EAAE,SAAA,EAAW,WAAW,EAAA,EAAI,gBAAA,CAAO,mBAAA,CAAoB,IAAA,EAAM;AAAA,IACjE,UAAA,EAAY,OAAA;AAAA,IACZ,iBAAA,EAAmB,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAA,IACjD,kBAAA,EAAoB,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,MAAM;AAAA,EACpD,CAAC,CAAA;AACD,EAAA,MAAM,UAAA,EAAY,gBAAA,CAAiB,SAAS,CAAA;AAC5C,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,EACF,CAAA;AACF;ADyMA;AACA;AACE;AACF,0BAAC","file":"/home/runner/_work/revault/revault/packages/sdk/lib/chunk-CKNBRCHA.cjs","sourcesContent":[null,"import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\").toUpperCase();\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"]}
|
|
@@ -43,4 +43,4 @@ function createDeviceIndexResolver(engine) {
|
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
exports.fetchAll = fetchAll; exports.fetchAllCursor = fetchAllCursor; exports.createDeviceIndexResolver = createDeviceIndexResolver;
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-I6B5U4JR.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-I6B5U4JR.cjs","../src/utils.ts"],"names":[],"mappings":"AAAA;ACCA,4FAAsB;AAOtB,MAAA,SAAsB,QAAA,CACpB,OAAA,EACA,KAAA,EACkB;AAClB,EAAA,MAAM,IAAA,EAAe,CAAC,CAAA;AACtB,EAAA,IAAI,KAAA,EAAsB,CAAA;AAC1B,EAAA,MAAA,CAAO,IAAA,EAAM;AACX,IAAA,MAAM,QAAA,EAAU,MAAM,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAO,KAAK,CAAC,CAAA;AAChD,IAAA,GAAA,CAAI,IAAA,CAAK,GAAG,OAAA,CAAQ,OAAO,CAAA;AAC3B,IAAA,KAAA,EAAO,OAAA,CAAQ,IAAA;AAAA,EACjB;AACA,EAAA,OAAO,GAAA;AACT;AAKA,MAAA,SAAsB,cAAA,CACpB,OAAA,EACA,KAAA,EACkB;AAClB,EAAA,MAAM,IAAA,EAAe,CAAC,CAAA;AACtB,EAAA,IAAI,OAAA,EAAiC,IAAA;AACrC,EAAA,GAAG;AACD,IAAA,MAAM,QAAA,EAAU,MAAM,OAAA,CAAQ,EAAE,GAAG,KAAA,EAAO,GAAI,OAAA,IAAW,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,OAAO,EAAG,CAAC,CAAA;AAClF,IAAA,GAAA,CAAI,IAAA,CAAK,GAAG,OAAA,CAAQ,OAAO,CAAA;AAC3B,IAAA,OAAA,EAAS,OAAA,CAAQ,IAAA;AAAA,EACnB,EAAA,MAAA,CAAS,MAAA,CAAA;AACT,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,yBAAA,CAA0B,MAAA,EAA+B;AAEvE,EAAA,MAAM,gCAAA,EAAmE,CAAC,CAAA;AAE1E,EAAA,OAAO,MAAA,SAAe,eAAA,CAAgB,YAAA,EAAuC;AAC3E,IAAA,IAAI,YAAA,EAA6B,IAAA;AACjC,IAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,EAAA,EAAI,CAAA,EAAA,EAAK;AAC3B,MAAA,MAAM,QAAA,EACJ,EAAA,GAAK,gCAAA,EACD,+BAAA,CAAgC,CAAC,EAAA,EACjC,MAAA,CAAO,eAAA,CAAgB,CAAC,CAAA,CAAE,MAAA,CAAO,eAAA,CAAgB,CAAA;AACvD,MAAA,+BAAA,CAAgC,CAAC,EAAA,EAAI,OAAA;AACrC,MAAA,MAAM,UAAA,EAAY,MAAM,OAAA;AAKxB,MAAA,GAAA,CAAI,SAAA,CAAU,WAAA,CAAY,EAAA,IAAM,YAAA,CAAa,WAAA,CAAY,CAAA,EAAG;AAC1D,QAAA,YAAA,EAAc,CAAA;AACd,QAAA,KAAA;AAAA,MACF;AAAA,IACF;AACA,IAAA,iCAAA,WAAU,EAAa,CAAA,wCAAA,EAA2C,YAAY,CAAA,CAAA;AACvE,IAAA;AACT,EAAA;AACF;AD7BmF;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/_work/revault/revault/packages/sdk/lib/chunk-I6B5U4JR.cjs","sourcesContent":[null,"import type { CursorPaginated, Paginated } from \"@ledgerhq/revault-api\";\nimport invariant from \"invariant\";\n\nimport type { Engine, WithWorkspace } from \"./engine/types\";\n\n/**\n * Utility function that collect results on all pages until there is no more next page\n */\nexport async function fetchAll<TData, TQuery extends { page?: number }>(\n queryFn: (query: TQuery) => Promise<Paginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let page: number | null = 1;\n while (page) {\n const partial = await queryFn({ ...query, page });\n res.push(...partial.results);\n page = partial.next;\n }\n return res;\n}\n\n/**\n * Utility function that collect results on all cursors until cursor is null\n */\nexport async function fetchAllCursor<TData, TQuery extends { cursor?: number | string }>(\n queryFn: (query: TQuery) => Promise<CursorPaginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let cursor: number | string | null = null;\n do {\n const partial = await queryFn({ ...query, ...(cursor === null ? {} : { cursor }) });\n res.push(...partial.results);\n cursor = partial.next;\n } while (cursor);\n return res;\n}\n\n/**\n * Return a function that retrieve a device index based on a given deviceUserId\n * Holds a cache of found indexes to avoid spamming device-api\n */\nexport function createDeviceIndexResolver(engine: Engine<WithWorkspace>) {\n // Cache to avoid spamming device-api when seeking for same index multiple times\n const _deviceUserIdByDeviceIndexCache: Record<string, Promise<string>> = {};\n\n return async function findDeviceIndex(deviceUserId: string): Promise<number> {\n let deviceIndex: number | null = null;\n for (let i = 4; i < 50; i++) {\n const promise =\n i in _deviceUserIdByDeviceIndexCache\n ? _deviceUserIdByDeviceIndexCache[i]!\n : engine.withDeviceIndex(i).device.getDeviceUserId();\n _deviceUserIdByDeviceIndexCache[i] = promise;\n const candidate = await promise;\n // /!\\ we need to decide in which casing we want this information\n // -> device-api returns it in uppercase\n // -> we save it in lowercase in revault-api DB\n // -> doing \"safe\" comparison here by always user the uppercase version, but hey!\n if (candidate.toUpperCase() === deviceUserId.toUpperCase()) {\n deviceIndex = i;\n break;\n }\n }\n invariant(deviceIndex, `Could not find index for device user id ${deviceUserId}`);\n return deviceIndex;\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import type { CursorPaginated, Paginated } from \"@ledgerhq/revault-api\";\nimport invariant from \"invariant\";\n\nimport type { Engine, WithWorkspace } from \"./engine/types\";\n\n/**\n * Utility function that collect results on all pages until there is no more next page\n */\nexport async function fetchAll<TData, TQuery extends { page?: number }>(\n queryFn: (query: TQuery) => Promise<Paginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let page: number | null = 1;\n while (page) {\n const partial = await queryFn({ ...query, page });\n res.push(...partial.results);\n page = partial.next;\n }\n return res;\n}\n\n/**\n * Utility function that collect results on all cursors until cursor is null\n */\nexport async function fetchAllCursor<TData, TQuery extends { cursor?: number | string }>(\n queryFn: (query: TQuery) => Promise<CursorPaginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let cursor: number | string | null = null;\n do {\n const partial = await queryFn({ ...query, ...(cursor === null ? {} : { cursor }) });\n res.push(...partial.results);\n cursor = partial.next;\n } while (cursor);\n return res;\n}\n\n/**\n * Return a function that retrieve a device index based on a given deviceUserId\n * Holds a cache of found indexes to avoid spamming device-api\n */\nexport function createDeviceIndexResolver(engine: Engine<WithWorkspace>) {\n // Cache to avoid spamming device-api when seeking for same index multiple times\n const _deviceUserIdByDeviceIndexCache: Record<string, Promise<string>> = {};\n\n return async function findDeviceIndex(deviceUserId: string): Promise<number> {\n let deviceIndex: number | null = null;\n for (let i = 4; i < 50; i++) {\n const promise =\n i in _deviceUserIdByDeviceIndexCache\n ? _deviceUserIdByDeviceIndexCache[i]!\n : engine.withDeviceIndex(i).device.getDeviceUserId();\n _deviceUserIdByDeviceIndexCache[i] = promise;\n const candidate = await promise;\n // /!\\ we need to decide in which casing we want this information\n // -> device-api returns it in uppercase\n // -> we save it in lowercase in revault-api DB\n // -> doing \"safe\" comparison here by always user the uppercase version, but hey!\n if (candidate.toUpperCase() === deviceUserId.toUpperCase()) {\n deviceIndex = i;\n break;\n }\n }\n invariant(deviceIndex, `Could not find index for device user id ${deviceUserId}`);\n return deviceIndex;\n };\n}\n"],"mappings":";AACA,OAAO,eAAe;AAOtB,eAAsB,SACpB,SACA,OACkB;AAClB,QAAM,MAAe,CAAC;AACtB,MAAI,OAAsB;AAC1B,SAAO,MAAM;AACX,UAAM,UAAU,MAAM,QAAQ,EAAE,GAAG,OAAO,KAAK,CAAC;AAChD,QAAI,KAAK,GAAG,QAAQ,OAAO;AAC3B,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO;AACT;AAKA,eAAsB,eACpB,SACA,OACkB;AAClB,QAAM,MAAe,CAAC;AACtB,MAAI,SAAiC;AACrC,KAAG;AACD,UAAM,UAAU,MAAM,QAAQ,EAAE,GAAG,OAAO,GAAI,WAAW,OAAO,CAAC,IAAI,EAAE,OAAO,EAAG,CAAC;AAClF,QAAI,KAAK,GAAG,QAAQ,OAAO;AAC3B,aAAS,QAAQ;AAAA,EACnB,SAAS;AACT,SAAO;AACT;AAMO,SAAS,0BAA0B,QAA+B;AAEvE,QAAM,kCAAmE,CAAC;AAE1E,SAAO,eAAe,gBAAgB,cAAuC;AAC3E,QAAI,cAA6B;AACjC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAM,UACJ,KAAK,kCACD,gCAAgC,CAAC,IACjC,OAAO,gBAAgB,CAAC,EAAE,OAAO,gBAAgB;AACvD,sCAAgC,CAAC,IAAI;AACrC,YAAM,YAAY,MAAM;AAKxB,UAAI,UAAU,YAAY,MAAM,aAAa,YAAY,GAAG;AAC1D,sBAAc;AACd;AAAA,MACF;AAAA,IACF;AACA,cAAU,aAAa,2CAA2C,YAAY,EAAE;AAChF,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -221,7 +221,7 @@ function extractPublicKey(pemKey) {
|
|
|
221
221
|
pem.pop();
|
|
222
222
|
const keyBuffer = Buffer.from(pem.join(""), "base64");
|
|
223
223
|
const actualKeyBuffer = keyBuffer.slice(26);
|
|
224
|
-
return actualKeyBuffer.toString("hex");
|
|
224
|
+
return actualKeyBuffer.toString("hex").toUpperCase();
|
|
225
225
|
}
|
|
226
226
|
function hexToPem(hexString, { isPrivate = true } = {}) {
|
|
227
227
|
const keyEncoder = new KeyEncoder("p256");
|
|
@@ -259,4 +259,4 @@ function genKeys(entropy) {
|
|
|
259
259
|
export {
|
|
260
260
|
genKeys
|
|
261
261
|
};
|
|
262
|
-
//# sourceMappingURL=chunk-
|
|
262
|
+
//# sourceMappingURL=chunk-QVDZOA4O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\").toUpperCase();\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"],"mappings":"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","names":["elliptic","elliptic"]}
|
package/lib/crypto.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkCKNBRCHAcjs = require('./chunk-CKNBRCHA.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
exports.genKeys =
|
|
6
|
+
exports.genKeys = _chunkCKNBRCHAcjs.genKeys;
|
|
7
7
|
//# sourceMappingURL=crypto.cjs.map
|
package/lib/crypto.js
CHANGED
package/lib/engine.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkI6B5U4JRcjs = require('./chunk-I6B5U4JR.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -770,5 +770,5 @@ function createEngine(options, logger) {
|
|
|
770
770
|
|
|
771
771
|
|
|
772
772
|
|
|
773
|
-
exports.createEngine = createEngine; exports.fetchAll =
|
|
773
|
+
exports.createEngine = createEngine; exports.fetchAll = _chunkI6B5U4JRcjs.fetchAll; exports.fetchAllCursor = _chunkI6B5U4JRcjs.fetchAllCursor;
|
|
774
774
|
//# sourceMappingURL=engine.cjs.map
|
package/lib/engine.d.cts
CHANGED
|
@@ -17,7 +17,7 @@ declare function fetchAll<TData, TQuery extends {
|
|
|
17
17
|
* Utility function that collect results on all cursors until cursor is null
|
|
18
18
|
*/
|
|
19
19
|
declare function fetchAllCursor<TData, TQuery extends {
|
|
20
|
-
cursor?: number;
|
|
20
|
+
cursor?: number | string;
|
|
21
21
|
}>(queryFn: (query: TQuery) => Promise<CursorPaginated<TData>>, query: TQuery): Promise<TData[]>;
|
|
22
22
|
|
|
23
23
|
declare function createEngine(options: EngineOptions, logger: Logger): Engine;
|
package/lib/engine.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ declare function fetchAll<TData, TQuery extends {
|
|
|
17
17
|
* Utility function that collect results on all cursors until cursor is null
|
|
18
18
|
*/
|
|
19
19
|
declare function fetchAllCursor<TData, TQuery extends {
|
|
20
|
-
cursor?: number;
|
|
20
|
+
cursor?: number | string;
|
|
21
21
|
}>(queryFn: (query: TQuery) => Promise<CursorPaginated<TData>>, query: TQuery): Promise<TData[]>;
|
|
22
22
|
|
|
23
23
|
declare function createEngine(options: EngineOptions, logger: Logger): Engine;
|
package/lib/engine.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/revault-sdk",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.5",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -59,23 +59,23 @@
|
|
|
59
59
|
"superjson": "^2.2.2",
|
|
60
60
|
"uuid": "^13.0.0",
|
|
61
61
|
"zod": "^4.1.12",
|
|
62
|
-
"@ledgerhq/revault-api": "1.
|
|
62
|
+
"@ledgerhq/revault-api": "1.39.1"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@eslint/js": "^9.
|
|
65
|
+
"@eslint/js": "^9.38.0",
|
|
66
66
|
"@types/bn.js": "^5.2.0",
|
|
67
67
|
"@types/elliptic": "^6.4.18",
|
|
68
68
|
"@types/invariant": "^2.2.37",
|
|
69
69
|
"@types/lodash": "^4.17.20",
|
|
70
|
-
"@types/node": "^22.18.
|
|
70
|
+
"@types/node": "^22.18.11",
|
|
71
71
|
"@vitest/coverage-v8": "^3.2.4",
|
|
72
72
|
"@vitest/ui": "^3.2.4",
|
|
73
|
-
"eslint": "^9.
|
|
73
|
+
"eslint": "^9.38.0",
|
|
74
74
|
"eslint-plugin-unicorn": "^61.0.2",
|
|
75
75
|
"tsup": "^8.5.0",
|
|
76
76
|
"tsx": "^4.20.6",
|
|
77
77
|
"typescript": "^5.9.3",
|
|
78
|
-
"typescript-eslint": "^8.46.
|
|
78
|
+
"typescript-eslint": "^8.46.1",
|
|
79
79
|
"vite-plugin-node-polyfills": "^0.24.0",
|
|
80
80
|
"vitest": "^3.2.4",
|
|
81
81
|
"vitest-mock-extended": "^3.1.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"sourcesContent":["import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\");\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"],"mappings":"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","names":["elliptic","elliptic"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/_work/revault/revault/packages/sdk/lib/chunk-JGXOGWYB.cjs","../src/crypto/utils.ts","../src/crypto/key-encoder.ts"],"names":["elliptic"],"mappings":"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","file":"/home/runner/_work/revault/revault/packages/sdk/lib/chunk-JGXOGWYB.cjs","sourcesContent":[null,"import crypto from \"crypto\";\nimport elliptic from \"elliptic\";\n\nimport { KeyEncoder } from \"./key-encoder\";\nimport type { GeneratedKeys } from \"./types\";\n\nfunction extractPublicKey(pemKey: string): string {\n // convert the PEM formatted public key to raw public key in X9.62 uncompressed format\n // this is an oversimplified method and may not work with different curves or PEM formats\n const pem = pemKey.split(\"\\n\");\n pem.shift(); // remove the first line (BEGIN PUBLIC KEY)\n pem.pop(); // remove the last line (END PUBLIC KEY)\n // convert base64 to buffer\n const keyBuffer = Buffer.from(pem.join(\"\"), \"base64\");\n // assuming the first 26 bytes are the header for the SPKI formatted key.\n // the actual key should begin after this header.\n const actualKeyBuffer = keyBuffer.slice(26);\n return actualKeyBuffer.toString(\"hex\");\n}\n\nfunction hexToPem(hexString: string, { isPrivate = true } = {}): string {\n const keyEncoder = new KeyEncoder(\"p256\");\n if (isPrivate) {\n return keyEncoder.encodePrivate(hexString, \"raw\", \"pem\");\n }\n return keyEncoder.encodePublic(hexString, \"raw\", \"pem\");\n}\n\n/**\n * If `entropy` is passed, will generate keys pair deterministically\n * else, random keys pair generated\n */\nexport function genKeys(entropy?: string): GeneratedKeys {\n if (entropy) {\n const ec = new elliptic.ec(\"p256\");\n const hashedEntropy = crypto.createHash(\"sha256\").update(entropy).digest(\"hex\");\n const keyPair = ec.genKeyPair({\n entropy: Buffer.from(hashedEntropy, \"hex\"),\n });\n return {\n privateKey: String(hexToPem(keyPair.getPrivate(\"hex\"))),\n publicKey: String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false })),\n hexPubKey: extractPublicKey(String(hexToPem(keyPair.getPublic(\"hex\"), { isPrivate: false }))),\n };\n }\n const { publicKey, privateKey } = crypto.generateKeyPairSync(\"ec\", {\n namedCurve: \"P-256\",\n publicKeyEncoding: { type: \"spki\", format: \"pem\" },\n privateKeyEncoding: { type: \"sec1\", format: \"pem\" },\n });\n const hexPubKey = extractPublicKey(publicKey);\n return {\n privateKey,\n publicKey,\n hexPubKey,\n };\n}\n","// ========================================================================== //\n// //\n// DISCLAIMER //\n// //\n// This code has been blindly copy-pasted from: //\n// https://github.com/LedgerHQ/pkey-ts //\n// //\n// ========================================================================== //\n//\n// @ts-expect-error this library does not ship types\nimport asn1 from \"asn1.js\";\nimport BN from \"bn.js\";\nimport elliptic from \"elliptic\";\n\n/* cspell:disable */\nconst ECPrivateKeyASN = asn1.define(\"ECPrivateKey\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self.key(\"privateKey\").octstr(),\n self.key(\"parameters\").explicit(0).objid().optional(),\n self.key(\"publicKey\").explicit(1).bitstr().optional(),\n );\n});\n\nconst ECPrivateKey8ASN = asn1.define(\n \"ECPrivateKey\",\n /* v8 ignore start */\n function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"version\").int(),\n self\n .key(\"privateKeyAlgorithm\")\n .seq()\n .obj(self.key(\"ecPublicKey\").objid(), self.key(\"curve\").objid()),\n self.key(\"privateKey\").octstr().contains(ECPrivateKeyASN),\n self.key(\"attributes\").explicit(0).bitstr().optional(),\n );\n },\n /* v8 ignore stop */\n);\n\nconst SubjectPublicKeyInfoASN = asn1.define(\"SubjectPublicKeyInfo\", function () {\n // @ts-expect-error pure black box\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-assertion\n const self = this as any;\n self\n .seq()\n .obj(\n self.key(\"algorithm\").seq().obj(self.key(\"id\").objid(), self.key(\"curve\").objid()),\n self.key(\"pub\").bitstr(),\n );\n});\n\ntype CurveOptions = {\n curveParameters: number[];\n privatePEMOptions: { label: string };\n publicPEMOptions: { label: string };\n curve: elliptic.ec;\n};\n\nconst curves: Record<string, CurveOptions> = {\n secp256k1: {\n curveParameters: [1, 3, 132, 0, 10],\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"secp256k1\"),\n },\n p256: {\n curveParameters: [1, 2, 840, 10045, 3, 1, 7], // OID for p256 curve\n privatePEMOptions: { label: \"EC PRIVATE KEY\" },\n publicPEMOptions: { label: \"PUBLIC KEY\" },\n curve: new elliptic.ec(\"p256\"),\n },\n};\n\ntype PrivateKeyPKCS1 = {\n version: BN;\n privateKey: Buffer;\n parameters: number[];\n publicKey?: {\n unused: number;\n data: Buffer;\n };\n};\n\ntype PrivateKeyPKCS8 = {\n version: BN;\n privateKey: PrivateKeyPKCS1;\n privateKeyAlgorithm: { ecPublicKey: number[]; curve: number[] };\n};\n\nexport type KeyFormat = \"raw\" | \"pem\" | \"der\";\n\nexport class KeyEncoder {\n algorithmID: number[];\n options: CurveOptions;\n\n constructor(options: string | CurveOptions) {\n if (typeof options === \"string\") {\n /* v8 ignore start */\n if (options !== \"secp256k1\" && options !== \"p256\") {\n throw new Error(\"Unknown curve \" + options);\n }\n /* v8 ignore stop */\n options = curves[options]!;\n }\n this.options = options;\n this.algorithmID = [1, 2, 840, 10045, 2, 1];\n }\n\n /* v8 ignore start */\n private PKCS1toPKCS8(privateKey: PrivateKeyPKCS1): PrivateKeyPKCS8 {\n return {\n version: new BN(0),\n privateKey,\n privateKeyAlgorithm: {\n ecPublicKey: this.algorithmID,\n curve: privateKey.parameters,\n },\n };\n }\n /* v8 ignore stop */\n\n privateKeyObject(rawPrivateKey: string, rawPublicKey: string): PrivateKeyPKCS1 {\n const privateKeyObject: PrivateKeyPKCS1 = {\n version: new BN(1),\n privateKey: Buffer.from(rawPrivateKey, \"hex\"),\n parameters: this.options.curveParameters,\n };\n\n if (rawPublicKey) {\n privateKeyObject.publicKey = {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n };\n }\n\n return privateKeyObject;\n }\n\n publicKeyObject(rawPublicKey: string): {\n algorithm: { id: number[]; curve: number[] };\n pub: { unused: number; data: Buffer };\n } {\n return {\n algorithm: {\n id: this.algorithmID,\n curve: this.options.curveParameters,\n },\n pub: {\n unused: 0,\n data: Buffer.from(rawPublicKey, \"hex\"),\n },\n };\n }\n\n encodePrivate(\n privateKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n destinationFormatType: \"pkcs8\" | \"pkcs1\" = \"pkcs1\",\n ): string {\n let privateKeyObject: PrivateKeyPKCS1;\n\n /* Parse the incoming private key and convert it to a private key object */\n switch (originalFormat) {\n case \"raw\": {\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n const keyPair = this.options.curve.keyFromPrivate(privateKey, \"hex\");\n const rawPublicKey = keyPair.getPublic(\"hex\");\n privateKeyObject = this.privateKeyObject(privateKey, rawPublicKey);\n break;\n }\n case \"der\":\n if (typeof privateKey === \"string\") {\n privateKey = Buffer.from(privateKey, \"hex\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(privateKey, \"der\");\n break;\n case \"pem\":\n if (typeof privateKey !== \"string\") {\n throw new Error(\"private key must be a string\");\n }\n privateKeyObject = ECPrivateKeyASN.decode(\n privateKey,\n \"pem\",\n this.options.privatePEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid private key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n if (destinationFormatType === \"pkcs1\") {\n return privateKeyObject.privateKey.toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return this.PKCS1toPKCS8(privateKeyObject).privateKey.privateKey.toString(\"hex\");\n }\n break;\n case \"der\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"der\").toString(\"hex\");\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"der\").toString(\n \"hex\",\n );\n }\n break;\n case \"pem\":\n if (destinationFormatType === \"pkcs1\") {\n return ECPrivateKeyASN.encode(privateKeyObject, \"pem\", this.options.privatePEMOptions);\n } else if (destinationFormatType === \"pkcs8\") {\n return ECPrivateKey8ASN.encode(this.PKCS1toPKCS8(privateKeyObject), \"pem\", {\n ...this.options.privatePEMOptions,\n label: \"PRIVATE KEY\",\n });\n }\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for private key\");\n /* v8 ignore stop */\n }\n\n throw new Error(\"unsupported destination format or type\");\n }\n\n encodePublic(\n publicKey: string | Buffer,\n originalFormat: KeyFormat,\n destinationFormat: KeyFormat,\n ): string {\n let publicKeyObject;\n\n switch (originalFormat) {\n case \"raw\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = this.publicKeyObject(publicKey);\n break;\n case \"der\":\n if (typeof publicKey === \"string\") {\n publicKey = Buffer.from(publicKey, \"hex\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(publicKey, \"der\");\n break;\n case \"pem\":\n if (typeof publicKey !== \"string\") {\n throw new Error(\"public key must be a string\");\n }\n publicKeyObject = SubjectPublicKeyInfoASN.decode(\n publicKey,\n \"pem\",\n this.options.publicPEMOptions,\n );\n break;\n /* v8 ignore start */\n default:\n throw new Error(\"invalid public key format\");\n /* v8 ignore stop */\n }\n\n /* Export the private key object to the desired format */\n switch (destinationFormat) {\n case \"raw\":\n return publicKeyObject.pub.data.toString(\"hex\");\n case \"der\":\n return SubjectPublicKeyInfoASN.encode(publicKeyObject, \"der\").toString(\"hex\");\n case \"pem\":\n return SubjectPublicKeyInfoASN.encode(\n publicKeyObject,\n \"pem\",\n this.options.publicPEMOptions,\n );\n /* v8 ignore start */\n default:\n throw new Error(\"invalid destination format for public key\");\n /* v8 ignore stop */\n }\n }\n}\n/* cspell:enable */\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import type { CursorPaginated, Paginated } from \"@ledgerhq/revault-api\";\nimport invariant from \"invariant\";\n\nimport type { Engine, WithWorkspace } from \"./engine/types\";\n\n/**\n * Utility function that collect results on all pages until there is no more next page\n */\nexport async function fetchAll<TData, TQuery extends { page?: number }>(\n queryFn: (query: TQuery) => Promise<Paginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let page: number | null = 1;\n while (page) {\n const partial = await queryFn({ ...query, page });\n res.push(...partial.results);\n page = partial.next;\n }\n return res;\n}\n\n/**\n * Utility function that collect results on all cursors until cursor is null\n */\nexport async function fetchAllCursor<TData, TQuery extends { cursor?: number }>(\n queryFn: (query: TQuery) => Promise<CursorPaginated<TData>>,\n query: TQuery,\n): Promise<TData[]> {\n const res: TData[] = [];\n let cursor: number | string | null = null;\n do {\n const partial = await queryFn({ ...query, ...(cursor === null ? {} : { cursor }) });\n res.push(...partial.results);\n cursor = partial.next;\n } while (cursor);\n return res;\n}\n\n/**\n * Return a function that retrieve a device index based on a given deviceUserId\n * Holds a cache of found indexes to avoid spamming device-api\n */\nexport function createDeviceIndexResolver(engine: Engine<WithWorkspace>) {\n // Cache to avoid spamming device-api when seeking for same index multiple times\n const _deviceUserIdByDeviceIndexCache: Record<string, Promise<string>> = {};\n\n return async function findDeviceIndex(deviceUserId: string): Promise<number> {\n let deviceIndex: number | null = null;\n for (let i = 4; i < 50; i++) {\n const promise =\n i in _deviceUserIdByDeviceIndexCache\n ? _deviceUserIdByDeviceIndexCache[i]!\n : engine.withDeviceIndex(i).device.getDeviceUserId();\n _deviceUserIdByDeviceIndexCache[i] = promise;\n const candidate = await promise;\n // /!\\ we need to decide in which casing we want this information\n // -> device-api returns it in uppercase\n // -> we save it in lowercase in revault-api DB\n // -> doing \"safe\" comparison here by always user the uppercase version, but hey!\n if (candidate.toUpperCase() === deviceUserId.toUpperCase()) {\n deviceIndex = i;\n break;\n }\n }\n invariant(deviceIndex, `Could not find index for device user id ${deviceUserId}`);\n return deviceIndex;\n };\n}\n"],"mappings":";AACA,OAAO,eAAe;AAOtB,eAAsB,SACpB,SACA,OACkB;AAClB,QAAM,MAAe,CAAC;AACtB,MAAI,OAAsB;AAC1B,SAAO,MAAM;AACX,UAAM,UAAU,MAAM,QAAQ,EAAE,GAAG,OAAO,KAAK,CAAC;AAChD,QAAI,KAAK,GAAG,QAAQ,OAAO;AAC3B,WAAO,QAAQ;AAAA,EACjB;AACA,SAAO;AACT;AAKA,eAAsB,eACpB,SACA,OACkB;AAClB,QAAM,MAAe,CAAC;AACtB,MAAI,SAAiC;AACrC,KAAG;AACD,UAAM,UAAU,MAAM,QAAQ,EAAE,GAAG,OAAO,GAAI,WAAW,OAAO,CAAC,IAAI,EAAE,OAAO,EAAG,CAAC;AAClF,QAAI,KAAK,GAAG,QAAQ,OAAO;AAC3B,aAAS,QAAQ;AAAA,EACnB,SAAS;AACT,SAAO;AACT;AAMO,SAAS,0BAA0B,QAA+B;AAEvE,QAAM,kCAAmE,CAAC;AAE1E,SAAO,eAAe,gBAAgB,cAAuC;AAC3E,QAAI,cAA6B;AACjC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAM,UACJ,KAAK,kCACD,gCAAgC,CAAC,IACjC,OAAO,gBAAgB,CAAC,EAAE,OAAO,gBAAgB;AACvD,sCAAgC,CAAC,IAAI;AACrC,YAAM,YAAY,MAAM;AAKxB,UAAI,UAAU,YAAY,MAAM,aAAa,YAAY,GAAG;AAC1D,sBAAc;AACd;AAAA,MACF;AAAA,IACF;AACA,cAAU,aAAa,2CAA2C,YAAY,EAAE;AAChF,WAAO;AAAA,EACT;AACF;","names":[]}
|