@bitgo/passkey-crypto 0.3.1 → 0.4.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/dist/src/attachPasskeyToWallet.js +3 -3
- package/dist/src/removePasskeyFromWallet.d.ts.map +1 -1
- package/dist/src/removePasskeyFromWallet.js +2 -2
- package/dist/test/unit/attachPasskeyToWallet.test.js +25 -8
- package/dist/test/unit/removePasskeyFromWallet.test.js +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -29,7 +29,7 @@ async function attachPasskeyToWallet(params) {
|
|
|
29
29
|
// authenticator match between attach and derive).
|
|
30
30
|
const prfSalt = (0, deriveEnterpriseSalt_1.deriveEnterpriseSalt)(device.prfSalt, enterpriseId);
|
|
31
31
|
// Decrypt private key with existing passphrase
|
|
32
|
-
const privateKey = bitgo.
|
|
32
|
+
const privateKey = await bitgo.decryptAsync({ password: existingPassphrase, input: keychain.encryptedPrv });
|
|
33
33
|
// Decode credentialId from base64url to ArrayBuffer for allowCredentials.
|
|
34
34
|
// The WebAuthn spec requires allowCredentials to be non-empty when using evalByCredential,
|
|
35
35
|
// and each entry must correspond to a key in the evalByCredential map.
|
|
@@ -47,7 +47,7 @@ async function attachPasskeyToWallet(params) {
|
|
|
47
47
|
throw new Error('PRF assertion did not return a result.');
|
|
48
48
|
}
|
|
49
49
|
const prfPassword = (0, derivePassword_1.derivePassword)(authResult.prfResult);
|
|
50
|
-
const encryptedPrv = bitgo.
|
|
50
|
+
const encryptedPrv = await bitgo.encryptAsync({ password: prfPassword, input: privateKey, encryptionVersion: 2 });
|
|
51
51
|
const updatedKeychain = await bitgo
|
|
52
52
|
.put(bitgo.url(`/${coin}/key/${keychainId}`, 2))
|
|
53
53
|
.send({
|
|
@@ -60,4 +60,4 @@ async function attachPasskeyToWallet(params) {
|
|
|
60
60
|
.result();
|
|
61
61
|
return updatedKeychain;
|
|
62
62
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F0dGFjaFBhc3NrZXlUb1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLHNEQTRFQztBQWpGRCwyQ0FBZ0Q7QUFDaEQsaUVBQThEO0FBQzlELHFEQUFrRDtBQUczQyxLQUFLLFVBQVUscUJBQXFCLENBQUMsTUFPM0M7SUFDQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUvRSxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEMsK0NBQStDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRTlELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxRQUFRLG9FQUFvRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNuQyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzNDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsUUFBUSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCwrRUFBK0U7SUFDL0UsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUN6RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBRS9CLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsa0RBQWtEO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUEsMkNBQW9CLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUVuRSwrQ0FBK0M7SUFDL0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUU1RywwRUFBMEU7SUFDMUUsMkZBQTJGO0lBQzNGLHVFQUF1RTtJQUN2RSxNQUFNLGtCQUFrQixHQUFHLElBQUEsNkJBQWlCLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV6RSwwRUFBMEU7SUFDMUUsNEVBQTRFO0lBQzVFLDBFQUEwRTtJQUMxRSxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDcEMsU0FBUyxFQUFFO1lBQ1QsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDOUI7UUFDdEMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxPQUFPLEVBQUU7S0FDckQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsK0JBQWMsRUFBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFbEgsTUFBTSxlQUFlLEdBQUcsTUFBTSxLQUFLO1NBQ2hDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxRQUFRLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQy9DLElBQUksQ0FBQztRQUNKLFlBQVksRUFBRTtZQUNaLE9BQU87WUFDUCxXQUFXLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDdEIsWUFBWTtTQUNiO0tBQ0YsQ0FBQztTQUNELE1BQU0sRUFBRSxDQUFDO0lBRVosT0FBTyxlQUEyQixDQUFDO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UsIEtleWNoYWluIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGJhc2U2NFVybFRvQnVmZmVyIH0gZnJvbSAnLi9iYXNlNjR1cmwnO1xuaW1wb3J0IHsgZGVyaXZlRW50ZXJwcmlzZVNhbHQgfSBmcm9tICcuL2Rlcml2ZUVudGVycHJpc2VTYWx0JztcbmltcG9ydCB7IGRlcml2ZVBhc3N3b3JkIH0gZnJvbSAnLi9kZXJpdmVQYXNzd29yZCc7XG5pbXBvcnQgeyBXZWJBdXRobk90cERldmljZSwgV2ViQXV0aG5Qcm92aWRlciB9IGZyb20gJy4vd2ViQXV0aG5UeXBlcyc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhdHRhY2hQYXNza2V5VG9XYWxsZXQocGFyYW1zOiB7XG4gIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIGNvaW46IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgZGV2aWNlOiBXZWJBdXRobk90cERldmljZTtcbiAgZXhpc3RpbmdQYXNzcGhyYXNlOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBXZWJBdXRoblByb3ZpZGVyO1xufSk6IFByb21pc2U8S2V5Y2hhaW4+IHtcbiAgY29uc3QgeyBiaXRnbywgY29pbiwgd2FsbGV0SWQsIGRldmljZSwgZXhpc3RpbmdQYXNzcGhyYXNlLCBwcm92aWRlciB9ID0gcGFyYW1zO1xuXG4gIC8vIFRocm93IGVhcmx5IGlmIFBSRiBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZFxuICBpZiAoIWRldmljZS5wcmZTYWx0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQUkYgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2UuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgcGFzc2tleS4nKTtcbiAgfVxuXG4gIGNvbnN0IGJhc2VDb2luID0gYml0Z28uY29pbihjb2luKTtcblxuICAvLyBGZXRjaCB3YWxsZXQgYW5kIHZhbGlkYXRlIGl0IGlzIGEgaG90IHdhbGxldFxuICBjb25zdCB3YWxsZXQgPSBhd2FpdCBiYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuXG4gIGlmICh3YWxsZXQudHlwZSgpICE9PSAnaG90Jykge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2FsbGV0ICR7d2FsbGV0SWR9IGlzIG5vdCBhIGhvdCB3YWxsZXQuIE9ubHkgaG90IHdhbGxldHMgc3VwcG9ydCBwYXNza2V5IGF0dGFjaG1lbnQuYCk7XG4gIH1cblxuICBjb25zdCB3YWxsZXREYXRhID0gd2FsbGV0LnRvSlNPTigpO1xuICBjb25zdCBlbnRlcnByaXNlSWQgPSB3YWxsZXREYXRhLmVudGVycHJpc2U7XG4gIGlmICghZW50ZXJwcmlzZUlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBXYWxsZXQgJHt3YWxsZXRJZH0gaGFzIG5vIGVudGVycHJpc2UuYCk7XG4gIH1cblxuICAvLyBGZXRjaCB0aGUgdXNlciBrZXljaGFpbiDigJQgaXRlcmF0ZXMga2V5cyB1bnRpbCBpdCBmaW5kcyBvbmUgd2l0aCBlbmNyeXB0ZWRQcnZcbiAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCB3YWxsZXQuZ2V0RW5jcnlwdGVkVXNlcktleWNoYWluKCk7XG4gIGNvbnN0IGtleWNoYWluSWQgPSBrZXljaGFpbi5pZDtcblxuICAvLyBEZXJpdmUgZW50ZXJwcmlzZS1zY29wZWQgc2FsdCAoYmFzZTY0dXJsOyBzYW1lIGVuY29kaW5nIGlzIHVzZWQgYXMgdGhlXG4gIC8vIFBSRiBldmFsIGlucHV0IGFuZCBhcyB0aGUgc2VydmVyLXN0b3JlZCBwcmZTYWx0IHNvIHRoZSBieXRlcyBmZWQgdG8gdGhlXG4gIC8vIGF1dGhlbnRpY2F0b3IgbWF0Y2ggYmV0d2VlbiBhdHRhY2ggYW5kIGRlcml2ZSkuXG4gIGNvbnN0IHByZlNhbHQgPSBkZXJpdmVFbnRlcnByaXNlU2FsdChkZXZpY2UucHJmU2FsdCwgZW50ZXJwcmlzZUlkKTtcblxuICAvLyBEZWNyeXB0IHByaXZhdGUga2V5IHdpdGggZXhpc3RpbmcgcGFzc3BocmFzZVxuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgYml0Z28uZGVjcnlwdEFzeW5jKHsgcGFzc3dvcmQ6IGV4aXN0aW5nUGFzc3BocmFzZSwgaW5wdXQ6IGtleWNoYWluLmVuY3J5cHRlZFBydiB9KTtcblxuICAvLyBEZWNvZGUgY3JlZGVudGlhbElkIGZyb20gYmFzZTY0dXJsIHRvIEFycmF5QnVmZmVyIGZvciBhbGxvd0NyZWRlbnRpYWxzLlxuICAvLyBUaGUgV2ViQXV0aG4gc3BlYyByZXF1aXJlcyBhbGxvd0NyZWRlbnRpYWxzIHRvIGJlIG5vbi1lbXB0eSB3aGVuIHVzaW5nIGV2YWxCeUNyZWRlbnRpYWwsXG4gIC8vIGFuZCBlYWNoIGVudHJ5IG11c3QgY29ycmVzcG9uZCB0byBhIGtleSBpbiB0aGUgZXZhbEJ5Q3JlZGVudGlhbCBtYXAuXG4gIGNvbnN0IGNyZWRlbnRpYWxJZEJ1ZmZlciA9IGJhc2U2NFVybFRvQnVmZmVyKGRldmljZS5jcmVkZW50aWFsSWQpLmJ1ZmZlcjtcblxuICAvLyBQUkYgYXNzZXJ0aW9uIOKAlCBldmFsQnlDcmVkZW50aWFsIG1hcHMgdGhpcyBkZXZpY2UncyBjcmVkZW50aWFsSWQgdG8gdGhlXG4gIC8vIGJhc2U2NHVybCBlbnRlcnByaXNlIHNhbHQuIFRoZSBwcm92aWRlciBsYXllciBpcyByZXNwb25zaWJsZSBmb3IgZGVjb2RpbmdcbiAgLy8gYmFzZTY0dXJsIHRvIHJhdyBieXRlcyBiZWZvcmUgaGFuZGluZyBpdCB0byB0aGUgV2ViQXV0aG4gUFJGIGV4dGVuc2lvbi5cbiAgY29uc3QgYXV0aFJlc3VsdCA9IGF3YWl0IHByb3ZpZGVyLmdldCh7XG4gICAgcHVibGljS2V5OiB7XG4gICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbeyB0eXBlOiAncHVibGljLWtleScsIGlkOiBjcmVkZW50aWFsSWRCdWZmZXIgfV0sXG4gICAgfSBhcyBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMsXG4gICAgZXZhbEJ5Q3JlZGVudGlhbDogeyBbZGV2aWNlLmNyZWRlbnRpYWxJZF06IHByZlNhbHQgfSxcbiAgfSk7XG5cbiAgaWYgKCFhdXRoUmVzdWx0LnByZlJlc3VsdCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUFJGIGFzc2VydGlvbiBkaWQgbm90IHJldHVybiBhIHJlc3VsdC4nKTtcbiAgfVxuXG4gIGNvbnN0IHByZlBhc3N3b3JkID0gZGVyaXZlUGFzc3dvcmQoYXV0aFJlc3VsdC5wcmZSZXN1bHQpO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSBhd2FpdCBiaXRnby5lbmNyeXB0QXN5bmMoeyBwYXNzd29yZDogcHJmUGFzc3dvcmQsIGlucHV0OiBwcml2YXRlS2V5LCBlbmNyeXB0aW9uVmVyc2lvbjogMiB9KTtcblxuICBjb25zdCB1cGRhdGVkS2V5Y2hhaW4gPSBhd2FpdCBiaXRnb1xuICAgIC5wdXQoYml0Z28udXJsKGAvJHtjb2lufS9rZXkvJHtrZXljaGFpbklkfWAsIDIpKVxuICAgIC5zZW5kKHtcbiAgICAgIHdlYmF1dGhuSW5mbzoge1xuICAgICAgICBwcmZTYWx0LFxuICAgICAgICBvdHBEZXZpY2VJZDogZGV2aWNlLmlkLFxuICAgICAgICBlbmNyeXB0ZWRQcnYsXG4gICAgICB9LFxuICAgIH0pXG4gICAgLnJlc3VsdCgpO1xuXG4gIHJldHVybiB1cGRhdGVkS2V5Y2hhaW4gYXMgS2V5Y2hhaW47XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"removePasskeyFromWallet.d.ts","sourceRoot":"","sources":["../../src/removePasskeyFromWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"removePasskeyFromWallet.d.ts","sourceRoot":"","sources":["../../src/removePasskeyFromWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkC,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
|
|
@@ -12,11 +12,11 @@ async function removePasskeyFromWallet(params) {
|
|
|
12
12
|
const keychainId = wallet.keyIds()[0];
|
|
13
13
|
const keychain = await baseCoin.keychains().get({ id: keychainId });
|
|
14
14
|
// Verify passphrase before any mutation
|
|
15
|
-
const decrypted = (0, sdk_core_1.
|
|
15
|
+
const decrypted = await (0, sdk_core_1.decryptKeychainPrivateKeyAsync)(bitgo, keychain, walletPassphrase);
|
|
16
16
|
if (!decrypted) {
|
|
17
17
|
throw new Error('Incorrect wallet passphrase. Passkey removal aborted to prevent lockout.');
|
|
18
18
|
}
|
|
19
19
|
// No sdk-core abstraction for this endpoint; raw DELETE is required
|
|
20
20
|
await bitgo.del(bitgo.url(`/key/${keychainId}/webauthndevice/${device.id}`, 2)).result();
|
|
21
21
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREEwQkM7QUE3QkQsOENBQTRFO0FBR3JFLEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxNQU03QztJQUNDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTdFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBRXBFLHdDQUF3QztJQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUEseUNBQThCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsVUFBVSxtQkFBbUIsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSwgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFdlYkF1dGhuT3RwRGV2aWNlIH0gZnJvbSAnLi93ZWJBdXRoblR5cGVzJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHBhcmFtczoge1xuICBiaXRnbzogQml0R29CYXNlO1xuICBjb2luOiBzdHJpbmc7XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIGRldmljZTogV2ViQXV0aG5PdHBEZXZpY2U7XG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbn0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBiaXRnbywgY29pbjogY29pbk5hbWUsIHdhbGxldElkLCBkZXZpY2UsIHdhbGxldFBhc3NwaHJhc2UgfSA9IHBhcmFtcztcblxuICBpZiAoIWRldmljZS5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGV2aWNlLmlkIGlzIHJlcXVpcmVkIHRvIHJlbW92ZSBhIHBhc3NrZXkgZnJvbSB0aGUgd2FsbGV0Jyk7XG4gIH1cblxuICBjb25zdCBiYXNlQ29pbiA9IGJpdGdvLmNvaW4oY29pbk5hbWUpO1xuICBjb25zdCB3YWxsZXQgPSBhd2FpdCBiYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHdhbGxldElkIH0pO1xuICBjb25zdCBrZXljaGFpbklkID0gd2FsbGV0LmtleUlkcygpWzBdO1xuICBjb25zdCBrZXljaGFpbiA9IGF3YWl0IGJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gIC8vIFZlcmlmeSBwYXNzcGhyYXNlIGJlZm9yZSBhbnkgbXV0YXRpb25cbiAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jKGJpdGdvLCBrZXljaGFpbiwgd2FsbGV0UGFzc3BocmFzZSk7XG4gIGlmICghZGVjcnlwdGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvcnJlY3Qgd2FsbGV0IHBhc3NwaHJhc2UuIFBhc3NrZXkgcmVtb3ZhbCBhYm9ydGVkIHRvIHByZXZlbnQgbG9ja291dC4nKTtcbiAgfVxuXG4gIC8vIE5vIHNkay1jb3JlIGFic3RyYWN0aW9uIGZvciB0aGlzIGVuZHBvaW50OyByYXcgREVMRVRFIGlzIHJlcXVpcmVkXG4gIGF3YWl0IGJpdGdvLmRlbChiaXRnby51cmwoYC9rZXkvJHtrZXljaGFpbklkfS93ZWJhdXRobmRldmljZS8ke2RldmljZS5pZH1gLCAyKSkucmVzdWx0KCk7XG59XG4iXX0=
|
|
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
const assert = __importStar(require("assert"));
|
|
37
37
|
const sinon = __importStar(require("sinon"));
|
|
38
38
|
const attachPasskeyToWallet_1 = require("../../src/attachPasskeyToWallet");
|
|
39
|
+
const derivePassword_1 = require("../../src/derivePassword");
|
|
39
40
|
describe('attachPasskeyToWallet', function () {
|
|
40
41
|
const coin = 'tbtc';
|
|
41
42
|
const walletId = 'wallet-abc123';
|
|
@@ -86,15 +87,15 @@ describe('attachPasskeyToWallet', function () {
|
|
|
86
87
|
.callsFake((path, version) => `/api/v${version ?? 1}${path}`),
|
|
87
88
|
coin: sinon.stub().returns(mockBaseCoin),
|
|
88
89
|
put: sinon.stub(),
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
decryptAsync: sinon.stub(),
|
|
91
|
+
encryptAsync: sinon.stub(),
|
|
91
92
|
};
|
|
92
93
|
mockProvider = {
|
|
93
94
|
create: sinon.stub(),
|
|
94
95
|
get: sinon.stub(),
|
|
95
96
|
};
|
|
96
|
-
mockBitGo.
|
|
97
|
-
mockBitGo.
|
|
97
|
+
mockBitGo.decryptAsync.resolves(decryptedPrv);
|
|
98
|
+
mockBitGo.encryptAsync.resolves(reEncryptedPrv);
|
|
98
99
|
const putSendStub = sinon.stub().returns({ result: sinon.stub().resolves(updatedKeychain) });
|
|
99
100
|
mockBitGo.put.returns({ send: putSendStub });
|
|
100
101
|
mockProvider.get.resolves(mockAuthResult);
|
|
@@ -119,8 +120,8 @@ describe('attachPasskeyToWallet', function () {
|
|
|
119
120
|
sinon.assert.calledWith(mockWallets.get, { id: walletId });
|
|
120
121
|
sinon.assert.calledOnce(mockWallet.type);
|
|
121
122
|
sinon.assert.calledOnce(mockWallet.getEncryptedUserKeychain);
|
|
122
|
-
sinon.assert.calledOnce(mockBitGo.
|
|
123
|
-
sinon.assert.calledWithExactly(mockBitGo.
|
|
123
|
+
sinon.assert.calledOnce(mockBitGo.decryptAsync);
|
|
124
|
+
sinon.assert.calledWithExactly(mockBitGo.decryptAsync, { password: existingPassphrase, input: encryptedPrv });
|
|
124
125
|
// provider.get called with evalByCredential keyed on device.credentialId
|
|
125
126
|
sinon.assert.calledOnce(mockProvider.get);
|
|
126
127
|
const getArgs = mockProvider.get.firstCall.args[0];
|
|
@@ -142,8 +143,24 @@ describe('attachPasskeyToWallet', function () {
|
|
|
142
143
|
// prfSalt must be base64url (URL-safe, no padding) as required by server validation
|
|
143
144
|
assert.match(putBody.webauthnInfo.prfSalt, /^[A-Za-z0-9\-_]+$/);
|
|
144
145
|
assert.strictEqual(typeof putBody.webauthnInfo.encryptedPrv, 'string');
|
|
146
|
+
// encryptAsync must be called with encryptionVersion 2
|
|
147
|
+
sinon.assert.calledOnce(mockBitGo.encryptAsync);
|
|
148
|
+
sinon.assert.calledWithMatch(mockBitGo.encryptAsync, { encryptionVersion: 2 });
|
|
145
149
|
assert.strictEqual(result.id, keychainId);
|
|
146
150
|
});
|
|
151
|
+
it('should re-encrypt the private key as a v2 Argon2id envelope', async function () {
|
|
152
|
+
const expectedPrfPassword = (0, derivePassword_1.derivePassword)(prfResultBuffer);
|
|
153
|
+
await callAttach();
|
|
154
|
+
// The PRF-derived password and the decrypted xprv must be passed to encryptAsync
|
|
155
|
+
sinon.assert.calledWithMatch(mockBitGo.encryptAsync, {
|
|
156
|
+
password: expectedPrfPassword,
|
|
157
|
+
input: decryptedPrv,
|
|
158
|
+
encryptionVersion: 2,
|
|
159
|
+
});
|
|
160
|
+
// The v2 blob returned by encryptAsync is what gets stored on the server
|
|
161
|
+
const putBody = mockBitGo.put.firstCall.returnValue.send.firstCall.args[0];
|
|
162
|
+
assert.strictEqual(putBody.webauthnInfo.encryptedPrv, reEncryptedPrv);
|
|
163
|
+
});
|
|
147
164
|
it('should decode credentialId containing base64url-specific characters (- and _)', async function () {
|
|
148
165
|
const deviceWithUrlChars = {
|
|
149
166
|
...device,
|
|
@@ -187,7 +204,7 @@ describe('attachPasskeyToWallet', function () {
|
|
|
187
204
|
sinon.assert.notCalled(mockBitGo.put);
|
|
188
205
|
});
|
|
189
206
|
it('should propagate decrypt errors', async function () {
|
|
190
|
-
mockBitGo.
|
|
207
|
+
mockBitGo.decryptAsync.rejects(new Error('decryption failed'));
|
|
191
208
|
await assert.rejects(() => callAttach(), (err) => {
|
|
192
209
|
assert.ok(err.message.includes('decryption failed'));
|
|
193
210
|
return true;
|
|
@@ -202,4 +219,4 @@ describe('attachPasskeyToWallet', function () {
|
|
|
202
219
|
assert.strictEqual(evalKeys[0], device.credentialId);
|
|
203
220
|
});
|
|
204
221
|
});
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDJFQUF3RTtBQUd4RSxRQUFRLENBQUMsdUJBQXVCLEVBQUU7SUFDaEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ3BCLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNqQyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUM7SUFDakMsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFDdEMsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUM7SUFDNUMsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUM7SUFDdEMsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNoRCxNQUFNLGNBQWMsR0FBRyxrQkFBa0IsQ0FBQztJQUUxQyxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBRXhFLE1BQU0sTUFBTSxHQUFzQjtRQUNoQyxFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLFlBQVksRUFBRSxhQUFhO1FBQzNCLE9BQU8sRUFBRSw2Q0FBNkM7UUFDdEQsU0FBUyxFQUFFLElBQUk7S0FDaEIsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFzQjtRQUN4QyxTQUFTLEVBQUUsZUFBZTtRQUMxQixZQUFZLEVBQUUsYUFBYTtRQUMzQixPQUFPLEVBQUUsUUFBUTtLQUNsQixDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUc7UUFDdEIsRUFBRSxFQUFFLFVBQVU7UUFDZCxHQUFHLEVBQUUsVUFBVTtRQUNmLElB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b3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGF0dGFjaFBhc3NrZXlUb1dhbGxldCB9IGZyb20gJy4uLy4uL3NyYy9hdHRhY2hQYXNza2V5VG9XYWxsZXQnO1xuaW1wb3J0IHsgV2ViQXV0aG5PdHBEZXZpY2UsIFBhc3NrZXlBdXRoUmVzdWx0LCBXZWJBdXRoblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc3JjL3dlYkF1dGhuVHlwZXMnO1xuXG5kZXNjcmliZSgnYXR0YWNoUGFzc2tleVRvV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luID0gJ3RidGMnO1xuICBjb25zdCB3YWxsZXRJZCA9ICd3YWxsZXQtYWJjMTIzJztcbiAgY29uc3Qga2V5Y2hhaW5JZCA9ICdrZXktdXNlci1pZCc7XG4gIGNvbnN0IGVudGVycHJpc2VJZCA9ICdlbnRlcnByaXNlLXh5eic7XG4gIGNvbnN0IGVuY3J5cHRlZFBydiA9ICdlbmNyeXB0ZWQtcHJ2LXN0cmluZyc7XG4gIGNvbnN0IGRlY3J5cHRlZFBydiA9ICd4cHJ2LWRlY3J5cHRlZCc7XG4gIGNvbnN0IGV4aXN0aW5nUGFzc3BocmFzZSA9ICdjb3JyZWN0LXBhc3NwaHJhc2UnO1xuICBjb25zdCByZUVuY3J5cHRlZFBydiA9ICdyZS1lbmNyeXB0ZWQtcHJ2JztcblxuICBjb25zdCBwcmZSZXN1bHRCdWZmZXIgPSBuZXcgVWludDhBcnJheShbMHgxZSwgMHg1YywgMHhiNCwgMHg3OF0pLmJ1ZmZlcjtcblxuICBjb25zdCBkZXZpY2U6IFdlYkF1dGhuT3RwRGV2aWNlID0ge1xuICAgIGlkOiAnbW9uZ28tb2JqZWN0LWlkLTEyMycsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIHByZlNhbHQ6ICdacUo2NE0yZEw2NXpuMi1KeGQ1OFNNTjJJTGM5UWpiQ0Z4VVRHSGRfTEM4JyxcbiAgICBpc1Bhc3NrZXk6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgbW9ja0F1dGhSZXN1bHQ6IFBhc3NrZXlBdXRoUmVzdWx0ID0ge1xuICAgIHByZlJlc3VsdDogcHJmUmVzdWx0QnVmZmVyLFxuICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQtNDU2JyxcbiAgICBvdHBDb2RlOiAnMTIzNDU2JyxcbiAgfTtcblxuICBjb25zdCB1cGRhdGVkS2V5Y2hhaW4gPSB7XG4gICAgaWQ6IGtleWNoYWluSWQsXG4gICAgcHViOiAneHB1Yi0xMjMnLFxuICAgIHR5cGU6ICdpbmRlcGVuZGVudCcgYXMgY29uc3QsXG4gICAgZW5jcnlwdGVkUHJ2LFxuICB9O1xuXG4gIGxldCBtb2NrV2FsbGV0OiB7XG4gICAgdHlwZTogc2lub24uU2lub25TdHViO1xuICAgIHRvSlNPTjogc2lub24uU2lub25TdHViO1xuICAgIGdldEVuY3J5cHRlZFVzZXJLZXljaGFpbjogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrV2FsbGV0czoge1xuICAgIGdldDogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrQmFzZUNvaW46IHtcbiAgICB3YWxsZXRzOiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgbGV0IG1vY2tCaXRHbzoge1xuICAgIHVybDogc2lub24uU2lub25TdHViO1xuICAgIGNvaW46IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBwdXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBkZWNyeXB0OiBzaW5vbi5TaW5vblN0dWI7XG4gICAgZW5jcnlwdDogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrUHJvdmlkZXI6IHtcbiAgICBjcmVhdGU6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBnZXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrV2FsbGV0ID0ge1xuICAgICAgdHlwZTogc2lub24uc3R1YigpLnJldHVybnMoJ2hvdCcpLFxuICAgICAgdG9KU09OOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IGVudGVycHJpc2U6IGVudGVycHJpc2VJZCB9KSxcbiAgICAgIGdldEVuY3J5cHRlZFVzZXJLZXljaGFpbjogc2lub24uc3R1YigpLnJlc29sdmVzKHsgaWQ6IGtleWNoYWluSWQsIGVuY3J5cHRlZFBydiB9KSxcbiAgICB9O1xuXG4gICAgbW9ja1dhbGxldHMgPSB7XG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhtb2NrV2FsbGV0KSxcbiAgICB9O1xuXG4gICAgbW9ja0Jhc2VDb2luID0ge1xuICAgICAgd2FsbGV0czogc2lub24uc3R1YigpLnJldHVybnMobW9ja1dhbGxldHMpLFxuICAgIH07XG5cbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uXG4gICAgICAgIC5zdHViPFtwYXRoOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXJdLCBzdHJpbmc+KClcbiAgICAgICAgLmNhbGxzRmFrZSgocGF0aCwgdmVyc2lvbikgPT4gYC9hcGkvdiR7dmVyc2lvbiA/PyAxfSR7cGF0aH1gKSxcbiAgICAgIGNvaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tCYXNlQ29pbiksXG4gICAgICBwdXQ6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGRlY3J5cHQ6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGVuY3J5cHQ6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuXG4gICAgbW9ja1Byb3ZpZGVyID0ge1xuICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCksXG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKSxcbiAgICB9O1xuXG4gICAgbW9ja0JpdEdvLmRlY3J5cHQucmV0dXJucyhkZWNyeXB0ZWRQcnYpO1xuICAgIG1vY2tCaXRHby5lbmNyeXB0LnJldHVybnMocmVFbmNyeXB0ZWRQcnYpO1xuXG4gICAgY29uc3QgcHV0U2VuZFN0dWIgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHVwZGF0ZWRLZXljaGFpbikgfSk7XG4gICAgbW9ja0JpdEdvLnB1dC5yZXR1cm5zKHsgc2VuZDogcHV0U2VuZFN0dWIgfSk7XG5cbiAgICBtb2NrUHJvdmlkZXIuZ2V0LnJlc29sdmVzKG1vY2tBdXRoUmVzdWx0KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIGNhbGxBdHRhY2gob3ZlcnJpZGVzPzogUGFydGlhbDxQYXJhbWV0ZXJzPHR5cGVvZiBhdHRhY2hQYXNza2V5VG9XYWxsZXQ+WzBdPikge1xuICAgIHJldHVybiBhdHRhY2hQYXNza2V5VG9XYWxsZXQoe1xuICAgICAgYml0Z286IG1vY2tCaXRHbyBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8dHlwZW9mIGF0dGFjaFBhc3NrZXlUb1dhbGxldD5bMF1bJ2JpdGdvJ10sXG4gICAgICBjb2luLFxuICAgICAgd2FsbGV0SWQsXG4gICAgICBkZXZpY2UsXG4gICAgICBleGlzdGluZ1Bhc3NwaHJhc2UsXG4gICAgICBwcm92aWRlcjogbW9ja1Byb3ZpZGVyIGFzIHVua25vd24gYXMgV2ViQXV0aG5Qcm92aWRlcixcbiAgICAgIC4uLm92ZXJyaWRlcyxcbiAgICB9KTtcbiAgfVxuXG4gIGl0KCdzaG91bGQgYXR0YWNoIGEgcGFzc2tleSBhbmQgcmV0dXJuIHRoZSB1cGRhdGVkIGtleWNoYWluJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCBjb2luKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrV2FsbGV0cy5nZXQsIHsgaWQ6IHdhbGxldElkIH0pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tXYWxsZXQudHlwZSk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja1dhbGxldC5nZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW4pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tCaXRHby5kZWNyeXB0KTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja0JpdEdvLmRlY3J5cHQsIHsgcGFzc3dvcmQ6IGV4aXN0aW5nUGFzc3BocmFzZSwgaW5wdXQ6IGVuY3J5cHRlZFBydiB9KTtcblxuICAgIC8vIHByb3ZpZGVyLmdldCBjYWxsZWQgd2l0aCBldmFsQnlDcmVkZW50aWFsIGtleWVkIG9uIGRldmljZS5jcmVkZW50aWFsSWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrUHJvdmlkZXIuZ2V0KTtcbiAgICBjb25zdCBnZXRBcmdzID0gbW9ja1Byb3ZpZGVyLmdldC5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQub2soZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGdldEFyZ3MuZXZhbEJ5Q3JlZGVudGlhbFtkZXZpY2UuY3JlZGVudGlhbElkXSwgJ3N0cmluZycpO1xuXG4gICAgLy8gYWxsb3dDcmVkZW50aWFscyBtdXN0IGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBjcmVkZW50aWFsIElEIGFzIGFuIEFycmF5QnVmZmVyXG4gICAgYXNzZXJ0Lm9rKEFycmF5LmlzQXJyYXkoZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFscykpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzLmxlbmd0aCwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHNbMF0udHlwZSwgJ3B1YmxpYy1rZXknKTtcbiAgICBhc3NlcnQub2soZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFsc1swXS5pZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcblxuICAgIC8vIFBVVCBjYWxsZWQgd2l0aCBjb3JyZWN0IHNoYXBlXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLnB1dCk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnB1dCwgYC9hcGkvdjIvJHtjb2lufS9rZXkvJHtrZXljaGFpbklkfWApO1xuICAgIGNvbnN0IHNlbmRTdHViID0gbW9ja0JpdEdvLnB1dC5maXJzdENhbGwucmV0dXJuVmFsdWUuc2VuZDtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShzZW5kU3R1Yik7XG4gICAgY29uc3QgcHV0Qm9keSA9IHNlbmRTdHViLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGFzc2VydC5vayhwdXRCb2R5LndlYmF1dGhuSW5mbyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHB1dEJvZHkud2ViYXV0aG5JbmZvLm90cERldmljZUlkLCBkZXZpY2UuaWQpO1xuICAgIC8vIHByZlNhbHQgbXVzdCBiZSBiYXNlNjR1cmwgKFVSTC1zYWZlLCBubyBwYWRkaW5nKSBhcyByZXF1aXJlZCBieSBzZXJ2ZXIgdmFsaWRhdGlvblxuICAgIGFzc2VydC5tYXRjaChwdXRCb2R5LndlYmF1dGhuSW5mby5wcmZTYWx0LCAvXltBLVphLXowLTlcXC1fXSskLyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBwdXRCb2R5LndlYmF1dGhuSW5mby5lbmNyeXB0ZWRQcnYsICdzdHJpbmcnKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQuaWQsIGtleWNoYWluSWQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRlY29kZSBjcmVkZW50aWFsSWQgY29udGFpbmluZyBiYXNlNjR1cmwtc3BlY2lmaWMgY2hhcmFjdGVycyAoLSBhbmQgXyknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZGV2aWNlV2l0aFVybENoYXJzOiBXZWJBdXRobk90cERldmljZSA9IHtcbiAgICAgIC4uLmRldmljZSxcbiAgICAgIGNyZWRlbnRpYWxJZDogJ2FiYy1kZWZfZ2hpK2prbCcsXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNhbGxBdHRhY2goeyBkZXZpY2U6IGRldmljZVdpdGhVcmxDaGFycyB9KTtcbiAgICBhc3NlcnQub2socmVzdWx0KTtcblxuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGFzc2VydC5vayhnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzWzBdLmlkIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIGRldmljZS5wcmZTYWx0IGlzIHVuZGVmaW5lZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXZpY2VOb1ByZjogV2ViQXV0aG5PdHBEZXZpY2UgPSB7IC4uLmRldmljZSwgcHJmU2FsdDogdW5kZWZpbmVkIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goeyBkZXZpY2U6IGRldmljZU5vUHJmIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGVyci5tZXNzYWdlLCAnUFJGIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlLiBQbGVhc2UgdXNlIGEgZGlmZmVyZW50IHBhc3NrZXkuJyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5jb2luKTtcbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5wdXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGlmIHdhbGxldCBpcyBub3QgYSBob3Qgd2FsbGV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQudHlwZS5yZXR1cm5zKCdjb2xkJyk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnbm90IGEgaG90IHdhbGxldCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgd2FsbGV0IGhhcyBubyBlbnRlcnByaXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQudG9KU09OLnJldHVybnMoeyBlbnRlcnByaXNlOiB1bmRlZmluZWQgfSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnaGFzIG5vIGVudGVycHJpc2UnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgUFJGIGFzc2VydGlvbiByZXR1cm5zIG5vIHJlc3VsdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrUHJvdmlkZXIuZ2V0LnJlc29sdmVzKHsgLi4ubW9ja0F1dGhSZXN1bHQsIHByZlJlc3VsdDogdW5kZWZpbmVkIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PiBjYWxsQXR0YWNoKCksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1BSRiBhc3NlcnRpb24gZGlkIG5vdCByZXR1cm4gYSByZXN1bHQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5wdXQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBkZWNyeXB0IGVycm9ycycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZGVjcnlwdC50aHJvd3MobmV3IEVycm9yKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdkZWNyeXB0aW9uIGZhaWxlZCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdXNlIGRldmljZS5jcmVkZW50aWFsSWQgYXMgdGhlIGtleSBpbiBldmFsQnlDcmVkZW50aWFsJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGNhbGxBdHRhY2goKTtcblxuICAgIGNvbnN0IGdldEFyZ3MgPSBtb2NrUHJvdmlkZXIuZ2V0LmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGNvbnN0IGV2YWxLZXlzID0gT2JqZWN0LmtleXMoZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXMubGVuZ3RoLCAxKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXZhbEtleXNbMF0sIGRldmljZS5jcmVkZW50aWFsSWQpO1xuICB9KTtcbn0pO1xuIl19
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvYXR0YWNoUGFzc2tleVRvV2FsbGV0LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBaUM7QUFDakMsNkNBQStCO0FBQy9CLDJFQUF3RTtBQUN4RSw2REFBMEQ7QUFHMUQsUUFBUSxDQUFDLHVCQUF1QixFQUFFO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNwQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDO0lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUM7SUFDaEQsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7SUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUV4RSxNQUFNLE1BQU0sR0FBc0I7UUFDaEMsRUFBRSxFQUFFLHFCQUFxQjtRQUN6QixZQUFZLEVBQUUsYUFBYTtRQUMzQixPQUFPLEVBQUUsNkNBQTZDO1FBQ3RELFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixNQUFNLGNBQWMsR0FBc0I7UUFDeEMsU0FBUyxFQUFFLGVBQWU7UUFDMUIsWUFBWSxFQUFFLGFBQWE7UUFDM0IsT0FBTyxFQUFFLFFBQVE7S0FDbEIsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHO1FBQ3RCLEVBQUUsRUFBRSxVQUFVO1FBQ2QsR0FBRyxFQUFF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TUFBTSxDQUFDLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQ2xCLENBQUMsR0FBVSxFQUFFLEVBQUU7WUFDYixNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FDRixDQUFDO1FBRUYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtEQUErRCxFQUFFLEtBQUs7UUFDdkUsTUFBTSxVQUFVLEVBQUUsQ0FBQztRQUVuQixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGF0dGFjaFBhc3NrZXlUb1dhbGxldCB9IGZyb20gJy4uLy4uL3NyYy9hdHRhY2hQYXNza2V5VG9XYWxsZXQnO1xuaW1wb3J0IHsgZGVyaXZlUGFzc3dvcmQgfSBmcm9tICcuLi8uLi9zcmMvZGVyaXZlUGFzc3dvcmQnO1xuaW1wb3J0IHsgV2ViQXV0aG5PdHBEZXZpY2UsIFBhc3NrZXlBdXRoUmVzdWx0LCBXZWJBdXRoblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vc3JjL3dlYkF1dGhuVHlwZXMnO1xuXG5kZXNjcmliZSgnYXR0YWNoUGFzc2tleVRvV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luID0gJ3RidGMnO1xuICBjb25zdCB3YWxsZXRJZCA9ICd3YWxsZXQtYWJjMTIzJztcbiAgY29uc3Qga2V5Y2hhaW5JZCA9ICdrZXktdXNlci1pZCc7XG4gIGNvbnN0IGVudGVycHJpc2VJZCA9ICdlbnRlcnByaXNlLXh5eic7XG4gIGNvbnN0IGVuY3J5cHRlZFBydiA9ICdlbmNyeXB0ZWQtcHJ2LXN0cmluZyc7XG4gIGNvbnN0IGRlY3J5cHRlZFBydiA9ICd4cHJ2LWRlY3J5cHRlZCc7XG4gIGNvbnN0IGV4aXN0aW5nUGFzc3BocmFzZSA9ICdjb3JyZWN0LXBhc3NwaHJhc2UnO1xuICBjb25zdCByZUVuY3J5cHRlZFBydiA9ICdyZS1lbmNyeXB0ZWQtcHJ2JztcblxuICBjb25zdCBwcmZSZXN1bHRCdWZmZXIgPSBuZXcgVWludDhBcnJheShbMHgxZSwgMHg1YywgMHhiNCwgMHg3OF0pLmJ1ZmZlcjtcblxuICBjb25zdCBkZXZpY2U6IFdlYkF1dGhuT3RwRGV2aWNlID0ge1xuICAgIGlkOiAnbW9uZ28tb2JqZWN0LWlkLTEyMycsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIHByZlNhbHQ6ICdacUo2NE0yZEw2NXpuMi1KeGQ1OFNNTjJJTGM5UWpiQ0Z4VVRHSGRfTEM4JyxcbiAgICBpc1Bhc3NrZXk6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgbW9ja0F1dGhSZXN1bHQ6IFBhc3NrZXlBdXRoUmVzdWx0ID0ge1xuICAgIHByZlJlc3VsdDogcHJmUmVzdWx0QnVmZmVyLFxuICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQtNDU2JyxcbiAgICBvdHBDb2RlOiAnMTIzNDU2JyxcbiAgfTtcblxuICBjb25zdCB1cGRhdGVkS2V5Y2hhaW4gPSB7XG4gICAgaWQ6IGtleWNoYWluSWQsXG4gICAgcHViOiAneHB1Yi0xMjMnLFxuICAgIHR5cGU6ICdpbmRlcGVuZGVudCcgYXMgY29uc3QsXG4gICAgZW5jcnlwdGVkUHJ2LFxuICB9O1xuXG4gIGxldCBtb2NrV2FsbGV0OiB7XG4gICAgdHlwZTogc2lub24uU2lub25TdHViO1xuICAgIHRvSlNPTjogc2lub24uU2lub25TdHViO1xuICAgIGdldEVuY3J5cHRlZFVzZXJLZXljaGFpbjogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrV2FsbGV0czoge1xuICAgIGdldDogc2lub24uU2lub25TdHViO1xuICB9O1xuXG4gIGxldCBtb2NrQmFzZUNvaW46IHtcbiAgICB3YWxsZXRzOiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgbGV0IG1vY2tCaXRHbzoge1xuICAgIHVybDogc2lub24uU2lub25TdHViO1xuICAgIGNvaW46IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBwdXQ6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLlNpbm9uU3R1YjtcbiAgICBlbmNyeXB0QXN5bmM6IHNpbm9uLlNpbm9uU3R1YjtcbiAgfTtcblxuICBsZXQgbW9ja1Byb3ZpZGVyOiB7XG4gICAgY3JlYXRlOiBzaW5vbi5TaW5vblN0dWI7XG4gICAgZ2V0OiBzaW5vbi5TaW5vblN0dWI7XG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldCA9IHtcbiAgICAgIHR5cGU6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKCdob3QnKSxcbiAgICAgIHRvSlNPTjogc2lub24uc3R1YigpLnJldHVybnMoeyBlbnRlcnByaXNlOiBlbnRlcnByaXNlSWQgfSksXG4gICAgICBnZXRFbmNyeXB0ZWRVc2VyS2V5Y2hhaW46IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkLCBlbmNyeXB0ZWRQcnYgfSksXG4gICAgfTtcblxuICAgIG1vY2tXYWxsZXRzID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1dhbGxldCksXG4gICAgfTtcblxuICAgIG1vY2tCYXNlQ29pbiA9IHtcbiAgICAgIHdhbGxldHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tXYWxsZXRzKSxcbiAgICB9O1xuXG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vblxuICAgICAgICAuc3R1YjxbcGF0aDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyXSwgc3RyaW5nPigpXG4gICAgICAgIC5jYWxsc0Zha2UoKHBhdGgsIHZlcnNpb24pID0+IGAvYXBpL3Yke3ZlcnNpb24gPz8gMX0ke3BhdGh9YCksXG4gICAgICBjb2luOiBzaW5vbi5zdHViKCkucmV0dXJucyhtb2NrQmFzZUNvaW4pLFxuICAgICAgcHV0OiBzaW5vbi5zdHViKCksXG4gICAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGVuY3J5cHRBc3luYzogc2lub24uc3R1YigpLFxuICAgIH07XG5cbiAgICBtb2NrUHJvdmlkZXIgPSB7XG4gICAgICBjcmVhdGU6IHNpbm9uLnN0dWIoKSxcbiAgICAgIGdldDogc2lub24uc3R1YigpLFxuICAgIH07XG5cbiAgICBtb2NrQml0R28uZGVjcnlwdEFzeW5jLnJlc29sdmVzKGRlY3J5cHRlZFBydik7XG4gICAgbW9ja0JpdEdvLmVuY3J5cHRBc3luYy5yZXNvbHZlcyhyZUVuY3J5cHRlZFBydik7XG5cbiAgICBjb25zdCBwdXRTZW5kU3R1YiA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXModXBkYXRlZEtleWNoYWluKSB9KTtcbiAgICBtb2NrQml0R28ucHV0LnJldHVybnMoeyBzZW5kOiBwdXRTZW5kU3R1YiB9KTtcblxuICAgIG1vY2tQcm92aWRlci5nZXQucmVzb2x2ZXMobW9ja0F1dGhSZXN1bHQpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gY2FsbEF0dGFjaChvdmVycmlkZXM/OiBQYXJ0aWFsPFBhcmFtZXRlcnM8dHlwZW9mIGF0dGFjaFBhc3NrZXlUb1dhbGxldD5bMF0+KSB7XG4gICAgcmV0dXJuIGF0dGFjaFBhc3NrZXlUb1dhbGxldCh7XG4gICAgICBiaXRnbzogbW9ja0JpdEdvIGFzIHVua25vd24gYXMgUGFyYW1ldGVyczx0eXBlb2YgYXR0YWNoUGFzc2tleVRvV2FsbGV0PlswXVsnYml0Z28nXSxcbiAgICAgIGNvaW4sXG4gICAgICB3YWxsZXRJZCxcbiAgICAgIGRldmljZSxcbiAgICAgIGV4aXN0aW5nUGFzc3BocmFzZSxcbiAgICAgIHByb3ZpZGVyOiBtb2NrUHJvdmlkZXIgYXMgdW5rbm93biBhcyBXZWJBdXRoblByb3ZpZGVyLFxuICAgICAgLi4ub3ZlcnJpZGVzLFxuICAgIH0pO1xuICB9XG5cbiAgaXQoJ3Nob3VsZCBhdHRhY2ggYSBwYXNza2V5IGFuZCByZXR1cm4gdGhlIHVwZGF0ZWQga2V5Y2hhaW4nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbEF0dGFjaCgpO1xuXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sIGNvaW4pO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tXYWxsZXRzLmdldCwgeyBpZDogd2FsbGV0SWQgfSk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja1dhbGxldC50eXBlKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrV2FsbGV0LmdldEVuY3J5cHRlZFVzZXJLZXljaGFpbik7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLmRlY3J5cHRBc3luYyk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tCaXRHby5kZWNyeXB0QXN5bmMsIHsgcGFzc3dvcmQ6IGV4aXN0aW5nUGFzc3BocmFzZSwgaW5wdXQ6IGVuY3J5cHRlZFBydiB9KTtcblxuICAgIC8vIHByb3ZpZGVyLmdldCBjYWxsZWQgd2l0aCBldmFsQnlDcmVkZW50aWFsIGtleWVkIG9uIGRldmljZS5jcmVkZW50aWFsSWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrUHJvdmlkZXIuZ2V0KTtcbiAgICBjb25zdCBnZXRBcmdzID0gbW9ja1Byb3ZpZGVyLmdldC5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQub2soZ2V0QXJncy5ldmFsQnlDcmVkZW50aWFsKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodHlwZW9mIGdldEFyZ3MuZXZhbEJ5Q3JlZGVudGlhbFtkZXZpY2UuY3JlZGVudGlhbElkXSwgJ3N0cmluZycpO1xuXG4gICAgLy8gYWxsb3dDcmVkZW50aWFscyBtdXN0IGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBjcmVkZW50aWFsIElEIGFzIGFuIEFycmF5QnVmZmVyXG4gICAgYXNzZXJ0Lm9rKEFycmF5LmlzQXJyYXkoZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFscykpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRBcmdzLnB1YmxpY0tleS5hbGxvd0NyZWRlbnRpYWxzLmxlbmd0aCwgMSk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHNbMF0udHlwZSwgJ3B1YmxpYy1rZXknKTtcbiAgICBhc3NlcnQub2soZ2V0QXJncy5wdWJsaWNLZXkuYWxsb3dDcmVkZW50aWFsc1swXS5pZCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKTtcblxuICAgIC8vIFBVVCBjYWxsZWQgd2l0aCBjb3JyZWN0IHNoYXBlXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLnB1dCk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnB1dCwgYC9hcGkvdjIvJHtjb2lufS9rZXkvJHtrZXljaGFpbklkfWApO1xuICAgIGNvbnN0IHNlbmRTdHViID0gbW9ja0JpdEdvLnB1dC5maXJzdENhbGwucmV0dXJuVmFsdWUuc2VuZDtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShzZW5kU3R1Yik7XG4gICAgY29uc3QgcHV0Qm9keSA9IHNlbmRTdHViLmZpcnN0Q2FsbC5hcmdzWzBdO1xuICAgIGFzc2VydC5vayhwdXRCb2R5LndlYmF1dGhuSW5mbyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHB1dEJvZHkud2ViYXV0aG5JbmZvLm90cERldmljZUlkLCBkZXZpY2UuaWQpO1xuICAgIC8vIHByZlNhbHQgbXVzdCBiZSBiYXNlNjR1cmwgKFVSTC1zYWZlLCBubyBwYWRkaW5nKSBhcyByZXF1aXJlZCBieSBzZXJ2ZXIgdmFsaWRhdGlvblxuICAgIGFzc2VydC5tYXRjaChwdXRCb2R5LndlYmF1dGhuSW5mby5wcmZTYWx0LCAvXltBLVphLXowLTlcXC1fXSskLyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR5cGVvZiBwdXRCb2R5LndlYmF1dGhuSW5mby5lbmNyeXB0ZWRQcnYsICdzdHJpbmcnKTtcblxuICAgIC8vIGVuY3J5cHRBc3luYyBtdXN0IGJlIGNhbGxlZCB3aXRoIGVuY3J5cHRpb25WZXJzaW9uIDJcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkT25jZShtb2NrQml0R28uZW5jcnlwdEFzeW5jKTtcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKG1vY2tCaXRHby5lbmNyeXB0QXN5bmMsIHsgZW5jcnlwdGlvblZlcnNpb246IDIgfSk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LmlkLCBrZXljaGFpbklkKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZS1lbmNyeXB0IHRoZSBwcml2YXRlIGtleSBhcyBhIHYyIEFyZ29uMmlkIGVudmVsb3BlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGV4cGVjdGVkUHJmUGFzc3dvcmQgPSBkZXJpdmVQYXNzd29yZChwcmZSZXN1bHRCdWZmZXIpO1xuXG4gICAgYXdhaXQgY2FsbEF0dGFjaCgpO1xuXG4gICAgLy8gVGhlIFBSRi1kZXJpdmVkIHBhc3N3b3JkIGFuZCB0aGUgZGVjcnlwdGVkIHhwcnYgbXVzdCBiZSBwYXNzZWQgdG8gZW5jcnlwdEFzeW5jXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChtb2NrQml0R28uZW5jcnlwdEFzeW5jLCB7XG4gICAgICBwYXNzd29yZDogZXhwZWN0ZWRQcmZQYXNzd29yZCxcbiAgICAgIGlucHV0OiBkZWNyeXB0ZWRQcnYsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbjogMixcbiAgICB9KTtcblxuICAgIC8vIFRoZSB2MiBibG9iIHJldHVybmVkIGJ5IGVuY3J5cHRBc3luYyBpcyB3aGF0IGdldHMgc3RvcmVkIG9uIHRoZSBzZXJ2ZXJcbiAgICBjb25zdCBwdXRCb2R5ID0gbW9ja0JpdEdvLnB1dC5maXJzdENhbGwucmV0dXJuVmFsdWUuc2VuZC5maXJzdENhbGwuYXJnc1swXTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocHV0Qm9keS53ZWJhdXRobkluZm8uZW5jcnlwdGVkUHJ2LCByZUVuY3J5cHRlZFBydik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGVjb2RlIGNyZWRlbnRpYWxJZCBjb250YWluaW5nIGJhc2U2NHVybC1zcGVjaWZpYyBjaGFyYWN0ZXJzICgtIGFuZCBfKScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkZXZpY2VXaXRoVXJsQ2hhcnM6IFdlYkF1dGhuT3RwRGV2aWNlID0ge1xuICAgICAgLi4uZGV2aWNlLFxuICAgICAgY3JlZGVudGlhbElkOiAnYWJjLWRlZl9naGkramtsJyxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2FsbEF0dGFjaCh7IGRldmljZTogZGV2aWNlV2l0aFVybENoYXJzIH0pO1xuICAgIGFzc2VydC5vayhyZXN1bHQpO1xuXG4gICAgY29uc3QgZ2V0QXJncyA9IG1vY2tQcm92aWRlci5nZXQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgYXNzZXJ0Lm9rKGdldEFyZ3MucHVibGljS2V5LmFsbG93Q3JlZGVudGlhbHNbMF0uaWQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgZGV2aWNlLnByZlNhbHQgaXMgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRldmljZU5vUHJmOiBXZWJBdXRobk90cERldmljZSA9IHsgLi4uZGV2aWNlLCBwcmZTYWx0OiB1bmRlZmluZWQgfTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCh7IGRldmljZTogZGV2aWNlTm9QcmYgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZXJyLm1lc3NhZ2UsICdQUkYgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkZXZpY2UuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgcGFzc2tleS4nKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmNvaW4pO1xuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgd2FsbGV0IGlzIG5vdCBhIGhvdCB3YWxsZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldC50eXBlLnJldHVybnMoJ2NvbGQnKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdub3QgYSBob3Qgd2FsbGV0JykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28ucHV0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiB3YWxsZXQgaGFzIG5vIGVudGVycHJpc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldC50b0pTT04ucmV0dXJucyh7IGVudGVycHJpc2U6IHVuZGVmaW5lZCB9KTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT4gY2FsbEF0dGFjaCgpLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdoYXMgbm8gZW50ZXJwcmlzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBpZiBQUkYgYXNzZXJ0aW9uIHJldHVybnMgbm8gcmVzdWx0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tQcm92aWRlci5nZXQucmVzb2x2ZXMoeyAuLi5tb2NrQXV0aFJlc3VsdCwgcHJmUmVzdWx0OiB1bmRlZmluZWQgfSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+IGNhbGxBdHRhY2goKSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnUFJGIGFzc2VydGlvbiBkaWQgbm90IHJldHVybiBhIHJlc3VsdCcpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLnB1dCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIGRlY3J5cHQgZXJyb3JzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHby5kZWNyeXB0QXN5bmMucmVqZWN0cyhuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZmFpbGVkJykpO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PiBjYWxsQXR0YWNoKCksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2RlY3J5cHRpb24gZmFpbGVkJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28ucHV0KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB1c2UgZGV2aWNlLmNyZWRlbnRpYWxJZCBhcyB0aGUga2V5IGluIGV2YWxCeUNyZWRlbnRpYWwnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgY2FsbEF0dGFjaCgpO1xuXG4gICAgY29uc3QgZ2V0QXJncyA9IG1vY2tQcm92aWRlci5nZXQuZmlyc3RDYWxsLmFyZ3NbMF07XG4gICAgY29uc3QgZXZhbEtleXMgPSBPYmplY3Qua2V5cyhnZXRBcmdzLmV2YWxCeUNyZWRlbnRpYWwpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChldmFsS2V5cy5sZW5ndGgsIDEpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChldmFsS2V5c1swXSwgZGV2aWNlLmNyZWRlbnRpYWxJZCk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -67,7 +67,7 @@ describe('removePasskeyFromWallet', function () {
|
|
|
67
67
|
wallets: sinon.stub().returns(mockWallets),
|
|
68
68
|
keychains: sinon.stub().returns(mockKeychains),
|
|
69
69
|
}),
|
|
70
|
-
|
|
70
|
+
decryptAsync: sinon.stub().resolves('xprv-decrypted'),
|
|
71
71
|
del: sinon.stub().returns({
|
|
72
72
|
result: sinon.stub().resolves({}),
|
|
73
73
|
}),
|
|
@@ -96,7 +96,7 @@ describe('removePasskeyFromWallet', function () {
|
|
|
96
96
|
sinon.assert.calledWithExactly(mockBitGo.del, `/api/v2/key/${keychainId}/webauthndevice/${device.id}`);
|
|
97
97
|
});
|
|
98
98
|
it('should throw and not call DELETE if passphrase is wrong', async function () {
|
|
99
|
-
mockBitGo.
|
|
99
|
+
mockBitGo.decryptAsync = sinon.stub().resolves(undefined);
|
|
100
100
|
await assert.rejects(() => (0, src_1.removePasskeyFromWallet)({
|
|
101
101
|
bitgo: mockBitGo,
|
|
102
102
|
coin: coinName,
|
|
@@ -167,4 +167,4 @@ describe('removePasskeyFromWallet', function () {
|
|
|
167
167
|
});
|
|
168
168
|
});
|
|
169
169
|
});
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9yZW1vdmVQYXNza2V5RnJvbVdhbGxldC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQixtQ0FBb0Q7QUFFcEQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN4QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLFlBQVksRUFBRSxhQUFhO1FBQzNCLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFVBQWUsQ0FBQztJQUNwQixJQUFJLGFBQWtCLENBQUM7SUFDdkIsSUFBSSxXQUFnQixDQUFDO0lBRXJCLFVBQVUsQ0FBQztRQUNULFVBQVUsR0FBRztZQUNYLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM1RSxDQUFDO1FBRUYsV0FBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLENBQUM7UUFFRixhQUFhLEdBQUc7WUFDZCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEs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LFFBQVE7WUFDZCxRQUFRO1lBQ1IsTUFBTTtZQUNOLGdCQUFnQjtTQUNqQixDQUFDLEVBQ0osQ0FBQyxHQUFVLEVBQUUsRUFBRTtZQUNiLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyByZW1vdmVQYXNza2V5RnJvbVdhbGxldCB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdyZW1vdmVQYXNza2V5RnJvbVdhbGxldCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbk5hbWUgPSAndGJ0Yyc7XG4gIGNvbnN0IHdhbGxldElkID0gJ3dhbGxldC1hYmMxMjMnO1xuICBjb25zdCBrZXljaGFpbklkID0gJ2tleS11c2VyLWlkJztcbiAgY29uc3QgZW5jcnlwdGVkUHJ2ID0gJ2VuY3J5cHRlZC1wcnYtc3RyaW5nJztcbiAgY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdjb3JyZWN0LXBhc3NwaHJhc2UnO1xuXG4gIGNvbnN0IGRldmljZSA9IHtcbiAgICBpZDogJ21vbmdvLW9iamVjdC1pZC0xMjMnLFxuICAgIGNyZWRlbnRpYWxJZDogJ2NyZWQtaWQtNDU2JyxcbiAgICBwcmZTYWx0OiAnc29tZS1zYWx0JyxcbiAgICBpc1Bhc3NrZXk6IHRydWUsXG4gIH07XG5cbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBsZXQgbW9ja1dhbGxldDogYW55O1xuICBsZXQgbW9ja0tleWNoYWluczogYW55O1xuICBsZXQgbW9ja1dhbGxldHM6IGFueTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrV2FsbGV0ID0ge1xuICAgICAga2V5SWRzOiBzaW5vbi5zdHViKCkucmV0dXJucyhba2V5Y2hhaW5JZCwgJ2JhY2t1cC1rZXktaWQnLCAnYml0Z28ta2V5LWlkJ10pLFxuICAgIH07XG5cbiAgICBtb2NrV2FsbGV0cyA9IHtcbiAgICAgIGdldDogc2lub24uc3R1YigpLnJlc29sdmVzKG1vY2tXYWxsZXQpLFxuICAgIH07XG5cbiAgICBtb2NrS2V5Y2hhaW5zID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDoga2V5Y2hhaW5JZCwgZW5jcnlwdGVkUHJ2IH0pLFxuICAgIH07XG5cbiAgICBtb2NrQml0R28gPSB7XG4gICAgICBjb2luOiBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICAgIHdhbGxldHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tXYWxsZXRzKSxcbiAgICAgICAga2V5Y2hhaW5zOiBzaW5vbi5zdHViKCkucmV0dXJucyhtb2NrS2V5Y2hhaW5zKSxcbiAgICAgIH0pLFxuICAgICAgZGVjcnlwdDogc2lub24uc3R1YigpLnJldHVybnMoJ3hwcnYtZGVjcnlwdGVkJyksXG4gICAgICBkZWw6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe30pLFxuICAgICAgfSksXG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZywgdmVyc2lvbj86IG51bWJlcikgPT4gYC9hcGkvdiR7dmVyc2lvbiA/PyAxfSR7cGF0aH1gKSxcbiAgICB9O1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdWNjZXNzZnVsbHkgcmVtb3ZlIGEgcGFzc2tleSBkZXZpY2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgd2FsbGV0SWQsXG4gICAgICBkZXZpY2UsXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgIH0pO1xuXG4gICAgLy8gVmVyaWZ5IGNvaW4gd2FzIGluaXRpYWxpemVkXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tCaXRHby5jb2luLCBjb2luTmFtZSk7XG5cbiAgICAvLyBWZXJpZnkgd2FsbGV0IHdhcyBmZXRjaGVkXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tXYWxsZXRzLmdldCwgeyBpZDogd2FsbGV0SWQgfSk7XG5cbiAgICAvLyBWZXJpZnkga2V5Y2hhaW4gd2FzIGZldGNoZWQgd2l0aCBjb3JyZWN0IElEXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tLZXljaGFpbnMuZ2V0LCB7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gICAgLy8gVmVyaWZ5IERFTEVURSB3YXMgY2FsbGVkIHdpdGggZGV2aWNlLmlkIChub3QgY3JlZGVudGlhbElkKVxuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRPbmNlKG1vY2tCaXRHby5kZWwpO1xuICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoRXhhY3RseShtb2NrQml0R28uZGVsLCBgL2FwaS92Mi9rZXkvJHtrZXljaGFpbklkfS93ZWJhdXRobmRldmljZS8ke2RldmljZS5pZH1gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbmQgbm90IGNhbGwgREVMRVRFIGlmIHBhc3NwaHJhc2UgaXMgd3JvbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvLmRlY3J5cHQgPSBzaW5vbi5zdHViKCkudGhyb3dzKG5ldyBFcnJvcignZGVjcnlwdGlvbiBmYWlsZWQnKSk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnd3JvbmctcGFzc3BocmFzZScsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbmNvcnJlY3Qgd2FsbGV0IHBhc3NwaHJhc2UnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGRlc2NyaXB0aXZlbHkgaWYga2V5Y2hhaW4gaGFzIG5vIGVuY3J5cHRlZFBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zLmdldCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0luY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmRlbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgZGV2aWNlLmlkIGlzIGVtcHR5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRldmljZU5vSWQgPSB7IC4uLmRldmljZSwgaWQ6ICcnIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZTogZGV2aWNlTm9JZCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnZGV2aWNlLmlkIGlzIHJlcXVpcmVkJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28uY29pbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIHdhbGxldCBmZXRjaCBlcnJvcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldHMuZ2V0ID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCc0MDQgTm90IEZvdW5kJykpO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJzQwNCBOb3QgRm91bmQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBERUxFVEUgZXJyb3JzIGFmdGVyIHBhc3NwaHJhc2UgdmVyaWZpY2F0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHby5kZWwgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpKSxcbiAgICB9KTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgICAgIGJpdGdvOiBtb2NrQml0R28sXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgICAgZGV2aWNlLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCc1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn0pO1xuIl19
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlUGFzc2tleUZyb21XYWxsZXQudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdW5pdC9yZW1vdmVQYXNza2V5RnJvbVdhbGxldC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQixtQ0FBb0Q7QUFFcEQsUUFBUSxDQUFDLHlCQUF5QixFQUFFO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN4QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUM7SUFDakMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLE1BQU0sWUFBWSxHQUFHLHNCQUFzQixDQUFDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsb0JBQW9CLENBQUM7SUFFOUMsTUFBTSxNQUFNLEdBQUc7UUFDYixFQUFFLEVBQUUscUJBQXFCO1FBQ3pCLFlBQVksRUFBRSxhQUFhO1FBQzNCLE9BQU8sRUFBRSxXQUFXO1FBQ3BCLFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUM7SUFFRixJQUFJLFNBQWMsQ0FBQztJQUNuQixJQUFJLFVBQWUsQ0FBQztJQUNwQixJQUFJLGFBQWtCLENBQUM7SUFDdkIsSUFBSSxXQUFnQixDQUFDO0lBRXJCLFVBQVUsQ0FBQztRQUNULFVBQVUsR0FBRztZQUNYLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM1RSxDQUFDO1FBRUYsV0FBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1NBQ3ZDLENBQUM7UUFFRixhQUFhLEdBQUc7WUFDZCxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEs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QUFNO1lBQ04sZ0JBQWdCO1NBQ2pCLENBQUMsRUFDSixDQUFDLEdBQVUsRUFBRSxFQUFFO1lBQ2IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0IH0gZnJvbSAnLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ3JlbW92ZVBhc3NrZXlGcm9tV2FsbGV0JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luTmFtZSA9ICd0YnRjJztcbiAgY29uc3Qgd2FsbGV0SWQgPSAnd2FsbGV0LWFiYzEyMyc7XG4gIGNvbnN0IGtleWNoYWluSWQgPSAna2V5LXVzZXItaWQnO1xuICBjb25zdCBlbmNyeXB0ZWRQcnYgPSAnZW5jcnlwdGVkLXBydi1zdHJpbmcnO1xuICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2NvcnJlY3QtcGFzc3BocmFzZSc7XG5cbiAgY29uc3QgZGV2aWNlID0ge1xuICAgIGlkOiAnbW9uZ28tb2JqZWN0LWlkLTEyMycsXG4gICAgY3JlZGVudGlhbElkOiAnY3JlZC1pZC00NTYnLFxuICAgIHByZlNhbHQ6ICdzb21lLXNhbHQnLFxuICAgIGlzUGFzc2tleTogdHJ1ZSxcbiAgfTtcblxuICBsZXQgbW9ja0JpdEdvOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0OiBhbnk7XG4gIGxldCBtb2NrS2V5Y2hhaW5zOiBhbnk7XG4gIGxldCBtb2NrV2FsbGV0czogYW55O1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tXYWxsZXQgPSB7XG4gICAgICBrZXlJZHM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKFtrZXljaGFpbklkLCAnYmFja3VwLWtleS1pZCcsICdiaXRnby1rZXktaWQnXSksXG4gICAgfTtcblxuICAgIG1vY2tXYWxsZXRzID0ge1xuICAgICAgZ2V0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMobW9ja1dhbGxldCksXG4gICAgfTtcblxuICAgIG1vY2tLZXljaGFpbnMgPSB7XG4gICAgICBnZXQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkLCBlbmNyeXB0ZWRQcnYgfSksXG4gICAgfTtcblxuICAgIG1vY2tCaXRHbyA9IHtcbiAgICAgIGNvaW46IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgd2FsbGV0czogc2lub24uc3R1YigpLnJldHVybnMobW9ja1dhbGxldHMpLFxuICAgICAgICBrZXljaGFpbnM6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKG1vY2tLZXljaGFpbnMpLFxuICAgICAgfSksXG4gICAgICBkZWNyeXB0QXN5bmM6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcygneHBydi1kZWNyeXB0ZWQnKSxcbiAgICAgIGRlbDogc2lub24uc3R1YigpLnJldHVybnMoe1xuICAgICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7fSksXG4gICAgICB9KSxcbiAgICAgIHVybDogc2lub24uc3R1YigpLmNhbGxzRmFrZSgocGF0aDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKSA9PiBgL2FwaS92JHt2ZXJzaW9uID8/IDF9JHtwYXRofWApLFxuICAgIH07XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHN1Y2Nlc3NmdWxseSByZW1vdmUgYSBwYXNza2V5IGRldmljZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICB3YWxsZXRJZCxcbiAgICAgIGRldmljZSxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG5cbiAgICAvLyBWZXJpZnkgY29pbiB3YXMgaW5pdGlhbGl6ZWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja0JpdEdvLmNvaW4sIGNvaW5OYW1lKTtcblxuICAgIC8vIFZlcmlmeSB3YWxsZXQgd2FzIGZldGNoZWRcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja1dhbGxldHMuZ2V0LCB7IGlkOiB3YWxsZXRJZCB9KTtcblxuICAgIC8vIFZlcmlmeSBrZXljaGFpbiB3YXMgZmV0Y2hlZCB3aXRoIGNvcnJlY3QgSURcbiAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aEV4YWN0bHkobW9ja0tleWNoYWlucy5nZXQsIHsgaWQ6IGtleWNoYWluSWQgfSk7XG5cbiAgICAvLyBWZXJpZnkgREVMRVRFIHdhcyBjYWxsZWQgd2l0aCBkZXZpY2UuaWQgKG5vdCBjcmVkZW50aWFsSWQpXG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZE9uY2UobW9ja0JpdEdvLmRlbCk7XG4gICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhFeGFjdGx5KG1vY2tCaXRHby5kZWwsIGAvYXBpL3YyL2tleS8ke2tleWNoYWluSWR9L3dlYmF1dGhuZGV2aWNlLyR7ZGV2aWNlLmlkfWApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuZCBub3QgY2FsbCBERUxFVEUgaWYgcGFzc3BocmFzZSBpcyB3cm9uZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZGVjcnlwdEFzeW5jID0gc2lub24uc3R1YigpLnJlc29sdmVzKHVuZGVmaW5lZCk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiAnd3JvbmctcGFzc3BocmFzZScsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbmNvcnJlY3Qgd2FsbGV0IHBhc3NwaHJhc2UnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGRlc2NyaXB0aXZlbHkgaWYga2V5Y2hhaW4gaGFzIG5vIGVuY3J5cHRlZFBydicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrS2V5Y2hhaW5zLmdldCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBrZXljaGFpbklkIH0pO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0luY29ycmVjdCB3YWxsZXQgcGFzc3BocmFzZScpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHNpbm9uLmFzc2VydC5ub3RDYWxsZWQobW9ja0JpdEdvLmRlbCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgaWYgZGV2aWNlLmlkIGlzIGVtcHR5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGRldmljZU5vSWQgPSB7IC4uLmRldmljZSwgaWQ6ICcnIH07XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICgpID0+XG4gICAgICAgIHJlbW92ZVBhc3NrZXlGcm9tV2FsbGV0KHtcbiAgICAgICAgICBiaXRnbzogbW9ja0JpdEdvLFxuICAgICAgICAgIGNvaW46IGNvaW5OYW1lLFxuICAgICAgICAgIHdhbGxldElkLFxuICAgICAgICAgIGRldmljZTogZGV2aWNlTm9JZCxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSxcbiAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgIGFzc2VydC5vayhlcnIubWVzc2FnZS5pbmNsdWRlcygnZGV2aWNlLmlkIGlzIHJlcXVpcmVkJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgc2lub24uYXNzZXJ0Lm5vdENhbGxlZChtb2NrQml0R28uY29pbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvcGFnYXRlIHdhbGxldCBmZXRjaCBlcnJvcnMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja1dhbGxldHMuZ2V0ID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCc0MDQgTm90IEZvdW5kJykpO1xuXG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAoKSA9PlxuICAgICAgICByZW1vdmVQYXNza2V5RnJvbVdhbGxldCh7XG4gICAgICAgICAgYml0Z286IG1vY2tCaXRHbyxcbiAgICAgICAgICBjb2luOiBjb2luTmFtZSxcbiAgICAgICAgICB3YWxsZXRJZCxcbiAgICAgICAgICBkZXZpY2UsXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgfSksXG4gICAgICAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgICBhc3NlcnQub2soZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJzQwNCBOb3QgRm91bmQnKSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKG1vY2tCaXRHby5kZWwpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHByb3BhZ2F0ZSBERUxFVEUgZXJyb3JzIGFmdGVyIHBhc3NwaHJhc2UgdmVyaWZpY2F0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHby5kZWwgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7XG4gICAgICByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZWplY3RzKG5ldyBFcnJvcignNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpKSxcbiAgICB9KTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgKCkgPT5cbiAgICAgICAgcmVtb3ZlUGFzc2tleUZyb21XYWxsZXQoe1xuICAgICAgICAgIGJpdGdvOiBtb2NrQml0R28sXG4gICAgICAgICAgY29pbjogY29pbk5hbWUsXG4gICAgICAgICAgd2FsbGV0SWQsXG4gICAgICAgICAgZGV2aWNlLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pLFxuICAgICAgKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgYXNzZXJ0Lm9rKGVyci5tZXNzYWdlLmluY2x1ZGVzKCc1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJykpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICApO1xuICB9KTtcbn0pO1xuIl19
|