@ledgerhq/vault-cli 1.14.2 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/CHANGELOG.md +18 -0
- package/__mocks__/@ledgerhq/vault-common.ts +2 -0
- package/bin/__tests__/backupCompartment.test.d.ts +2 -0
- package/bin/__tests__/backupCompartment.test.d.ts.map +1 -0
- package/bin/__tests__/backupCompartment.test.js +84 -0
- package/bin/__tests__/backupCompartment.test.js.map +1 -0
- package/bin/__tests__/restoreCompartment.test.d.ts +2 -0
- package/bin/__tests__/restoreCompartment.test.d.ts.map +1 -0
- package/bin/__tests__/restoreCompartment.test.js +92 -0
- package/bin/__tests__/restoreCompartment.test.js.map +1 -0
- package/bin/__tests__/revoke.test.d.ts +2 -0
- package/bin/__tests__/revoke.test.d.ts.map +1 -0
- package/bin/__tests__/revoke.test.js +61 -0
- package/bin/__tests__/revoke.test.js.map +1 -0
- package/bin/commands/backupCompartment.d.ts +31 -0
- package/bin/commands/backupCompartment.d.ts.map +1 -0
- package/bin/commands/backupCompartment.js +76 -0
- package/bin/commands/backupCompartment.js.map +1 -0
- package/bin/commands/index.d.ts +58 -0
- package/bin/commands/index.d.ts.map +1 -1
- package/bin/commands/index.js +6 -0
- package/bin/commands/index.js.map +1 -1
- package/bin/commands/restoreCompartment.d.ts +39 -0
- package/bin/commands/restoreCompartment.d.ts.map +1 -0
- package/bin/commands/restoreCompartment.js +85 -0
- package/bin/commands/restoreCompartment.js.map +1 -0
- package/bin/commands/revoke.d.ts +40 -0
- package/bin/commands/revoke.d.ts.map +1 -0
- package/bin/commands/revoke.js +80 -0
- package/bin/commands/revoke.js.map +1 -0
- package/package.json +2 -2
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@ledgerhq/vault-cli:build: cache hit, replaying output
|
|
1
|
+
@ledgerhq/vault-cli:build: cache hit, replaying output 70779db42119c28e
|
|
2
2
|
@ledgerhq/vault-cli:build:
|
|
3
|
-
@ledgerhq/vault-cli:build: > @ledgerhq/vault-cli@1.
|
|
3
|
+
@ledgerhq/vault-cli:build: > @ledgerhq/vault-cli@1.16.0 build /home/runner/work/vault-ts/vault-ts/apps/cli
|
|
4
4
|
@ledgerhq/vault-cli:build: > tsc && chmod +x bin/index.js
|
|
5
5
|
@ledgerhq/vault-cli:build:
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @ledgerhq/vault-cli
|
|
2
2
|
|
|
3
|
+
## 1.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6be93c3: Add revoke command
|
|
8
|
+
|
|
9
|
+
## 1.15.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 41de09a: Add ability to backup & restore HSM compartment
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [17b3731]
|
|
18
|
+
- Updated dependencies [41de09a]
|
|
19
|
+
- @ledgerhq/vault-common@1.17.0
|
|
20
|
+
|
|
3
21
|
## 1.14.2
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
|
@@ -133,12 +133,14 @@ export const createDevicesPool = jest.fn().mockReturnValue({
|
|
|
133
133
|
connectSocket: jest.fn(),
|
|
134
134
|
onEvent: jest.fn(),
|
|
135
135
|
rejectRequest: jest.fn(),
|
|
136
|
+
post: jest.fn(),
|
|
136
137
|
}),
|
|
137
138
|
getUserID: jest.fn().mockReturnValue("userID"),
|
|
138
139
|
getOnboardingAdminDevices: jest.fn().mockReturnValue([
|
|
139
140
|
["Admin 1", 4],
|
|
140
141
|
["Admin 2", 5],
|
|
141
142
|
]),
|
|
143
|
+
runWithQuorum: jest.fn(),
|
|
142
144
|
});
|
|
143
145
|
export const genSeed = jest.fn();
|
|
144
146
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backupCompartment.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/backupCompartment.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const createHSMBridge = __importStar(require("@ledgerhq/vault-common/lib/createHSMBridge"));
|
|
39
|
+
const fs_1 = __importDefault(require("fs"));
|
|
40
|
+
const backupCompartment_1 = __importDefault(require("../commands/backupCompartment"));
|
|
41
|
+
describe("backupCompartment", () => {
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
jest.spyOn(console, "log").mockImplementation();
|
|
44
|
+
jest.spyOn(fs_1.default, "readFileSync").mockReturnValue("<cert>");
|
|
45
|
+
});
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
jest.restoreAllMocks();
|
|
48
|
+
});
|
|
49
|
+
it("should throw if no HSM cert given", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
let err;
|
|
51
|
+
try {
|
|
52
|
+
yield backupCompartment_1.default.run({
|
|
53
|
+
compartment: 1,
|
|
54
|
+
hsm: "<hsm>",
|
|
55
|
+
hsmCert: undefined,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
err = e;
|
|
60
|
+
}
|
|
61
|
+
expect(err).toEqual(new Error("You must specify the path to your HSM certificate in your environment variable VAULT_HSM_CLIENT_CERT_PATH or use the --hsmCert flag"));
|
|
62
|
+
}));
|
|
63
|
+
it("should backup a compartment", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
const fakeBridge = {
|
|
65
|
+
backupCompartment: jest.fn(),
|
|
66
|
+
restoreCompartment: jest.fn(),
|
|
67
|
+
resetCompartment: jest.fn(),
|
|
68
|
+
};
|
|
69
|
+
const createHSMBridgeSpy = jest.spyOn(createHSMBridge, "default").mockReturnValue(fakeBridge);
|
|
70
|
+
yield backupCompartment_1.default.run({
|
|
71
|
+
compartment: 42,
|
|
72
|
+
hsm: "<hsm>",
|
|
73
|
+
hsmCert: "abcde",
|
|
74
|
+
hsmCertPassword: "1234",
|
|
75
|
+
});
|
|
76
|
+
expect(createHSMBridgeSpy).toHaveBeenCalledWith({
|
|
77
|
+
hsmCert: "<cert>",
|
|
78
|
+
hsmCertPassword: "1234",
|
|
79
|
+
hsmEndpoint: "<hsm>",
|
|
80
|
+
});
|
|
81
|
+
expect(fakeBridge.backupCompartment).toHaveBeenCalledWith(42);
|
|
82
|
+
}));
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=backupCompartment.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backupCompartment.test.js","sourceRoot":"","sources":["../../src/__tests__/backupCompartment.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAA8E;AAC9E,4CAAoB;AAEpB,sFAA8D;AAE9D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,YAAE,EAAE,cAAc,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;QACjD,IAAI,GAAG,CAAC;QACR,IAAI;YACF,MAAM,2BAAiB,CAAC,GAAG,CAAC;gBAC1B,WAAW,EAAE,CAAC;gBACd,GAAG,EAAE,OAAO;gBAEZ,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;SACJ;QAAC,OAAO,CAAC,EAAE;YACV,GAAG,GAAG,CAAC,CAAC;SACT;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CACjB,IAAI,KAAK,CACP,qIAAqI,CACtI,CACF,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAS,EAAE;QAC3C,MAAM,UAAU,GAAG;YACjB,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC5B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC7B,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;SAC5B,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9F,MAAM,2BAAiB,CAAC,GAAG,CAAC;YAC1B,WAAW,EAAE,EAAE;YACf,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE,OAAO;YAChB,eAAe,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC;YAC9C,OAAO,EAAE,QAAQ;YACjB,eAAe,EAAE,MAAM;YACvB,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreCompartment.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/restoreCompartment.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
const createHSMBridge = __importStar(require("@ledgerhq/vault-common/lib/createHSMBridge"));
|
|
39
|
+
const fs_1 = __importDefault(require("fs"));
|
|
40
|
+
const restoreCompartment_1 = __importDefault(require("../commands/restoreCompartment"));
|
|
41
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
42
|
+
describe("restoreCompartment", () => {
|
|
43
|
+
beforeEach(() => {
|
|
44
|
+
jest.spyOn(console, "log").mockImplementation();
|
|
45
|
+
});
|
|
46
|
+
afterEach(() => {
|
|
47
|
+
jest.restoreAllMocks();
|
|
48
|
+
});
|
|
49
|
+
it("should throw if no HSM cert given", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
let err;
|
|
51
|
+
try {
|
|
52
|
+
yield restoreCompartment_1.default.run({
|
|
53
|
+
compartment: 1,
|
|
54
|
+
hsm: "<hsm>",
|
|
55
|
+
hsmCert: undefined,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
err = e;
|
|
60
|
+
}
|
|
61
|
+
expect(err).toEqual(new Error("You must specify the path to your HSM certificate in your environment variable VAULT_HSM_CLIENT_CERT_PATH or use the --hsmCert flag"));
|
|
62
|
+
}));
|
|
63
|
+
it("should restore a compartment", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
jest
|
|
65
|
+
.spyOn(fs_1.default, "readFileSync")
|
|
66
|
+
.mockReturnValueOnce("<cert>")
|
|
67
|
+
.mockReturnValue('{"counters":"1234","internalfs":"abcdef"}');
|
|
68
|
+
const fakeBridge = {
|
|
69
|
+
backupCompartment: jest.fn(),
|
|
70
|
+
restoreCompartment: jest.fn(),
|
|
71
|
+
resetCompartment: jest.fn(),
|
|
72
|
+
};
|
|
73
|
+
const createHSMBridgeSpy = jest.spyOn(createHSMBridge, "default").mockReturnValue(fakeBridge);
|
|
74
|
+
yield restoreCompartment_1.default.run({
|
|
75
|
+
backupFile: "/path/to/file",
|
|
76
|
+
compartment: 42,
|
|
77
|
+
hsm: "<hsm>",
|
|
78
|
+
hsmCert: "abcde",
|
|
79
|
+
hsmCertPassword: "1234",
|
|
80
|
+
});
|
|
81
|
+
expect(createHSMBridgeSpy).toHaveBeenCalledWith({
|
|
82
|
+
hsmCert: "<cert>",
|
|
83
|
+
hsmCertPassword: "1234",
|
|
84
|
+
hsmEndpoint: "<hsm>",
|
|
85
|
+
});
|
|
86
|
+
expect(fakeBridge.restoreCompartment).toHaveBeenCalledWith(42, {
|
|
87
|
+
counters: "1234",
|
|
88
|
+
internalfs: "abcdef",
|
|
89
|
+
}, { logger: logger_1.default });
|
|
90
|
+
}));
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=restoreCompartment.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreCompartment.test.js","sourceRoot":"","sources":["../../src/__tests__/restoreCompartment.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAA8E;AAC9E,4CAAoB;AAEpB,wFAAgE;AAChE,uDAA+B;AAE/B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;QACjD,IAAI,GAAG,CAAC;QACR,IAAI;YACF,MAAM,4BAAkB,CAAC,GAAG,CAAC;gBAC3B,WAAW,EAAE,CAAC;gBACd,GAAG,EAAE,OAAO;gBAEZ,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;SACJ;QAAC,OAAO,CAAC,EAAE;YACV,GAAG,GAAG,CAAC,CAAC;SACT;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CACjB,IAAI,KAAK,CACP,qIAAqI,CACtI,CACF,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;QAC5C,IAAI;aACD,KAAK,CAAC,YAAE,EAAE,cAAc,CAAC;aACzB,mBAAmB,CAAC,QAAQ,CAAC;aAC7B,eAAe,CAAC,2CAA2C,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG;YACjB,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC5B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC7B,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE;SAC5B,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9F,MAAM,4BAAkB,CAAC,GAAG,CAAC;YAC3B,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,EAAE;YACf,GAAG,EAAE,OAAO;YACZ,OAAO,EAAE,OAAO;YAChB,eAAe,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC;YAC9C,OAAO,EAAE,QAAQ;YACjB,eAAe,EAAE,MAAM;YACvB,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CACxD,EAAE,EACF;YACE,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,QAAQ;SACrB,EACD,EAAE,MAAM,EAAN,gBAAM,EAAE,CACX,CAAC;IACJ,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/revoke.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const revoke_1 = require("../commands/revoke");
|
|
13
|
+
const test_utils_1 = require("./test-utils");
|
|
14
|
+
const options = {
|
|
15
|
+
command: "user",
|
|
16
|
+
id: 10,
|
|
17
|
+
device: 4,
|
|
18
|
+
salt: "",
|
|
19
|
+
gate: "<gate>",
|
|
20
|
+
noApproval: false,
|
|
21
|
+
};
|
|
22
|
+
describe("revoke", () => {
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
jest.spyOn(console, "log").mockImplementation();
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
jest.clearAllMocks();
|
|
28
|
+
});
|
|
29
|
+
it("should revoke user", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
const pool = (0, test_utils_1.createTestDevicesPool)();
|
|
31
|
+
const userDevice = yield pool.login(options.device);
|
|
32
|
+
yield (0, revoke_1.revokeEntity)(options);
|
|
33
|
+
expect(userDevice.post).toHaveBeenCalledWith("/requests", {
|
|
34
|
+
type: "REVOKE_USER",
|
|
35
|
+
user_id: options.id,
|
|
36
|
+
});
|
|
37
|
+
expect(pool.runWithQuorum).toHaveBeenCalled();
|
|
38
|
+
}));
|
|
39
|
+
it("should revoke group", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
const pool = (0, test_utils_1.createTestDevicesPool)();
|
|
41
|
+
const userDevice = yield pool.login(options.device);
|
|
42
|
+
const opts = Object.assign(Object.assign({}, options), { command: "group" });
|
|
43
|
+
yield (0, revoke_1.revokeEntity)(opts);
|
|
44
|
+
expect(userDevice.post).toHaveBeenCalledWith("/requests", {
|
|
45
|
+
type: "REVOKE_GROUP",
|
|
46
|
+
group_id: opts.id,
|
|
47
|
+
});
|
|
48
|
+
expect(pool.runWithQuorum).toHaveBeenCalled();
|
|
49
|
+
}));
|
|
50
|
+
it("should revoke without approvals", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
const pool = (0, test_utils_1.createTestDevicesPool)();
|
|
52
|
+
const userDevice = yield pool.login(options.device);
|
|
53
|
+
yield (0, revoke_1.revokeEntity)(Object.assign(Object.assign({}, options), { noApproval: true }));
|
|
54
|
+
expect(userDevice.post).toHaveBeenCalledWith("/requests", {
|
|
55
|
+
type: "REVOKE_USER",
|
|
56
|
+
user_id: options.id,
|
|
57
|
+
});
|
|
58
|
+
expect(pool.runWithQuorum).not.toHaveBeenCalled();
|
|
59
|
+
}));
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=revoke.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.test.js","sourceRoot":"","sources":["../../src/__tests__/revoke.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+CAAkD;AAElD,6CAAqD;AAErD,MAAM,OAAO,GAAkB;IAC7B,OAAO,EAAE,MAAM;IACf,EAAE,EAAE,EAAE;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAS,EAAE;QAClC,MAAM,IAAI,GAAG,IAAA,kCAAqB,GAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,IAAA,qBAAY,EAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACxD,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO,CAAC,EAAE;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAS,EAAE;QACnC,MAAM,IAAI,GAAG,IAAA,kCAAqB,GAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,IAAI,mCAAuB,OAAO,KAAE,OAAO,EAAE,OAAO,GAAE,CAAC;QAC7D,MAAM,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACxD,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,IAAI,CAAC,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;QAC/C,MAAM,IAAI,GAAG,IAAA,kCAAqB,GAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpD,MAAM,IAAA,qBAAY,kCAAM,OAAO,KAAE,UAAU,EAAE,IAAI,IAAG,CAAC;QAErD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACxD,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO,CAAC,EAAE;SACpB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare type Options = {
|
|
2
|
+
compartment: number;
|
|
3
|
+
hsm: string;
|
|
4
|
+
hsmCert: string;
|
|
5
|
+
hsmCertPassword: string;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: {
|
|
8
|
+
command: string;
|
|
9
|
+
description: string;
|
|
10
|
+
help: {
|
|
11
|
+
content: string;
|
|
12
|
+
}[];
|
|
13
|
+
options: ({
|
|
14
|
+
name: string;
|
|
15
|
+
alias: string;
|
|
16
|
+
type: NumberConstructor;
|
|
17
|
+
description: string;
|
|
18
|
+
defaultValue: string | undefined;
|
|
19
|
+
required: boolean;
|
|
20
|
+
} | {
|
|
21
|
+
name: string;
|
|
22
|
+
type: StringConstructor;
|
|
23
|
+
description: string;
|
|
24
|
+
defaultValue: string | undefined;
|
|
25
|
+
required: boolean;
|
|
26
|
+
alias?: undefined;
|
|
27
|
+
})[];
|
|
28
|
+
run: (options: Options) => Promise<void>;
|
|
29
|
+
};
|
|
30
|
+
export default _default;
|
|
31
|
+
//# sourceMappingURL=backupCompartment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backupCompartment.d.ts","sourceRoot":"","sources":["../../src/commands/backupCompartment.ts"],"names":[],"mappings":"AAGA,oBAAY,OAAO,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;;;;;;;;;;;;;;;;;;;;;;mBAyCqB,OAAO,KAAG,QAAQ,IAAI,CAAC;;AAvC9C,wBA+DE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const createHSMBridge_1 = __importDefault(require("@ledgerhq/vault-common/lib/createHSMBridge"));
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
exports.default = {
|
|
18
|
+
command: "backupCompartment",
|
|
19
|
+
description: "Backup HSM simu compartment",
|
|
20
|
+
help: [
|
|
21
|
+
{
|
|
22
|
+
content: "{grey $} ledger-vault backupCompartment --cid 123",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
options: [
|
|
26
|
+
{
|
|
27
|
+
name: "compartment",
|
|
28
|
+
alias: "c",
|
|
29
|
+
type: Number,
|
|
30
|
+
description: "HSM compartment ID {blue $VAULT_COMPARTMENT_ID}",
|
|
31
|
+
defaultValue: process.env.VAULT_COMPARTMENT_ID,
|
|
32
|
+
required: true,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "hsm",
|
|
36
|
+
type: String,
|
|
37
|
+
description: "HSM endpoint {blue $VAULT_HSM_ENDPOINT}",
|
|
38
|
+
defaultValue: process.env.VAULT_HSM_ENDPOINT,
|
|
39
|
+
required: true,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "hsmCert",
|
|
43
|
+
type: String,
|
|
44
|
+
description: "Path to HSM certificate {blue $VAULT_HSM_CLIENT_CERT_PATH}",
|
|
45
|
+
defaultValue: process.env.VAULT_HSM_CLIENT_CERT_PATH,
|
|
46
|
+
required: true,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: "hsmCertPassword",
|
|
50
|
+
type: String,
|
|
51
|
+
description: "HSM certificate password {blue $VAULT_HSM_CLIENT_CERT_PWD}",
|
|
52
|
+
defaultValue: process.env.VAULT_HSM_CLIENT_CERT_PWD,
|
|
53
|
+
required: true,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
run: (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
|
+
if (!options.hsmCert) {
|
|
58
|
+
throw new Error("You must specify the path to your HSM certificate in your environment variable VAULT_HSM_CLIENT_CERT_PATH or use the --hsmCert flag");
|
|
59
|
+
}
|
|
60
|
+
let hsmCert;
|
|
61
|
+
try {
|
|
62
|
+
hsmCert = fs_1.default.readFileSync(options.hsmCert);
|
|
63
|
+
}
|
|
64
|
+
catch (_a) {
|
|
65
|
+
throw new Error(`Invalid path for hsmCert: ${options.hsmCert}`);
|
|
66
|
+
}
|
|
67
|
+
const bridge = (0, createHSMBridge_1.default)({
|
|
68
|
+
hsmCert,
|
|
69
|
+
hsmEndpoint: options.hsm,
|
|
70
|
+
hsmCertPassword: options.hsmCertPassword,
|
|
71
|
+
});
|
|
72
|
+
const backup = yield bridge.backupCompartment(options.compartment);
|
|
73
|
+
console.log(JSON.stringify(backup));
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=backupCompartment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backupCompartment.js","sourceRoot":"","sources":["../../src/commands/backupCompartment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iGAAyE;AACzE,4CAAoB;AASpB,kBAAe;IACb,OAAO,EAAE,mBAAmB;IAC5B,WAAW,EAAE,6BAA6B;IAC1C,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,mDAAmD;SAC7D;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,iDAAiD;YAC9D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,yCAAyC;YACtD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC5C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,4DAA4D;YACzE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YACpD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,4DAA4D;YACzE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;YACnD,QAAQ,EAAE,IAAI;SACf;KACF;IACD,GAAG,EAAE,CAAO,OAAgB,EAAiB,EAAE;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,qIAAqI,CACtI,CAAC;SACH;QAED,IAAI,OAAe,CAAC;QACpB,IAAI;YACF,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC5C;QAAC,WAAiC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;SACjE;QAED,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC;YAC7B,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,CAAC,CAAA;CACF,CAAC"}
|
package/bin/commands/index.d.ts
CHANGED
|
@@ -385,6 +385,35 @@ declare const _default: {
|
|
|
385
385
|
required?: undefined;
|
|
386
386
|
})[];
|
|
387
387
|
run: (options: import("./faucet").FaucetOptions) => Promise<void>;
|
|
388
|
+
} | {
|
|
389
|
+
command: string;
|
|
390
|
+
description: string;
|
|
391
|
+
help: {
|
|
392
|
+
content: string;
|
|
393
|
+
}[];
|
|
394
|
+
options: ({
|
|
395
|
+
name: string;
|
|
396
|
+
alias: string;
|
|
397
|
+
type: NumberConstructor;
|
|
398
|
+
description: string;
|
|
399
|
+
defaultValue: string | undefined;
|
|
400
|
+
required: boolean;
|
|
401
|
+
} | {
|
|
402
|
+
name: string;
|
|
403
|
+
alias: string;
|
|
404
|
+
type: StringConstructor;
|
|
405
|
+
description: string;
|
|
406
|
+
required: boolean;
|
|
407
|
+
defaultValue?: undefined;
|
|
408
|
+
} | {
|
|
409
|
+
name: string;
|
|
410
|
+
type: StringConstructor;
|
|
411
|
+
description: string;
|
|
412
|
+
defaultValue: string | undefined;
|
|
413
|
+
required: boolean;
|
|
414
|
+
alias?: undefined;
|
|
415
|
+
})[];
|
|
416
|
+
run: (options: import("./restoreCompartment").Options) => Promise<void>;
|
|
388
417
|
} | {
|
|
389
418
|
command: string;
|
|
390
419
|
description: string;
|
|
@@ -561,6 +590,35 @@ declare const _default: {
|
|
|
561
590
|
type: NumberConstructor;
|
|
562
591
|
})[];
|
|
563
592
|
run: (options: import("./approve").ApproveOptions) => Promise<void>;
|
|
593
|
+
} | {
|
|
594
|
+
command: string;
|
|
595
|
+
description: string;
|
|
596
|
+
options: ({
|
|
597
|
+
name: string;
|
|
598
|
+
type: BooleanConstructor;
|
|
599
|
+
description: string;
|
|
600
|
+
} | {
|
|
601
|
+
name: string;
|
|
602
|
+
description: string;
|
|
603
|
+
type: StringConstructor;
|
|
604
|
+
} | {
|
|
605
|
+
name: string;
|
|
606
|
+
alias: string;
|
|
607
|
+
type: NumberConstructor;
|
|
608
|
+
description: string;
|
|
609
|
+
defaultValue: number;
|
|
610
|
+
})[];
|
|
611
|
+
subCommands: {
|
|
612
|
+
command: string;
|
|
613
|
+
description: string;
|
|
614
|
+
options: {
|
|
615
|
+
name: string;
|
|
616
|
+
type: NumberConstructor;
|
|
617
|
+
description: string;
|
|
618
|
+
required: boolean;
|
|
619
|
+
}[];
|
|
620
|
+
run: (opts: import("./revoke").RevokeOptions) => Promise<void>;
|
|
621
|
+
}[];
|
|
564
622
|
} | {
|
|
565
623
|
command: string;
|
|
566
624
|
positionals: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEA,wBAkCE"}
|
package/bin/commands/index.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const apdu_1 = __importDefault(require("./apdu"));
|
|
7
7
|
const approve_1 = __importDefault(require("./approve"));
|
|
8
|
+
const backupCompartment_1 = __importDefault(require("./backupCompartment"));
|
|
8
9
|
const bake_1 = __importDefault(require("./bake"));
|
|
9
10
|
const bridge_1 = __importDefault(require("./bridge"));
|
|
10
11
|
const create_1 = __importDefault(require("./create"));
|
|
@@ -26,6 +27,8 @@ const receive_1 = __importDefault(require("./receive"));
|
|
|
26
27
|
const recipe_1 = __importDefault(require("./recipe"));
|
|
27
28
|
const registerMigratedUsers_1 = __importDefault(require("./registerMigratedUsers"));
|
|
28
29
|
const reject_1 = __importDefault(require("./reject"));
|
|
30
|
+
const restoreCompartment_1 = __importDefault(require("./restoreCompartment"));
|
|
31
|
+
const revoke_1 = __importDefault(require("./revoke"));
|
|
29
32
|
const send_1 = __importDefault(require("./send"));
|
|
30
33
|
const setQuorum_1 = __importDefault(require("./setQuorum"));
|
|
31
34
|
const wipe_1 = __importDefault(require("./wipe"));
|
|
@@ -75,6 +78,8 @@ exports.default = {
|
|
|
75
78
|
faucet_1.default,
|
|
76
79
|
getAuthToken_1.default,
|
|
77
80
|
getUserID_1.default,
|
|
81
|
+
backupCompartment_1.default,
|
|
82
|
+
restoreCompartment_1.default,
|
|
78
83
|
migrate_1.default,
|
|
79
84
|
registerMigratedUsers_1.default,
|
|
80
85
|
listen_1.default,
|
|
@@ -86,6 +91,7 @@ exports.default = {
|
|
|
86
91
|
bridge_1.default,
|
|
87
92
|
approve_1.default,
|
|
88
93
|
reject_1.default,
|
|
94
|
+
revoke_1.default,
|
|
89
95
|
apdu_1.default,
|
|
90
96
|
getMVInstances_1.default,
|
|
91
97
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAAiC;AACjC,wDAAuC;AACvC,kDAAiC;AACjC,sDAAqC;AACrC,sDAAqC;AACrC,sDAAqC;AACrC,wDAAuC;AACvC,oDAAmC;AACnC,sDAAqC;AACrC,oDAAmC;AACnC,gDAA+B;AAC/B,kEAAiD;AACjD,sEAAqD;AACrD,0DAAyC;AACzC,4DAA2C;AAC3C,sDAAqC;AACrC,wDAAuC;AACvC,wDAAuC;AACvC,oDAAmC;AACnC,wDAAuC;AACvC,sDAAqC;AACrC,oFAAmE;AACnE,sDAAqC;AACrC,kDAAiC;AACjC,4DAA2C;AAC3C,kDAAiC;AAKjC,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE;YACP,uDAAuD;YACvD,EAAE;YACF,yCAAyC;SAC1C;KACF;CACF,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,cAAc;KAC5B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;KACzB;CACF,CAAC;AAEF,kBAAe;IACb,IAAI;IACJ,OAAO;IACP,WAAW,EAAE;QACX,iBAAc;QACd,cAAW;QACX,gBAAa;QACb,cAAW;QACX,gBAAa;QACb,iBAAc;QACd,gBAAa;QACb,mBAAgB;QAChB,aAAU;QACV,eAAY;QACZ,gBAAa;QACb,sBAAmB;QACnB,mBAAgB;QAChB,iBAAc;QACd,+BAA4B;QAC5B,gBAAa;QACb,kBAAe;QACf,eAAY;QACZ,cAAW;QACX,iBAAc;QACd,eAAY;QACZ,gBAAa;QACb,iBAAc;QACd,gBAAa;QACb,cAAW;QACX,wBAAqB;KACtB;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAAiC;AACjC,wDAAuC;AACvC,4EAA2D;AAC3D,kDAAiC;AACjC,sDAAqC;AACrC,sDAAqC;AACrC,sDAAqC;AACrC,wDAAuC;AACvC,oDAAmC;AACnC,sDAAqC;AACrC,oDAAmC;AACnC,gDAA+B;AAC/B,kEAAiD;AACjD,sEAAqD;AACrD,0DAAyC;AACzC,4DAA2C;AAC3C,sDAAqC;AACrC,wDAAuC;AACvC,wDAAuC;AACvC,oDAAmC;AACnC,wDAAuC;AACvC,sDAAqC;AACrC,oFAAmE;AACnE,sDAAqC;AACrC,8EAA6D;AAC7D,sDAAqC;AACrC,kDAAiC;AACjC,4DAA2C;AAC3C,kDAAiC;AAKjC,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE;YACP,uDAAuD;YACvD,EAAE;YACF,yCAAyC;SAC1C;KACF;CACF,CAAC;AAEF,MAAM,OAAO,GAAG;IACd;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,cAAc;KAC5B;IACD;QACE,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;KACzB;CACF,CAAC;AAEF,kBAAe;IACb,IAAI;IACJ,OAAO;IACP,WAAW,EAAE;QACX,iBAAc;QACd,cAAW;QACX,gBAAa;QACb,cAAW;QACX,gBAAa;QACb,iBAAc;QACd,gBAAa;QACb,mBAAgB;QAChB,aAAU;QACV,eAAY;QACZ,gBAAa;QACb,sBAAmB;QACnB,mBAAgB;QAChB,2BAAwB;QACxB,4BAAyB;QACzB,iBAAc;QACd,+BAA4B;QAC5B,gBAAa;QACb,kBAAe;QACf,eAAY;QACZ,cAAW;QACX,iBAAc;QACd,eAAY;QACZ,gBAAa;QACb,iBAAc;QACd,gBAAa;QACb,gBAAa;QACb,cAAW;QACX,wBAAqB;KACtB;CACF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare type Options = {
|
|
2
|
+
compartment: number;
|
|
3
|
+
hsm: string;
|
|
4
|
+
hsmCert: string;
|
|
5
|
+
hsmCertPassword: string;
|
|
6
|
+
backupFile: string;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: {
|
|
9
|
+
command: string;
|
|
10
|
+
description: string;
|
|
11
|
+
help: {
|
|
12
|
+
content: string;
|
|
13
|
+
}[];
|
|
14
|
+
options: ({
|
|
15
|
+
name: string;
|
|
16
|
+
alias: string;
|
|
17
|
+
type: NumberConstructor;
|
|
18
|
+
description: string;
|
|
19
|
+
defaultValue: string | undefined;
|
|
20
|
+
required: boolean;
|
|
21
|
+
} | {
|
|
22
|
+
name: string;
|
|
23
|
+
alias: string;
|
|
24
|
+
type: StringConstructor;
|
|
25
|
+
description: string;
|
|
26
|
+
required: boolean;
|
|
27
|
+
defaultValue?: undefined;
|
|
28
|
+
} | {
|
|
29
|
+
name: string;
|
|
30
|
+
type: StringConstructor;
|
|
31
|
+
description: string;
|
|
32
|
+
defaultValue: string | undefined;
|
|
33
|
+
required: boolean;
|
|
34
|
+
alias?: undefined;
|
|
35
|
+
})[];
|
|
36
|
+
run: (options: Options) => Promise<void>;
|
|
37
|
+
};
|
|
38
|
+
export default _default;
|
|
39
|
+
//# sourceMappingURL=restoreCompartment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreCompartment.d.ts","sourceRoot":"","sources":["../../src/commands/restoreCompartment.ts"],"names":[],"mappings":"AAKA,oBAAY,OAAO,GAAG;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAgDqB,OAAO,KAAG,QAAQ,IAAI,CAAC;;AA9C9C,wBAuEE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const createHSMBridge_1 = __importDefault(require("@ledgerhq/vault-common/lib/createHSMBridge"));
|
|
16
|
+
const fs_1 = __importDefault(require("fs"));
|
|
17
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
18
|
+
exports.default = {
|
|
19
|
+
command: "restoreCompartment",
|
|
20
|
+
description: "Restore HSM simu compartment",
|
|
21
|
+
help: [
|
|
22
|
+
{
|
|
23
|
+
content: "{grey $} ledger-vault restoreCompartment --cid 123 --backupFile backup.json",
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
options: [
|
|
27
|
+
{
|
|
28
|
+
name: "compartment",
|
|
29
|
+
alias: "c",
|
|
30
|
+
type: Number,
|
|
31
|
+
description: "HSM compartment ID {blue $VAULT_COMPARTMENT_ID}",
|
|
32
|
+
defaultValue: process.env.VAULT_COMPARTMENT_ID,
|
|
33
|
+
required: true,
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "backupFile",
|
|
37
|
+
alias: "b",
|
|
38
|
+
type: String,
|
|
39
|
+
description: "Location of the backup file (output of ledger-vault backupCompartment)",
|
|
40
|
+
required: true,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "hsm",
|
|
44
|
+
type: String,
|
|
45
|
+
description: "HSM endpoint {blue $VAULT_HSM_ENDPOINT}",
|
|
46
|
+
defaultValue: process.env.VAULT_HSM_ENDPOINT,
|
|
47
|
+
required: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "hsmCert",
|
|
51
|
+
type: String,
|
|
52
|
+
description: "Path to HSM certificate {blue $VAULT_HSM_CLIENT_CERT_PATH}",
|
|
53
|
+
defaultValue: process.env.VAULT_HSM_CLIENT_CERT_PATH,
|
|
54
|
+
required: true,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "hsmCertPassword",
|
|
58
|
+
type: String,
|
|
59
|
+
description: "HSM certificate password {blue $VAULT_HSM_CLIENT_CERT_PWD}",
|
|
60
|
+
defaultValue: process.env.VAULT_HSM_CLIENT_CERT_PWD,
|
|
61
|
+
required: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
run: (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
if (!options.hsmCert) {
|
|
66
|
+
throw new Error("You must specify the path to your HSM certificate in your environment variable VAULT_HSM_CLIENT_CERT_PATH or use the --hsmCert flag");
|
|
67
|
+
}
|
|
68
|
+
let hsmCert;
|
|
69
|
+
try {
|
|
70
|
+
hsmCert = fs_1.default.readFileSync(options.hsmCert);
|
|
71
|
+
}
|
|
72
|
+
catch (_a) {
|
|
73
|
+
throw new Error(`Invalid path for hsmCert: ${options.hsmCert}`);
|
|
74
|
+
}
|
|
75
|
+
const bridge = (0, createHSMBridge_1.default)({
|
|
76
|
+
hsmCert,
|
|
77
|
+
hsmEndpoint: options.hsm,
|
|
78
|
+
hsmCertPassword: options.hsmCertPassword,
|
|
79
|
+
});
|
|
80
|
+
const fileContent = fs_1.default.readFileSync(options.backupFile, "utf-8");
|
|
81
|
+
const backup = JSON.parse(fileContent);
|
|
82
|
+
yield bridge.restoreCompartment(options.compartment, backup, { logger: logger_1.default });
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=restoreCompartment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreCompartment.js","sourceRoot":"","sources":["../../src/commands/restoreCompartment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iGAAyE;AACzE,4CAAoB;AAEpB,uDAA+B;AAU/B,kBAAe;IACb,OAAO,EAAE,oBAAoB;IAC7B,WAAW,EAAE,8BAA8B;IAC3C,IAAI,EAAE;QACJ;YACE,OAAO,EAAE,6EAA6E;SACvF;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,iDAAiD;YAC9D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAC9C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,wEAAwE;YACrF,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,yCAAyC;YACtD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC5C,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,4DAA4D;YACzE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;YACpD,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,4DAA4D;YACzE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;YACnD,QAAQ,EAAE,IAAI;SACf;KACF;IACD,GAAG,EAAE,CAAO,OAAgB,EAAiB,EAAE;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,qIAAqI,CACtI,CAAC;SACH;QAED,IAAI,OAAe,CAAC;QACpB,IAAI;YACF,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC5C;QAAC,WAAiC;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;SACjE;QAED,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC;YAC7B,OAAO;YACP,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAN,gBAAM,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAA;CACF,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { GateOptions } from "../types";
|
|
2
|
+
export declare type RevokeOptions = GateOptions & {
|
|
3
|
+
command: "user" | "group";
|
|
4
|
+
device: number;
|
|
5
|
+
id: number;
|
|
6
|
+
noApproval: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const revokeEntity: (opts: RevokeOptions) => Promise<void>;
|
|
9
|
+
declare const _default: {
|
|
10
|
+
command: string;
|
|
11
|
+
description: string;
|
|
12
|
+
options: ({
|
|
13
|
+
name: string;
|
|
14
|
+
type: BooleanConstructor;
|
|
15
|
+
description: string;
|
|
16
|
+
} | {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
type: StringConstructor;
|
|
20
|
+
} | {
|
|
21
|
+
name: string;
|
|
22
|
+
alias: string;
|
|
23
|
+
type: NumberConstructor;
|
|
24
|
+
description: string;
|
|
25
|
+
defaultValue: number;
|
|
26
|
+
})[];
|
|
27
|
+
subCommands: {
|
|
28
|
+
command: string;
|
|
29
|
+
description: string;
|
|
30
|
+
options: {
|
|
31
|
+
name: string;
|
|
32
|
+
type: NumberConstructor;
|
|
33
|
+
description: string;
|
|
34
|
+
required: boolean;
|
|
35
|
+
}[];
|
|
36
|
+
run: (opts: RevokeOptions) => Promise<void>;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
export default _default;
|
|
40
|
+
//# sourceMappingURL=revoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../src/commands/revoke.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,oBAAY,aAAa,GAAG,WAAW,GAAG;IACxC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,YAAY,SAAgB,aAAa,KAAG,QAAQ,IAAI,CAsBpE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,wBAwCE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.revokeEntity = void 0;
|
|
16
|
+
const vault_common_1 = require("@ledgerhq/vault-common");
|
|
17
|
+
const deviceOption_1 = __importDefault(require("../deviceOption"));
|
|
18
|
+
const gateOptions_1 = __importDefault(require("../gateOptions"));
|
|
19
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
20
|
+
const revokeEntity = (opts) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
|
+
const pool = (0, vault_common_1.createDevicesPool)(Object.assign(Object.assign({}, opts), { deviceAPIURL: opts.deviceAPI }));
|
|
22
|
+
const userDevice = yield pool.login(opts.device);
|
|
23
|
+
let request;
|
|
24
|
+
if (opts.command === "user") {
|
|
25
|
+
logger_1.default.info(`Revoking user ${opts.id}`);
|
|
26
|
+
request = yield userDevice.post("/requests", { type: "REVOKE_USER", user_id: opts.id });
|
|
27
|
+
}
|
|
28
|
+
if (opts.command === "group") {
|
|
29
|
+
logger_1.default.info(`Revoking group ${opts.id}`);
|
|
30
|
+
request = yield userDevice.post("/requests", { type: "REVOKE_GROUP", group_id: opts.id });
|
|
31
|
+
}
|
|
32
|
+
if (opts.noApproval)
|
|
33
|
+
return;
|
|
34
|
+
logger_1.default.info("Approving request...");
|
|
35
|
+
yield pool.getOnboardingAdminDevices();
|
|
36
|
+
yield pool.runWithQuorum((admin) => admin.approveRequest(request));
|
|
37
|
+
});
|
|
38
|
+
exports.revokeEntity = revokeEntity;
|
|
39
|
+
exports.default = {
|
|
40
|
+
command: "revoke",
|
|
41
|
+
description: "Revoke user or group",
|
|
42
|
+
options: [
|
|
43
|
+
...gateOptions_1.default,
|
|
44
|
+
deviceOption_1.default,
|
|
45
|
+
{
|
|
46
|
+
name: "noApproval",
|
|
47
|
+
type: Boolean,
|
|
48
|
+
description: "Create the request without approving it",
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
subCommands: [
|
|
52
|
+
{
|
|
53
|
+
command: "user",
|
|
54
|
+
description: "Revoke user",
|
|
55
|
+
options: [
|
|
56
|
+
{
|
|
57
|
+
name: "id",
|
|
58
|
+
type: Number,
|
|
59
|
+
description: "User ID",
|
|
60
|
+
required: true,
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
run: exports.revokeEntity,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
command: "group",
|
|
67
|
+
description: "Revoke group",
|
|
68
|
+
options: [
|
|
69
|
+
{
|
|
70
|
+
name: "id",
|
|
71
|
+
type: Number,
|
|
72
|
+
description: "Group ID",
|
|
73
|
+
required: true,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
run: exports.revokeEntity,
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=revoke.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../src/commands/revoke.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAA2D;AAE3D,mEAA2C;AAC3C,iEAAyC;AACzC,uDAA+B;AAUxB,MAAM,YAAY,GAAG,CAAO,IAAmB,EAAiB,EAAE;IACvE,MAAM,IAAI,GAAG,IAAA,gCAAiB,kCAAM,IAAI,KAAE,YAAY,EAAE,IAAI,CAAC,SAAS,IAAG,CAAC;IAC1E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,OAAY,CAAC;IACjB,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;QAC3B,gBAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KACzF;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;QAC5B,gBAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3F;IAED,IAAI,IAAI,CAAC,UAAU;QAAE,OAAO;IAE5B,gBAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEpC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAEvC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC,CAAA,CAAC;AAtBW,QAAA,YAAY,gBAsBvB;AAEF,kBAAe;IACb,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,sBAAsB;IACnC,OAAO,EAAE;QACP,GAAG,qBAAW;QACd,sBAAY;QACZ;YACE,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,yCAAyC;SACvD;KACF;IACD,WAAW,EAAE;QACX;YACE,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,aAAa;YAC1B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,SAAS;oBACtB,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,GAAG,EAAE,oBAAY;SAClB;QACD;YACE,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,cAAc;YAC3B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,UAAU;oBACvB,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,GAAG,EAAE,oBAAY;SAClB;KACF;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/vault-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.16.0",
|
|
4
4
|
"description": "A various utility command-line for Vault development",
|
|
5
5
|
"homepage": "https://github.com/LedgerHQ/vault-ts",
|
|
6
6
|
"license": "BSD-2-Clause",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@ledgerhq/cryptoassets": "^6.28.2",
|
|
19
19
|
"@ledgerhq/hw-transport-node-hid": "^6.24.1",
|
|
20
20
|
"@ledgerhq/live-common-stub": "1.4.6",
|
|
21
|
-
"@ledgerhq/vault-common": "1.
|
|
21
|
+
"@ledgerhq/vault-common": "1.17.0",
|
|
22
22
|
"axios": "^0.21.0",
|
|
23
23
|
"bignumber.js": "^9.0.1",
|
|
24
24
|
"body-parser": "^1.19.0",
|