@cubist-labs/cubesigner-sdk-key-import 0.4.263 → 0.4.265

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/import.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Key, KeyType, Org, ImportDeriveKeyProperties } from "@cubist-labs/cubesigner-sdk";
2
- import type { MnemonicToImport } from "./mnemonic";
2
+ import type { MnemonicToImport } from "./mnemonic.ts";
3
3
  /**
4
4
  * An import encryption key and the corresponding attestation document
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,GAAG,EACH,OAAO,EACP,GAAG,EACH,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAQnD;;GAEG;AACH,qBAAa,WAAW;;IAItB;;;;OAIG;gBACS,EAAE,EAAE,GAAG;IAmBnB;;;;;;;OAOG;IACU,eAAe,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,gBAAgB,EAAE,EACxB,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;IAQjB;;;;;;;OAOG;IACU,mBAAmB,CAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;CAgElB"}
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,GAAG,EACH,OAAO,EACP,GAAG,EACH,yBAAyB,EAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAQtD;;GAEG;AACH,qBAAa,WAAW;;IAItB;;;;OAIG;gBACS,EAAE,EAAE,GAAG;IAmBnB;;;;;;;OAOG;IACU,eAAe,CAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,gBAAgB,EAAE,EACxB,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;IAQjB;;;;;;;OAOG;IACU,mBAAmB,CAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,UAAU,EAAE,EACrB,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;CAgElB"}
package/dist/import.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
2
  if (kind === "m") throw new TypeError("Private method is not writable");
4
3
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
@@ -11,18 +10,16 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
11
  };
13
12
  var _KeyImporter_instances, _KeyImporter_wrappedImportKey, _KeyImporter_cs, _KeyImporter_getWrappedImportKey, _KeyImporter_importPackages;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.KeyImporter = void 0;
16
- const cubesigner_sdk_1 = require("@cubist-labs/cubesigner-sdk");
17
- const mnemonic_1 = require("./mnemonic");
18
- const raw_1 = require("./raw");
19
- const wrapped_import_key_1 = require("./wrapped_import_key");
13
+ import { loadSubtleCrypto } from "@cubist-labs/cubesigner-sdk";
14
+ import { newMnemonicKeyPackage } from "./mnemonic.js";
15
+ import { newRawKeyPackage } from "./raw.js";
16
+ import { WrappedImportKey } from "./wrapped_import_key.js";
20
17
  // Maximum number of keys to import in a single API call
21
18
  const MAX_IMPORTS_PER_API_CALL = 32n;
22
19
  /**
23
20
  * An import encryption key and the corresponding attestation document
24
21
  */
25
- class KeyImporter {
22
+ export class KeyImporter {
26
23
  /**
27
24
  * Construct from a CubeSigner `Org` instance
28
25
  *
@@ -43,7 +40,7 @@ class KeyImporter {
43
40
  * @returns `Key` objects for each imported key.
44
41
  */
45
42
  async importMnemonics(keyType, mnes, props) {
46
- return await __classPrivateFieldGet(this, _KeyImporter_instances, "m", _KeyImporter_importPackages).call(this, keyType, mnes.map((mne) => (0, mnemonic_1.newMnemonicKeyPackage)(mne)), props);
43
+ return await __classPrivateFieldGet(this, _KeyImporter_instances, "m", _KeyImporter_importPackages).call(this, keyType, mnes.map((mne) => newMnemonicKeyPackage(mne)), props);
47
44
  }
48
45
  /**
49
46
  * Encrypts a set of raw keys and imports them.
@@ -54,10 +51,9 @@ class KeyImporter {
54
51
  * @returns `Key` objects for each imported key.
55
52
  */
56
53
  async importRawSecretKeys(keyType, secrets, props) {
57
- return await __classPrivateFieldGet(this, _KeyImporter_instances, "m", _KeyImporter_importPackages).call(this, keyType, secrets.map((sec) => (0, raw_1.newRawKeyPackage)(sec)), props);
54
+ return await __classPrivateFieldGet(this, _KeyImporter_instances, "m", _KeyImporter_importPackages).call(this, keyType, secrets.map((sec) => newRawKeyPackage(sec)), props);
58
55
  }
59
56
  }
60
- exports.KeyImporter = KeyImporter;
61
57
  _KeyImporter_wrappedImportKey = new WeakMap(), _KeyImporter_cs = new WeakMap(), _KeyImporter_instances = new WeakSet(), _KeyImporter_getWrappedImportKey =
62
58
  /**
63
59
  * Check that the wrapped import key is unexpired and verified. Otherwise,
@@ -68,8 +64,8 @@ _KeyImporter_wrappedImportKey = new WeakMap(), _KeyImporter_cs = new WeakMap(),
68
64
  async function _KeyImporter_getWrappedImportKey() {
69
65
  if (!__classPrivateFieldGet(this, _KeyImporter_wrappedImportKey, "f") || __classPrivateFieldGet(this, _KeyImporter_wrappedImportKey, "f").needsRefresh()) {
70
66
  const resp = await __classPrivateFieldGet(this, _KeyImporter_cs, "f").createKeyImportKey();
71
- const subtle = await (0, cubesigner_sdk_1.loadSubtleCrypto)();
72
- __classPrivateFieldSet(this, _KeyImporter_wrappedImportKey, await wrapped_import_key_1.WrappedImportKey.createAndVerify(resp, subtle), "f");
67
+ const subtle = await loadSubtleCrypto();
68
+ __classPrivateFieldSet(this, _KeyImporter_wrappedImportKey, await WrappedImportKey.createAndVerify(resp, subtle), "f");
73
69
  }
74
70
  return __classPrivateFieldGet(this, _KeyImporter_wrappedImportKey, "f");
75
71
  }, _KeyImporter_importPackages =
@@ -118,4 +114,4 @@ async function _KeyImporter_importPackages(keyType, packages, props) {
118
114
  }
119
115
  return keys;
120
116
  };
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFRQSwrREFBOEQ7QUFHOUQseUNBQW1EO0FBQ25ELCtCQUF5QztBQUN6Qyw2REFBd0Q7QUFFeEQsd0RBQXdEO0FBQ3hELE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBRXJDOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBSXRCOzs7O09BSUc7SUFDSCxZQUFZLEVBQU87O1FBUm5CLHdDQUE2QyxJQUFJLEVBQUM7UUFDekMsa0NBQVM7UUFRaEIsdUJBQUEsSUFBSSxtQkFBTyxFQUFFLE1BQUEsQ0FBQztJQUNoQixDQUFDO0lBaUJEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixPQUFnQixFQUNoQixJQUF3QixFQUN4QixLQUFpQztRQUVqQyxPQUFPLE1BQU0sdUJBQUEsSUFBSSwyREFBZ0IsTUFBcEIsSUFBSSxFQUNmLE9BQU8sRUFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFBLGdDQUFxQixFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzdDLEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLEtBQWlDO1FBRWpDLE9BQU8sTUFBTSx1QkFBQSxJQUFJLDJEQUFnQixNQUFwQixJQUFJLEVBQ2YsT0FBTyxFQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUEsc0JBQWdCLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFDM0MsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0NBMERGO0FBNUhELGtDQTRIQzs7QUEvR0M7Ozs7O0dBS0c7QUFDSCxLQUFLO0lBQ0gsSUFBSSxDQUFDLHVCQUFBLElBQUkscUNBQWtCLElBQUksdUJBQUEsSUFBSSxxQ0FBa0IsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQUEsSUFBSSx1QkFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDakQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGlDQUFnQixHQUFFLENBQUM7UUFDeEMsdUJBQUEsSUFBSSxpQ0FBcUIsTUFBTSxxQ0FBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFBLENBQUM7SUFDaEYsQ0FBQztJQUNELE9BQU8sdUJBQUEsSUFBSSxxQ0FBa0IsQ0FBQztBQUNoQyxDQUFDO0FBMENEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLHNDQUNILE9BQWdCLEVBQ2hCLFFBQXNCLEVBQ3RCLEtBQWlDO0lBRWpDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FDcEIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUNyRixDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRWhCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxvRUFBb0U7UUFDcEUsbUVBQW1FO1FBQ25FLHdCQUF3QjtRQUN4QixFQUFFO1FBQ0YseUVBQXlFO1FBQ3pFLEVBQUU7UUFDRix3RUFBd0U7UUFDeEUsc0VBQXNFO1FBQ3RFLE1BQU0sR0FBRyxHQUFHLE1BQU0sdUJBQUEsSUFBSSxnRUFBcUIsTUFBekIsSUFBSSxDQUF1QixDQUFDO1FBRTlDLHVDQUF1QztRQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JELE1BQU0sWUFBWSxHQUErQixFQUFFLENBQUM7UUFDcEQsS0FBSyxNQUFNLE1BQU0sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELHdGQUF3RjtZQUN4RixvREFBb0Q7WUFDcEQsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQXFCO1lBQzVCLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNwQixRQUFRLEVBQUUsT0FBTztZQUNqQixZQUFZO1lBQ1osR0FBRyxLQUFLO1lBQ1IsTUFBTTtTQUNQLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxNQUFNLHVCQUFBLElBQUksdUJBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEltcG9ydEtleVJlcXVlc3QsXG4gIEltcG9ydEtleVJlcXVlc3RNYXRlcmlhbCxcbiAgS2V5LFxuICBLZXlUeXBlLFxuICBPcmcsXG4gIEltcG9ydERlcml2ZUtleVByb3BlcnRpZXMsXG59IGZyb20gXCJAY3ViaXN0LWRldi9jdWJlc2lnbmVyLXNka1wiO1xuaW1wb3J0IHsgbG9hZFN1YnRsZUNyeXB0byB9IGZyb20gXCJAY3ViaXN0LWRldi9jdWJlc2lnbmVyLXNka1wiO1xuXG5pbXBvcnQgdHlwZSB7IE1uZW1vbmljVG9JbXBvcnQgfSBmcm9tIFwiLi9tbmVtb25pY1wiO1xuaW1wb3J0IHsgbmV3TW5lbW9uaWNLZXlQYWNrYWdlIH0gZnJvbSBcIi4vbW5lbW9uaWNcIjtcbmltcG9ydCB7IG5ld1Jhd0tleVBhY2thZ2UgfSBmcm9tIFwiLi9yYXdcIjtcbmltcG9ydCB7IFdyYXBwZWRJbXBvcnRLZXkgfSBmcm9tIFwiLi93cmFwcGVkX2ltcG9ydF9rZXlcIjtcblxuLy8gTWF4aW11bSBudW1iZXIgb2Yga2V5cyB0byBpbXBvcnQgaW4gYSBzaW5nbGUgQVBJIGNhbGxcbmNvbnN0IE1BWF9JTVBPUlRTX1BFUl9BUElfQ0FMTCA9IDMybjtcblxuLyoqXG4gKiBBbiBpbXBvcnQgZW5jcnlwdGlvbiBrZXkgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGF0dGVzdGF0aW9uIGRvY3VtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlJbXBvcnRlciB7XG4gICN3cmFwcGVkSW1wb3J0S2V5OiBudWxsIHwgV3JhcHBlZEltcG9ydEtleSA9IG51bGw7XG4gIHJlYWRvbmx5ICNjczogT3JnO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3QgZnJvbSBhIEN1YmVTaWduZXIgYE9yZ2AgaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIGNzIEEgQ3ViZVNpZ25lciBgT3JnYCBpbnN0YW5jZVxuICAgKi9cbiAgY29uc3RydWN0b3IoY3M6IE9yZykge1xuICAgIHRoaXMuI2NzID0gY3M7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCB0aGUgd3JhcHBlZCBpbXBvcnQga2V5IGlzIHVuZXhwaXJlZCBhbmQgdmVyaWZpZWQuIE90aGVyd2lzZSxcbiAgICogcmVxdWVzdCBhIG5ldyBvbmUgYW5kIHZlcmlmeSBpdC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdmVyaWZpZWQgd3JhcHBlZCBpbXBvcnQga2V5LlxuICAgKi9cbiAgYXN5bmMgI2dldFdyYXBwZWRJbXBvcnRLZXkoKTogUHJvbWlzZTxXcmFwcGVkSW1wb3J0S2V5PiB7XG4gICAgaWYgKCF0aGlzLiN3cmFwcGVkSW1wb3J0S2V5IHx8IHRoaXMuI3dyYXBwZWRJbXBvcnRLZXkubmVlZHNSZWZyZXNoKCkpIHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCB0aGlzLiNjcy5jcmVhdGVLZXlJbXBvcnRLZXkoKTtcbiAgICAgIGNvbnN0IHN1YnRsZSA9IGF3YWl0IGxvYWRTdWJ0bGVDcnlwdG8oKTtcbiAgICAgIHRoaXMuI3dyYXBwZWRJbXBvcnRLZXkgPSBhd2FpdCBXcmFwcGVkSW1wb3J0S2V5LmNyZWF0ZUFuZFZlcmlmeShyZXNwLCBzdWJ0bGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jd3JhcHBlZEltcG9ydEtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0cyBhIHNldCBvZiBtbmVtb25pY3MgYW5kIGltcG9ydHMgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIGtleVR5cGUgVGhlIHR5cGUgb2Yga2V5IHRvIGltcG9ydFxuICAgKiBAcGFyYW0gbW5lcyBUaGUgbW5lbW9uaWNzIHRvIGltcG9ydCwgd2l0aCBvcHRpb25hbCBkZXJpdmF0aW9uIHBhdGhzIGFuZCBwYXNzd29yZHNcbiAgICogQHBhcmFtIHByb3BzIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgaW1wb3J0XG4gICAqIEByZXR1cm5zIGBLZXlgIG9iamVjdHMgZm9yIGVhY2ggaW1wb3J0ZWQga2V5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGltcG9ydE1uZW1vbmljcyhcbiAgICBrZXlUeXBlOiBLZXlUeXBlLFxuICAgIG1uZXM6IE1uZW1vbmljVG9JbXBvcnRbXSxcbiAgICBwcm9wcz86IEltcG9ydERlcml2ZUtleVByb3BlcnRpZXMsXG4gICk6IFByb21pc2U8S2V5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jaW1wb3J0UGFja2FnZXMoXG4gICAgICBrZXlUeXBlLFxuICAgICAgbW5lcy5tYXAoKG1uZSkgPT4gbmV3TW5lbW9uaWNLZXlQYWNrYWdlKG1uZSkpLFxuICAgICAgcHJvcHMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0cyBhIHNldCBvZiByYXcga2V5cyBhbmQgaW1wb3J0cyB0aGVtLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSBUaGUgdHlwZSBvZiBrZXkgdG8gaW1wb3J0XG4gICAqIEBwYXJhbSBzZWNyZXRzIFRoZSBzZWNyZXQga2V5cyB0byBpbXBvcnQuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltcG9ydFxuICAgKiBAcmV0dXJucyBgS2V5YCBvYmplY3RzIGZvciBlYWNoIGltcG9ydGVkIGtleS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpbXBvcnRSYXdTZWNyZXRLZXlzKFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgc2VjcmV0czogVWludDhBcnJheVtdLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNpbXBvcnRQYWNrYWdlcyhcbiAgICAgIGtleVR5cGUsXG4gICAgICBzZWNyZXRzLm1hcCgoc2VjKSA9PiBuZXdSYXdLZXlQYWNrYWdlKHNlYykpLFxuICAgICAgcHJvcHMsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0cyBhIHNldCBvZiBwcmVwYXJlZCBrZXkgcGFja2FnZXMsIGFuZCBpbXBvcnRzIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSBrZXlUeXBlIFRoZSB0eXBlIG9mIGtleSB0byBpbXBvcnRcbiAgICogQHBhcmFtIHBhY2thZ2VzIFRoZSBrZXkgcGFja2FnZXMgdG8gaW1wb3J0LlxuICAgKiBAcGFyYW0gcHJvcHMgQWRkaXRpb25hbCBvcHRpb25zIGZvciBpbXBvcnRcbiAgICogQHJldHVybnMgYEtleWAgb2JqZWN0cyBmb3IgZWFjaCBpbXBvcnRlZCBrZXkuXG4gICAqL1xuICBhc3luYyAjaW1wb3J0UGFja2FnZXMoXG4gICAga2V5VHlwZTogS2V5VHlwZSxcbiAgICBwYWNrYWdlczogVWludDhBcnJheVtdLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIGNvbnN0IG5DaHVua3MgPSBOdW1iZXIoXG4gICAgICAoQmlnSW50KHBhY2thZ2VzLmxlbmd0aCkgKyBNQVhfSU1QT1JUU19QRVJfQVBJX0NBTEwgLSAxbikgLyBNQVhfSU1QT1JUU19QRVJfQVBJX0NBTEwsXG4gICAgKTtcbiAgICBjb25zdCBrZXlzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5DaHVua3M7ICsraSkge1xuICAgICAgLy8gZmlyc3QsIG1ha2Ugc3VyZSB0aGF0IHRoZSB3cmFwcGVkIGltcG9ydCBrZXkgaXMgdmFsaWQsIGkuZS4sIHRoYXRcbiAgICAgIC8vIHdlIGhhdmUgcmV0cmlldmVkIGl0IGFuZCB0aGF0IGl0IGhhc24ndCBleHBpcmVkLiBXZSBkbyB0aGlzIGhlcmVcbiAgICAgIC8vIGZvciBhIGNvdXBsZSByZWFzb25zOlxuICAgICAgLy9cbiAgICAgIC8vIC0gYWxsIGVuY3J5cHRpb25zIGluIGEgZ2l2ZW4gcmVxdWVzdCBtdXN0IHVzZSB0aGUgc2FtZSBpbXBvcnQga2V5LCBhbmRcbiAgICAgIC8vXG4gICAgICAvLyAtIHdoZW4gaW1wb3J0aW5nIGEgaHVnZSBudW1iZXIgb2Yga2V5cyB0aGUgaW1wb3J0IHB1YmtleSBtaWdodCBleHBpcmVcbiAgICAgIC8vICAgZHVyaW5nIHRoZSBpbXBvcnQsIHNvIHdlIGNoZWNrIGZvciBleHBpcmF0aW9uIGJlZm9yZSBlYWNoIHJlcXVlc3RcbiAgICAgIGNvbnN0IHdpayA9IGF3YWl0IHRoaXMuI2dldFdyYXBwZWRJbXBvcnRLZXkoKTtcblxuICAgICAgLy8gbmV4dCwgZW5jcnlwdCB0aGlzIGNodW5rIG9mIHBhY2thZ2VzXG4gICAgICBjb25zdCBzdGFydCA9IE51bWJlcihNQVhfSU1QT1JUU19QRVJfQVBJX0NBTEwpICogaTtcbiAgICAgIGNvbnN0IGVuZCA9IE51bWJlcihNQVhfSU1QT1JUU19QRVJfQVBJX0NBTEwpICsgc3RhcnQ7XG4gICAgICBjb25zdCBrZXlfbWF0ZXJpYWw6IEltcG9ydEtleVJlcXVlc3RNYXRlcmlhbFtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGtleVBrZyBvZiBwYWNrYWdlcy5zbGljZShzdGFydCwgZW5kKSkge1xuICAgICAgICBjb25zdCB7IGVuYywgY2lwaGVydGV4dCB9ID0gYXdhaXQgd2lrLmVuY3J5cHQoa2V5UGtnKTtcbiAgICAgICAgLy8gV2UgdXNlIGFuIGV4dGVuc2lvbiBvZiBIUEtFIHRoYXQgYWxsb3dzIGEgc2FsdCB2YWx1ZSB0byBiZSBzcGVjaWZpZWQsIGJ1dCBpdCBpcyBvayB0b1xuICAgICAgICAvLyB1c2UgYW4gZW1wdHkgc2FsdCBpZiB0aGUgaW1wb3J0IGtleSBpcyBub3QgcmV1c2VkXG4gICAgICAgIGtleV9tYXRlcmlhbC5wdXNoKHsgc2FsdDogXCJcIiwgY2xpZW50X3B1YmxpY19rZXk6IGVuYywgaWttX2VuYzogY2lwaGVydGV4dCB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gY29uc3RydWN0IHRoZSByZXF1ZXN0IGFuZCBzZW5kIGl0XG4gICAgICBjb25zdCBwb2xpY3kgPSBwcm9wcz8ucG9saWN5ID8/IG51bGw7XG4gICAgICBjb25zdCByZXE6IEltcG9ydEtleVJlcXVlc3QgPSB7XG4gICAgICAgIC4uLndpay50b0ltcG9ydEtleSgpLFxuICAgICAgICBrZXlfdHlwZToga2V5VHlwZSxcbiAgICAgICAga2V5X21hdGVyaWFsLFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgcG9saWN5LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuI2NzLmltcG9ydEtleXMocmVxKTtcbiAgICAgIGtleXMucHVzaCguLi5yZXNwKTtcbiAgICB9XG5cbiAgICByZXR1cm4ga2V5cztcbiAgfVxufVxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ltcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFRQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTNELHdEQUF3RDtBQUN4RCxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUVyQzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBSXRCOzs7O09BSUc7SUFDSCxZQUFZLEVBQU87O1FBUm5CLHdDQUE2QyxJQUFJLEVBQUM7UUFDekMsa0NBQVM7UUFRaEIsdUJBQUEsSUFBSSxtQkFBTyxFQUFFLE1BQUEsQ0FBQztJQUNoQixDQUFDO0lBaUJEOzs7Ozs7O09BT0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixPQUFnQixFQUNoQixJQUF3QixFQUN4QixLQUFpQztRQUVqQyxPQUFPLE1BQU0sdUJBQUEsSUFBSSwyREFBZ0IsTUFBcEIsSUFBSSxFQUNmLE9BQU8sRUFDUCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUM3QyxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLG1CQUFtQixDQUM5QixPQUFnQixFQUNoQixPQUFxQixFQUNyQixLQUFpQztRQUVqQyxPQUFPLE1BQU0sdUJBQUEsSUFBSSwyREFBZ0IsTUFBcEIsSUFBSSxFQUNmLE9BQU8sRUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMzQyxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7Q0EwREY7O0FBL0dDOzs7OztHQUtHO0FBQ0gsS0FBSztJQUNILElBQUksQ0FBQyx1QkFBQSxJQUFJLHFDQUFrQixJQUFJLHVCQUFBLElBQUkscUNBQWtCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUNyRSxNQUFNLElBQUksR0FBRyxNQUFNLHVCQUFBLElBQUksdUJBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztRQUN4Qyx1QkFBQSxJQUFJLGlDQUFxQixNQUFNLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQUEsQ0FBQztJQUNoRixDQUFDO0lBQ0QsT0FBTyx1QkFBQSxJQUFJLHFDQUFrQixDQUFDO0FBQ2hDLENBQUM7QUEwQ0Q7Ozs7Ozs7R0FPRztBQUNILEtBQUssc0NBQ0gsT0FBZ0IsRUFDaEIsUUFBc0IsRUFDdEIsS0FBaUM7SUFFakMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUNwQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLEdBQUcsd0JBQXdCLENBQ3JGLENBQUM7SUFDRixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7SUFFaEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2pDLG9FQUFvRTtRQUNwRSxtRUFBbUU7UUFDbkUsd0JBQXdCO1FBQ3hCLEVBQUU7UUFDRix5RUFBeUU7UUFDekUsRUFBRTtRQUNGLHdFQUF3RTtRQUN4RSxzRUFBc0U7UUFDdEUsTUFBTSxHQUFHLEdBQUcsTUFBTSx1QkFBQSxJQUFJLGdFQUFxQixNQUF6QixJQUFJLENBQXVCLENBQUM7UUFFOUMsdUNBQXVDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQStCLEVBQUUsQ0FBQztRQUNwRCxLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsd0ZBQXdGO1lBQ3hGLG9EQUFvRDtZQUNwRCxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUVELG9DQUFvQztRQUNwQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBcUI7WUFDNUIsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ3BCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFlBQVk7WUFDWixHQUFHLEtBQUs7WUFDUixNQUFNO1NBQ1AsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLE1BQU0sdUJBQUEsSUFBSSx1QkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSW1wb3J0S2V5UmVxdWVzdCxcbiAgSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsLFxuICBLZXksXG4gIEtleVR5cGUsXG4gIE9yZyxcbiAgSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbn0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQgeyBsb2FkU3VidGxlQ3J5cHRvIH0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5cbmltcG9ydCB0eXBlIHsgTW5lbW9uaWNUb0ltcG9ydCB9IGZyb20gXCIuL21uZW1vbmljLnRzXCI7XG5pbXBvcnQgeyBuZXdNbmVtb25pY0tleVBhY2thZ2UgfSBmcm9tIFwiLi9tbmVtb25pYy50c1wiO1xuaW1wb3J0IHsgbmV3UmF3S2V5UGFja2FnZSB9IGZyb20gXCIuL3Jhdy50c1wiO1xuaW1wb3J0IHsgV3JhcHBlZEltcG9ydEtleSB9IGZyb20gXCIuL3dyYXBwZWRfaW1wb3J0X2tleS50c1wiO1xuXG4vLyBNYXhpbXVtIG51bWJlciBvZiBrZXlzIHRvIGltcG9ydCBpbiBhIHNpbmdsZSBBUEkgY2FsbFxuY29uc3QgTUFYX0lNUE9SVFNfUEVSX0FQSV9DQUxMID0gMzJuO1xuXG4vKipcbiAqIEFuIGltcG9ydCBlbmNyeXB0aW9uIGtleSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYXR0ZXN0YXRpb24gZG9jdW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEtleUltcG9ydGVyIHtcbiAgI3dyYXBwZWRJbXBvcnRLZXk6IG51bGwgfCBXcmFwcGVkSW1wb3J0S2V5ID0gbnVsbDtcbiAgcmVhZG9ubHkgI2NzOiBPcmc7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCBmcm9tIGEgQ3ViZVNpZ25lciBgT3JnYCBpbnN0YW5jZVxuICAgKlxuICAgKiBAcGFyYW0gY3MgQSBDdWJlU2lnbmVyIGBPcmdgIGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjczogT3JnKSB7XG4gICAgdGhpcy4jY3MgPSBjcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHRoZSB3cmFwcGVkIGltcG9ydCBrZXkgaXMgdW5leHBpcmVkIGFuZCB2ZXJpZmllZC4gT3RoZXJ3aXNlLFxuICAgKiByZXF1ZXN0IGEgbmV3IG9uZSBhbmQgdmVyaWZ5IGl0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCB2ZXJpZmllZCB3cmFwcGVkIGltcG9ydCBrZXkuXG4gICAqL1xuICBhc3luYyAjZ2V0V3JhcHBlZEltcG9ydEtleSgpOiBQcm9taXNlPFdyYXBwZWRJbXBvcnRLZXk+IHtcbiAgICBpZiAoIXRoaXMuI3dyYXBwZWRJbXBvcnRLZXkgfHwgdGhpcy4jd3JhcHBlZEltcG9ydEtleS5uZWVkc1JlZnJlc2goKSkge1xuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuI2NzLmNyZWF0ZUtleUltcG9ydEtleSgpO1xuICAgICAgY29uc3Qgc3VidGxlID0gYXdhaXQgbG9hZFN1YnRsZUNyeXB0bygpO1xuICAgICAgdGhpcy4jd3JhcHBlZEltcG9ydEtleSA9IGF3YWl0IFdyYXBwZWRJbXBvcnRLZXkuY3JlYXRlQW5kVmVyaWZ5KHJlc3AsIHN1YnRsZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiN3cmFwcGVkSW1wb3J0S2V5O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRzIGEgc2V0IG9mIG1uZW1vbmljcyBhbmQgaW1wb3J0cyB0aGVtLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5VHlwZSBUaGUgdHlwZSBvZiBrZXkgdG8gaW1wb3J0XG4gICAqIEBwYXJhbSBtbmVzIFRoZSBtbmVtb25pY3MgdG8gaW1wb3J0LCB3aXRoIG9wdGlvbmFsIGRlcml2YXRpb24gcGF0aHMgYW5kIHBhc3N3b3Jkc1xuICAgKiBAcGFyYW0gcHJvcHMgQWRkaXRpb25hbCBvcHRpb25zIGZvciBpbXBvcnRcbiAgICogQHJldHVybnMgYEtleWAgb2JqZWN0cyBmb3IgZWFjaCBpbXBvcnRlZCBrZXkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW1wb3J0TW5lbW9uaWNzKFxuICAgIGtleVR5cGU6IEtleVR5cGUsXG4gICAgbW5lczogTW5lbW9uaWNUb0ltcG9ydFtdLFxuICAgIHByb3BzPzogSW1wb3J0RGVyaXZlS2V5UHJvcGVydGllcyxcbiAgKTogUHJvbWlzZTxLZXlbXT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNpbXBvcnRQYWNrYWdlcyhcbiAgICAgIGtleVR5cGUsXG4gICAgICBtbmVzLm1hcCgobW5lKSA9PiBuZXdNbmVtb25pY0tleVBhY2thZ2UobW5lKSksXG4gICAgICBwcm9wcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRzIGEgc2V0IG9mIHJhdyBrZXlzIGFuZCBpbXBvcnRzIHRoZW0uXG4gICAqXG4gICAqIEBwYXJhbSBrZXlUeXBlIFRoZSB0eXBlIG9mIGtleSB0byBpbXBvcnRcbiAgICogQHBhcmFtIHNlY3JldHMgVGhlIHNlY3JldCBrZXlzIHRvIGltcG9ydC5cbiAgICogQHBhcmFtIHByb3BzIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgaW1wb3J0XG4gICAqIEByZXR1cm5zIGBLZXlgIG9iamVjdHMgZm9yIGVhY2ggaW1wb3J0ZWQga2V5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGltcG9ydFJhd1NlY3JldEtleXMoXG4gICAga2V5VHlwZTogS2V5VHlwZSxcbiAgICBzZWNyZXRzOiBVaW50OEFycmF5W10sXG4gICAgcHJvcHM/OiBJbXBvcnREZXJpdmVLZXlQcm9wZXJ0aWVzLFxuICApOiBQcm9taXNlPEtleVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI2ltcG9ydFBhY2thZ2VzKFxuICAgICAga2V5VHlwZSxcbiAgICAgIHNlY3JldHMubWFwKChzZWMpID0+IG5ld1Jhd0tleVBhY2thZ2Uoc2VjKSksXG4gICAgICBwcm9wcyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRzIGEgc2V0IG9mIHByZXBhcmVkIGtleSBwYWNrYWdlcywgYW5kIGltcG9ydHMgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIGtleVR5cGUgVGhlIHR5cGUgb2Yga2V5IHRvIGltcG9ydFxuICAgKiBAcGFyYW0gcGFja2FnZXMgVGhlIGtleSBwYWNrYWdlcyB0byBpbXBvcnQuXG4gICAqIEBwYXJhbSBwcm9wcyBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltcG9ydFxuICAgKiBAcmV0dXJucyBgS2V5YCBvYmplY3RzIGZvciBlYWNoIGltcG9ydGVkIGtleS5cbiAgICovXG4gIGFzeW5jICNpbXBvcnRQYWNrYWdlcyhcbiAgICBrZXlUeXBlOiBLZXlUeXBlLFxuICAgIHBhY2thZ2VzOiBVaW50OEFycmF5W10sXG4gICAgcHJvcHM/OiBJbXBvcnREZXJpdmVLZXlQcm9wZXJ0aWVzLFxuICApOiBQcm9taXNlPEtleVtdPiB7XG4gICAgY29uc3QgbkNodW5rcyA9IE51bWJlcihcbiAgICAgIChCaWdJbnQocGFja2FnZXMubGVuZ3RoKSArIE1BWF9JTVBPUlRTX1BFUl9BUElfQ0FMTCAtIDFuKSAvIE1BWF9JTVBPUlRTX1BFUl9BUElfQ0FMTCxcbiAgICApO1xuICAgIGNvbnN0IGtleXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkNodW5rczsgKytpKSB7XG4gICAgICAvLyBmaXJzdCwgbWFrZSBzdXJlIHRoYXQgdGhlIHdyYXBwZWQgaW1wb3J0IGtleSBpcyB2YWxpZCwgaS5lLiwgdGhhdFxuICAgICAgLy8gd2UgaGF2ZSByZXRyaWV2ZWQgaXQgYW5kIHRoYXQgaXQgaGFzbid0IGV4cGlyZWQuIFdlIGRvIHRoaXMgaGVyZVxuICAgICAgLy8gZm9yIGEgY291cGxlIHJlYXNvbnM6XG4gICAgICAvL1xuICAgICAgLy8gLSBhbGwgZW5jcnlwdGlvbnMgaW4gYSBnaXZlbiByZXF1ZXN0IG11c3QgdXNlIHRoZSBzYW1lIGltcG9ydCBrZXksIGFuZFxuICAgICAgLy9cbiAgICAgIC8vIC0gd2hlbiBpbXBvcnRpbmcgYSBodWdlIG51bWJlciBvZiBrZXlzIHRoZSBpbXBvcnQgcHVia2V5IG1pZ2h0IGV4cGlyZVxuICAgICAgLy8gICBkdXJpbmcgdGhlIGltcG9ydCwgc28gd2UgY2hlY2sgZm9yIGV4cGlyYXRpb24gYmVmb3JlIGVhY2ggcmVxdWVzdFxuICAgICAgY29uc3Qgd2lrID0gYXdhaXQgdGhpcy4jZ2V0V3JhcHBlZEltcG9ydEtleSgpO1xuXG4gICAgICAvLyBuZXh0LCBlbmNyeXB0IHRoaXMgY2h1bmsgb2YgcGFja2FnZXNcbiAgICAgIGNvbnN0IHN0YXJ0ID0gTnVtYmVyKE1BWF9JTVBPUlRTX1BFUl9BUElfQ0FMTCkgKiBpO1xuICAgICAgY29uc3QgZW5kID0gTnVtYmVyKE1BWF9JTVBPUlRTX1BFUl9BUElfQ0FMTCkgKyBzdGFydDtcbiAgICAgIGNvbnN0IGtleV9tYXRlcmlhbDogSW1wb3J0S2V5UmVxdWVzdE1hdGVyaWFsW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qga2V5UGtnIG9mIHBhY2thZ2VzLnNsaWNlKHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIGNvbnN0IHsgZW5jLCBjaXBoZXJ0ZXh0IH0gPSBhd2FpdCB3aWsuZW5jcnlwdChrZXlQa2cpO1xuICAgICAgICAvLyBXZSB1c2UgYW4gZXh0ZW5zaW9uIG9mIEhQS0UgdGhhdCBhbGxvd3MgYSBzYWx0IHZhbHVlIHRvIGJlIHNwZWNpZmllZCwgYnV0IGl0IGlzIG9rIHRvXG4gICAgICAgIC8vIHVzZSBhbiBlbXB0eSBzYWx0IGlmIHRoZSBpbXBvcnQga2V5IGlzIG5vdCByZXVzZWRcbiAgICAgICAga2V5X21hdGVyaWFsLnB1c2goeyBzYWx0OiBcIlwiLCBjbGllbnRfcHVibGljX2tleTogZW5jLCBpa21fZW5jOiBjaXBoZXJ0ZXh0IH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBjb25zdHJ1Y3QgdGhlIHJlcXVlc3QgYW5kIHNlbmQgaXRcbiAgICAgIGNvbnN0IHBvbGljeSA9IHByb3BzPy5wb2xpY3kgPz8gbnVsbDtcbiAgICAgIGNvbnN0IHJlcTogSW1wb3J0S2V5UmVxdWVzdCA9IHtcbiAgICAgICAgLi4ud2lrLnRvSW1wb3J0S2V5KCksXG4gICAgICAgIGtleV90eXBlOiBrZXlUeXBlLFxuICAgICAgICBrZXlfbWF0ZXJpYWwsXG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBwb2xpY3ksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgdGhpcy4jY3MuaW1wb3J0S2V5cyhyZXEpO1xuICAgICAga2V5cy5wdXNoKC4uLnJlc3ApO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlzO1xuICB9XG59XG4iXX0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { KeyImporter } from "./import";
2
- export { MnemonicToImport } from "./mnemonic";
3
- export { encryptPolicySecret, EncryptedPolicySecret } from "./policy_secret";
1
+ export { KeyImporter } from "./import.ts";
2
+ export { MnemonicToImport } from "./mnemonic.ts";
3
+ export { encryptPolicySecret, EncryptedPolicySecret } from "./policy_secret.ts";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encryptPolicySecret = exports.KeyImporter = void 0;
4
- var import_1 = require("./import");
5
- Object.defineProperty(exports, "KeyImporter", { enumerable: true, get: function () { return import_1.KeyImporter; } });
6
- var policy_secret_1 = require("./policy_secret");
7
- Object.defineProperty(exports, "encryptPolicySecret", { enumerable: true, get: function () { return policy_secret_1.encryptPolicySecret; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXVDO0FBQTlCLHFHQUFBLFdBQVcsT0FBQTtBQUVwQixpREFBNkU7QUFBcEUsb0hBQUEsbUJBQW1CLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBLZXlJbXBvcnRlciB9IGZyb20gXCIuL2ltcG9ydFwiO1xuZXhwb3J0IHsgTW5lbW9uaWNUb0ltcG9ydCB9IGZyb20gXCIuL21uZW1vbmljXCI7XG5leHBvcnQgeyBlbmNyeXB0UG9saWN5U2VjcmV0LCBFbmNyeXB0ZWRQb2xpY3lTZWNyZXQgfSBmcm9tIFwiLi9wb2xpY3lfc2VjcmV0XCI7XG4iXX0=
1
+ export { KeyImporter } from "./import.js";
2
+ export { encryptPolicySecret } from "./policy_secret.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBLZXlJbXBvcnRlciB9IGZyb20gXCIuL2ltcG9ydC50c1wiO1xuZXhwb3J0IHsgTW5lbW9uaWNUb0ltcG9ydCB9IGZyb20gXCIuL21uZW1vbmljLnRzXCI7XG5leHBvcnQgeyBlbmNyeXB0UG9saWN5U2VjcmV0LCBFbmNyeXB0ZWRQb2xpY3lTZWNyZXQgfSBmcm9tIFwiLi9wb2xpY3lfc2VjcmV0LnRzXCI7XG4iXX0=
package/dist/mnemonic.js CHANGED
@@ -1,41 +1,14 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.newMnemonicKeyPackage = newMnemonicKeyPackage;
27
- exports.parseDerivationPath = parseDerivationPath;
28
- const msgpackr_1 = require("msgpackr");
29
- const english_1 = require("@scure/bip39/wordlists/english");
30
- const bip39 = __importStar(require("@scure/bip39"));
1
+ import { encode as mpEncode } from "msgpackr";
2
+ import { wordlist } from "@scure/bip39/wordlists/english";
3
+ import * as bip39 from "@scure/bip39";
31
4
  /**
32
5
  * Create a new MnemonicKeyPackage value
33
6
  *
34
7
  * @param mne A BIP39 mnemonic and optional BIP39 password and BIP32 derivation path
35
8
  * @returns A serialized key package for import to CubeSigner
36
9
  */
37
- function newMnemonicKeyPackage(mne) {
38
- const entropy = bip39.mnemonicToEntropy(mne.mnemonic, english_1.wordlist);
10
+ export function newMnemonicKeyPackage(mne) {
11
+ const entropy = bip39.mnemonicToEntropy(mne.mnemonic, wordlist);
39
12
  const path = !mne.derivationPath ? [] : parseDerivationPath(mne.derivationPath);
40
13
  const password = mne.password ?? "";
41
14
  const mnePkg = {
@@ -49,7 +22,7 @@ function newMnemonicKeyPackage(mne) {
49
22
  password,
50
23
  },
51
24
  };
52
- return (0, msgpackr_1.encode)(mnePkg);
25
+ return mpEncode(mnePkg);
53
26
  }
54
27
  // constants for derivation path parsing
55
28
  const DER_HARDENED = 1n << 31n;
@@ -60,7 +33,7 @@ const DER_MAX = 1n << 32n;
60
33
  * @param derp The derivation path to parse; must start with 'm/'
61
34
  * @returns The parsed path
62
35
  */
63
- function parseDerivationPath(derp) {
36
+ export function parseDerivationPath(derp) {
64
37
  derp = derp.toLowerCase();
65
38
  if (derp === "m") {
66
39
  return [];
@@ -90,4 +63,4 @@ function parseDerivationPath(derp) {
90
63
  }
91
64
  return ret;
92
65
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW5lbW9uaWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW5lbW9uaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDQSxzREFnQkM7QUFZRCxrREE2QkM7QUExRkQsdUNBQThDO0FBQzlDLDREQUEwRDtBQUMxRCxvREFBc0M7QUF5QnRDOzs7OztHQUtHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsR0FBcUI7SUFDekQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsa0JBQVEsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEYsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDcEMsTUFBTSxNQUFNLEdBQXVCO1FBQ2pDLGVBQWUsRUFBRTtZQUNmLFFBQVEsRUFBRTtnQkFDUixPQUFPO2FBQ1I7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsSUFBSTthQUNMO1lBQ0QsUUFBUTtTQUNUO0tBQ0YsQ0FBQztJQUNGLE9BQU8sSUFBQSxpQkFBUSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsTUFBTSxZQUFZLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUMvQixNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDO0FBRTFCOzs7OztHQUtHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsSUFBWTtJQUM5QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEtBQUssR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO1FBQy9CLENBQUM7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbmNvZGUgYXMgbXBFbmNvZGUgfSBmcm9tIFwibXNncGFja3JcIjtcbmltcG9ydCB7IHdvcmRsaXN0IH0gZnJvbSBcIkBzY3VyZS9iaXAzOS93b3JkbGlzdHMvZW5nbGlzaFwiO1xuaW1wb3J0ICogYXMgYmlwMzkgZnJvbSBcIkBzY3VyZS9iaXAzOVwiO1xuXG4vLyBUaGUgS2V5UGFja2FnZSB0eXBlIGZyb20gQ3ViZVNpZ25lciAobW5lbW9uaWMgdmFyaWFudClcbmV4cG9ydCB0eXBlIE1uZW1vbmljS2V5UGFja2FnZSA9IHtcbiAgRW5nbGlzaE1uZW1vbmljOiB7XG4gICAgbW5lbW9uaWM6IHtcbiAgICAgIGVudHJvcHk6IFVpbnQ4QXJyYXk7XG4gICAgfTtcbiAgICBkZXJfcGF0aDoge1xuICAgICAgcGF0aDogbnVtYmVyW107XG4gICAgfTtcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICB9O1xufTtcblxuLyoqXG4gKiBBIEJJUDM5IG1uZW1vbmljIHRvIGJlIGltcG9ydGVkLCBwbHVzIG9wdGlvbmFsIEJJUDM5IHBhc3N3b3JkXG4gKiBhbmQgQklQMzIgZGVyaXZhdGlvbiBwYXRoLlxuICovXG5leHBvcnQgdHlwZSBNbmVtb25pY1RvSW1wb3J0ID0ge1xuICBtbmVtb25pYzogc3RyaW5nO1xuICBkZXJpdmF0aW9uUGF0aD86IHN0cmluZztcbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBNbmVtb25pY0tleVBhY2thZ2UgdmFsdWVcbiAqXG4gKiBAcGFyYW0gbW5lIEEgQklQMzkgbW5lbW9uaWMgYW5kIG9wdGlvbmFsIEJJUDM5IHBhc3N3b3JkIGFuZCBCSVAzMiBkZXJpdmF0aW9uIHBhdGhcbiAqIEByZXR1cm5zIEEgc2VyaWFsaXplZCBrZXkgcGFja2FnZSBmb3IgaW1wb3J0IHRvIEN1YmVTaWduZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld01uZW1vbmljS2V5UGFja2FnZShtbmU6IE1uZW1vbmljVG9JbXBvcnQpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgZW50cm9weSA9IGJpcDM5Lm1uZW1vbmljVG9FbnRyb3B5KG1uZS5tbmVtb25pYywgd29yZGxpc3QpO1xuICBjb25zdCBwYXRoID0gIW1uZS5kZXJpdmF0aW9uUGF0aCA/IFtdIDogcGFyc2VEZXJpdmF0aW9uUGF0aChtbmUuZGVyaXZhdGlvblBhdGgpO1xuICBjb25zdCBwYXNzd29yZCA9IG1uZS5wYXNzd29yZCA/PyBcIlwiO1xuICBjb25zdCBtbmVQa2c6IE1uZW1vbmljS2V5UGFja2FnZSA9IHtcbiAgICBFbmdsaXNoTW5lbW9uaWM6IHtcbiAgICAgIG1uZW1vbmljOiB7XG4gICAgICAgIGVudHJvcHksXG4gICAgICB9LFxuICAgICAgZGVyX3BhdGg6IHtcbiAgICAgICAgcGF0aCxcbiAgICAgIH0sXG4gICAgICBwYXNzd29yZCxcbiAgICB9LFxuICB9O1xuICByZXR1cm4gbXBFbmNvZGUobW5lUGtnKTtcbn1cblxuLy8gY29uc3RhbnRzIGZvciBkZXJpdmF0aW9uIHBhdGggcGFyc2luZ1xuY29uc3QgREVSX0hBUkRFTkVEID0gMW4gPDwgMzFuO1xuY29uc3QgREVSX01BWCA9IDFuIDw8IDMybjtcblxuLyoqXG4gKiBQYXJzZSBhIGRlcml2YXRpb24gcGF0aCBpbnRvIGEgc2VxdWVuY2Ugb2YgMzItYml0IGludGVnZXJzXG4gKlxuICogQHBhcmFtIGRlcnAgVGhlIGRlcml2YXRpb24gcGF0aCB0byBwYXJzZTsgbXVzdCBzdGFydCB3aXRoICdtLydcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEZXJpdmF0aW9uUGF0aChkZXJwOiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGRlcnAgPSBkZXJwLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChkZXJwID09PSBcIm1cIikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoIWRlcnAuc3RhcnRzV2l0aChcIm0vXCIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEZXJpdmF0aW9uIHBhdGggbXVzdCBzdGFydCB3aXRoIFwibS9cIicpO1xuICB9XG4gIGNvbnN0IHBhcnRzID0gZGVycC5zbGljZSgyKS5zcGxpdChcIi9cIik7XG4gIGNvbnN0IHJldCA9IFtdO1xuICBmb3IgKGxldCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgbGV0IGhhcmRlbmVkID0gZmFsc2U7XG4gICAgaWYgKHBhcnQuZW5kc1dpdGgoXCInXCIpIHx8IHBhcnQuZW5kc1dpdGgoXCJoXCIpKSB7XG4gICAgICBoYXJkZW5lZCA9IHRydWU7XG4gICAgICBwYXJ0ID0gcGFydC5zbGljZSgwLCBwYXJ0Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpZiAocGFydCA9PT0gXCJcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBkZXJpdmF0aW9uIHBhdGg6IGVtcHR5IGVsZW1lbnRcIik7XG4gICAgfVxuICAgIGxldCB2YWx1ZSA9IEJpZ0ludChwYXJ0KTtcbiAgICBpZiAodmFsdWUgPj0gREVSX01BWCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGVyaXZhdGlvbiBwYXRoIGVsZW1lbnQgZ3JlYXRlciB0aGFuIDJeMzIgaXMgaW52YWxpZFwiKTtcbiAgICB9XG4gICAgaWYgKGhhcmRlbmVkKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlIHwgREVSX0hBUkRFTkVEO1xuICAgIH1cbiAgICByZXQucHVzaChOdW1iZXIodmFsdWUpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW5lbW9uaWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbW5lbW9uaWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFELE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBeUJ0Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFxQjtJQUN6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hGLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBQ3BDLE1BQU0sTUFBTSxHQUF1QjtRQUNqQyxlQUFlLEVBQUU7WUFDZixRQUFRLEVBQUU7Z0JBQ1IsT0FBTzthQUNSO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLElBQUk7YUFDTDtZQUNELFFBQVE7U0FDVDtLQUNGLENBQUM7SUFDRixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRUQsd0NBQXdDO0FBQ3hDLE1BQU0sWUFBWSxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUM7QUFDL0IsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEdBQUcsQ0FBQztBQUUxQjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZO0lBQzlDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNmLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdkIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0MsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsS0FBSyxHQUFHLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDL0IsQ0FBQztRQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuY29kZSBhcyBtcEVuY29kZSB9IGZyb20gXCJtc2dwYWNrclwiO1xuaW1wb3J0IHsgd29yZGxpc3QgfSBmcm9tIFwiQHNjdXJlL2JpcDM5L3dvcmRsaXN0cy9lbmdsaXNoXCI7XG5pbXBvcnQgKiBhcyBiaXAzOSBmcm9tIFwiQHNjdXJlL2JpcDM5XCI7XG5cbi8vIFRoZSBLZXlQYWNrYWdlIHR5cGUgZnJvbSBDdWJlU2lnbmVyIChtbmVtb25pYyB2YXJpYW50KVxuZXhwb3J0IHR5cGUgTW5lbW9uaWNLZXlQYWNrYWdlID0ge1xuICBFbmdsaXNoTW5lbW9uaWM6IHtcbiAgICBtbmVtb25pYzoge1xuICAgICAgZW50cm9weTogVWludDhBcnJheTtcbiAgICB9O1xuICAgIGRlcl9wYXRoOiB7XG4gICAgICBwYXRoOiBudW1iZXJbXTtcbiAgICB9O1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gIH07XG59O1xuXG4vKipcbiAqIEEgQklQMzkgbW5lbW9uaWMgdG8gYmUgaW1wb3J0ZWQsIHBsdXMgb3B0aW9uYWwgQklQMzkgcGFzc3dvcmRcbiAqIGFuZCBCSVAzMiBkZXJpdmF0aW9uIHBhdGguXG4gKi9cbmV4cG9ydCB0eXBlIE1uZW1vbmljVG9JbXBvcnQgPSB7XG4gIG1uZW1vbmljOiBzdHJpbmc7XG4gIGRlcml2YXRpb25QYXRoPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IE1uZW1vbmljS2V5UGFja2FnZSB2YWx1ZVxuICpcbiAqIEBwYXJhbSBtbmUgQSBCSVAzOSBtbmVtb25pYyBhbmQgb3B0aW9uYWwgQklQMzkgcGFzc3dvcmQgYW5kIEJJUDMyIGRlcml2YXRpb24gcGF0aFxuICogQHJldHVybnMgQSBzZXJpYWxpemVkIGtleSBwYWNrYWdlIGZvciBpbXBvcnQgdG8gQ3ViZVNpZ25lclxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3TW5lbW9uaWNLZXlQYWNrYWdlKG1uZTogTW5lbW9uaWNUb0ltcG9ydCk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCBlbnRyb3B5ID0gYmlwMzkubW5lbW9uaWNUb0VudHJvcHkobW5lLm1uZW1vbmljLCB3b3JkbGlzdCk7XG4gIGNvbnN0IHBhdGggPSAhbW5lLmRlcml2YXRpb25QYXRoID8gW10gOiBwYXJzZURlcml2YXRpb25QYXRoKG1uZS5kZXJpdmF0aW9uUGF0aCk7XG4gIGNvbnN0IHBhc3N3b3JkID0gbW5lLnBhc3N3b3JkID8/IFwiXCI7XG4gIGNvbnN0IG1uZVBrZzogTW5lbW9uaWNLZXlQYWNrYWdlID0ge1xuICAgIEVuZ2xpc2hNbmVtb25pYzoge1xuICAgICAgbW5lbW9uaWM6IHtcbiAgICAgICAgZW50cm9weSxcbiAgICAgIH0sXG4gICAgICBkZXJfcGF0aDoge1xuICAgICAgICBwYXRoLFxuICAgICAgfSxcbiAgICAgIHBhc3N3b3JkLFxuICAgIH0sXG4gIH07XG4gIHJldHVybiBtcEVuY29kZShtbmVQa2cpO1xufVxuXG4vLyBjb25zdGFudHMgZm9yIGRlcml2YXRpb24gcGF0aCBwYXJzaW5nXG5jb25zdCBERVJfSEFSREVORUQgPSAxbiA8PCAzMW47XG5jb25zdCBERVJfTUFYID0gMW4gPDwgMzJuO1xuXG4vKipcbiAqIFBhcnNlIGEgZGVyaXZhdGlvbiBwYXRoIGludG8gYSBzZXF1ZW5jZSBvZiAzMi1iaXQgaW50ZWdlcnNcbiAqXG4gKiBAcGFyYW0gZGVycCBUaGUgZGVyaXZhdGlvbiBwYXRoIHRvIHBhcnNlOyBtdXN0IHN0YXJ0IHdpdGggJ20vJ1xuICogQHJldHVybnMgVGhlIHBhcnNlZCBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURlcml2YXRpb25QYXRoKGRlcnA6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgZGVycCA9IGRlcnAudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGRlcnAgPT09IFwibVwiKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghZGVycC5zdGFydHNXaXRoKFwibS9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rlcml2YXRpb24gcGF0aCBtdXN0IHN0YXJ0IHdpdGggXCJtL1wiJyk7XG4gIH1cbiAgY29uc3QgcGFydHMgPSBkZXJwLnNsaWNlKDIpLnNwbGl0KFwiL1wiKTtcbiAgY29uc3QgcmV0ID0gW107XG4gIGZvciAobGV0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBsZXQgaGFyZGVuZWQgPSBmYWxzZTtcbiAgICBpZiAocGFydC5lbmRzV2l0aChcIidcIikgfHwgcGFydC5lbmRzV2l0aChcImhcIikpIHtcbiAgICAgIGhhcmRlbmVkID0gdHJ1ZTtcbiAgICAgIHBhcnQgPSBwYXJ0LnNsaWNlKDAsIHBhcnQubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGlmIChwYXJ0ID09PSBcIlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGRlcml2YXRpb24gcGF0aDogZW1wdHkgZWxlbWVudFwiKTtcbiAgICB9XG4gICAgbGV0IHZhbHVlID0gQmlnSW50KHBhcnQpO1xuICAgIGlmICh2YWx1ZSA+PSBERVJfTUFYKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEZXJpdmF0aW9uIHBhdGggZWxlbWVudCBncmVhdGVyIHRoYW4gMl4zMiBpcyBpbnZhbGlkXCIpO1xuICAgIH1cbiAgICBpZiAoaGFyZGVuZWQpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgfCBERVJfSEFSREVORUQ7XG4gICAgfVxuICAgIHJldC5wdXNoKE51bWJlcih2YWx1ZSkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encryptPolicySecret = encryptPolicySecret;
4
- const cubesigner_sdk_1 = require("@cubist-labs/cubesigner-sdk");
5
- const wrapped_import_key_1 = require("./wrapped_import_key");
1
+ import { loadSubtleCrypto } from "@cubist-labs/cubesigner-sdk";
2
+ import { WrappedImportKey } from "./wrapped_import_key.js";
6
3
  /**
7
4
  * Encrypt a policy secret value using a fresh policy import key.
8
5
  *
@@ -10,10 +7,10 @@ const wrapped_import_key_1 = require("./wrapped_import_key");
10
7
  * @param plaintext The plaintext secret value to encrypt.
11
8
  * @returns The encrypted secret value and the import key to include in the request.
12
9
  */
13
- async function encryptPolicySecret(client, plaintext) {
10
+ export async function encryptPolicySecret(client, plaintext) {
14
11
  const resp = await client.policyImportKeyCreate();
15
- const subtle = await (0, cubesigner_sdk_1.loadSubtleCrypto)();
16
- const wik = await wrapped_import_key_1.WrappedImportKey.createAndVerify(resp, subtle, null);
12
+ const subtle = await loadSubtleCrypto();
13
+ const wik = await WrappedImportKey.createAndVerify(resp, subtle, null);
17
14
  const { enc, ciphertext } = await wik.encrypt(new TextEncoder().encode(plaintext));
18
15
  return {
19
16
  // We use an extension of HPKE that allows a salt value to be specified, but it is ok to
@@ -22,4 +19,4 @@ async function encryptPolicySecret(client, plaintext) {
22
19
  importKey: wik.toImportKey(),
23
20
  };
24
21
  }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5X3NlY3JldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wb2xpY3lfc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcUJBLGtEQWdCQztBQXBDRCwrREFBOEQ7QUFDOUQsNkRBQXdEO0FBWXhEOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxtQkFBbUIsQ0FDdkMsTUFBaUIsRUFDakIsU0FBaUI7SUFFakIsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUVsRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsaUNBQWdCLEdBQUUsQ0FBQztJQUN4QyxNQUFNLEdBQUcsR0FBRyxNQUFNLHFDQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRXZFLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkYsT0FBTztRQUNMLHdGQUF3RjtRQUN4RixvREFBb0Q7UUFDcEQsS0FBSyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtRQUN4RSxTQUFTLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRTtLQUM3QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXBpQ2xpZW50LCBLZXlJbXBvcnRLZXksIFNlY3JldFZhbHVlIH0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQgeyBsb2FkU3VidGxlQ3J5cHRvIH0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQgeyBXcmFwcGVkSW1wb3J0S2V5IH0gZnJvbSBcIi4vd3JhcHBlZF9pbXBvcnRfa2V5XCI7XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBlbmNyeXB0aW5nIGEgcG9saWN5IHNlY3JldCB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRW5jcnlwdGVkUG9saWN5U2VjcmV0ID0ge1xuICAvKiogVGhlIGVuY3J5cHRlZCBzZWNyZXQgdmFsdWUsIGZvciB1c2UgaW4gYFNldFBvbGljeVNlY3JldFJlcXVlc3QudmFsdWVgLiAqL1xuICB2YWx1ZTogU2VjcmV0VmFsdWU7XG4gIC8qKiBUaGUgaW1wb3J0IGtleSwgZm9yIHVzZSBpbiBgU2V0UG9saWN5U2VjcmV0UmVxdWVzdC5pbXBvcnRfa2V5YC4gKi9cbiAgaW1wb3J0S2V5OiBLZXlJbXBvcnRLZXk7XG59O1xuXG4vKipcbiAqIEVuY3J5cHQgYSBwb2xpY3kgc2VjcmV0IHZhbHVlIHVzaW5nIGEgZnJlc2ggcG9saWN5IGltcG9ydCBrZXkuXG4gKlxuICogQHBhcmFtIGNsaWVudCBUaGUgQVBJIGNsaWVudC5cbiAqIEBwYXJhbSBwbGFpbnRleHQgVGhlIHBsYWludGV4dCBzZWNyZXQgdmFsdWUgdG8gZW5jcnlwdC5cbiAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgc2VjcmV0IHZhbHVlIGFuZCB0aGUgaW1wb3J0IGtleSB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5jcnlwdFBvbGljeVNlY3JldChcbiAgY2xpZW50OiBBcGlDbGllbnQsXG4gIHBsYWludGV4dDogc3RyaW5nLFxuKTogUHJvbWlzZTxFbmNyeXB0ZWRQb2xpY3lTZWNyZXQ+IHtcbiAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC5wb2xpY3lJbXBvcnRLZXlDcmVhdGUoKTtcblxuICBjb25zdCBzdWJ0bGUgPSBhd2FpdCBsb2FkU3VidGxlQ3J5cHRvKCk7XG4gIGNvbnN0IHdpayA9IGF3YWl0IFdyYXBwZWRJbXBvcnRLZXkuY3JlYXRlQW5kVmVyaWZ5KHJlc3AsIHN1YnRsZSwgbnVsbCk7XG5cbiAgY29uc3QgeyBlbmMsIGNpcGhlcnRleHQgfSA9IGF3YWl0IHdpay5lbmNyeXB0KG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShwbGFpbnRleHQpKTtcbiAgcmV0dXJuIHtcbiAgICAvLyBXZSB1c2UgYW4gZXh0ZW5zaW9uIG9mIEhQS0UgdGhhdCBhbGxvd3MgYSBzYWx0IHZhbHVlIHRvIGJlIHNwZWNpZmllZCwgYnV0IGl0IGlzIG9rIHRvXG4gICAgLy8gdXNlIGFuIGVtcHR5IHNhbHQgaWYgdGhlIGltcG9ydCBrZXkgaXMgbm90IHJldXNlZFxuICAgIHZhbHVlOiB7IGNsaWVudF9wdWJsaWNfa2V5OiBlbmMsIGVuY3J5cHRlZF92YWx1ZTogY2lwaGVydGV4dCwgc2FsdDogXCJcIiB9LFxuICAgIGltcG9ydEtleTogd2lrLnRvSW1wb3J0S2V5KCksXG4gIH07XG59XG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5X3NlY3JldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wb2xpY3lfc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBWTNEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLE1BQWlCLEVBQ2pCLFNBQWlCO0lBRWpCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLE1BQU0sR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFdkUsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFPO1FBQ0wsd0ZBQXdGO1FBQ3hGLG9EQUFvRDtRQUNwRCxLQUFLLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1FBQ3hFLFNBQVMsRUFBRSxHQUFHLENBQUMsV0FBVyxFQUFFO0tBQzdCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBcGlDbGllbnQsIEtleUltcG9ydEtleSwgU2VjcmV0VmFsdWUgfSBmcm9tIFwiQGN1YmlzdC1kZXYvY3ViZXNpZ25lci1zZGtcIjtcbmltcG9ydCB7IGxvYWRTdWJ0bGVDcnlwdG8gfSBmcm9tIFwiQGN1YmlzdC1kZXYvY3ViZXNpZ25lci1zZGtcIjtcbmltcG9ydCB7IFdyYXBwZWRJbXBvcnRLZXkgfSBmcm9tIFwiLi93cmFwcGVkX2ltcG9ydF9rZXkudHNcIjtcblxuLyoqXG4gKiBUaGUgcmVzdWx0IG9mIGVuY3J5cHRpbmcgYSBwb2xpY3kgc2VjcmV0IHZhbHVlLlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0ZWRQb2xpY3lTZWNyZXQgPSB7XG4gIC8qKiBUaGUgZW5jcnlwdGVkIHNlY3JldCB2YWx1ZSwgZm9yIHVzZSBpbiBgU2V0UG9saWN5U2VjcmV0UmVxdWVzdC52YWx1ZWAuICovXG4gIHZhbHVlOiBTZWNyZXRWYWx1ZTtcbiAgLyoqIFRoZSBpbXBvcnQga2V5LCBmb3IgdXNlIGluIGBTZXRQb2xpY3lTZWNyZXRSZXF1ZXN0LmltcG9ydF9rZXlgLiAqL1xuICBpbXBvcnRLZXk6IEtleUltcG9ydEtleTtcbn07XG5cbi8qKlxuICogRW5jcnlwdCBhIHBvbGljeSBzZWNyZXQgdmFsdWUgdXNpbmcgYSBmcmVzaCBwb2xpY3kgaW1wb3J0IGtleS5cbiAqXG4gKiBAcGFyYW0gY2xpZW50IFRoZSBBUEkgY2xpZW50LlxuICogQHBhcmFtIHBsYWludGV4dCBUaGUgcGxhaW50ZXh0IHNlY3JldCB2YWx1ZSB0byBlbmNyeXB0LlxuICogQHJldHVybnMgVGhlIGVuY3J5cHRlZCBzZWNyZXQgdmFsdWUgYW5kIHRoZSBpbXBvcnQga2V5IHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmNyeXB0UG9saWN5U2VjcmV0KFxuICBjbGllbnQ6IEFwaUNsaWVudCxcbiAgcGxhaW50ZXh0OiBzdHJpbmcsXG4pOiBQcm9taXNlPEVuY3J5cHRlZFBvbGljeVNlY3JldD4ge1xuICBjb25zdCByZXNwID0gYXdhaXQgY2xpZW50LnBvbGljeUltcG9ydEtleUNyZWF0ZSgpO1xuXG4gIGNvbnN0IHN1YnRsZSA9IGF3YWl0IGxvYWRTdWJ0bGVDcnlwdG8oKTtcbiAgY29uc3Qgd2lrID0gYXdhaXQgV3JhcHBlZEltcG9ydEtleS5jcmVhdGVBbmRWZXJpZnkocmVzcCwgc3VidGxlLCBudWxsKTtcblxuICBjb25zdCB7IGVuYywgY2lwaGVydGV4dCB9ID0gYXdhaXQgd2lrLmVuY3J5cHQobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHBsYWludGV4dCkpO1xuICByZXR1cm4ge1xuICAgIC8vIFdlIHVzZSBhbiBleHRlbnNpb24gb2YgSFBLRSB0aGF0IGFsbG93cyBhIHNhbHQgdmFsdWUgdG8gYmUgc3BlY2lmaWVkLCBidXQgaXQgaXMgb2sgdG9cbiAgICAvLyB1c2UgYW4gZW1wdHkgc2FsdCBpZiB0aGUgaW1wb3J0IGtleSBpcyBub3QgcmV1c2VkXG4gICAgdmFsdWU6IHsgY2xpZW50X3B1YmxpY19rZXk6IGVuYywgZW5jcnlwdGVkX3ZhbHVlOiBjaXBoZXJ0ZXh0LCBzYWx0OiBcIlwiIH0sXG4gICAgaW1wb3J0S2V5OiB3aWsudG9JbXBvcnRLZXkoKSxcbiAgfTtcbn1cbiJdfQ==
package/dist/raw.js CHANGED
@@ -1,17 +1,14 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.newRawKeyPackage = newRawKeyPackage;
4
- const msgpackr_1 = require("msgpackr");
1
+ import { encode as mpEncode } from "msgpackr";
5
2
  /**
6
3
  * Create a new RawKeyPackage value
7
4
  *
8
5
  * @param secret The raw secret key to import
9
6
  * @returns A serialized key package for import to CubeSigner
10
7
  */
11
- function newRawKeyPackage(secret) {
8
+ export function newRawKeyPackage(secret) {
12
9
  const rawPkg = {
13
10
  Secret: secret,
14
11
  };
15
- return (0, msgpackr_1.encode)(rawPkg);
12
+ return mpEncode(rawPkg);
16
13
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jhdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLDRDQUtDO0FBbEJELHVDQUE4QztBQU85Qzs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE1BQWtCO0lBQ2pELE1BQU0sTUFBTSxHQUFrQjtRQUM1QixNQUFNLEVBQUUsTUFBTTtLQUNmLENBQUM7SUFDRixPQUFPLElBQUEsaUJBQVEsRUFBQyxNQUFNLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZW5jb2RlIGFzIG1wRW5jb2RlIH0gZnJvbSBcIm1zZ3BhY2tyXCI7XG5cbi8vIFRoZSBLZXlQYWNrYWdlIHR5cGUgZnJvbSBDdWJlU2lnbmVyIChyYXcgc2VjcmV0IHZhcmlhbnQpXG5leHBvcnQgdHlwZSBSYXdLZXlQYWNrYWdlID0ge1xuICBTZWNyZXQ6IFVpbnQ4QXJyYXk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBSYXdLZXlQYWNrYWdlIHZhbHVlXG4gKlxuICogQHBhcmFtIHNlY3JldCBUaGUgcmF3IHNlY3JldCBrZXkgdG8gaW1wb3J0XG4gKiBAcmV0dXJucyBBIHNlcmlhbGl6ZWQga2V5IHBhY2thZ2UgZm9yIGltcG9ydCB0byBDdWJlU2lnbmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXdSYXdLZXlQYWNrYWdlKHNlY3JldDogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xuICBjb25zdCByYXdQa2c6IFJhd0tleVBhY2thZ2UgPSB7XG4gICAgU2VjcmV0OiBzZWNyZXQsXG4gIH07XG4gIHJldHVybiBtcEVuY29kZShyYXdQa2cpO1xufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jhdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU85Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFrQjtJQUNqRCxNQUFNLE1BQU0sR0FBa0I7UUFDNUIsTUFBTSxFQUFFLE1BQU07S0FDZixDQUFDO0lBQ0YsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVuY29kZSBhcyBtcEVuY29kZSB9IGZyb20gXCJtc2dwYWNrclwiO1xuXG4vLyBUaGUgS2V5UGFja2FnZSB0eXBlIGZyb20gQ3ViZVNpZ25lciAocmF3IHNlY3JldCB2YXJpYW50KVxuZXhwb3J0IHR5cGUgUmF3S2V5UGFja2FnZSA9IHtcbiAgU2VjcmV0OiBVaW50OEFycmF5O1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgUmF3S2V5UGFja2FnZSB2YWx1ZVxuICpcbiAqIEBwYXJhbSBzZWNyZXQgVGhlIHJhdyBzZWNyZXQga2V5IHRvIGltcG9ydFxuICogQHJldHVybnMgQSBzZXJpYWxpemVkIGtleSBwYWNrYWdlIGZvciBpbXBvcnQgdG8gQ3ViZVNpZ25lclxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3UmF3S2V5UGFja2FnZShzZWNyZXQ6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcbiAgY29uc3QgcmF3UGtnOiBSYXdLZXlQYWNrYWdlID0ge1xuICAgIFNlY3JldDogc2VjcmV0LFxuICB9O1xuICByZXR1cm4gbXBFbmNvZGUocmF3UGtnKTtcbn1cbiJdfQ==
package/dist/util.js CHANGED
@@ -1,8 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toBigEndian = toBigEndian;
4
- exports.concatArrays = concatArrays;
5
- exports.nowEpochMillis = nowEpochMillis;
6
1
  /**
7
2
  * Converts a bigint to a big-endian Uint8Array of a specified length
8
3
  *
@@ -10,7 +5,7 @@ exports.nowEpochMillis = nowEpochMillis;
10
5
  * @param l The length in bytes
11
6
  * @returns The big-endian bytes
12
7
  */
13
- function toBigEndian(n, l) {
8
+ export function toBigEndian(n, l) {
14
9
  if (n >= 1n << (8n * BigInt(l))) {
15
10
  throw new Error(`Cannot convert ${n} to ${l} big-endian bytes (overflow)`);
16
11
  }
@@ -28,7 +23,7 @@ function toBigEndian(n, l) {
28
23
  * @param parts The parts to be concatenated
29
24
  * @returns The concatenated array
30
25
  */
31
- function concatArrays(parts) {
26
+ export function concatArrays(parts) {
32
27
  const totalLen = parts.reduce((len, part) => len + part.length, 0);
33
28
  let lenSoFar = 0;
34
29
  const ret = new Uint8Array(totalLen);
@@ -43,7 +38,7 @@ function concatArrays(parts) {
43
38
  *
44
39
  * @returns Seconds since UNIX epoch
45
40
  */
46
- function nowEpochMillis() {
41
+ export function nowEpochMillis() {
47
42
  return BigInt(Date.now());
48
43
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0NBV0M7QUFRRCxvQ0FXQztBQU9ELHdDQUVDO0FBOUNEOzs7Ozs7R0FNRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDRCxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNCLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFlBQVksQ0FBQyxLQUFtQjtJQUM5QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkUsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNyQixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN4QixRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixjQUFjO0lBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGEgYmlnaW50IHRvIGEgYmlnLWVuZGlhbiBVaW50OEFycmF5IG9mIGEgc3BlY2lmaWVkIGxlbmd0aFxuICpcbiAqIEBwYXJhbSBuIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gbCBUaGUgbGVuZ3RoIGluIGJ5dGVzXG4gKiBAcmV0dXJucyBUaGUgYmlnLWVuZGlhbiBieXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9CaWdFbmRpYW4objogYmlnaW50LCBsOiBudW1iZXIpOiBVaW50OEFycmF5IHtcbiAgaWYgKG4gPj0gMW4gPDwgKDhuICogQmlnSW50KGwpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbnZlcnQgJHtufSB0byAke2x9IGJpZy1lbmRpYW4gYnl0ZXMgKG92ZXJmbG93KWApO1xuICB9XG4gIGxldCBubiA9IG47XG4gIGNvbnN0IHJldCA9IG5ldyBVaW50OEFycmF5KGwpO1xuICBmb3IgKGxldCBpID0gbCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgcmV0W2ldID0gTnVtYmVyKG5uICUgMjU2bik7XG4gICAgbm4gPSBubiA+PiA4bjtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENvbmNhdGVuYXRlcyBhbiBhcnJheSBvZiBVaW50OEFycmF5cyBpbnRvIGEgc2luZ2xlIGFycmF5XG4gKlxuICogQHBhcmFtIHBhcnRzIFRoZSBwYXJ0cyB0byBiZSBjb25jYXRlbmF0ZWRcbiAqIEByZXR1cm5zIFRoZSBjb25jYXRlbmF0ZWQgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEFycmF5cyhwYXJ0czogVWludDhBcnJheVtdKTogVWludDhBcnJheSB7XG4gIGNvbnN0IHRvdGFsTGVuID0gcGFydHMucmVkdWNlKChsZW4sIHBhcnQpID0+IGxlbiArIHBhcnQubGVuZ3RoLCAwKTtcblxuICBsZXQgbGVuU29GYXIgPSAwO1xuICBjb25zdCByZXQgPSBuZXcgVWludDhBcnJheSh0b3RhbExlbik7XG4gIHBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICByZXQuc2V0KHBhcnQsIGxlblNvRmFyKTtcbiAgICBsZW5Tb0ZhciArPSBwYXJ0Lmxlbmd0aDtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2hcbiAqXG4gKiBAcmV0dXJucyBTZWNvbmRzIHNpbmNlIFVOSVggZXBvY2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vd0Vwb2NoTWlsbGlzKCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRGF0ZS5ub3coKSk7XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDOUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzQixFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQW1CO0lBQzlDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3JCLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnZlcnRzIGEgYmlnaW50IHRvIGEgYmlnLWVuZGlhbiBVaW50OEFycmF5IG9mIGEgc3BlY2lmaWVkIGxlbmd0aFxuICpcbiAqIEBwYXJhbSBuIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcGFyYW0gbCBUaGUgbGVuZ3RoIGluIGJ5dGVzXG4gKiBAcmV0dXJucyBUaGUgYmlnLWVuZGlhbiBieXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdG9CaWdFbmRpYW4objogYmlnaW50LCBsOiBudW1iZXIpOiBVaW50OEFycmF5IHtcbiAgaWYgKG4gPj0gMW4gPDwgKDhuICogQmlnSW50KGwpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbnZlcnQgJHtufSB0byAke2x9IGJpZy1lbmRpYW4gYnl0ZXMgKG92ZXJmbG93KWApO1xuICB9XG4gIGxldCBubiA9IG47XG4gIGNvbnN0IHJldCA9IG5ldyBVaW50OEFycmF5KGwpO1xuICBmb3IgKGxldCBpID0gbCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgcmV0W2ldID0gTnVtYmVyKG5uICUgMjU2bik7XG4gICAgbm4gPSBubiA+PiA4bjtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENvbmNhdGVuYXRlcyBhbiBhcnJheSBvZiBVaW50OEFycmF5cyBpbnRvIGEgc2luZ2xlIGFycmF5XG4gKlxuICogQHBhcmFtIHBhcnRzIFRoZSBwYXJ0cyB0byBiZSBjb25jYXRlbmF0ZWRcbiAqIEByZXR1cm5zIFRoZSBjb25jYXRlbmF0ZWQgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEFycmF5cyhwYXJ0czogVWludDhBcnJheVtdKTogVWludDhBcnJheSB7XG4gIGNvbnN0IHRvdGFsTGVuID0gcGFydHMucmVkdWNlKChsZW4sIHBhcnQpID0+IGxlbiArIHBhcnQubGVuZ3RoLCAwKTtcblxuICBsZXQgbGVuU29GYXIgPSAwO1xuICBjb25zdCByZXQgPSBuZXcgVWludDhBcnJheSh0b3RhbExlbik7XG4gIHBhcnRzLmZvckVhY2goKHBhcnQpID0+IHtcbiAgICByZXQuc2V0KHBhcnQsIGxlblNvRmFyKTtcbiAgICBsZW5Tb0ZhciArPSBwYXJ0Lmxlbmd0aDtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzIHNpbmNlIFVOSVggZXBvY2hcbiAqXG4gKiBAcmV0dXJucyBTZWNvbmRzIHNpbmNlIFVOSVggZXBvY2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vd0Vwb2NoTWlsbGlzKCk6IGJpZ2ludCB7XG4gIHJldHVybiBCaWdJbnQoRGF0ZS5ub3coKSk7XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { type CreateKeyImportKeyResponse, type CreatePolicyImportKeyResponse, type KeyImportKey as ImportKey } from "@cubist-labs/cubesigner-sdk";
2
- export declare const IMPORT_KEY_SIGNING_DST: Uint8Array;
2
+ export declare const IMPORT_KEY_SIGNING_DST: Uint8Array<ArrayBufferLike>;
3
3
  export declare const WIK_REFRESH_EARLY_MILLIS = 60000n;
4
4
  /**
5
5
  * An import-key response with enclave attestation, compatible with both
@@ -1 +1 @@
1
- {"version":3,"file":"wrapped_import_key.d.ts","sourceRoot":"","sources":["../src/wrapped_import_key.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,YAAY,IAAI,SAAS,EAC/B,MAAM,4BAA4B,CAAC;AAYpC,eAAO,MAAM,sBAAsB,YAA+D,CAAC;AAGnG,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAuBhD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,GAAG,6BAA6B,CAAC;AAE3F;;GAEG;AACH,qBAAa,gBAAgB;;IAU3B;;;;;OAKG;IACH,OAAO;IAUP;;;;;;;;OAQG;WACiB,eAAe,CACjC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,MAAM,GAAG,IAA4B,GAChD,OAAO,CAAC,gBAAgB,CAAC;IA6C5B;;;;OAIG;IACI,YAAY,IAAI,OAAO;IAmC9B;;;;;OAKG;IACU,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAWpF;;;;OAIG;IACI,WAAW,IAAI,SAAS;CAQhC;AAmBD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,UAAU,CAAC,CAkErB"}
1
+ {"version":3,"file":"wrapped_import_key.d.ts","sourceRoot":"","sources":["../src/wrapped_import_key.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,YAAY,IAAI,SAAS,EAC/B,MAAM,4BAA4B,CAAC;AAYpC,eAAO,MAAM,sBAAsB,6BAA+D,CAAC;AAGnG,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAuBhD;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,GAAG,6BAA6B,CAAC;AAE3F;;GAEG;AACH,qBAAa,gBAAgB;;IAU3B;;;;;OAKG;IACH,OAAO;IAUP;;;;;;;;OAQG;WACiB,eAAe,CACjC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,YAAY,EACpB,UAAU,GAAE,MAAM,GAAG,IAA4B,GAChD,OAAO,CAAC,gBAAgB,CAAC;IA6C5B;;;;OAIG;IACI,YAAY,IAAI,OAAO;IAmC9B;;;;;OAKG;IACU,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAWpF;;;;OAIG;IACI,WAAW,IAAI,SAAS;CAQhC;AAmBD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,UAAU,CAAC,CAkErB"}
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
2
  if (kind === "m") throw new TypeError("Private method is not writable");
4
3
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
@@ -11,19 +10,16 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
11
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
11
  };
13
12
  var _WrappedImportKey_instances, _WrappedImportKey_publicKey, _WrappedImportKey_skEnc, _WrappedImportKey_dkEnc, _WrappedImportKey_expEpochSeconds, _WrappedImportKey_enclaveAttestation, _WrappedImportKey_enclaveSignature, _WrappedImportKey_suite, _WrappedImportKey_senderContextParams, _WrappedImportKey_verifyImportKey, _WrappedImportKey_signedData;
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.WrappedImportKey = exports.WIK_REFRESH_EARLY_MILLIS = exports.IMPORT_KEY_SIGNING_DST = void 0;
16
- exports.verifyAttestationKey = verifyAttestationKey;
17
- const cubesigner_sdk_1 = require("@cubist-labs/cubesigner-sdk");
18
- const core_1 = require("@hpke/core");
19
- const asn1_ecc_1 = require("@peculiar/asn1-ecc");
20
- const asn1_schema_1 = require("@peculiar/asn1-schema");
21
- const x509_1 = require("@peculiar/x509");
22
- const util_1 = require("./util");
13
+ import { decodeBase64, encodeToBase64, encodeToHex, loadCrypto, } from "@cubist-labs/cubesigner-sdk";
14
+ import { CipherSuite, Aes256Gcm, HkdfSha384, DhkemP384HkdfSha384 } from "@hpke/core";
15
+ import { ECParameters } from "@peculiar/asn1-ecc";
16
+ import { AsnParser } from "@peculiar/asn1-schema";
17
+ import { AlgorithmProvider, X509Certificate, cryptoProvider as x509CryptoProvider, } from "@peculiar/x509";
18
+ import { toBigEndian, concatArrays, nowEpochMillis } from "./util.js";
23
19
  // domain-separation tag used when generating signing hash for import key
24
- exports.IMPORT_KEY_SIGNING_DST = new TextEncoder().encode("CUBESIGNER_EPHEMERAL_IMPORT_P384");
20
+ export const IMPORT_KEY_SIGNING_DST = new TextEncoder().encode("CUBESIGNER_EPHEMERAL_IMPORT_P384");
25
21
  // how early to refresh a wrapped import key before it expires
26
- exports.WIK_REFRESH_EARLY_MILLIS = 60000n;
22
+ export const WIK_REFRESH_EARLY_MILLIS = 60000n;
27
23
  // attestation document slack times
28
24
  const MAX_ATTESTATION_AGE_MINUTES = 15n;
29
25
  const MAX_ATTESTATION_FUTURE_MINUTES = 5n;
@@ -42,7 +38,7 @@ const CUBIST_EIF_SIGNING_PK = "2e6d0430c8b0b78316236d03cda2996449e24096b3f5b5240
42
38
  /**
43
39
  * A verified import key, usable for HPKE encryption.
44
40
  */
45
- class WrappedImportKey {
41
+ export class WrappedImportKey {
46
42
  /**
47
43
  * Private constructor.
48
44
  *
@@ -59,12 +55,12 @@ class WrappedImportKey {
59
55
  _WrappedImportKey_enclaveSignature.set(this, void 0);
60
56
  _WrappedImportKey_suite.set(this, void 0);
61
57
  _WrappedImportKey_senderContextParams.set(this, void 0);
62
- __classPrivateFieldSet(this, _WrappedImportKey_publicKey, (0, cubesigner_sdk_1.decodeBase64)(resp.public_key), "f");
63
- __classPrivateFieldSet(this, _WrappedImportKey_skEnc, (0, cubesigner_sdk_1.decodeBase64)(resp.sk_enc), "f");
64
- __classPrivateFieldSet(this, _WrappedImportKey_dkEnc, (0, cubesigner_sdk_1.decodeBase64)(resp.dk_enc), "f");
58
+ __classPrivateFieldSet(this, _WrappedImportKey_publicKey, decodeBase64(resp.public_key), "f");
59
+ __classPrivateFieldSet(this, _WrappedImportKey_skEnc, decodeBase64(resp.sk_enc), "f");
60
+ __classPrivateFieldSet(this, _WrappedImportKey_dkEnc, decodeBase64(resp.dk_enc), "f");
65
61
  __classPrivateFieldSet(this, _WrappedImportKey_expEpochSeconds, BigInt(resp.expires), "f");
66
- __classPrivateFieldSet(this, _WrappedImportKey_enclaveAttestation, (0, cubesigner_sdk_1.decodeBase64)(resp.enclave_attestation), "f");
67
- __classPrivateFieldSet(this, _WrappedImportKey_enclaveSignature, (0, cubesigner_sdk_1.decodeBase64)(resp.enclave_signature), "f");
62
+ __classPrivateFieldSet(this, _WrappedImportKey_enclaveAttestation, decodeBase64(resp.enclave_attestation), "f");
63
+ __classPrivateFieldSet(this, _WrappedImportKey_enclaveSignature, decodeBase64(resp.enclave_signature), "f");
68
64
  __classPrivateFieldSet(this, _WrappedImportKey_suite, suite, "f");
69
65
  }
70
66
  /**
@@ -77,10 +73,10 @@ class WrappedImportKey {
77
73
  * @returns A newly constructed, verified instance.
78
74
  */
79
75
  static async createAndVerify(resp, subtle, pcr8Expect = CUBIST_EIF_SIGNING_PK) {
80
- const suite = new core_1.CipherSuite({
81
- kem: new core_1.DhkemP384HkdfSha384(),
82
- kdf: new core_1.HkdfSha384(),
83
- aead: new core_1.Aes256Gcm(),
76
+ const suite = new CipherSuite({
77
+ kem: new DhkemP384HkdfSha384(),
78
+ kdf: new HkdfSha384(),
79
+ aead: new Aes256Gcm(),
84
80
  });
85
81
  const wik = new WrappedImportKey(resp, suite);
86
82
  const info = await __classPrivateFieldGet(wik, _WrappedImportKey_instances, "m", _WrappedImportKey_verifyImportKey).call(wik, subtle, pcr8Expect);
@@ -95,7 +91,7 @@ class WrappedImportKey {
95
91
  */
96
92
  needsRefresh() {
97
93
  // force refresh if we're within WIK_REFRESH_EARLY_MILLIS of the expiration
98
- return (0, util_1.nowEpochMillis)() + exports.WIK_REFRESH_EARLY_MILLIS > __classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f") * 1000n;
94
+ return nowEpochMillis() + WIK_REFRESH_EARLY_MILLIS > __classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f") * 1000n;
99
95
  }
100
96
  /**
101
97
  * Encrypt `data` using HPKE to this import key.
@@ -109,8 +105,8 @@ class WrappedImportKey {
109
105
  const params = __classPrivateFieldGet(this, _WrappedImportKey_senderContextParams, "f");
110
106
  const sender = await __classPrivateFieldGet(this, _WrappedImportKey_suite, "f").createSenderContext(params);
111
107
  return {
112
- enc: (0, cubesigner_sdk_1.encodeToBase64)(sender.enc),
113
- ciphertext: (0, cubesigner_sdk_1.encodeToBase64)(await sender.seal(data)),
108
+ enc: encodeToBase64(sender.enc),
109
+ ciphertext: encodeToBase64(await sender.seal(data)),
114
110
  };
115
111
  }
116
112
  /**
@@ -120,14 +116,13 @@ class WrappedImportKey {
120
116
  */
121
117
  toImportKey() {
122
118
  return {
123
- public_key: (0, cubesigner_sdk_1.encodeToBase64)(__classPrivateFieldGet(this, _WrappedImportKey_publicKey, "f")),
124
- sk_enc: (0, cubesigner_sdk_1.encodeToBase64)(__classPrivateFieldGet(this, _WrappedImportKey_skEnc, "f")),
125
- dk_enc: (0, cubesigner_sdk_1.encodeToBase64)(__classPrivateFieldGet(this, _WrappedImportKey_dkEnc, "f")),
119
+ public_key: encodeToBase64(__classPrivateFieldGet(this, _WrappedImportKey_publicKey, "f")),
120
+ sk_enc: encodeToBase64(__classPrivateFieldGet(this, _WrappedImportKey_skEnc, "f")),
121
+ dk_enc: encodeToBase64(__classPrivateFieldGet(this, _WrappedImportKey_dkEnc, "f")),
126
122
  expires: Number(__classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f")),
127
123
  };
128
124
  }
129
125
  }
130
- exports.WrappedImportKey = WrappedImportKey;
131
126
  _WrappedImportKey_publicKey = new WeakMap(), _WrappedImportKey_skEnc = new WeakMap(), _WrappedImportKey_dkEnc = new WeakMap(), _WrappedImportKey_expEpochSeconds = new WeakMap(), _WrappedImportKey_enclaveAttestation = new WeakMap(), _WrappedImportKey_enclaveSignature = new WeakMap(), _WrappedImportKey_suite = new WeakMap(), _WrappedImportKey_senderContextParams = new WeakMap(), _WrappedImportKey_instances = new WeakSet(), _WrappedImportKey_verifyImportKey =
132
127
  /**
133
128
  * Verify this wrapped import key.
@@ -138,7 +133,7 @@ _WrappedImportKey_publicKey = new WeakMap(), _WrappedImportKey_skEnc = new WeakM
138
133
  */
139
134
  async function _WrappedImportKey_verifyImportKey(subtle, pcr8Expect) {
140
135
  // check expiration date
141
- if ((0, util_1.nowEpochMillis)() >= __classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f") * 1000n) {
136
+ if (nowEpochMillis() >= __classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f") * 1000n) {
142
137
  throw new Error("Import key is expired");
143
138
  }
144
139
  const signingKey = await verifyAttestationKey(__classPrivateFieldGet(this, _WrappedImportKey_enclaveAttestation, "f"), pcr8Expect);
@@ -157,21 +152,21 @@ async function _WrappedImportKey_verifyImportKey(subtle, pcr8Expect) {
157
152
  }, _WrappedImportKey_signedData = function _WrappedImportKey_signedData() {
158
153
  const parts = [
159
154
  // domain separation tag
160
- (0, util_1.toBigEndian)(BigInt(exports.IMPORT_KEY_SIGNING_DST.length), 2),
161
- exports.IMPORT_KEY_SIGNING_DST,
155
+ toBigEndian(BigInt(IMPORT_KEY_SIGNING_DST.length), 2),
156
+ IMPORT_KEY_SIGNING_DST,
162
157
  // public key
163
- (0, util_1.toBigEndian)(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_publicKey, "f").length), 2),
158
+ toBigEndian(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_publicKey, "f").length), 2),
164
159
  __classPrivateFieldGet(this, _WrappedImportKey_publicKey, "f"),
165
160
  // sk_enc
166
- (0, util_1.toBigEndian)(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_skEnc, "f").length), 2),
161
+ toBigEndian(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_skEnc, "f").length), 2),
167
162
  __classPrivateFieldGet(this, _WrappedImportKey_skEnc, "f"),
168
163
  // dk_enc
169
- (0, util_1.toBigEndian)(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_dkEnc, "f").length), 2),
164
+ toBigEndian(BigInt(__classPrivateFieldGet(this, _WrappedImportKey_dkEnc, "f").length), 2),
170
165
  __classPrivateFieldGet(this, _WrappedImportKey_dkEnc, "f"),
171
166
  // 8-byte big-endian expiration time in seconds since UNIX epoch
172
- (0, util_1.toBigEndian)(__classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f"), 8),
167
+ toBigEndian(__classPrivateFieldGet(this, _WrappedImportKey_expEpochSeconds, "f"), 8),
173
168
  ];
174
- return (0, util_1.concatArrays)(parts);
169
+ return concatArrays(parts);
175
170
  };
176
171
  /**
177
172
  * Verifies the attestation key against the AWS Nitro Enclaves signing
@@ -181,12 +176,12 @@ async function _WrappedImportKey_verifyImportKey(subtle, pcr8Expect) {
181
176
  * @param pcr8Expect If non-null, the expected value of PCR8 in the attestation.
182
177
  * @returns The signing key that was attested.
183
178
  */
184
- async function verifyAttestationKey(attBytes, pcr8Expect) {
179
+ export async function verifyAttestationKey(attBytes, pcr8Expect) {
185
180
  // cbor-x is being imported as ESM, so we must asynchronously import it here.
186
181
  // Because we only use that and auth0/cose here, we import both this way.
187
182
  const { Sign1 } = await import("@auth0/cose");
188
183
  const { decode: cborDecode } = await import("cbor-x");
189
- x509_1.cryptoProvider.set(await (0, cubesigner_sdk_1.loadCrypto)());
184
+ x509CryptoProvider.set(await loadCrypto());
190
185
  const att = Sign1.decode(attBytes);
191
186
  const attDoc = cborDecode(att.payload);
192
187
  // if there's no public key in this attestation, reject
@@ -197,38 +192,38 @@ async function verifyAttestationKey(attBytes, pcr8Expect) {
197
192
  if (pcr8Expect !== null) {
198
193
  const pcr8Data = attDoc.pcrs["8"];
199
194
  // slice(2) strips "0x" prefix; pcr8Expect is bare hex
200
- if (!pcr8Data || pcr8Expect !== (0, cubesigner_sdk_1.encodeToHex)(pcr8Data).slice(2)) {
195
+ if (!pcr8Data || pcr8Expect !== encodeToHex(pcr8Data).slice(2)) {
201
196
  throw new Error("Attestation was not from an authorized enclave");
202
197
  }
203
198
  }
204
199
  // check expiration date of attestation
205
- const nowMs = (0, util_1.nowEpochMillis)();
200
+ const nowMs = nowEpochMillis();
206
201
  const latest = nowMs + MAX_ATTESTATION_FUTURE_MINUTES * 60n * 1000n;
207
202
  const earliest = latest - (MAX_ATTESTATION_FUTURE_MINUTES + MAX_ATTESTATION_AGE_MINUTES) * 60n * 1000n;
208
203
  if (attDoc.timestamp < earliest || attDoc.timestamp > latest) {
209
204
  throw new Error("Attestation is expired");
210
205
  }
211
206
  // Verify certificate chain starting with AWS Nitro CA cert
212
- let parent = new x509_1.X509Certificate(AWS_CA_CERT);
207
+ let parent = new X509Certificate(AWS_CA_CERT);
213
208
  for (let i = 0; i < attDoc.cabundle.length; ++i) {
214
- const cert = new x509_1.X509Certificate(attDoc.cabundle[i]);
209
+ const cert = new X509Certificate(attDoc.cabundle[i]);
215
210
  if (!(await cert.verify(parent))) {
216
211
  throw new Error(`Attestation certificate chain failed at index ${i}`);
217
212
  }
218
213
  parent = cert;
219
214
  }
220
- const cert = new x509_1.X509Certificate(attDoc.certificate);
215
+ const cert = new X509Certificate(attDoc.certificate);
221
216
  if (!(await cert.verify(parent))) {
222
217
  throw new Error("Attestation certificate chain failed at leaf");
223
218
  }
224
219
  const pubkey = cert.publicKey;
225
220
  // make sure that we got the expected public key type
226
- const alg = new x509_1.AlgorithmProvider().toAsnAlgorithm(pubkey.algorithm);
221
+ const alg = new AlgorithmProvider().toAsnAlgorithm(pubkey.algorithm);
227
222
  if (alg.algorithm != EC_PUBLIC_KEY) {
228
223
  // not the expected algorithm, i.e., elliptic curve signing
229
224
  throw new Error("Attestation contained unexpected signature algorithm");
230
225
  }
231
- const params = asn1_schema_1.AsnParser.parse(alg.parameters, asn1_ecc_1.ECParameters);
226
+ const params = AsnParser.parse(alg.parameters, ECParameters);
232
227
  if (!params.namedCurve || params.namedCurve !== NIST_P384) {
233
228
  // not the expected params, i.e., NIST P384
234
229
  throw new Error("Attestation contained unexpected signature algorithm");
@@ -238,4 +233,4 @@ async function verifyAttestationKey(attBytes, pcr8Expect) {
238
233
  await att.verify(await pubkey.export());
239
234
  return attDoc.public_key;
240
235
  }
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZF9pbXBvcnRfa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyYXBwZWRfaW1wb3J0X2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUE0T0Esb0RBcUVDO0FBalRELCtEQVFvQztBQUNwQyxxQ0FBcUY7QUFDckYsaURBQWtEO0FBQ2xELHVEQUFrRDtBQUNsRCx5Q0FJd0I7QUFDeEIsaUNBQW1FO0FBRW5FLHlFQUF5RTtBQUM1RCxRQUFBLHNCQUFzQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7QUFFbkcsOERBQThEO0FBQ2pELFFBQUEsd0JBQXdCLEdBQUcsTUFBTyxDQUFDO0FBRWhELG1DQUFtQztBQUNuQyxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUUxQyxxQ0FBcUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUM7QUFDMUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBRWpDLHlDQUF5QztBQUN6Qyx5RUFBeUU7QUFDekUsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCxvRUFBb0U7QUFDcEUsTUFBTSxXQUFXLEdBQ2YsMHNCQUEwc0IsQ0FBQztBQUU3c0Isb0VBQW9FO0FBQ3BFLHNCQUFzQjtBQUN0QixNQUFNLHFCQUFxQixHQUN6QixrR0FBa0csQ0FBQztBQVFyRzs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBVTNCOzs7OztPQUtHO0lBQ0gsWUFBb0IsSUFBdUIsRUFBRSxLQUFrQjs7UUFmdEQsOENBQXVCO1FBQ3ZCLDBDQUFtQjtRQUNuQiwwQ0FBbUI7UUFDbkIsb0RBQXlCO1FBQ3pCLHVEQUFnQztRQUNoQyxxREFBOEI7UUFDOUIsMENBQW9CO1FBQzdCLHdEQUE0RTtRQVMxRSx1QkFBQSxJQUFJLCtCQUFjLElBQUEsNkJBQVksRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQUEsQ0FBQztRQUNoRCx1QkFBQSxJQUFJLDJCQUFVLElBQUEsNkJBQVksRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQUEsQ0FBQztRQUN4Qyx1QkFBQSxJQUFJLDJCQUFVLElBQUEsNkJBQVksRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQUEsQ0FBQztRQUN4Qyx1QkFBQSxJQUFJLHFDQUFvQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFBLENBQUM7UUFDN0MsdUJBQUEsSUFBSSx3Q0FBdUIsSUFBQSw2QkFBWSxFQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFBLENBQUM7UUFDbEUsdUJBQUEsSUFBSSxzQ0FBcUIsSUFBQSw2QkFBWSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFBLENBQUM7UUFDOUQsdUJBQUEsSUFBSSwyQkFBVSxLQUFLLE1BQUEsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDakMsSUFBdUIsRUFDdkIsTUFBb0IsRUFDcEIsYUFBNEIscUJBQXFCO1FBRWpELE1BQU0sS0FBSyxHQUFHLElBQUksa0JBQVcsQ0FBQztZQUM1QixHQUFHLEVBQUUsSUFBSSwwQkFBbUIsRUFBRTtZQUM5QixHQUFHLEVBQUUsSUFBSSxpQkFBVSxFQUFFO1lBQ3JCLElBQUksRUFBRSxJQUFJLGdCQUFTLEVBQUU7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSx1QkFBQSxHQUFHLHNFQUFpQixNQUFwQixHQUFHLEVBQWtCLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLHVCQUFBLEdBQUcsbUNBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRix1QkFBQSxHQUFHLHlDQUF3QixFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFBLENBQUM7UUFDeEQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBa0NEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2pCLDJFQUEyRTtRQUMzRSxPQUFPLElBQUEscUJBQWMsR0FBRSxHQUFHLGdDQUF3QixHQUFHLHVCQUFBLElBQUkseUNBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ3JGLENBQUM7SUFnQ0Q7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQWdCO1FBQ25DLDJGQUEyRjtRQUMzRiw4QkFBOEI7UUFDOUIsTUFBTSxNQUFNLEdBQUcsdUJBQUEsSUFBSSw2Q0FBc0IsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUFBLElBQUksK0JBQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUEsK0JBQWMsRUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQy9CLFVBQVUsRUFBRSxJQUFBLCtCQUFjLEVBQUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDaEIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFBLCtCQUFjLEVBQUMsdUJBQUEsSUFBSSxtQ0FBVyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxJQUFBLCtCQUFjLEVBQUMsdUJBQUEsSUFBSSwrQkFBTyxDQUFDO1lBQ25DLE1BQU0sRUFBRSxJQUFBLCtCQUFjLEVBQUMsdUJBQUEsSUFBSSwrQkFBTyxDQUFDO1lBQ25DLE9BQU8sRUFBRSxNQUFNLENBQUMsdUJBQUEsSUFBSSx5Q0FBaUIsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBMUpELDRDQTBKQzs7QUF0R0M7Ozs7OztHQU1HO0FBQ0gsS0FBSyw0Q0FBa0IsTUFBb0IsRUFBRSxVQUF5QjtJQUNwRSx3QkFBd0I7SUFDeEIsSUFBSSxJQUFBLHFCQUFjLEdBQUUsSUFBSSx1QkFBQSxJQUFJLHlDQUFpQixHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyx1QkFBQSxJQUFJLDRDQUFvQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXBGLHFEQUFxRDtJQUNyRCxNQUFNLGVBQWUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFpRCxDQUFDO0lBRTNFLG9EQUFvRDtJQUNwRCxNQUFNLE9BQU8sR0FBRyx1QkFBQSxJQUFJLGlFQUFZLE1BQWhCLElBQUksQ0FBYyxDQUFDO0lBQ25DLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE1BQU0sWUFBWSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUVwRSxJQUFJLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSx1QkFBQSxJQUFJLDBDQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0MsQ0FBQztJQWtCQyxNQUFNLEtBQUssR0FBRztRQUNaLHdCQUF3QjtRQUN4QixJQUFBLGtCQUFXLEVBQUMsTUFBTSxDQUFDLDhCQUFzQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRCw4QkFBc0I7UUFFdEIsYUFBYTtRQUNiLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSxtQ0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5Qyx1QkFBQSxJQUFJLG1DQUFXO1FBRWYsU0FBUztRQUNULElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSwrQkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLCtCQUFPO1FBRVgsU0FBUztRQUNULElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSwrQkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyx1QkFBQSxJQUFJLCtCQUFPO1FBRVgsZ0VBQWdFO1FBQ2hFLElBQUEsa0JBQVcsRUFBQyx1QkFBQSxJQUFJLHlDQUFpQixFQUFFLENBQUMsQ0FBQztLQUN0QyxDQUFDO0lBRUYsT0FBTyxJQUFBLG1CQUFZLEVBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQW1ESDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxRQUFvQixFQUNwQixVQUF5QjtJQUV6Qiw2RUFBNkU7SUFDN0UseUVBQXlFO0lBQ3pFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5QyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRELHFCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUEsMkJBQVUsR0FBRSxDQUFDLENBQUM7SUFFM0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBbUIsQ0FBQztJQUV6RCx1REFBdUQ7SUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLHNEQUFzRDtRQUN0RCxJQUFJLENBQUMsUUFBUSxJQUFJLFVBQVUsS0FBSyxJQUFBLDRCQUFXLEVBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7SUFDSCxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUEscUJBQWMsR0FBRSxDQUFDO0lBQy9CLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyw4QkFBOEIsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0lBQ3BFLE1BQU0sUUFBUSxHQUNaLE1BQU0sR0FBRyxDQUFDLDhCQUE4QixHQUFHLDJCQUEyQixDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUN4RixJQUFJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxzQkFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxHQUFHLElBQUksc0JBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLHNCQUFlLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBRTlCLHFEQUFxRDtJQUNyRCxNQUFNLEdBQUcsR0FBRyxJQUFJLHdCQUFpQixFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbkMsMkRBQTJEO1FBQzNELE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsdUJBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVcsRUFBRSx1QkFBWSxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxRCwyQ0FBMkM7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUscUNBQXFDO0lBQ3JDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGVjb2RlQmFzZTY0LFxuICBlbmNvZGVUb0Jhc2U2NCxcbiAgZW5jb2RlVG9IZXgsXG4gIGxvYWRDcnlwdG8sXG4gIHR5cGUgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2UsXG4gIHR5cGUgQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2UsXG4gIHR5cGUgS2V5SW1wb3J0S2V5IGFzIEltcG9ydEtleSxcbn0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQgeyBDaXBoZXJTdWl0ZSwgQWVzMjU2R2NtLCBIa2RmU2hhMzg0LCBEaGtlbVAzODRIa2RmU2hhMzg0IH0gZnJvbSBcIkBocGtlL2NvcmVcIjtcbmltcG9ydCB7IEVDUGFyYW1ldGVycyB9IGZyb20gXCJAcGVjdWxpYXIvYXNuMS1lY2NcIjtcbmltcG9ydCB7IEFzblBhcnNlciB9IGZyb20gXCJAcGVjdWxpYXIvYXNuMS1zY2hlbWFcIjtcbmltcG9ydCB7XG4gIEFsZ29yaXRobVByb3ZpZGVyLFxuICBYNTA5Q2VydGlmaWNhdGUsXG4gIGNyeXB0b1Byb3ZpZGVyIGFzIHg1MDlDcnlwdG9Qcm92aWRlcixcbn0gZnJvbSBcIkBwZWN1bGlhci94NTA5XCI7XG5pbXBvcnQgeyB0b0JpZ0VuZGlhbiwgY29uY2F0QXJyYXlzLCBub3dFcG9jaE1pbGxpcyB9IGZyb20gXCIuL3V0aWxcIjtcblxuLy8gZG9tYWluLXNlcGFyYXRpb24gdGFnIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgaGFzaCBmb3IgaW1wb3J0IGtleVxuZXhwb3J0IGNvbnN0IElNUE9SVF9LRVlfU0lHTklOR19EU1QgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJDVUJFU0lHTkVSX0VQSEVNRVJBTF9JTVBPUlRfUDM4NFwiKTtcblxuLy8gaG93IGVhcmx5IHRvIHJlZnJlc2ggYSB3cmFwcGVkIGltcG9ydCBrZXkgYmVmb3JlIGl0IGV4cGlyZXNcbmV4cG9ydCBjb25zdCBXSUtfUkVGUkVTSF9FQVJMWV9NSUxMSVMgPSA2MF8wMDBuO1xuXG4vLyBhdHRlc3RhdGlvbiBkb2N1bWVudCBzbGFjayB0aW1lc1xuY29uc3QgTUFYX0FUVEVTVEFUSU9OX0FHRV9NSU5VVEVTID0gMTVuO1xuY29uc3QgTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTID0gNW47XG5cbi8vIE9JRHMgZm9yIGVsbGlwdGljIGN1cnZlIFg1MDkgY2VydHNcbmNvbnN0IEVDX1BVQkxJQ19LRVkgPSBcIjEuMi44NDAuMTAwNDUuMi4xXCI7XG5jb25zdCBOSVNUX1AzODQgPSBcIjEuMy4xMzIuMC4zNFwiO1xuXG4vLyBBV1MgTml0cm8gRW5jbGF2ZXMgcm9vdCBDQSBjZXJ0aWZpY2F0ZVxuLy8gaHR0cHM6Ly9hd3Mtbml0cm8tZW5jbGF2ZXMuYW1hem9uYXdzLmNvbS9BV1NfTml0cm9FbmNsYXZlc19Sb290LUcxLnppcFxuLy9cbi8vIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBhYm91dCBBV1MgTml0cm8gRW5jbGF2ZXMgdmVyaWZpY2F0aW9uOlxuLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VuY2xhdmVzL2xhdGVzdC91c2VyL3ZlcmlmeS1yb290Lmh0bWxcbmNvbnN0IEFXU19DQV9DRVJUID1cbiAgXCJNSUlDRVRDQ0FaYWdBd0lCQWdJUkFQa3hkV2dia0svaEhVYk10T1RuK0ZZd0NnWUlLb1pJemowRUF3TXdTVEVMTUFrR0ExVUVCaE1DVlZNeER6QU5CZ05WQkFvTUJrRnRZWHB2YmpFTU1Bb0dBMVVFQ3d3RFFWZFRNUnN3R1FZRFZRUUREQkpoZDNNdWJtbDBjbTh0Wlc1amJHRjJaWE13SGhjTk1Ua3hNREk0TVRNeU9EQTFXaGNOTkRreE1ESTRNVFF5T0RBMVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFUE1BMEdBMVVFQ2d3R1FXMWhlbTl1TVF3d0NnWURWUVFMREFOQlYxTXhHekFaQmdOVkJBTU1FbUYzY3k1dWFYUnlieTFsYm1Oc1lYWmxjekIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJQd0NWT3VtQ01IemFIRGltdHFRdmtZNE1wSnpib2xMLy9aeTJZbEVTMUJSNVRTa3NmYmI0OEM4V0JveXQ3RjJCdzdlRXRhYVArb2hHMmJuVXM5OTBkMEpYMjhUY1BRWENFUFozQkFCSWVUUFl3RW9DV1pFaDhsNVlvUXdUY1UvOUtOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVrQ1cxRGRrRlIrZVd3NWI2Y3AzUG1hbmZTNVl3RGdZRFZSMFBBUUgvQkFRREFnR0dNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUUNqZnkrUm9jbTlYdWU0WW53V21OSlZBNDRmQTBQNVcyT3BZb3c5T1lDVlJhRWV2TDh1TzFYWXJ1NXh0TVBXcmZNQ01RQ2k4NXNXQmJKd0tLWGRTNkJwdFFGdVpiVDczby9nQmgxcVV4bC9uTnIxMlVPOFlmd3I2d1BMYis2Tkl3THozL1k9XCI7XG5cbi8vIEN1YmlzdCBlbmNsYXZlLXNpZ25pbmcga2V5LiBBbGwgdmFsaWQgYXR0ZXN0YXRpb25zIHdpbGwgaGF2ZSB0aGlzXG4vLyBwdWJsaWMga2V5IGluIFBDUjguXG5jb25zdCBDVUJJU1RfRUlGX1NJR05JTkdfUEsgPVxuICBcIjJlNmQwNDMwYzhiMGI3ODMxNjIzNmQwM2NkYTI5OTY0NDllMjQwOTZiM2Y1YjUyNDAzMWYxMmVlYjVmYzE5YTE5ZGI1MjJhODQ2ZTYyNDBhNWYzNmYyNjU5MTg5MGFjNFwiO1xuXG4vKipcbiAqIEFuIGltcG9ydC1rZXkgcmVzcG9uc2Ugd2l0aCBlbmNsYXZlIGF0dGVzdGF0aW9uLCBjb21wYXRpYmxlIHdpdGggYm90aFxuICogYENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlYCBhbmQgYENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlYC5cbiAqL1xuZXhwb3J0IHR5cGUgSW1wb3J0S2V5UmVzcG9uc2UgPSBDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZSAmIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlO1xuXG4vKipcbiAqIEEgdmVyaWZpZWQgaW1wb3J0IGtleSwgdXNhYmxlIGZvciBIUEtFIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkSW1wb3J0S2V5IHtcbiAgcmVhZG9ubHkgI3B1YmxpY0tleTogVWludDhBcnJheTtcbiAgcmVhZG9ubHkgI3NrRW5jOiBVaW50OEFycmF5O1xuICByZWFkb25seSAjZGtFbmM6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5ICNleHBFcG9jaFNlY29uZHM6IGJpZ2ludDtcbiAgcmVhZG9ubHkgI2VuY2xhdmVBdHRlc3RhdGlvbjogVWludDhBcnJheTtcbiAgcmVhZG9ubHkgI2VuY2xhdmVTaWduYXR1cmU6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5ICNzdWl0ZTogQ2lwaGVyU3VpdGU7XG4gICNzZW5kZXJDb250ZXh0UGFyYW1zPzogeyByZWNpcGllbnRQdWJsaWNLZXk6IENyeXB0b0tleTsgaW5mbzogQXJyYXlCdWZmZXIgfTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHJlc3AgVGhlIGltcG9ydCBrZXkgcmVzcG9uc2UgZnJvbSBDdWJlU2lnbmVyLlxuICAgKiBAcGFyYW0gc3VpdGUgVGhlIEhQS0UgY2lwaGVyc3VpdGUgdG8gdXNlIGZvciBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihyZXNwOiBJbXBvcnRLZXlSZXNwb25zZSwgc3VpdGU6IENpcGhlclN1aXRlKSB7XG4gICAgdGhpcy4jcHVibGljS2V5ID0gZGVjb2RlQmFzZTY0KHJlc3AucHVibGljX2tleSk7XG4gICAgdGhpcy4jc2tFbmMgPSBkZWNvZGVCYXNlNjQocmVzcC5za19lbmMpO1xuICAgIHRoaXMuI2RrRW5jID0gZGVjb2RlQmFzZTY0KHJlc3AuZGtfZW5jKTtcbiAgICB0aGlzLiNleHBFcG9jaFNlY29uZHMgPSBCaWdJbnQocmVzcC5leHBpcmVzKTtcbiAgICB0aGlzLiNlbmNsYXZlQXR0ZXN0YXRpb24gPSBkZWNvZGVCYXNlNjQocmVzcC5lbmNsYXZlX2F0dGVzdGF0aW9uKTtcbiAgICB0aGlzLiNlbmNsYXZlU2lnbmF0dXJlID0gZGVjb2RlQmFzZTY0KHJlc3AuZW5jbGF2ZV9zaWduYXR1cmUpO1xuICAgIHRoaXMuI3N1aXRlID0gc3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuZCB2ZXJpZnkgYSBgV3JhcHBlZEltcG9ydEtleWAgZnJvbSBhbiBpbXBvcnQta2V5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzcCBUaGUgcmVzcG9uc2UgZnJvbSBDdWJlU2lnbmVyIChrZXkgaW1wb3J0IG9yIHBvbGljeSBpbXBvcnQpLlxuICAgKiBAcGFyYW0gc3VidGxlIEEgU3VidGxlQ3J5cHRvIGluc3RhbmNlIHVzZWQgZm9yIHZlcmlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHBjcjhFeHBlY3QgVGhlIGV4cGVjdGVkIFBDUjggdmFsdWUgKGJhcmUgaGV4KS4gSWYgYG51bGxgLCB0aGUgUENSOCBjaGVjayBpcyBza2lwcGVkLlxuICAgKiAgIERlZmF1bHRzIHRvIHRoZSBDdWJpc3QgZW5jbGF2ZSBzaWduaW5nIGtleSwgd2hpY2ggaXMgY29ycmVjdCBmb3Iga2V5IGltcG9ydHMuXG4gICAqIEByZXR1cm5zIEEgbmV3bHkgY29uc3RydWN0ZWQsIHZlcmlmaWVkIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGVBbmRWZXJpZnkoXG4gICAgcmVzcDogSW1wb3J0S2V5UmVzcG9uc2UsXG4gICAgc3VidGxlOiBTdWJ0bGVDcnlwdG8sXG4gICAgcGNyOEV4cGVjdDogc3RyaW5nIHwgbnVsbCA9IENVQklTVF9FSUZfU0lHTklOR19QSyxcbiAgKTogUHJvbWlzZTxXcmFwcGVkSW1wb3J0S2V5PiB7XG4gICAgY29uc3Qgc3VpdGUgPSBuZXcgQ2lwaGVyU3VpdGUoe1xuICAgICAga2VtOiBuZXcgRGhrZW1QMzg0SGtkZlNoYTM4NCgpLFxuICAgICAga2RmOiBuZXcgSGtkZlNoYTM4NCgpLFxuICAgICAgYWVhZDogbmV3IEFlczI1NkdjbSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IHdpayA9IG5ldyBXcmFwcGVkSW1wb3J0S2V5KHJlc3AsIHN1aXRlKTtcbiAgICBjb25zdCBpbmZvID0gYXdhaXQgd2lrLiN2ZXJpZnlJbXBvcnRLZXkoc3VidGxlLCBwY3I4RXhwZWN0KTtcbiAgICBjb25zdCByZWNpcGllbnRQdWJsaWNLZXkgPSBhd2FpdCBzdWl0ZS5rZW0uaW1wb3J0S2V5KFwicmF3XCIsIHdpay4jcHVibGljS2V5LCB0cnVlKTtcbiAgICB3aWsuI3NlbmRlckNvbnRleHRQYXJhbXMgPSB7IHJlY2lwaWVudFB1YmxpY0tleSwgaW5mbyB9O1xuICAgIHJldHVybiB3aWs7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoaXMgd3JhcHBlZCBpbXBvcnQga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gc3VidGxlIEFuIGluc3RhbmNlIG9mIFN1YnRsZUNyeXB0byB1c2VkIGZvciB2ZXJpZmljYXRpb24uXG4gICAqIEBwYXJhbSBwY3I4RXhwZWN0IFRoZSBleHBlY3RlZCBQQ1I4IHZhbHVlLCBvciBgbnVsbGAgdG8gc2tpcCB0aGUgY2hlY2suXG4gICAqIEByZXR1cm5zIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHNpZ25lZCBkYXRhLCBmb3IgdXNlIGFzIHRoZSBIUEtFIGBpbmZvYCBwYXJhbWV0ZXIuXG4gICAqL1xuICBhc3luYyAjdmVyaWZ5SW1wb3J0S2V5KHN1YnRsZTogU3VidGxlQ3J5cHRvLCBwY3I4RXhwZWN0OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIC8vIGNoZWNrIGV4cGlyYXRpb24gZGF0ZVxuICAgIGlmIChub3dFcG9jaE1pbGxpcygpID49IHRoaXMuI2V4cEVwb2NoU2Vjb25kcyAqIDEwMDBuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvcnQga2V5IGlzIGV4cGlyZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmluZ0tleSA9IGF3YWl0IHZlcmlmeUF0dGVzdGF0aW9uS2V5KHRoaXMuI2VuY2xhdmVBdHRlc3RhdGlvbiwgcGNyOEV4cGVjdCk7XG5cbiAgICAvLyB3ZSB1c2Ugc3VidGxlY3J5cHRvJ3MgaW1wbCBvZiBSU0EtUFNTIHZlcmlmaWNhdGlvblxuICAgIGNvbnN0IHJzYVBzc0tleVBhcmFtcyA9IHsgbmFtZTogXCJSU0EtUFNTXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG4gICAgY29uc3QgcHVia2V5ID0gYXdhaXQgc3VidGxlLmltcG9ydEtleShcInNwa2lcIiwgc2lnbmluZ0tleSwgcnNhUHNzS2V5UGFyYW1zLCB0cnVlLCBbXCJ2ZXJpZnlcIl0pO1xuICAgIGNvbnN0IHB1YmtleUFsZyA9IHB1YmtleS5hbGdvcml0aG0gYXMgdW5rbm93biBhcyB7IG1vZHVsdXNMZW5ndGg6IG51bWJlciB9O1xuXG4gICAgLy8gY29tcHV0ZSB0aGUgc2lnbmluZyBoYXNoIGFuZCB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLiNzaWduZWREYXRhKCk7XG4gICAgY29uc3QgbWxlbiA9IE51bWJlcihCaWdJbnQocHVia2V5QWxnLm1vZHVsdXNMZW5ndGgpIC8gOG4pO1xuICAgIGNvbnN0IHJzYVBzc1BhcmFtcyA9IHsgbmFtZTogXCJSU0EtUFNTXCIsIHNhbHRMZW5ndGg6IG1sZW4gLSAyIC0gMzIgfTtcblxuICAgIGlmICghKGF3YWl0IHN1YnRsZS52ZXJpZnkocnNhUHNzUGFyYW1zLCBwdWJrZXksIHRoaXMuI2VuY2xhdmVTaWduYXR1cmUsIG1lc3NhZ2UpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3J0IGtleSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBXcmFwcGVkSW1wb3J0S2V5IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cbiAgICpcbiAgICogQHJldHVybnMgVHJ1ZSBqdXN0IGlmIHRoaXMga2V5IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cbiAgICovXG4gIHB1YmxpYyBuZWVkc1JlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgLy8gZm9yY2UgcmVmcmVzaCBpZiB3ZSdyZSB3aXRoaW4gV0lLX1JFRlJFU0hfRUFSTFlfTUlMTElTIG9mIHRoZSBleHBpcmF0aW9uXG4gICAgcmV0dXJuIG5vd0Vwb2NoTWlsbGlzKCkgKyBXSUtfUkVGUkVTSF9FQVJMWV9NSUxMSVMgPiB0aGlzLiNleHBFcG9jaFNlY29uZHMgKiAxMDAwbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc2lnbmluZyBoYXNoIGZvciB0aGlzIGltcG9ydCBrZXkuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBieXRlcyBvdmVyIHdoaWNoIHRoZSBlbmNsYXZlIHNpZ25hdHVyZSB3YXMgY29tcHV0ZWQuXG4gICAqL1xuICAjc2lnbmVkRGF0YSgpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgIC8vIGRvbWFpbiBzZXBhcmF0aW9uIHRhZ1xuICAgICAgdG9CaWdFbmRpYW4oQmlnSW50KElNUE9SVF9LRVlfU0lHTklOR19EU1QubGVuZ3RoKSwgMiksXG4gICAgICBJTVBPUlRfS0VZX1NJR05JTkdfRFNULFxuXG4gICAgICAvLyBwdWJsaWMga2V5XG4gICAgICB0b0JpZ0VuZGlhbihCaWdJbnQodGhpcy4jcHVibGljS2V5Lmxlbmd0aCksIDIpLFxuICAgICAgdGhpcy4jcHVibGljS2V5LFxuXG4gICAgICAvLyBza19lbmNcbiAgICAgIHRvQmlnRW5kaWFuKEJpZ0ludCh0aGlzLiNza0VuYy5sZW5ndGgpLCAyKSxcbiAgICAgIHRoaXMuI3NrRW5jLFxuXG4gICAgICAvLyBka19lbmNcbiAgICAgIHRvQmlnRW5kaWFuKEJpZ0ludCh0aGlzLiNka0VuYy5sZW5ndGgpLCAyKSxcbiAgICAgIHRoaXMuI2RrRW5jLFxuXG4gICAgICAvLyA4LWJ5dGUgYmlnLWVuZGlhbiBleHBpcmF0aW9uIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoXG4gICAgICB0b0JpZ0VuZGlhbih0aGlzLiNleHBFcG9jaFNlY29uZHMsIDgpLFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uY2F0QXJyYXlzKHBhcnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0IGBkYXRhYCB1c2luZyBIUEtFIHRvIHRoaXMgaW1wb3J0IGtleS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIHBsYWludGV4dCB0byBlbmNyeXB0LlxuICAgKiBAcmV0dXJucyBUaGUgYmFzZTY0LWVuY29kZWQgSFBLRSBlbmNhcHN1bGF0ZWQga2V5IChgZW5jYCkgYW5kIGNpcGhlcnRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW5jcnlwdChkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTx7IGVuYzogc3RyaW5nOyBjaXBoZXJ0ZXh0OiBzdHJpbmcgfT4ge1xuICAgIC8vIFNhZmU6IGBXcmFwcGVkSW1wb3J0S2V5YCBjYW4gb25seSBiZSBjb25zdHJ1Y3RlZCB0aHJvdWdoIGBjcmVhdGVBbmRWZXJpZnlgLCB3aGljaCBhbHdheXNcbiAgICAvLyBzZXRzIGAjc2VuZGVyQ29udGV4dFBhcmFtc2BcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLiNzZW5kZXJDb250ZXh0UGFyYW1zITtcbiAgICBjb25zdCBzZW5kZXIgPSBhd2FpdCB0aGlzLiNzdWl0ZS5jcmVhdGVTZW5kZXJDb250ZXh0KHBhcmFtcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYzogZW5jb2RlVG9CYXNlNjQoc2VuZGVyLmVuYyksXG4gICAgICBjaXBoZXJ0ZXh0OiBlbmNvZGVUb0Jhc2U2NChhd2FpdCBzZW5kZXIuc2VhbChkYXRhKSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGltcG9ydCBrZXkgZmllbGRzLCBmb3IgdXNlIGluIGltcG9ydCByZXF1ZXN0cy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGltcG9ydCBrZXkgZmllbGRzLlxuICAgKi9cbiAgcHVibGljIHRvSW1wb3J0S2V5KCk6IEltcG9ydEtleSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YmxpY19rZXk6IGVuY29kZVRvQmFzZTY0KHRoaXMuI3B1YmxpY0tleSksXG4gICAgICBza19lbmM6IGVuY29kZVRvQmFzZTY0KHRoaXMuI3NrRW5jKSxcbiAgICAgIGRrX2VuYzogZW5jb2RlVG9CYXNlNjQodGhpcy4jZGtFbmMpLFxuICAgICAgZXhwaXJlczogTnVtYmVyKHRoaXMuI2V4cEVwb2NoU2Vjb25kcyksXG4gICAgfTtcbiAgfVxufVxuXG4vKlxuICogQW4gQVdTIE5pdHJvIGF0dGVzdGF0aW9uIGRvY3VtZW50XG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtbml0cm8tZW5jbGF2ZXMtbnNtLWFwaS9ibG9iLzRiODUxZjMwMDZjNmZhOThmMjNkY2ZmYjJjYmEwM2IzOWRlOWI4YWYvc3JjL2FwaS9tb2QucnMjTDIwOFxuICovXG50eXBlIEF0dGVzdGF0aW9uRG9jID0ge1xuICBtb2R1bGVfaWQ6IHN0cmluZztcbiAgZGlnZXN0OiBcIlNIQTI1NlwiIHwgXCJTSEEzODRcIiB8IFwiU0hBNTEyXCI7XG4gIHRpbWVzdGFtcDogYmlnaW50O1xuICBwY3JzOiB7IFtwY3I6IHN0cmluZ106IFVpbnQ4QXJyYXkgfTtcbiAgY2VydGlmaWNhdGU6IFVpbnQ4QXJyYXk7XG4gIGNhYnVuZGxlOiBVaW50OEFycmF5W107XG4gIHB1YmxpY19rZXk/OiBVaW50OEFycmF5O1xuICB1c2VyX2RhdGE/OiBVaW50OEFycmF5O1xuICBub25jZT86IFVpbnQ4QXJyYXk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBhdHRlc3RhdGlvbiBrZXkgYWdhaW5zdCB0aGUgQVdTIE5pdHJvIEVuY2xhdmVzIHNpZ25pbmdcbiAqIGtleSBhbmQgcmV0dXJucyB0aGUgYXR0ZXN0ZWQgc2lnbmluZyBrZXkuXG4gKlxuICogQHBhcmFtIGF0dEJ5dGVzIEFuIGF0dGVzdGF0aW9uIGZyb20gYW4gQVdTIG5pdHJvIGVuY2xhdmUuXG4gKiBAcGFyYW0gcGNyOEV4cGVjdCBJZiBub24tbnVsbCwgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIFBDUjggaW4gdGhlIGF0dGVzdGF0aW9uLlxuICogQHJldHVybnMgVGhlIHNpZ25pbmcga2V5IHRoYXQgd2FzIGF0dGVzdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5QXR0ZXN0YXRpb25LZXkoXG4gIGF0dEJ5dGVzOiBVaW50OEFycmF5LFxuICBwY3I4RXhwZWN0OiBzdHJpbmcgfCBudWxsLFxuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIC8vIGNib3IteCBpcyBiZWluZyBpbXBvcnRlZCBhcyBFU00sIHNvIHdlIG11c3QgYXN5bmNocm9ub3VzbHkgaW1wb3J0IGl0IGhlcmUuXG4gIC8vIEJlY2F1c2Ugd2Ugb25seSB1c2UgdGhhdCBhbmQgYXV0aDAvY29zZSBoZXJlLCB3ZSBpbXBvcnQgYm90aCB0aGlzIHdheS5cbiAgY29uc3QgeyBTaWduMSB9ID0gYXdhaXQgaW1wb3J0KFwiQGF1dGgwL2Nvc2VcIik7XG4gIGNvbnN0IHsgZGVjb2RlOiBjYm9yRGVjb2RlIH0gPSBhd2FpdCBpbXBvcnQoXCJjYm9yLXhcIik7XG5cbiAgeDUwOUNyeXB0b1Byb3ZpZGVyLnNldChhd2FpdCBsb2FkQ3J5cHRvKCkpO1xuXG4gIGNvbnN0IGF0dCA9IFNpZ24xLmRlY29kZShhdHRCeXRlcyk7XG4gIGNvbnN0IGF0dERvYyA9IGNib3JEZWNvZGUoYXR0LnBheWxvYWQpIGFzIEF0dGVzdGF0aW9uRG9jO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm8gcHVibGljIGtleSBpbiB0aGlzIGF0dGVzdGF0aW9uLCByZWplY3RcbiAgaWYgKCFhdHREb2MucHVibGljX2tleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVzdGF0aW9uIGRpZCBub3QgaW5jbHVkZSBhIHNpZ25pbmcgcHVibGljIGtleVwiKTtcbiAgfVxuXG4gIC8vIGlmIGEgUENSOCB2YWx1ZSBpcyBleHBlY3RlZCwgdmVyaWZ5IGl0IG1hdGNoZXNcbiAgaWYgKHBjcjhFeHBlY3QgIT09IG51bGwpIHtcbiAgICBjb25zdCBwY3I4RGF0YSA9IGF0dERvYy5wY3JzW1wiOFwiXTtcbiAgICAvLyBzbGljZSgyKSBzdHJpcHMgXCIweFwiIHByZWZpeDsgcGNyOEV4cGVjdCBpcyBiYXJlIGhleFxuICAgIGlmICghcGNyOERhdGEgfHwgcGNyOEV4cGVjdCAhPT0gZW5jb2RlVG9IZXgocGNyOERhdGEpLnNsaWNlKDIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiB3YXMgbm90IGZyb20gYW4gYXV0aG9yaXplZCBlbmNsYXZlXCIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGV4cGlyYXRpb24gZGF0ZSBvZiBhdHRlc3RhdGlvblxuICBjb25zdCBub3dNcyA9IG5vd0Vwb2NoTWlsbGlzKCk7XG4gIGNvbnN0IGxhdGVzdCA9IG5vd01zICsgTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTICogNjBuICogMTAwMG47XG4gIGNvbnN0IGVhcmxpZXN0ID1cbiAgICBsYXRlc3QgLSAoTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTICsgTUFYX0FUVEVTVEFUSU9OX0FHRV9NSU5VVEVTKSAqIDYwbiAqIDEwMDBuO1xuICBpZiAoYXR0RG9jLnRpbWVzdGFtcCA8IGVhcmxpZXN0IHx8IGF0dERvYy50aW1lc3RhbXAgPiBsYXRlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBpcyBleHBpcmVkXCIpO1xuICB9XG5cbiAgLy8gVmVyaWZ5IGNlcnRpZmljYXRlIGNoYWluIHN0YXJ0aW5nIHdpdGggQVdTIE5pdHJvIENBIGNlcnRcbiAgbGV0IHBhcmVudCA9IG5ldyBYNTA5Q2VydGlmaWNhdGUoQVdTX0NBX0NFUlQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dERvYy5jYWJ1bmRsZS5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgWDUwOUNlcnRpZmljYXRlKGF0dERvYy5jYWJ1bmRsZVtpXSk7XG4gICAgaWYgKCEoYXdhaXQgY2VydC52ZXJpZnkocGFyZW50KSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXR0ZXN0YXRpb24gY2VydGlmaWNhdGUgY2hhaW4gZmFpbGVkIGF0IGluZGV4ICR7aX1gKTtcbiAgICB9XG4gICAgcGFyZW50ID0gY2VydDtcbiAgfVxuICBjb25zdCBjZXJ0ID0gbmV3IFg1MDlDZXJ0aWZpY2F0ZShhdHREb2MuY2VydGlmaWNhdGUpO1xuICBpZiAoIShhd2FpdCBjZXJ0LnZlcmlmeShwYXJlbnQpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVzdGF0aW9uIGNlcnRpZmljYXRlIGNoYWluIGZhaWxlZCBhdCBsZWFmXCIpO1xuICB9XG4gIGNvbnN0IHB1YmtleSA9IGNlcnQucHVibGljS2V5O1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGdvdCB0aGUgZXhwZWN0ZWQgcHVibGljIGtleSB0eXBlXG4gIGNvbnN0IGFsZyA9IG5ldyBBbGdvcml0aG1Qcm92aWRlcigpLnRvQXNuQWxnb3JpdGhtKHB1YmtleS5hbGdvcml0aG0pO1xuICBpZiAoYWxnLmFsZ29yaXRobSAhPSBFQ19QVUJMSUNfS0VZKSB7XG4gICAgLy8gbm90IHRoZSBleHBlY3RlZCBhbGdvcml0aG0sIGkuZS4sIGVsbGlwdGljIGN1cnZlIHNpZ25pbmdcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBjb250YWluZWQgdW5leHBlY3RlZCBzaWduYXR1cmUgYWxnb3JpdGhtXCIpO1xuICB9XG4gIGNvbnN0IHBhcmFtcyA9IEFzblBhcnNlci5wYXJzZShhbGcucGFyYW1ldGVycyEsIEVDUGFyYW1ldGVycyk7XG4gIGlmICghcGFyYW1zLm5hbWVkQ3VydmUgfHwgcGFyYW1zLm5hbWVkQ3VydmUgIT09IE5JU1RfUDM4NCkge1xuICAgIC8vIG5vdCB0aGUgZXhwZWN0ZWQgcGFyYW1zLCBpLmUuLCBOSVNUIFAzODRcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBjb250YWluZWQgdW5leHBlY3RlZCBzaWduYXR1cmUgYWxnb3JpdGhtXCIpO1xuICB9XG5cbiAgLy8gdmVyaWZ5IHRoZSBjb3NlIHNpZ25hdHVyZSB3aXRoIHRoZSBrZXksIHdoaWNoIHdlIHZlcmlmaWVkIGFnYWluc3RcbiAgLy8gdGhlIEFXUyBOaXRybyBDQSBjZXJ0aWZpY2F0ZSBhYm92ZVxuICBhd2FpdCBhdHQudmVyaWZ5KGF3YWl0IHB1YmtleS5leHBvcnQoKSk7XG5cbiAgcmV0dXJuIGF0dERvYy5wdWJsaWNfa2V5O1xufVxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlZF9pbXBvcnRfa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyYXBwZWRfaW1wb3J0X2tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsVUFBVSxHQUlYLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsY0FBYyxJQUFJLGtCQUFrQixHQUNyQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0RSx5RUFBeUU7QUFDekUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQztBQUVuRyw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsTUFBTyxDQUFDO0FBRWhELG1DQUFtQztBQUNuQyxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUUxQyxxQ0FBcUM7QUFDckMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUM7QUFDMUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDO0FBRWpDLHlDQUF5QztBQUN6Qyx5RUFBeUU7QUFDekUsRUFBRTtBQUNGLCtEQUErRDtBQUMvRCxvRUFBb0U7QUFDcEUsTUFBTSxXQUFXLEdBQ2YsMHNC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QyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMxRCwyQ0FBMkM7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUscUNBQXFDO0lBQ3JDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRXhDLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZGVjb2RlQmFzZTY0LFxuICBlbmNvZGVUb0Jhc2U2NCxcbiAgZW5jb2RlVG9IZXgsXG4gIGxvYWRDcnlwdG8sXG4gIHR5cGUgQ3JlYXRlS2V5SW1wb3J0S2V5UmVzcG9uc2UsXG4gIHR5cGUgQ3JlYXRlUG9saWN5SW1wb3J0S2V5UmVzcG9uc2UsXG4gIHR5cGUgS2V5SW1wb3J0S2V5IGFzIEltcG9ydEtleSxcbn0gZnJvbSBcIkBjdWJpc3QtZGV2L2N1YmVzaWduZXItc2RrXCI7XG5pbXBvcnQgeyBDaXBoZXJTdWl0ZSwgQWVzMjU2R2NtLCBIa2RmU2hhMzg0LCBEaGtlbVAzODRIa2RmU2hhMzg0IH0gZnJvbSBcIkBocGtlL2NvcmVcIjtcbmltcG9ydCB7IEVDUGFyYW1ldGVycyB9IGZyb20gXCJAcGVjdWxpYXIvYXNuMS1lY2NcIjtcbmltcG9ydCB7IEFzblBhcnNlciB9IGZyb20gXCJAcGVjdWxpYXIvYXNuMS1zY2hlbWFcIjtcbmltcG9ydCB7XG4gIEFsZ29yaXRobVByb3ZpZGVyLFxuICBYNTA5Q2VydGlmaWNhdGUsXG4gIGNyeXB0b1Byb3ZpZGVyIGFzIHg1MDlDcnlwdG9Qcm92aWRlcixcbn0gZnJvbSBcIkBwZWN1bGlhci94NTA5XCI7XG5pbXBvcnQgeyB0b0JpZ0VuZGlhbiwgY29uY2F0QXJyYXlzLCBub3dFcG9jaE1pbGxpcyB9IGZyb20gXCIuL3V0aWwudHNcIjtcblxuLy8gZG9tYWluLXNlcGFyYXRpb24gdGFnIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHNpZ25pbmcgaGFzaCBmb3IgaW1wb3J0IGtleVxuZXhwb3J0IGNvbnN0IElNUE9SVF9LRVlfU0lHTklOR19EU1QgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoXCJDVUJFU0lHTkVSX0VQSEVNRVJBTF9JTVBPUlRfUDM4NFwiKTtcblxuLy8gaG93IGVhcmx5IHRvIHJlZnJlc2ggYSB3cmFwcGVkIGltcG9ydCBrZXkgYmVmb3JlIGl0IGV4cGlyZXNcbmV4cG9ydCBjb25zdCBXSUtfUkVGUkVTSF9FQVJMWV9NSUxMSVMgPSA2MF8wMDBuO1xuXG4vLyBhdHRlc3RhdGlvbiBkb2N1bWVudCBzbGFjayB0aW1lc1xuY29uc3QgTUFYX0FUVEVTVEFUSU9OX0FHRV9NSU5VVEVTID0gMTVuO1xuY29uc3QgTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTID0gNW47XG5cbi8vIE9JRHMgZm9yIGVsbGlwdGljIGN1cnZlIFg1MDkgY2VydHNcbmNvbnN0IEVDX1BVQkxJQ19LRVkgPSBcIjEuMi44NDAuMTAwNDUuMi4xXCI7XG5jb25zdCBOSVNUX1AzODQgPSBcIjEuMy4xMzIuMC4zNFwiO1xuXG4vLyBBV1MgTml0cm8gRW5jbGF2ZXMgcm9vdCBDQSBjZXJ0aWZpY2F0ZVxuLy8gaHR0cHM6Ly9hd3Mtbml0cm8tZW5jbGF2ZXMuYW1hem9uYXdzLmNvbS9BV1NfTml0cm9FbmNsYXZlc19Sb290LUcxLnppcFxuLy9cbi8vIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBhYm91dCBBV1MgTml0cm8gRW5jbGF2ZXMgdmVyaWZpY2F0aW9uOlxuLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VuY2xhdmVzL2xhdGVzdC91c2VyL3ZlcmlmeS1yb290Lmh0bWxcbmNvbnN0IEFXU19DQV9DRVJUID1cbiAgXCJNSUlDRVRDQ0FaYWdBd0lCQWdJUkFQa3hkV2dia0svaEhVYk10T1RuK0ZZd0NnWUlLb1pJemowRUF3TXdTVEVMTUFrR0ExVUVCaE1DVlZNeER6QU5CZ05WQkFvTUJrRnRZWHB2YmpFTU1Bb0dBMVVFQ3d3RFFWZFRNUnN3R1FZRFZRUUREQkpoZDNNdWJtbDBjbTh0Wlc1amJHRjJaWE13SGhjTk1Ua3hNREk0TVRNeU9EQTFXaGNOTkRreE1ESTRNVFF5T0RBMVdqQkpNUXN3Q1FZRFZRUUdFd0pWVXpFUE1BMEdBMVVFQ2d3R1FXMWhlbTl1TVF3d0NnWURWUVFMREFOQlYxTXhHekFaQmdOVkJBTU1FbUYzY3k1dWFYUnlieTFsYm1Oc1lYWmxjekIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJQd0NWT3VtQ01IemFIRGltdHFRdmtZNE1wSnpib2xMLy9aeTJZbEVTMUJSNVRTa3NmYmI0OEM4V0JveXQ3RjJCdzdlRXRhYVArb2hHMmJuVXM5OTBkMEpYMjhUY1BRWENFUFozQkFCSWVUUFl3RW9DV1pFaDhsNVlvUXdUY1UvOUtOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVrQ1cxRGRrRlIrZVd3NWI2Y3AzUG1hbmZTNVl3RGdZRFZSMFBBUUgvQkFRREFnR0dNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUUNqZnkrUm9jbTlYdWU0WW53V21OSlZBNDRmQTBQNVcyT3BZb3c5T1lDVlJhRWV2TDh1TzFYWXJ1NXh0TVBXcmZNQ01RQ2k4NXNXQmJKd0tLWGRTNkJwdFFGdVpiVDczby9nQmgxcVV4bC9uTnIxMlVPOFlmd3I2d1BMYis2Tkl3THozL1k9XCI7XG5cbi8vIEN1YmlzdCBlbmNsYXZlLXNpZ25pbmcga2V5LiBBbGwgdmFsaWQgYXR0ZXN0YXRpb25zIHdpbGwgaGF2ZSB0aGlzXG4vLyBwdWJsaWMga2V5IGluIFBDUjguXG5jb25zdCBDVUJJU1RfRUlGX1NJR05JTkdfUEsgPVxuICBcIjJlNmQwNDMwYzhiMGI3ODMxNjIzNmQwM2NkYTI5OTY0NDllMjQwOTZiM2Y1YjUyNDAzMWYxMmVlYjVmYzE5YTE5ZGI1MjJhODQ2ZTYyNDBhNWYzNmYyNjU5MTg5MGFjNFwiO1xuXG4vKipcbiAqIEFuIGltcG9ydC1rZXkgcmVzcG9uc2Ugd2l0aCBlbmNsYXZlIGF0dGVzdGF0aW9uLCBjb21wYXRpYmxlIHdpdGggYm90aFxuICogYENyZWF0ZUtleUltcG9ydEtleVJlc3BvbnNlYCBhbmQgYENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlYC5cbiAqL1xuZXhwb3J0IHR5cGUgSW1wb3J0S2V5UmVzcG9uc2UgPSBDcmVhdGVLZXlJbXBvcnRLZXlSZXNwb25zZSAmIENyZWF0ZVBvbGljeUltcG9ydEtleVJlc3BvbnNlO1xuXG4vKipcbiAqIEEgdmVyaWZpZWQgaW1wb3J0IGtleSwgdXNhYmxlIGZvciBIUEtFIGVuY3J5cHRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXcmFwcGVkSW1wb3J0S2V5IHtcbiAgcmVhZG9ubHkgI3B1YmxpY0tleTogVWludDhBcnJheTtcbiAgcmVhZG9ubHkgI3NrRW5jOiBVaW50OEFycmF5O1xuICByZWFkb25seSAjZGtFbmM6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5ICNleHBFcG9jaFNlY29uZHM6IGJpZ2ludDtcbiAgcmVhZG9ubHkgI2VuY2xhdmVBdHRlc3RhdGlvbjogVWludDhBcnJheTtcbiAgcmVhZG9ubHkgI2VuY2xhdmVTaWduYXR1cmU6IFVpbnQ4QXJyYXk7XG4gIHJlYWRvbmx5ICNzdWl0ZTogQ2lwaGVyU3VpdGU7XG4gICNzZW5kZXJDb250ZXh0UGFyYW1zPzogeyByZWNpcGllbnRQdWJsaWNLZXk6IENyeXB0b0tleTsgaW5mbzogQXJyYXlCdWZmZXIgfTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHJlc3AgVGhlIGltcG9ydCBrZXkgcmVzcG9uc2UgZnJvbSBDdWJlU2lnbmVyLlxuICAgKiBAcGFyYW0gc3VpdGUgVGhlIEhQS0UgY2lwaGVyc3VpdGUgdG8gdXNlIGZvciBlbmNyeXB0aW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihyZXNwOiBJbXBvcnRLZXlSZXNwb25zZSwgc3VpdGU6IENpcGhlclN1aXRlKSB7XG4gICAgdGhpcy4jcHVibGljS2V5ID0gZGVjb2RlQmFzZTY0KHJlc3AucHVibGljX2tleSk7XG4gICAgdGhpcy4jc2tFbmMgPSBkZWNvZGVCYXNlNjQocmVzcC5za19lbmMpO1xuICAgIHRoaXMuI2RrRW5jID0gZGVjb2RlQmFzZTY0KHJlc3AuZGtfZW5jKTtcbiAgICB0aGlzLiNleHBFcG9jaFNlY29uZHMgPSBCaWdJbnQocmVzcC5leHBpcmVzKTtcbiAgICB0aGlzLiNlbmNsYXZlQXR0ZXN0YXRpb24gPSBkZWNvZGVCYXNlNjQocmVzcC5lbmNsYXZlX2F0dGVzdGF0aW9uKTtcbiAgICB0aGlzLiNlbmNsYXZlU2lnbmF0dXJlID0gZGVjb2RlQmFzZTY0KHJlc3AuZW5jbGF2ZV9zaWduYXR1cmUpO1xuICAgIHRoaXMuI3N1aXRlID0gc3VpdGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuZCB2ZXJpZnkgYSBgV3JhcHBlZEltcG9ydEtleWAgZnJvbSBhbiBpbXBvcnQta2V5IHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzcCBUaGUgcmVzcG9uc2UgZnJvbSBDdWJlU2lnbmVyIChrZXkgaW1wb3J0IG9yIHBvbGljeSBpbXBvcnQpLlxuICAgKiBAcGFyYW0gc3VidGxlIEEgU3VidGxlQ3J5cHRvIGluc3RhbmNlIHVzZWQgZm9yIHZlcmlmaWNhdGlvbi5cbiAgICogQHBhcmFtIHBjcjhFeHBlY3QgVGhlIGV4cGVjdGVkIFBDUjggdmFsdWUgKGJhcmUgaGV4KS4gSWYgYG51bGxgLCB0aGUgUENSOCBjaGVjayBpcyBza2lwcGVkLlxuICAgKiAgIERlZmF1bHRzIHRvIHRoZSBDdWJpc3QgZW5jbGF2ZSBzaWduaW5nIGtleSwgd2hpY2ggaXMgY29ycmVjdCBmb3Iga2V5IGltcG9ydHMuXG4gICAqIEByZXR1cm5zIEEgbmV3bHkgY29uc3RydWN0ZWQsIHZlcmlmaWVkIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjcmVhdGVBbmRWZXJpZnkoXG4gICAgcmVzcDogSW1wb3J0S2V5UmVzcG9uc2UsXG4gICAgc3VidGxlOiBTdWJ0bGVDcnlwdG8sXG4gICAgcGNyOEV4cGVjdDogc3RyaW5nIHwgbnVsbCA9IENVQklTVF9FSUZfU0lHTklOR19QSyxcbiAgKTogUHJvbWlzZTxXcmFwcGVkSW1wb3J0S2V5PiB7XG4gICAgY29uc3Qgc3VpdGUgPSBuZXcgQ2lwaGVyU3VpdGUoe1xuICAgICAga2VtOiBuZXcgRGhrZW1QMzg0SGtkZlNoYTM4NCgpLFxuICAgICAga2RmOiBuZXcgSGtkZlNoYTM4NCgpLFxuICAgICAgYWVhZDogbmV3IEFlczI1NkdjbSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IHdpayA9IG5ldyBXcmFwcGVkSW1wb3J0S2V5KHJlc3AsIHN1aXRlKTtcbiAgICBjb25zdCBpbmZvID0gYXdhaXQgd2lrLiN2ZXJpZnlJbXBvcnRLZXkoc3VidGxlLCBwY3I4RXhwZWN0KTtcbiAgICBjb25zdCByZWNpcGllbnRQdWJsaWNLZXkgPSBhd2FpdCBzdWl0ZS5rZW0uaW1wb3J0S2V5KFwicmF3XCIsIHdpay4jcHVibGljS2V5LCB0cnVlKTtcbiAgICB3aWsuI3NlbmRlckNvbnRleHRQYXJhbXMgPSB7IHJlY2lwaWVudFB1YmxpY0tleSwgaW5mbyB9O1xuICAgIHJldHVybiB3aWs7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoaXMgd3JhcHBlZCBpbXBvcnQga2V5LlxuICAgKlxuICAgKiBAcGFyYW0gc3VidGxlIEFuIGluc3RhbmNlIG9mIFN1YnRsZUNyeXB0byB1c2VkIGZvciB2ZXJpZmljYXRpb24uXG4gICAqIEBwYXJhbSBwY3I4RXhwZWN0IFRoZSBleHBlY3RlZCBQQ1I4IHZhbHVlLCBvciBgbnVsbGAgdG8gc2tpcCB0aGUgY2hlY2suXG4gICAqIEByZXR1cm5zIFRoZSBTSEEtMjU2IGhhc2ggb2YgdGhlIHNpZ25lZCBkYXRhLCBmb3IgdXNlIGFzIHRoZSBIUEtFIGBpbmZvYCBwYXJhbWV0ZXIuXG4gICAqL1xuICBhc3luYyAjdmVyaWZ5SW1wb3J0S2V5KHN1YnRsZTogU3VidGxlQ3J5cHRvLCBwY3I4RXhwZWN0OiBzdHJpbmcgfCBudWxsKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIC8vIGNoZWNrIGV4cGlyYXRpb24gZGF0ZVxuICAgIGlmIChub3dFcG9jaE1pbGxpcygpID49IHRoaXMuI2V4cEVwb2NoU2Vjb25kcyAqIDEwMDBuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbXBvcnQga2V5IGlzIGV4cGlyZWRcIik7XG4gICAgfVxuXG4gICAgY29uc3Qgc2lnbmluZ0tleSA9IGF3YWl0IHZlcmlmeUF0dGVzdGF0aW9uS2V5KHRoaXMuI2VuY2xhdmVBdHRlc3RhdGlvbiwgcGNyOEV4cGVjdCk7XG5cbiAgICAvLyB3ZSB1c2Ugc3VidGxlY3J5cHRvJ3MgaW1wbCBvZiBSU0EtUFNTIHZlcmlmaWNhdGlvblxuICAgIGNvbnN0IHJzYVBzc0tleVBhcmFtcyA9IHsgbmFtZTogXCJSU0EtUFNTXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG4gICAgY29uc3QgcHVia2V5ID0gYXdhaXQgc3VidGxlLmltcG9ydEtleShcInNwa2lcIiwgc2lnbmluZ0tleSwgcnNhUHNzS2V5UGFyYW1zLCB0cnVlLCBbXCJ2ZXJpZnlcIl0pO1xuICAgIGNvbnN0IHB1YmtleUFsZyA9IHB1YmtleS5hbGdvcml0aG0gYXMgdW5rbm93biBhcyB7IG1vZHVsdXNMZW5ndGg6IG51bWJlciB9O1xuXG4gICAgLy8gY29tcHV0ZSB0aGUgc2lnbmluZyBoYXNoIGFuZCB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLiNzaWduZWREYXRhKCk7XG4gICAgY29uc3QgbWxlbiA9IE51bWJlcihCaWdJbnQocHVia2V5QWxnLm1vZHVsdXNMZW5ndGgpIC8gOG4pO1xuICAgIGNvbnN0IHJzYVBzc1BhcmFtcyA9IHsgbmFtZTogXCJSU0EtUFNTXCIsIHNhbHRMZW5ndGg6IG1sZW4gLSAyIC0gMzIgfTtcblxuICAgIGlmICghKGF3YWl0IHN1YnRsZS52ZXJpZnkocnNhUHNzUGFyYW1zLCBwdWJrZXksIHRoaXMuI2VuY2xhdmVTaWduYXR1cmUsIG1lc3NhZ2UpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW1wb3J0IGtleSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhpcyBXcmFwcGVkSW1wb3J0S2V5IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cbiAgICpcbiAgICogQHJldHVybnMgVHJ1ZSBqdXN0IGlmIHRoaXMga2V5IG5lZWRzIHRvIGJlIHJlZnJlc2hlZC5cbiAgICovXG4gIHB1YmxpYyBuZWVkc1JlZnJlc2goKTogYm9vbGVhbiB7XG4gICAgLy8gZm9yY2UgcmVmcmVzaCBpZiB3ZSdyZSB3aXRoaW4gV0lLX1JFRlJFU0hfRUFSTFlfTUlMTElTIG9mIHRoZSBleHBpcmF0aW9uXG4gICAgcmV0dXJuIG5vd0Vwb2NoTWlsbGlzKCkgKyBXSUtfUkVGUkVTSF9FQVJMWV9NSUxMSVMgPiB0aGlzLiNleHBFcG9jaFNlY29uZHMgKiAxMDAwbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgc2lnbmluZyBoYXNoIGZvciB0aGlzIGltcG9ydCBrZXkuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBieXRlcyBvdmVyIHdoaWNoIHRoZSBlbmNsYXZlIHNpZ25hdHVyZSB3YXMgY29tcHV0ZWQuXG4gICAqL1xuICAjc2lnbmVkRGF0YSgpOiBVaW50OEFycmF5IHtcbiAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgIC8vIGRvbWFpbiBzZXBhcmF0aW9uIHRhZ1xuICAgICAgdG9CaWdFbmRpYW4oQmlnSW50KElNUE9SVF9LRVlfU0lHTklOR19EU1QubGVuZ3RoKSwgMiksXG4gICAgICBJTVBPUlRfS0VZX1NJR05JTkdfRFNULFxuXG4gICAgICAvLyBwdWJsaWMga2V5XG4gICAgICB0b0JpZ0VuZGlhbihCaWdJbnQodGhpcy4jcHVibGljS2V5Lmxlbmd0aCksIDIpLFxuICAgICAgdGhpcy4jcHVibGljS2V5LFxuXG4gICAgICAvLyBza19lbmNcbiAgICAgIHRvQmlnRW5kaWFuKEJpZ0ludCh0aGlzLiNza0VuYy5sZW5ndGgpLCAyKSxcbiAgICAgIHRoaXMuI3NrRW5jLFxuXG4gICAgICAvLyBka19lbmNcbiAgICAgIHRvQmlnRW5kaWFuKEJpZ0ludCh0aGlzLiNka0VuYy5sZW5ndGgpLCAyKSxcbiAgICAgIHRoaXMuI2RrRW5jLFxuXG4gICAgICAvLyA4LWJ5dGUgYmlnLWVuZGlhbiBleHBpcmF0aW9uIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSBVTklYIGVwb2NoXG4gICAgICB0b0JpZ0VuZGlhbih0aGlzLiNleHBFcG9jaFNlY29uZHMsIDgpLFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uY2F0QXJyYXlzKHBhcnRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmNyeXB0IGBkYXRhYCB1c2luZyBIUEtFIHRvIHRoaXMgaW1wb3J0IGtleS5cbiAgICpcbiAgICogQHBhcmFtIGRhdGEgVGhlIHBsYWludGV4dCB0byBlbmNyeXB0LlxuICAgKiBAcmV0dXJucyBUaGUgYmFzZTY0LWVuY29kZWQgSFBLRSBlbmNhcHN1bGF0ZWQga2V5IChgZW5jYCkgYW5kIGNpcGhlcnRleHQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW5jcnlwdChkYXRhOiBVaW50OEFycmF5KTogUHJvbWlzZTx7IGVuYzogc3RyaW5nOyBjaXBoZXJ0ZXh0OiBzdHJpbmcgfT4ge1xuICAgIC8vIFNhZmU6IGBXcmFwcGVkSW1wb3J0S2V5YCBjYW4gb25seSBiZSBjb25zdHJ1Y3RlZCB0aHJvdWdoIGBjcmVhdGVBbmRWZXJpZnlgLCB3aGljaCBhbHdheXNcbiAgICAvLyBzZXRzIGAjc2VuZGVyQ29udGV4dFBhcmFtc2BcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLiNzZW5kZXJDb250ZXh0UGFyYW1zITtcbiAgICBjb25zdCBzZW5kZXIgPSBhd2FpdCB0aGlzLiNzdWl0ZS5jcmVhdGVTZW5kZXJDb250ZXh0KHBhcmFtcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYzogZW5jb2RlVG9CYXNlNjQoc2VuZGVyLmVuYyksXG4gICAgICBjaXBoZXJ0ZXh0OiBlbmNvZGVUb0Jhc2U2NChhd2FpdCBzZW5kZXIuc2VhbChkYXRhKSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGltcG9ydCBrZXkgZmllbGRzLCBmb3IgdXNlIGluIGltcG9ydCByZXF1ZXN0cy5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGltcG9ydCBrZXkgZmllbGRzLlxuICAgKi9cbiAgcHVibGljIHRvSW1wb3J0S2V5KCk6IEltcG9ydEtleSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YmxpY19rZXk6IGVuY29kZVRvQmFzZTY0KHRoaXMuI3B1YmxpY0tleSksXG4gICAgICBza19lbmM6IGVuY29kZVRvQmFzZTY0KHRoaXMuI3NrRW5jKSxcbiAgICAgIGRrX2VuYzogZW5jb2RlVG9CYXNlNjQodGhpcy4jZGtFbmMpLFxuICAgICAgZXhwaXJlczogTnVtYmVyKHRoaXMuI2V4cEVwb2NoU2Vjb25kcyksXG4gICAgfTtcbiAgfVxufVxuXG4vKlxuICogQW4gQVdTIE5pdHJvIGF0dGVzdGF0aW9uIGRvY3VtZW50XG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtbml0cm8tZW5jbGF2ZXMtbnNtLWFwaS9ibG9iLzRiODUxZjMwMDZjNmZhOThmMjNkY2ZmYjJjYmEwM2IzOWRlOWI4YWYvc3JjL2FwaS9tb2QucnMjTDIwOFxuICovXG50eXBlIEF0dGVzdGF0aW9uRG9jID0ge1xuICBtb2R1bGVfaWQ6IHN0cmluZztcbiAgZGlnZXN0OiBcIlNIQTI1NlwiIHwgXCJTSEEzODRcIiB8IFwiU0hBNTEyXCI7XG4gIHRpbWVzdGFtcDogYmlnaW50O1xuICBwY3JzOiB7IFtwY3I6IHN0cmluZ106IFVpbnQ4QXJyYXkgfTtcbiAgY2VydGlmaWNhdGU6IFVpbnQ4QXJyYXk7XG4gIGNhYnVuZGxlOiBVaW50OEFycmF5W107XG4gIHB1YmxpY19rZXk/OiBVaW50OEFycmF5O1xuICB1c2VyX2RhdGE/OiBVaW50OEFycmF5O1xuICBub25jZT86IFVpbnQ4QXJyYXk7XG59O1xuXG4vKipcbiAqIFZlcmlmaWVzIHRoZSBhdHRlc3RhdGlvbiBrZXkgYWdhaW5zdCB0aGUgQVdTIE5pdHJvIEVuY2xhdmVzIHNpZ25pbmdcbiAqIGtleSBhbmQgcmV0dXJucyB0aGUgYXR0ZXN0ZWQgc2lnbmluZyBrZXkuXG4gKlxuICogQHBhcmFtIGF0dEJ5dGVzIEFuIGF0dGVzdGF0aW9uIGZyb20gYW4gQVdTIG5pdHJvIGVuY2xhdmUuXG4gKiBAcGFyYW0gcGNyOEV4cGVjdCBJZiBub24tbnVsbCwgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIFBDUjggaW4gdGhlIGF0dGVzdGF0aW9uLlxuICogQHJldHVybnMgVGhlIHNpZ25pbmcga2V5IHRoYXQgd2FzIGF0dGVzdGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5QXR0ZXN0YXRpb25LZXkoXG4gIGF0dEJ5dGVzOiBVaW50OEFycmF5LFxuICBwY3I4RXhwZWN0OiBzdHJpbmcgfCBudWxsLFxuKTogUHJvbWlzZTxVaW50OEFycmF5PiB7XG4gIC8vIGNib3IteCBpcyBiZWluZyBpbXBvcnRlZCBhcyBFU00sIHNvIHdlIG11c3QgYXN5bmNocm9ub3VzbHkgaW1wb3J0IGl0IGhlcmUuXG4gIC8vIEJlY2F1c2Ugd2Ugb25seSB1c2UgdGhhdCBhbmQgYXV0aDAvY29zZSBoZXJlLCB3ZSBpbXBvcnQgYm90aCB0aGlzIHdheS5cbiAgY29uc3QgeyBTaWduMSB9ID0gYXdhaXQgaW1wb3J0KFwiQGF1dGgwL2Nvc2VcIik7XG4gIGNvbnN0IHsgZGVjb2RlOiBjYm9yRGVjb2RlIH0gPSBhd2FpdCBpbXBvcnQoXCJjYm9yLXhcIik7XG5cbiAgeDUwOUNyeXB0b1Byb3ZpZGVyLnNldChhd2FpdCBsb2FkQ3J5cHRvKCkpO1xuXG4gIGNvbnN0IGF0dCA9IFNpZ24xLmRlY29kZShhdHRCeXRlcyk7XG4gIGNvbnN0IGF0dERvYyA9IGNib3JEZWNvZGUoYXR0LnBheWxvYWQpIGFzIEF0dGVzdGF0aW9uRG9jO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm8gcHVibGljIGtleSBpbiB0aGlzIGF0dGVzdGF0aW9uLCByZWplY3RcbiAgaWYgKCFhdHREb2MucHVibGljX2tleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVzdGF0aW9uIGRpZCBub3QgaW5jbHVkZSBhIHNpZ25pbmcgcHVibGljIGtleVwiKTtcbiAgfVxuXG4gIC8vIGlmIGEgUENSOCB2YWx1ZSBpcyBleHBlY3RlZCwgdmVyaWZ5IGl0IG1hdGNoZXNcbiAgaWYgKHBjcjhFeHBlY3QgIT09IG51bGwpIHtcbiAgICBjb25zdCBwY3I4RGF0YSA9IGF0dERvYy5wY3JzW1wiOFwiXTtcbiAgICAvLyBzbGljZSgyKSBzdHJpcHMgXCIweFwiIHByZWZpeDsgcGNyOEV4cGVjdCBpcyBiYXJlIGhleFxuICAgIGlmICghcGNyOERhdGEgfHwgcGNyOEV4cGVjdCAhPT0gZW5jb2RlVG9IZXgocGNyOERhdGEpLnNsaWNlKDIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiB3YXMgbm90IGZyb20gYW4gYXV0aG9yaXplZCBlbmNsYXZlXCIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGNoZWNrIGV4cGlyYXRpb24gZGF0ZSBvZiBhdHRlc3RhdGlvblxuICBjb25zdCBub3dNcyA9IG5vd0Vwb2NoTWlsbGlzKCk7XG4gIGNvbnN0IGxhdGVzdCA9IG5vd01zICsgTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTICogNjBuICogMTAwMG47XG4gIGNvbnN0IGVhcmxpZXN0ID1cbiAgICBsYXRlc3QgLSAoTUFYX0FUVEVTVEFUSU9OX0ZVVFVSRV9NSU5VVEVTICsgTUFYX0FUVEVTVEFUSU9OX0FHRV9NSU5VVEVTKSAqIDYwbiAqIDEwMDBuO1xuICBpZiAoYXR0RG9jLnRpbWVzdGFtcCA8IGVhcmxpZXN0IHx8IGF0dERvYy50aW1lc3RhbXAgPiBsYXRlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBpcyBleHBpcmVkXCIpO1xuICB9XG5cbiAgLy8gVmVyaWZ5IGNlcnRpZmljYXRlIGNoYWluIHN0YXJ0aW5nIHdpdGggQVdTIE5pdHJvIENBIGNlcnRcbiAgbGV0IHBhcmVudCA9IG5ldyBYNTA5Q2VydGlmaWNhdGUoQVdTX0NBX0NFUlQpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dERvYy5jYWJ1bmRsZS5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgWDUwOUNlcnRpZmljYXRlKGF0dERvYy5jYWJ1bmRsZVtpXSk7XG4gICAgaWYgKCEoYXdhaXQgY2VydC52ZXJpZnkocGFyZW50KSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQXR0ZXN0YXRpb24gY2VydGlmaWNhdGUgY2hhaW4gZmFpbGVkIGF0IGluZGV4ICR7aX1gKTtcbiAgICB9XG4gICAgcGFyZW50ID0gY2VydDtcbiAgfVxuICBjb25zdCBjZXJ0ID0gbmV3IFg1MDlDZXJ0aWZpY2F0ZShhdHREb2MuY2VydGlmaWNhdGUpO1xuICBpZiAoIShhd2FpdCBjZXJ0LnZlcmlmeShwYXJlbnQpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkF0dGVzdGF0aW9uIGNlcnRpZmljYXRlIGNoYWluIGZhaWxlZCBhdCBsZWFmXCIpO1xuICB9XG4gIGNvbnN0IHB1YmtleSA9IGNlcnQucHVibGljS2V5O1xuXG4gIC8vIG1ha2Ugc3VyZSB0aGF0IHdlIGdvdCB0aGUgZXhwZWN0ZWQgcHVibGljIGtleSB0eXBlXG4gIGNvbnN0IGFsZyA9IG5ldyBBbGdvcml0aG1Qcm92aWRlcigpLnRvQXNuQWxnb3JpdGhtKHB1YmtleS5hbGdvcml0aG0pO1xuICBpZiAoYWxnLmFsZ29yaXRobSAhPSBFQ19QVUJMSUNfS0VZKSB7XG4gICAgLy8gbm90IHRoZSBleHBlY3RlZCBhbGdvcml0aG0sIGkuZS4sIGVsbGlwdGljIGN1cnZlIHNpZ25pbmdcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBjb250YWluZWQgdW5leHBlY3RlZCBzaWduYXR1cmUgYWxnb3JpdGhtXCIpO1xuICB9XG4gIGNvbnN0IHBhcmFtcyA9IEFzblBhcnNlci5wYXJzZShhbGcucGFyYW1ldGVycyEsIEVDUGFyYW1ldGVycyk7XG4gIGlmICghcGFyYW1zLm5hbWVkQ3VydmUgfHwgcGFyYW1zLm5hbWVkQ3VydmUgIT09IE5JU1RfUDM4NCkge1xuICAgIC8vIG5vdCB0aGUgZXhwZWN0ZWQgcGFyYW1zLCBpLmUuLCBOSVNUIFAzODRcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRlc3RhdGlvbiBjb250YWluZWQgdW5leHBlY3RlZCBzaWduYXR1cmUgYWxnb3JpdGhtXCIpO1xuICB9XG5cbiAgLy8gdmVyaWZ5IHRoZSBjb3NlIHNpZ25hdHVyZSB3aXRoIHRoZSBrZXksIHdoaWNoIHdlIHZlcmlmaWVkIGFnYWluc3RcbiAgLy8gdGhlIEFXUyBOaXRybyBDQSBjZXJ0aWZpY2F0ZSBhYm92ZVxuICBhd2FpdCBhdHQudmVyaWZ5KGF3YWl0IHB1YmtleS5leHBvcnQoKSk7XG5cbiAgcmV0dXJuIGF0dERvYy5wdWJsaWNfa2V5O1xufVxuIl19
package/package.json CHANGED
@@ -5,28 +5,35 @@
5
5
  "url": "git+https://github.com/cubist-labs/CubeSigner-TypeScript-SDK.git",
6
6
  "directory": "packages/key-import"
7
7
  },
8
- "version": "0.4.263",
8
+ "version": "0.4.265",
9
9
  "description": "Client-side key-import machinery for CubeSigner",
10
10
  "license": "MIT OR Apache-2.0",
11
11
  "author": "Cubist, Inc.",
12
+ "type": "module",
12
13
  "main": "dist/index.js",
13
14
  "types": "dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ }
20
+ },
14
21
  "files": [
15
22
  "tsconfig.json",
16
23
  "src/**",
17
24
  "dist/**",
18
25
  "../../NOTICE",
19
26
  "../../LICENSE-APACHE",
20
- "../../LICENSE_MIT"
27
+ "../../LICENSE-MIT"
21
28
  ],
22
29
  "scripts": {
23
30
  "build": "tsc",
24
31
  "prepack": "tsc",
25
32
  "repl": "npx node --import tsx",
26
- "test": "npx --node-options='--experimental-vm-modules' jest --maxWorkers=1"
33
+ "test": "vitest run"
27
34
  },
28
35
  "peerDependencies": {
29
- "@cubist-labs/cubesigner-sdk": "^0.4.263"
36
+ "@cubist-labs/cubesigner-sdk": "^0.4.265"
30
37
  },
31
38
  "devDependencies": {
32
39
  "tsx": "^4.19.0"
package/src/import.ts CHANGED
@@ -8,10 +8,10 @@ import type {
8
8
  } from "@cubist-labs/cubesigner-sdk";
9
9
  import { loadSubtleCrypto } from "@cubist-labs/cubesigner-sdk";
10
10
 
11
- import type { MnemonicToImport } from "./mnemonic";
12
- import { newMnemonicKeyPackage } from "./mnemonic";
13
- import { newRawKeyPackage } from "./raw";
14
- import { WrappedImportKey } from "./wrapped_import_key";
11
+ import type { MnemonicToImport } from "./mnemonic.ts";
12
+ import { newMnemonicKeyPackage } from "./mnemonic.ts";
13
+ import { newRawKeyPackage } from "./raw.ts";
14
+ import { WrappedImportKey } from "./wrapped_import_key.ts";
15
15
 
16
16
  // Maximum number of keys to import in a single API call
17
17
  const MAX_IMPORTS_PER_API_CALL = 32n;
package/src/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { KeyImporter } from "./import";
2
- export { MnemonicToImport } from "./mnemonic";
3
- export { encryptPolicySecret, EncryptedPolicySecret } from "./policy_secret";
1
+ export { KeyImporter } from "./import.ts";
2
+ export { MnemonicToImport } from "./mnemonic.ts";
3
+ export { encryptPolicySecret, EncryptedPolicySecret } from "./policy_secret.ts";
@@ -1,6 +1,6 @@
1
1
  import type { ApiClient, KeyImportKey, SecretValue } from "@cubist-labs/cubesigner-sdk";
2
2
  import { loadSubtleCrypto } from "@cubist-labs/cubesigner-sdk";
3
- import { WrappedImportKey } from "./wrapped_import_key";
3
+ import { WrappedImportKey } from "./wrapped_import_key.ts";
4
4
 
5
5
  /**
6
6
  * The result of encrypting a policy secret value.
@@ -15,7 +15,7 @@ import {
15
15
  X509Certificate,
16
16
  cryptoProvider as x509CryptoProvider,
17
17
  } from "@peculiar/x509";
18
- import { toBigEndian, concatArrays, nowEpochMillis } from "./util";
18
+ import { toBigEndian, concatArrays, nowEpochMillis } from "./util.ts";
19
19
 
20
20
  // domain-separation tag used when generating signing hash for import key
21
21
  export const IMPORT_KEY_SIGNING_DST = new TextEncoder().encode("CUBESIGNER_EPHEMERAL_IMPORT_P384");
package/tsconfig.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist"
5
+ },
6
+ "typedocOptions": {
7
+ "out": "./docs",
8
+ "entryPoints": ["src/index.ts"]
9
+ },
10
+ "exclude": ["spec", "node_modules", "dist"],
11
+ "include": ["src/**/*.ts"]
12
+ }