@ledgerhq/ledger-key-ring-protocol 0.5.3-next.0 → 0.5.4-next.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 +20 -0
- package/lib/HWDeviceProvider.js +49 -51
- package/lib/HWDeviceProvider.js.map +1 -1
- package/lib/api.js +79 -108
- package/lib/api.js.map +1 -1
- package/lib/auth.js +29 -40
- package/lib/auth.js.map +1 -1
- package/lib/mockSdk.js +95 -115
- package/lib/mockSdk.js.map +1 -1
- package/lib/qrcode/index.js +155 -168
- package/lib/qrcode/index.js.map +1 -1
- package/lib/qrcode/index.test.js +13 -22
- package/lib/qrcode/index.test.js.map +1 -1
- package/lib/sdk.js +231 -270
- package/lib/sdk.js.map +1 -1
- package/lib/store.js +3 -3
- package/lib/store.js.map +1 -1
- package/lib-es/HWDeviceProvider.js +49 -51
- package/lib-es/HWDeviceProvider.js.map +1 -1
- package/lib-es/api.js +79 -108
- package/lib-es/api.js.map +1 -1
- package/lib-es/auth.js +29 -40
- package/lib-es/auth.js.map +1 -1
- package/lib-es/mockSdk.js +95 -115
- package/lib-es/mockSdk.js.map +1 -1
- package/lib-es/qrcode/index.js +155 -168
- package/lib-es/qrcode/index.js.map +1 -1
- package/lib-es/qrcode/index.test.js +13 -22
- package/lib-es/qrcode/index.test.js.map +1 -1
- package/lib-es/sdk.js +231 -270
- package/lib-es/sdk.js.map +1 -1
- package/lib-es/store.js +3 -3
- package/lib-es/store.js.map +1 -1
- package/package.json +7 -7
- package/tsconfig.json +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @ledgerhq/ledger-key-ring-protocol@0.5.
|
|
3
|
-
> tsc && tsc -m
|
|
2
|
+
> @ledgerhq/ledger-key-ring-protocol@0.5.3 build /home/runner/work/ledger-live/ledger-live/libs/ledger-key-ring-protocol
|
|
3
|
+
> tsc && tsc -m esnext --moduleResolution bundler --outDir lib-es
|
|
4
4
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @ledgerhq/live-wallet
|
|
2
2
|
|
|
3
|
+
## 0.5.4-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`1461449`](https://github.com/LedgerHQ/ledger-live/commit/146144941c13e60182da8d79592f706d12a6f00e), [`bdfa413`](https://github.com/LedgerHQ/ledger-live/commit/bdfa4139fcbceabfd05a57e69b05e9ccf10efbe1)]:
|
|
8
|
+
- @ledgerhq/live-env@2.6.0-next.0
|
|
9
|
+
- @ledgerhq/hw-ledger-key-ring-protocol@0.3.2-next.0
|
|
10
|
+
- @ledgerhq/live-network@2.0.5-next.0
|
|
11
|
+
- @ledgerhq/speculos-transport@0.1.10-next.0
|
|
12
|
+
|
|
13
|
+
## 0.5.3
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`d98a964`](https://github.com/LedgerHQ/ledger-live/commit/d98a96476c3d44eab1575f6c7c58ec03b5daf890)]:
|
|
18
|
+
- @ledgerhq/live-env@2.5.0
|
|
19
|
+
- @ledgerhq/hw-ledger-key-ring-protocol@0.3.1
|
|
20
|
+
- @ledgerhq/live-network@2.0.4
|
|
21
|
+
- @ledgerhq/speculos-transport@0.1.9
|
|
22
|
+
|
|
3
23
|
## 0.5.3-next.0
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/lib/HWDeviceProvider.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -21,6 +12,20 @@ const api_1 = __importDefault(require("./api"));
|
|
|
21
12
|
const auth_1 = require("./auth");
|
|
22
13
|
const errors_2 = require("./errors");
|
|
23
14
|
class HWDeviceProvider {
|
|
15
|
+
/**
|
|
16
|
+
* TODO withDevice should be imported statically from @ledgerhq/live-common/hw/deviceAccess
|
|
17
|
+
*
|
|
18
|
+
* but ATM making @ledgerhq/live-common a dependency of @ledgerhq/ledger-key-ring-protocol causes:
|
|
19
|
+
* > Turbo error: Invalid package dependency graph: cyclic dependency detected:
|
|
20
|
+
* > @ledgerhq/ledger-key-ring-protocol,@ledgerhq/live-wallet,@ledgerhq/live-common
|
|
21
|
+
*
|
|
22
|
+
* Maybe hw/deviceAccess.ts and hw/index.ts could be moved to @ledgerhq/devices
|
|
23
|
+
* This would break the cyclic dependency as @ledgerhq/live-common would depend on @ledgerhq/devices
|
|
24
|
+
* but not the other way around.
|
|
25
|
+
*/
|
|
26
|
+
withDevice;
|
|
27
|
+
jwt;
|
|
28
|
+
api;
|
|
24
29
|
constructor(apiBaseURL, withDevice) {
|
|
25
30
|
this.api = (0, api_1.default)(apiBaseURL);
|
|
26
31
|
this.withDevice = withDevice;
|
|
@@ -31,56 +36,49 @@ class HWDeviceProvider {
|
|
|
31
36
|
return job(jwt);
|
|
32
37
|
}, this.jwt, () => this._authWithDevice(deviceId, callbacks), (jwt) => this.api.refreshAuth(jwt), policy);
|
|
33
38
|
}
|
|
34
|
-
withHw(deviceId, job, callbacks) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
async withHw(deviceId, job, callbacks) {
|
|
40
|
+
callbacks?.onStartRequestUserInteraction?.();
|
|
41
|
+
const runWithDevice = this.withDevice(deviceId);
|
|
42
|
+
try {
|
|
43
|
+
return await (0, rxjs_1.lastValueFrom)(runWithDevice(transport => (0, rxjs_1.from)(job(hw_ledger_key_ring_protocol_1.device.apdu(transport)))));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (!(error instanceof hw_transport_1.TransportStatusError)) {
|
|
47
|
+
throw error;
|
|
41
48
|
}
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
switch (error.statusCode) {
|
|
50
|
+
case hw_transport_1.StatusCodes.USER_REFUSED_ON_DEVICE:
|
|
51
|
+
case hw_transport_1.StatusCodes.CONDITIONS_OF_USE_NOT_SATISFIED:
|
|
52
|
+
throw new errors_1.UserRefusedOnDevice();
|
|
53
|
+
case hw_transport_1.StatusCodes.TRUSTCHAIN_WRONG_SEED:
|
|
54
|
+
this.clearJwt();
|
|
55
|
+
throw new errors_2.TrustchainNotAllowed();
|
|
56
|
+
default:
|
|
44
57
|
throw error;
|
|
45
|
-
}
|
|
46
|
-
switch (error.statusCode) {
|
|
47
|
-
case hw_transport_1.StatusCodes.USER_REFUSED_ON_DEVICE:
|
|
48
|
-
case hw_transport_1.StatusCodes.CONDITIONS_OF_USE_NOT_SATISFIED:
|
|
49
|
-
throw new errors_1.UserRefusedOnDevice();
|
|
50
|
-
case hw_transport_1.StatusCodes.TRUSTCHAIN_WRONG_SEED:
|
|
51
|
-
this.clearJwt();
|
|
52
|
-
throw new errors_2.TrustchainNotAllowed();
|
|
53
|
-
default:
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
(_b = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onEndRequestUserInteraction) === null || _b === void 0 ? void 0 : _b.call(callbacks);
|
|
59
58
|
}
|
|
60
|
-
}
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
callbacks?.onEndRequestUserInteraction?.();
|
|
62
|
+
}
|
|
61
63
|
}
|
|
62
|
-
refreshJwt(deviceId, callbacks) {
|
|
63
|
-
|
|
64
|
-
this.jwt = yield this.withJwt(deviceId, this.api.refreshAuth, "cache", callbacks);
|
|
65
|
-
});
|
|
64
|
+
async refreshJwt(deviceId, callbacks) {
|
|
65
|
+
this.jwt = await this.withJwt(deviceId, this.api.refreshAuth, "cache", callbacks);
|
|
66
66
|
}
|
|
67
67
|
clearJwt() {
|
|
68
68
|
this.jwt = undefined;
|
|
69
69
|
}
|
|
70
|
-
_authWithDevice(deviceId, callbacks) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
},
|
|
83
|
-
});
|
|
70
|
+
async _authWithDevice(deviceId, callbacks) {
|
|
71
|
+
const challenge = await this.api.getAuthenticationChallenge();
|
|
72
|
+
const data = hw_ledger_key_ring_protocol_1.crypto.from_hex(challenge.tlv);
|
|
73
|
+
const seedId = await this.withHw(deviceId, hw => hw.getSeedId(data), callbacks);
|
|
74
|
+
const signature = hw_ledger_key_ring_protocol_1.crypto.to_hex(seedId.signature);
|
|
75
|
+
return this.api.postChallengeResponse({
|
|
76
|
+
challenge: challenge.json,
|
|
77
|
+
signature: {
|
|
78
|
+
credential: seedId.pubkeyCredential.toJSON(),
|
|
79
|
+
signature,
|
|
80
|
+
attestation: hw_ledger_key_ring_protocol_1.crypto.to_hex(seedId.attestationResult),
|
|
81
|
+
},
|
|
84
82
|
});
|
|
85
83
|
}
|
|
86
84
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HWDeviceProvider.js","sourceRoot":"","sources":["../src/HWDeviceProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HWDeviceProvider.js","sourceRoot":"","sources":["../src/HWDeviceProvider.ts"],"names":[],"mappings":"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"}
|
package/lib/api.js
CHANGED
|
@@ -1,137 +1,108 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
14
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
6
|
const live_network_1 = __importDefault(require("@ledgerhq/live-network"));
|
|
16
7
|
const getApi = (apiBaseURL) => {
|
|
17
|
-
function getAuthenticationChallenge() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
method: "GET",
|
|
22
|
-
});
|
|
23
|
-
return data;
|
|
8
|
+
async function getAuthenticationChallenge() {
|
|
9
|
+
const { data } = await (0, live_network_1.default)({
|
|
10
|
+
url: `${apiBaseURL}/v1/challenge`,
|
|
11
|
+
method: "GET",
|
|
24
12
|
});
|
|
13
|
+
return data;
|
|
25
14
|
}
|
|
26
|
-
function postChallengeResponse(request) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
data: request,
|
|
32
|
-
});
|
|
33
|
-
return {
|
|
34
|
-
accessToken: data.access_token,
|
|
35
|
-
permissions: data.permissions,
|
|
36
|
-
};
|
|
15
|
+
async function postChallengeResponse(request) {
|
|
16
|
+
const { data } = await (0, live_network_1.default)({
|
|
17
|
+
url: `${apiBaseURL}/v1/authenticate`,
|
|
18
|
+
method: "POST",
|
|
19
|
+
data: request,
|
|
37
20
|
});
|
|
21
|
+
return {
|
|
22
|
+
accessToken: data.access_token,
|
|
23
|
+
permissions: data.permissions,
|
|
24
|
+
};
|
|
38
25
|
}
|
|
39
|
-
function refreshAuth(jwt) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
return {
|
|
49
|
-
accessToken: data.access_token,
|
|
50
|
-
permissions: data.permissions,
|
|
51
|
-
};
|
|
26
|
+
async function refreshAuth(jwt) {
|
|
27
|
+
const { data } = await (0, live_network_1.default)({
|
|
28
|
+
url: `${apiBaseURL}/v1/refresh`,
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: {
|
|
31
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
32
|
+
},
|
|
52
33
|
});
|
|
34
|
+
return {
|
|
35
|
+
accessToken: data.access_token,
|
|
36
|
+
permissions: data.permissions,
|
|
37
|
+
};
|
|
53
38
|
}
|
|
54
|
-
function getTrustchains(jwt) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
});
|
|
63
|
-
return data;
|
|
39
|
+
async function getTrustchains(jwt) {
|
|
40
|
+
const { data } = await (0, live_network_1.default)({
|
|
41
|
+
url: `${apiBaseURL}/v1/trustchains`,
|
|
42
|
+
method: "GET",
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
45
|
+
},
|
|
64
46
|
});
|
|
47
|
+
return data;
|
|
65
48
|
}
|
|
66
|
-
function getTrustchain(jwt, trustchain_id) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
return data;
|
|
49
|
+
async function getTrustchain(jwt, trustchain_id) {
|
|
50
|
+
const { data } = await (0, live_network_1.default)({
|
|
51
|
+
url: `${apiBaseURL}/v1/trustchain/${trustchain_id}`,
|
|
52
|
+
method: "GET",
|
|
53
|
+
headers: {
|
|
54
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
55
|
+
},
|
|
76
56
|
});
|
|
57
|
+
return data;
|
|
77
58
|
}
|
|
78
|
-
function postDerivation(jwt, trustchain_id, commandStream) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
data: commandStream,
|
|
88
|
-
});
|
|
59
|
+
async function postDerivation(jwt, trustchain_id, commandStream) {
|
|
60
|
+
await (0, live_network_1.default)({
|
|
61
|
+
url: `${apiBaseURL}/v1/trustchain/${trustchain_id}/derivation`,
|
|
62
|
+
method: "POST",
|
|
63
|
+
headers: {
|
|
64
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
65
|
+
"Content-Type": "application/json",
|
|
66
|
+
},
|
|
67
|
+
data: commandStream,
|
|
89
68
|
});
|
|
90
69
|
}
|
|
91
|
-
function postSeed(jwt, commandStream) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
data: commandStream,
|
|
101
|
-
});
|
|
70
|
+
async function postSeed(jwt, commandStream) {
|
|
71
|
+
await (0, live_network_1.default)({
|
|
72
|
+
url: `${apiBaseURL}/v1/seed`,
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
"Content-Type": "application/json",
|
|
76
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
77
|
+
},
|
|
78
|
+
data: commandStream,
|
|
102
79
|
});
|
|
103
80
|
}
|
|
104
|
-
function putCommands(jwt, trustchain_id, request) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
data: request,
|
|
113
|
-
});
|
|
81
|
+
async function putCommands(jwt, trustchain_id, request) {
|
|
82
|
+
await (0, live_network_1.default)({
|
|
83
|
+
url: `${apiBaseURL}/v1/trustchain/${trustchain_id}/commands`,
|
|
84
|
+
method: "PUT",
|
|
85
|
+
headers: {
|
|
86
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
87
|
+
},
|
|
88
|
+
data: request,
|
|
114
89
|
});
|
|
115
90
|
}
|
|
116
|
-
function deleteTrustchain(jwt, trustchain_id) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
},
|
|
124
|
-
});
|
|
91
|
+
async function deleteTrustchain(jwt, trustchain_id) {
|
|
92
|
+
await (0, live_network_1.default)({
|
|
93
|
+
url: `${apiBaseURL}/v1/trustchain/${trustchain_id}`,
|
|
94
|
+
method: "DELETE",
|
|
95
|
+
headers: {
|
|
96
|
+
Authorization: `Bearer ${jwt.accessToken}`,
|
|
97
|
+
},
|
|
125
98
|
});
|
|
126
99
|
}
|
|
127
|
-
function fetchStatus() {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
method: "GET",
|
|
132
|
-
});
|
|
133
|
-
return data;
|
|
100
|
+
async function fetchStatus() {
|
|
101
|
+
const { data } = await (0, live_network_1.default)({
|
|
102
|
+
url: `${apiBaseURL}/_info`,
|
|
103
|
+
method: "GET",
|
|
134
104
|
});
|
|
105
|
+
return data;
|
|
135
106
|
}
|
|
136
107
|
return {
|
|
137
108
|
getAuthenticationChallenge,
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/lib/auth.js
CHANGED
|
@@ -1,45 +1,14 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.genericWithJWT = void 0;
|
|
13
4
|
const errors_1 = require("@ledgerhq/errors");
|
|
14
5
|
const logs_1 = require("@ledgerhq/logs");
|
|
15
6
|
const errors_2 = require("./errors");
|
|
16
|
-
function genericWithJWT(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const { hasExpired, isNotPermitted, isTrustchainOutdated } = networkCheckJwtExpiration(e);
|
|
22
|
-
if (isNotPermitted) {
|
|
23
|
-
throw new errors_2.TrustchainNotAllowed();
|
|
24
|
-
}
|
|
25
|
-
if (isTrustchainOutdated) {
|
|
26
|
-
throw new errors_2.TrustchainOutdated();
|
|
27
|
-
}
|
|
28
|
-
if (hasExpired) {
|
|
29
|
-
return auth();
|
|
30
|
-
}
|
|
31
|
-
throw e;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
// initial jwt depending on the policy
|
|
35
|
-
let jwt = policy === "no-cache" || !initialJWT
|
|
36
|
-
? yield auth()
|
|
37
|
-
: policy === "refresh"
|
|
38
|
-
? yield refresh(initialJWT)
|
|
39
|
-
: initialJWT;
|
|
40
|
-
return job(jwt).catch((e) => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
// JWT expiration handling: if the function fails, we will recover a valid jwt accordingly to spec. https://ledgerhq.atlassian.net/wiki/spaces/BE/pages/4207083687/TCH+Usage+documentation#JWT-expiration-handling
|
|
42
|
-
const { hasExpired, canBeRefreshed, isNotPermitted, isTrustchainOutdated } = networkCheckJwtExpiration(e);
|
|
7
|
+
async function genericWithJWT(job, initialJWT, auth, refreshAuth, policy = "cache") {
|
|
8
|
+
function refresh(jwt) {
|
|
9
|
+
return refreshAuth(jwt).catch(e => {
|
|
10
|
+
(0, logs_1.log)("trustchain", "JWT refresh failed, reauthenticating", e);
|
|
11
|
+
const { hasExpired, isNotPermitted, isTrustchainOutdated } = networkCheckJwtExpiration(e);
|
|
43
12
|
if (isNotPermitted) {
|
|
44
13
|
throw new errors_2.TrustchainNotAllowed();
|
|
45
14
|
}
|
|
@@ -47,12 +16,32 @@ function genericWithJWT(job_1, initialJWT_1, auth_1, refreshAuth_1) {
|
|
|
47
16
|
throw new errors_2.TrustchainOutdated();
|
|
48
17
|
}
|
|
49
18
|
if (hasExpired) {
|
|
50
|
-
|
|
51
|
-
jwt = yield (jwt && canBeRefreshed ? refresh(jwt) : auth());
|
|
52
|
-
return job(jwt);
|
|
19
|
+
return auth();
|
|
53
20
|
}
|
|
54
21
|
throw e;
|
|
55
|
-
})
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// initial jwt depending on the policy
|
|
25
|
+
let jwt = policy === "no-cache" || !initialJWT
|
|
26
|
+
? await auth()
|
|
27
|
+
: policy === "refresh"
|
|
28
|
+
? await refresh(initialJWT)
|
|
29
|
+
: initialJWT;
|
|
30
|
+
return job(jwt).catch(async (e) => {
|
|
31
|
+
// JWT expiration handling: if the function fails, we will recover a valid jwt accordingly to spec. https://ledgerhq.atlassian.net/wiki/spaces/BE/pages/4207083687/TCH+Usage+documentation#JWT-expiration-handling
|
|
32
|
+
const { hasExpired, canBeRefreshed, isNotPermitted, isTrustchainOutdated } = networkCheckJwtExpiration(e);
|
|
33
|
+
if (isNotPermitted) {
|
|
34
|
+
throw new errors_2.TrustchainNotAllowed();
|
|
35
|
+
}
|
|
36
|
+
if (isTrustchainOutdated) {
|
|
37
|
+
throw new errors_2.TrustchainOutdated();
|
|
38
|
+
}
|
|
39
|
+
if (hasExpired) {
|
|
40
|
+
(0, logs_1.log)("trustchain", "JWT expired -> " + (canBeRefreshed ? "refreshing" : "reauthenticating"));
|
|
41
|
+
jwt = await (jwt && canBeRefreshed ? refresh(jwt) : auth());
|
|
42
|
+
return job(jwt);
|
|
43
|
+
}
|
|
44
|
+
throw e;
|
|
56
45
|
});
|
|
57
46
|
}
|
|
58
47
|
exports.genericWithJWT = genericWithJWT;
|
package/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|