@ledgerhq/revault-api 1.21.0 → 1.23.1

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/fakes.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { faker } from '@faker-js/faker';
2
2
  import z5, { z } from 'zod';
3
- import { ChallengeType, PsdModel, AccountType, AccountGovernanceType, ActivationStatus, WhitelistType, PolicyType, UserDeviceType, AdminPermission, RequestType, RequestReviewStatus, RequestState, GateAccountType } from '@prisma/client';
3
+ import { ChallengeType, PsdModel, AccountType, AccountGovernanceType, ActivationStatus, WhitelistType, PolicyType, UserRole, UserRegistrationState, UserDeviceType, AdminPermission, RequestType, RequestReviewStatus, RequestState, GateAccountType } from '@prisma/client';
4
4
  import 'axios';
5
5
  import invariant from 'invariant';
6
6
  import { omit, times } from 'lodash';
@@ -34,8 +34,12 @@ var ensureNonEmptyArray = (values, message) => {
34
34
  function unreachable(value) {
35
35
  throw new Error(`Un-covered: ${value}`);
36
36
  }
37
- var zHsmObjectId = z.string().regex(/^[\w-]+$/).min(1);
37
+ var zBigInt = z.string().regex(/^0|[1-9]\d*$/);
38
+ var zIntString = z.string().min(1).regex(/^-?\d+$/);
38
39
  var zHexString = z.string().regex(/^[0-9a-fA-F]+$/);
40
+
41
+ // src/hsm/types.ts
42
+ var zHsmObjectId = z.string().regex(/^[\w-]+$/).min(1);
39
43
  var zPubKey = zHexString.describe("Public key");
40
44
  var zHsmCertificate = z.object({
41
45
  codeHash: z.string().base64().describe("Hash of the executable that generated this certificate"),
@@ -130,8 +134,17 @@ z.object({
130
134
  }),
131
135
  blob: zBlob
132
136
  });
133
- var zBigInt = z.string().regex(/^0|[1-9]\d*$/);
134
- var zIntString = z.string().min(1).regex(/^-?\d+$/);
137
+ var zHsmSignature = z.object({
138
+ digest: z.string().nullable().describe("Signed digest"),
139
+ derivationPath: z.string().nullable().describe("Derivation path used to sign the digest"),
140
+ r: z.string().base64().describe("Base64 encoded signature r coordinate"),
141
+ s: z.string().base64().describe("Base64 encoded signature s coordinate"),
142
+ v: z.union([z.literal(0), z.literal(1)]).nullable().describe("Ecdsa only, signature recovery value"),
143
+ der: zHexString.describe(
144
+ "Hex string encoded DER signature format (for eddsa, concatenation of r & s)"
145
+ ),
146
+ pubkey: zHexString.nullable().describe("Public key for signature verification, 32 or 33 bytes")
147
+ });
135
148
  var zBitcoinLikeTransactionType = z5.enum(["BITCOIN_LIKE_SEND", "BITCOIN_LIKE_RECEIVE"]).describe("Bitcoin-like transaction type");
136
149
  var zCardanoLikeTransactionType = z5.enum([
137
150
  "CARDANO_LIKE_SEND",
@@ -524,6 +537,25 @@ var zCreateTransactionRequestData = z5.object({
524
537
  accountId: z5.string().min(1).describe("Target account id"),
525
538
  transaction: zTransactionData
526
539
  });
540
+ var zSignMessageRequestData = z5.object({
541
+ accountId: z5.string().min(1).describe("Target account id"),
542
+ message: z5.string().nonempty().describe("Hex data to sign, either a json string for EIP712, or a raw string for EIP191"),
543
+ address: z5.string().nonempty().nullable().describe("Address for which to sign the message")
544
+ });
545
+ z5.object({
546
+ signature: zHsmSignature
547
+ });
548
+ var zDigestData = z5.object({
549
+ digest: zHexString.describe("The hex string digest to sign"),
550
+ derivationPath: z5.string().nonempty().describe("The derivation path with which to sign the digest")
551
+ });
552
+ var zSignDigestsRequestData = z5.object({
553
+ accountId: z5.string().min(1).describe("Target account id"),
554
+ digests: z5.array(zDigestData).describe("The digests to sign")
555
+ });
556
+ z5.object({
557
+ signatures: z5.array(zHsmSignature)
558
+ });
527
559
  var zAccountOperationType = z.enum([
528
560
  "SEND",
529
561
  "STAKE",
@@ -1237,6 +1269,30 @@ var zEditGroupRequestData = z5.object({
1237
1269
  name: zGroupName,
1238
1270
  members: z5.array(z5.string()).describe("List of group members ids")
1239
1271
  });
1272
+ var zUserName = z.string().min(1).max(19).describe("User name");
1273
+ var zUserRegistrationCreateInput = z.object({
1274
+ name: zUserName,
1275
+ role: z.enum([UserRole.ADMIN, UserRole.OPERATOR]).describe("User role"),
1276
+ psdModel: z.nativeEnum(PsdModel).describe("PSD model"),
1277
+ deviceUserId: z.string().describe("Device user ID")
1278
+ });
1279
+ zUserRegistrationCreateInput.extend({
1280
+ id: z.string().describe("User registration ID"),
1281
+ workspaceName: z.string().describe("Workspace name"),
1282
+ state: z.nativeEnum(UserRegistrationState).describe("User registration state")
1283
+ });
1284
+
1285
+ // src/users/request-data.ts
1286
+ var zCreatePsdUserRequestData = z5.object({
1287
+ registrationId: z5.string().describe("User registration ID")
1288
+ });
1289
+ var zCreateApiUserRequestData = z5.object({
1290
+ name: zUserName,
1291
+ publicKey: z5.string().describe("Public key")
1292
+ }).describe("Create API user request data");
1293
+ var zCreateApiUserAccessRequestData = z5.object({
1294
+ name: zUserName
1295
+ }).describe("Create API user request data");
1240
1296
  var zRegistration = z5.discriminatedUnion("subState", [
1241
1297
  z5.object({
1242
1298
  subState: z5.literal("PENDING"),
@@ -1250,9 +1306,9 @@ var zRegistration = z5.discriminatedUnion("subState", [
1250
1306
  u2fPubKey: zPubKey.describe("U2F public key for authenticate via PSD")
1251
1307
  }).describe("Completed registration")
1252
1308
  ]);
1253
- var zUserName = z5.string().min(1).max(19).describe("User name");
1309
+ var zUserName2 = z5.string().min(1).max(19).describe("User name");
1254
1310
  var zCreateUserWithDeviceData = z5.object({
1255
- name: zUserName,
1311
+ name: zUserName2,
1256
1312
  deviceType: z5.enum([UserDeviceType.PSD, UserDeviceType.SOFT_PSD]).describe("Device type"),
1257
1313
  deviceUserId: z5.string().regex(/^[A-F0-9]{16}$/).describe("Device user ID"),
1258
1314
  registration: zRegistration.optional().describe("Data collected from the new user during registration")
@@ -1262,13 +1318,6 @@ var zCreateAdminRequestData = zCreateUserWithDeviceData.extend({
1262
1318
  // Admin must use PSD
1263
1319
  });
1264
1320
  var zCreateOperatorRequestData = zCreateUserWithDeviceData;
1265
- var zCreateApiUserRequestData = z5.object({
1266
- name: zUserName,
1267
- publicKey: z5.string().describe("Public key")
1268
- }).describe("Create API user request data");
1269
- var zCreateApiUserAccessRequestData = z5.object({
1270
- name: zUserName
1271
- }).describe("Create API user request data");
1272
1321
  var zApiKeyName = z5.string().min(1).max(19).describe("API key name");
1273
1322
  var zCreateApiKeyRequestData = z5.object({
1274
1323
  name: zApiKeyName,
@@ -1297,23 +1346,13 @@ var zUpdateQuorumRequestData = z5.object({
1297
1346
  });
1298
1347
 
1299
1348
  // src/requests/request-data.ts
1300
- var zUserCreationVaultRequestMixinsByType = {
1301
- CREATE_ADMIN: z5.object({
1302
- type: z5.literal(RequestType.CREATE_ADMIN),
1303
- data: zCreateAdminRequestData
1304
- }),
1305
- CREATE_OPERATOR: z5.object({
1306
- type: z5.literal(RequestType.CREATE_OPERATOR),
1307
- data: zCreateOperatorRequestData
1308
- })
1309
- };
1310
1349
  var zVaultRequestMixinsByType = {
1311
1350
  // Workspaces
1312
1351
  [RequestType.UPDATE_QUORUM]: z5.object({
1313
1352
  type: z5.literal(RequestType.UPDATE_QUORUM),
1314
1353
  data: zUpdateQuorumRequestData
1315
1354
  }),
1316
- // Transactions
1355
+ // Operator requests
1317
1356
  [RequestType.CREATE_TRANSACTION]: z5.object({
1318
1357
  type: z5.literal(RequestType.CREATE_TRANSACTION),
1319
1358
  data: zCreateTransactionRequestData,
@@ -1321,6 +1360,14 @@ var zVaultRequestMixinsByType = {
1321
1360
  hash: z5.string().nullable()
1322
1361
  }).optional().nullable()
1323
1362
  }),
1363
+ [RequestType.SIGN_MESSAGE]: z5.object({
1364
+ type: z5.literal(RequestType.SIGN_MESSAGE),
1365
+ data: zSignMessageRequestData
1366
+ }),
1367
+ [RequestType.SIGN_DIGESTS]: z5.object({
1368
+ type: z5.literal(RequestType.SIGN_DIGESTS),
1369
+ data: zSignDigestsRequestData
1370
+ }),
1324
1371
  // Accounts
1325
1372
  [RequestType.CREATE_ACCOUNT]: z5.object({
1326
1373
  type: z5.literal(RequestType.CREATE_ACCOUNT),
@@ -1328,6 +1375,7 @@ var zVaultRequestMixinsByType = {
1328
1375
  }),
1329
1376
  [RequestType.EDIT_ACCOUNT]: z5.object({
1330
1377
  type: z5.literal(RequestType.EDIT_ACCOUNT),
1378
+ targetId: z5.string(),
1331
1379
  data: zEditAccountRequestData
1332
1380
  }),
1333
1381
  [RequestType.ACTIVATE_TRADELINK_ACCOUNT]: z5.object({
@@ -1347,6 +1395,7 @@ var zVaultRequestMixinsByType = {
1347
1395
  }),
1348
1396
  [RequestType.EDIT_GROUP]: z5.object({
1349
1397
  type: z5.literal(RequestType.EDIT_GROUP),
1398
+ targetId: z5.string(),
1350
1399
  data: zEditGroupRequestData
1351
1400
  }),
1352
1401
  [RequestType.REVOKE_GROUP]: z5.object({
@@ -1360,6 +1409,7 @@ var zVaultRequestMixinsByType = {
1360
1409
  }),
1361
1410
  [RequestType.EDIT_WHITELIST]: z5.object({
1362
1411
  type: z5.literal(RequestType.EDIT_WHITELIST),
1412
+ targetId: z5.string(),
1363
1413
  data: zEditWhitelistRequestData
1364
1414
  }),
1365
1415
  // Entities
@@ -1376,7 +1426,10 @@ var zVaultRequestMixinsByType = {
1376
1426
  data: z5.object({})
1377
1427
  }),
1378
1428
  // Users
1379
- ...zUserCreationVaultRequestMixinsByType,
1429
+ [RequestType.CREATE_PSD_USER]: z5.object({
1430
+ type: z5.literal(RequestType.CREATE_PSD_USER),
1431
+ data: zCreatePsdUserRequestData
1432
+ }),
1380
1433
  [RequestType.CREATE_API_USER]: z5.object({
1381
1434
  type: z5.literal(RequestType.CREATE_API_USER),
1382
1435
  data: zCreateApiUserRequestData
@@ -1427,6 +1480,7 @@ var zVaultRequestMixinsByType = {
1427
1480
  }),
1428
1481
  [RequestType.EDIT_POLICY]: z5.object({
1429
1482
  type: z5.literal(RequestType.EDIT_POLICY),
1483
+ targetId: z5.string(),
1430
1484
  data: zEditPolicyRequestData
1431
1485
  }),
1432
1486
  // Tradelink
@@ -1489,6 +1543,16 @@ var zVaultRequestMixinsByType = {
1489
1543
  data: z5.object({}).describe("Deprecated")
1490
1544
  })
1491
1545
  };
1546
+ var zVaultRequestMixinsByLegacyType = {
1547
+ CREATE_ADMIN: z5.object({
1548
+ type: z5.literal(RequestType.CREATE_ADMIN),
1549
+ data: zCreateAdminRequestData
1550
+ }),
1551
+ CREATE_OPERATOR: z5.object({
1552
+ type: z5.literal(RequestType.CREATE_OPERATOR),
1553
+ data: zCreateOperatorRequestData
1554
+ })
1555
+ };
1492
1556
 
1493
1557
  // src/requests/app-types.ts
1494
1558
  var zRequestReviewResponse = z5.object({
@@ -1520,11 +1584,10 @@ var zVaultRequestCommonMixin = z5.object({
1520
1584
  }).optional().describe("Extra information if the request is currently being processed")
1521
1585
  });
1522
1586
  var allowedRequestCreationInput = {
1523
- [RequestType.CREATE_ADMIN]: zVaultRequestMixinsByType[RequestType.CREATE_ADMIN],
1587
+ [RequestType.CREATE_PSD_USER]: zVaultRequestMixinsByType[RequestType.CREATE_PSD_USER],
1524
1588
  [RequestType.CREATE_GROUP]: zVaultRequestMixinsByType[RequestType.CREATE_GROUP],
1525
1589
  [RequestType.CREATE_WHITELIST]: zVaultRequestMixinsByType[RequestType.CREATE_WHITELIST],
1526
1590
  [RequestType.EDIT_WHITELIST]: zVaultRequestMixinsByType[RequestType.EDIT_WHITELIST],
1527
- [RequestType.CREATE_OPERATOR]: zVaultRequestMixinsByType[RequestType.CREATE_OPERATOR],
1528
1591
  [RequestType.CREATE_TRANSACTION]: zVaultRequestMixinsByType[RequestType.CREATE_TRANSACTION],
1529
1592
  [RequestType.CREATE_POLICY]: zVaultRequestMixinsByType[RequestType.CREATE_POLICY],
1530
1593
  [RequestType.EDIT_POLICY]: zVaultRequestMixinsByType[RequestType.EDIT_POLICY],
@@ -1532,6 +1595,7 @@ var allowedRequestCreationInput = {
1532
1595
  type: z5.literal(RequestType.CREATE_ACCOUNT),
1533
1596
  data: zCreateAccountUserInputData
1534
1597
  }),
1598
+ [RequestType.EDIT_ACCOUNT]: zVaultRequestMixinsByType[RequestType.EDIT_ACCOUNT],
1535
1599
  [RequestType.ACTIVATE_TRADELINK_ACCOUNT]: zVaultRequestMixinsByType[RequestType.ACTIVATE_TRADELINK_ACCOUNT],
1536
1600
  [RequestType.CREATE_TRADELINK_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.CREATE_TRADELINK_CUSTODIAN],
1537
1601
  [RequestType.EDIT_TRADELINK_CUSTODIAN]: zVaultRequestMixinsByType[RequestType.EDIT_TRADELINK_CUSTODIAN],
@@ -1558,16 +1622,7 @@ z5.object({
1558
1622
  var zVaultRequestResponse = z5.discriminatedUnion(
1559
1623
  "type",
1560
1624
  ensureNonEmptyArray(
1561
- Object.values(zVaultRequestMixinsByType).map((_) => {
1562
- const requestType = _.shape.type._def.value;
1563
- return _.merge(zVaultRequestCommonMixin).describe(`${requestType} request`);
1564
- })
1565
- )
1566
- );
1567
- z5.discriminatedUnion(
1568
- "type",
1569
- ensureNonEmptyArray(
1570
- Object.values(zUserCreationVaultRequestMixinsByType).map((_) => {
1625
+ Object.values({ ...zVaultRequestMixinsByType, ...zVaultRequestMixinsByLegacyType }).map((_) => {
1571
1626
  const requestType = _.shape.type._def.value;
1572
1627
  return _.merge(zVaultRequestCommonMixin).describe(`${requestType} request`);
1573
1628
  })
@@ -1605,8 +1660,15 @@ var shouldHaveTargetHsmId = (request) => {
1605
1660
  return void 0;
1606
1661
  }
1607
1662
  return true;
1663
+ case RequestType.CREATE_PSD_USER:
1664
+ case RequestType.CREATE_API_USER:
1665
+ case RequestType.CREATE_API_USER_ACCESS:
1666
+ // targeting / editing an existing `User`
1667
+ case RequestType.REVOKE_USER:
1608
1668
  case RequestType.UPDATE_QUORUM:
1609
1669
  case RequestType.CREATE_TRANSACTION:
1670
+ case RequestType.SIGN_MESSAGE:
1671
+ case RequestType.SIGN_DIGESTS:
1610
1672
  case RequestType.CREATE_ACCOUNT:
1611
1673
  case RequestType.EDIT_ACCOUNT:
1612
1674
  case RequestType.ACTIVATE_TRADELINK_ACCOUNT:
@@ -1615,10 +1677,6 @@ var shouldHaveTargetHsmId = (request) => {
1615
1677
  case RequestType.REVOKE_GROUP:
1616
1678
  case RequestType.CREATE_WHITELIST:
1617
1679
  case RequestType.EDIT_WHITELIST:
1618
- case RequestType.CREATE_API_USER:
1619
- case RequestType.CREATE_API_USER_ACCESS:
1620
- // targeting / editing an existing `User`
1621
- case RequestType.REVOKE_USER:
1622
1680
  case RequestType.CREATE_POLICY:
1623
1681
  case RequestType.EDIT_POLICY:
1624
1682
  case RequestType.CREATE_TRADELINK_CUSTODIAN:
@@ -1643,15 +1701,18 @@ var shouldHaveTargetId = (request) => {
1643
1701
  case RequestType.REVOKE_API_KEY:
1644
1702
  return false;
1645
1703
  case RequestType.CREATE_TRANSACTION:
1704
+ case RequestType.SIGN_MESSAGE:
1705
+ case RequestType.SIGN_DIGESTS:
1646
1706
  return false;
1707
+ case RequestType.CREATE_PSD_USER:
1708
+ case RequestType.CREATE_ADMIN:
1709
+ case RequestType.CREATE_OPERATOR:
1710
+ case RequestType.CREATE_API_USER:
1647
1711
  case RequestType.CREATE_WORKSPACE_RULE:
1648
1712
  case RequestType.CREATE_ACCOUNT:
1649
1713
  case RequestType.CREATE_GROUP:
1650
1714
  case RequestType.CREATE_WHITELIST:
1651
1715
  case RequestType.CREATE_ENTITY:
1652
- case RequestType.CREATE_ADMIN:
1653
- case RequestType.CREATE_OPERATOR:
1654
- case RequestType.CREATE_API_USER:
1655
1716
  case RequestType.CREATE_SCICONFIG:
1656
1717
  case RequestType.CREATE_POLICY:
1657
1718
  case RequestType.CREATE_TRADELINK_CUSTODIAN: