@bitgo-beta/sdk-lib-mpc 8.2.0-beta.2102 → 8.2.0-beta.2104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/tss/dkls-vrf/util.d.ts +32 -0
- package/dist/src/tss/dkls-vrf/util.d.ts.map +1 -1
- package/dist/src/tss/dkls-vrf/util.js +87 -1
- package/dist/src/tss/ecdsa-dkls/dkg.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/dkg.js +8 -33
- package/dist/src/tss/ecdsa-dkls/types.d.ts +35 -0
- package/dist/src/tss/ecdsa-dkls/types.d.ts.map +1 -1
- package/dist/src/tss/ecdsa-dkls/types.js +41 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -45,9 +45,13 @@ exports.serializeP2PMessage = serializeP2PMessage;
|
|
|
45
45
|
exports.serializeBroadcastMessage = serializeBroadcastMessage;
|
|
46
46
|
exports.getCommonKeychain = getCommonKeychain;
|
|
47
47
|
exports.getDecodedReducedKeyShare = getDecodedReducedKeyShare;
|
|
48
|
+
exports.buildDklsKeyShare = buildDklsKeyShare;
|
|
48
49
|
const assert_1 = __importDefault(require("assert"));
|
|
50
|
+
const crypto_1 = require("crypto");
|
|
49
51
|
const cbor_x_1 = require("cbor-x");
|
|
50
52
|
const t = __importStar(require("io-ts"));
|
|
53
|
+
const curves_1 = require("../../curves");
|
|
54
|
+
const util_1 = require("../../util");
|
|
51
55
|
const Either_1 = require("fp-ts/Either");
|
|
52
56
|
var DkgState;
|
|
53
57
|
(function (DkgState) {
|
|
@@ -172,4 +176,40 @@ function getDecodedReducedKeyShare(reducedKeyShare) {
|
|
|
172
176
|
}
|
|
173
177
|
return decoded.right;
|
|
174
178
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkdBLDhDQUtDO0FBTUQsa0RBS0M7QUFNRCxzREFPQztBQU1ELGtFQU1DO0FBTUQsa0RBT0M7QUFNRCw4REFNQztBQU9ELDhDQU9DO0FBRUQsOERBTUM7QUFuTUQsb0RBQTRCO0FBQzVCLG1DQUFnQztBQUNoQyx5Q0FBMkI7QUFFM0IseUNBQXNDO0FBaUJ0QyxJQUFZLFFBUVg7QUFSRCxXQUFZLFFBQVE7SUFDbEIseURBQWlCLENBQUE7SUFDakIsMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLCtDQUFRLENBQUE7SUFDUix1REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQUVELElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNsQix5REFBYSxDQUFBO0lBQ2IsMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLCtDQUFRLENBQUE7SUFDUix1REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQVJXLFFBQVEsd0JBQVIsUUFBUSxRQVFuQjtBQXVCRDs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsYUFB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QUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ2hHLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLFFBQWdCO0lBQ2hELE1BQU0sY0FBYyxHQUFHLElBQUEsZUFBTSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLElBQUEsZ0JBQU0sRUFBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7SUFDdEUsSUFBQSxnQkFBTSxFQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUseUNBQXlDLENBQUMsQ0FBQztJQUNsRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xGLE9BQU8sU0FBUyxHQUFHLGFBQWEsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsZUFBb0M7SUFDNUUsTUFBTSxPQUFPLEdBQUcsMkJBQW1CLENBQUMsTUFBTSxDQUFDLElBQUEsZUFBTSxFQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsSUFBSSxJQUFBLGVBQU0sRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IGRlY29kZSB9IGZyb20gJ2Nib3IteCc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCB7IFhTaGFyZSB9IGZyb20gJy4uL2VjZHNhL3R5cGVzJztcbmltcG9ydCB7IGlzTGVmdCB9IGZyb20gJ2ZwLXRzL0VpdGhlcic7XG5cbi8vIEJyb2FkY2FzdCBtZXNzYWdlIG1lYW50IHRvIGJlIHNlbnQgdG8gbXVsdGlwbGUgcGFydGllc1xuaW50ZXJmYWNlIEJyb2FkY2FzdE1lc3NhZ2U8VD4ge1xuICBwYXlsb2FkOiBUO1xuICBmcm9tOiBudW1iZXI7XG4gIHNpZ25hdHVyZVI/OiBUO1xufVxuXG4vLyBQMlAgbWVzc2FnZSBtZWFudCB0byBiZSBzZW50IHRvIGEgc3BlY2lmaWMgcGFydHlcbmludGVyZmFjZSBQMlBNZXNzYWdlPFQsIEc+IHtcbiAgcGF5bG9hZDogVDtcbiAgZnJvbTogbnVtYmVyO1xuICBjb21taXRtZW50PzogRztcbiAgdG86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gRGtnU3RhdGUge1xuICBVbmluaXRpYWxpemVkID0gMCxcbiAgUm91bmQxLFxuICBSb3VuZDIsXG4gIFJvdW5kMyxcbiAgUm91bmQ0LFxuICBDb21wbGV0ZSxcbiAgSW52YWxpZFN0YXRlLFxufVxuXG5leHBvcnQgZW51bSBEc2dTdGF0ZSB7XG4gIFVuaW5pdGlhbGl6ZWQsXG4gIFJvdW5kMSxcbiAgUm91bmQyLFxuICBSb3VuZDMsXG4gIFJvdW5kNCxcbiAgQ29tcGxldGUsXG4gIEludmFsaWRTdGF0ZSxcbn1cblxuZXhwb3J0IHR5cGUgQXV0aEVuY01lc3NhZ2UgPSB7XG4gIGVuY3J5cHRlZE1lc3NhZ2U6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgQXV0aE1lc3NhZ2UgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUGFydHlHcGdLZXkgPSB7XG4gIHBhcnR5SWQ6IG51bWJlcjtcbiAgZ3BnS2V5OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRGtsc1NpZ25hdHVyZTxUPiA9IHtcbiAgUjogVDtcbiAgUzogVDtcbn07XG5leHBvcnQgdHlwZSBSZXRyb2ZpdERhdGEgPSB7XG4gIHhTaGFyZTogUGFydGlhbDxYU2hhcmU+O1xuICB4aUxpc3Q/OiBudW1iZXJbXVtdO1xufTtcblxuLyoqXG4gKiBBIENCT1ItZW5jb2RlZCBzdWJzZXQgb2YgYW4gTVBDdjIgKERLTFMpIGtleSBzaGFyZSBzdG9yZWQgb24gdGhlIGtleSBjYXJkLlxuICpcbiAqIEBwcm9wZXJ0eSBiaWdTTGlzdCAtIFB1YmxpYyBjb21taXRtZW50cyBTX2kgPSBzX2kgKiBHIGZvciBlYWNoIHBhcnR5LlxuICogQHByb3BlcnR5IHhMaXN0IC0gRXZhbHVhdGlvbiBwb2ludHMgKHgtY29vcmRpbmF0ZXMgZm9yIExhZ3JhbmdlIGludGVycG9sYXRpb24pLlxuICogQHByb3BlcnR5IHJvb3RDaGFpbkNvZGUgLSBSb290IGNoYWluIGNvZGUgZm9yIEhEIGRlcml2YXRpb24uXG4gKiBAcHJvcGVydHkgcHJ2IC0gVGhlIHBhcnR5J3MgcHJpdmF0ZSBzY2FsYXIgc19pLiBUaGlzIGlzIHByaXZhdGUga2V5IG1hdGVyaWFsO1xuICogICBwb3NzZXNzaW9uIG9mIHRoaXMgdmFsdWUgYWxsb3dzIHRoZSBob2xkZXIgdG8gYWN0IGFzIHRoaXMgcGFydHkgaW4gc2lnbmluZy5cbiAqIEBwcm9wZXJ0eSBwdWIgLSBUaGUgcGFydHkncyBwdWJsaWMga2V5LlxuICovXG5leHBvcnQgY29uc3QgUmVkdWNlZEtleVNoYXJlVHlwZSA9IHQudHlwZSh7XG4gIGJpZ1NMaXN0OiB0LmFycmF5KHQuYXJyYXkodC5udW1iZXIpKSxcbiAgeExpc3Q6IHQuYXJyYXkodC5hcnJheSh0Lm51bWJlcikpLFxuICByb290Q2hhaW5Db2RlOiB0LmFycmF5KHQubnVtYmVyKSxcbiAgcHJ2OiB0LmFycmF5KHQubnVtYmVyKSxcbiAgcHViOiB0LmFycmF5KHQubnVtYmVyKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBSZWR1Y2VkS2V5U2hhcmUgPSB0LlR5cGVPZjx0eXBlb2YgUmVkdWNlZEtleVNoYXJlVHlwZT47XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlID0gQnJvYWRjYXN0TWVzc2FnZTxzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8VWludDhBcnJheT47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8c3RyaW5nLCBzdHJpbmc+O1xuZXhwb3J0IHR5cGUgRGVzZXJpYWxpemVkUDJQTWVzc2FnZSA9IFAyUE1lc3NhZ2U8VWludDhBcnJheSwgVWludDhBcnJheT47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkRGtsc1NpZ25hdHVyZSA9IERrbHNTaWduYXR1cmU8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZERrbHNTaWduYXR1cmUgPSBEa2xzU2lnbmF0dXJlPFVpbnQ4QXJyYXk+O1xuZXhwb3J0IHR5cGUgQXV0aEVuY1AyUE1lc3NhZ2UgPSBQMlBNZXNzYWdlPEF1dGhFbmNNZXNzYWdlLCBzdHJpbmc+O1xuZXhwb3J0IHR5cGUgQXV0aEJyb2FkY2FzdE1lc3NhZ2UgPSBCcm9hZGNhc3RNZXNzYWdlPEF1dGhNZXNzYWdlPjtcbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRNZXNzYWdlcyA9IHtcbiAgcDJwTWVzc2FnZXM6IFNlcmlhbGl6ZWRQMlBNZXNzYWdlW107XG4gIGJyb2FkY2FzdE1lc3NhZ2VzOiBTZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZVtdO1xufTtcbmV4cG9ydCB0eXBlIEF1dGhFbmNNZXNzYWdlcyA9IHtcbiAgcDJwTWVzc2FnZXM6IEF1dGhFbmNQMlBNZXNzYWdlW107XG4gIGJyb2FkY2FzdE1lc3NhZ2VzOiBBdXRoQnJvYWRjYXN0TWVzc2FnZVtdO1xufTtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZE1lc3NhZ2VzID0ge1xuICBwMnBNZXNzYWdlczogRGVzZXJpYWxpemVkUDJQTWVzc2FnZVtdO1xuICBicm9hZGNhc3RNZXNzYWdlczogRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZVtdO1xufTtcblxuLyoqXG4gKiBTZXJpYWxpemVzIG1lc3NhZ2VzIHBheWxvYWRzIHRvIGJhc2U2NCBzdHJpbmdzLlxuICogQHBhcmFtIG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVNZXNzYWdlcyhtZXNzYWdlczogRGVzZXJpYWxpemVkTWVzc2FnZXMpOiBTZXJpYWxpemVkTWVzc2FnZXMge1xuICByZXR1cm4ge1xuICAgIHAycE1lc3NhZ2VzOiBtZXNzYWdlcy5wMnBNZXNzYWdlcy5tYXAoc2VyaWFsaXplUDJQTWVzc2FnZSksXG4gICAgYnJvYWRjYXN0TWVzc2FnZXM6IG1lc3NhZ2VzLmJyb2FkY2FzdE1lc3NhZ2VzLm1hcChzZXJpYWxpemVCcm9hZGNhc3RNZXNzYWdlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZSBtZXNzYWdlcyBwYXlsb2FkcyB0byBVaW50OEFycmF5LlxuICogQHBhcmFtIG1lc3NhZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZU1lc3NhZ2VzKG1lc3NhZ2VzOiBTZXJpYWxpemVkTWVzc2FnZXMpOiBEZXNlcmlhbGl6ZWRNZXNzYWdlcyB7XG4gIHJldHVybiB7XG4gICAgcDJwTWVzc2FnZXM6IG1lc3NhZ2VzLnAycE1lc3NhZ2VzLm1hcChkZXNlcmlhbGl6ZVAyUE1lc3NhZ2UpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBtZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5tYXAoZGVzZXJpYWxpemVCcm9hZGNhc3RNZXNzYWdlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBQMlAgbWVzc2FnZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVAyUE1lc3NhZ2UobWVzc2FnZTogU2VyaWFsaXplZFAyUE1lc3NhZ2UpOiBEZXNlcmlhbGl6ZWRQMlBNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogbWVzc2FnZS50byxcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgIGNvbW1pdG1lbnQ6IG1lc3NhZ2UuY29tbWl0bWVudCA/IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UuY29tbWl0bWVudCwgJ2hleCcpKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXNlcmlhbGl6ZXMgYSBCcm9hZGNhc3QgbWVzc2FnZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZTogU2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UpOiBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkLCAnYmFzZTY0JykpLFxuICAgIHNpZ25hdHVyZVI6IG1lc3NhZ2Uuc2lnbmF0dXJlUiA/IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2Uuc2lnbmF0dXJlUiwgJ2Jhc2U2NCcpKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgUDJQIG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplUDJQTWVzc2FnZShtZXNzYWdlOiBEZXNlcmlhbGl6ZWRQMlBNZXNzYWdlKTogU2VyaWFsaXplZFAyUE1lc3NhZ2Uge1xuICByZXR1cm4ge1xuICAgIHRvOiBtZXNzYWdlLnRvLFxuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICBwYXlsb2FkOiBCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICBjb21taXRtZW50OiBtZXNzYWdlLmNvbW1pdG1lbnQgPyBCdWZmZXIuZnJvbShtZXNzYWdlLmNvbW1pdG1lbnQpLnRvU3RyaW5nKCdoZXgnKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgQnJvYWRjYXN0IG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZShtZXNzYWdlOiBEZXNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlKTogU2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2Uge1xuICByZXR1cm4ge1xuICAgIGZyb206IG1lc3NhZ2UuZnJvbSxcbiAgICBwYXlsb2FkOiBCdWZmZXIuZnJvbShtZXNzYWdlLnBheWxvYWQpLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICBzaWduYXR1cmVSOiBtZXNzYWdlLnNpZ25hdHVyZVIgPyBCdWZmZXIuZnJvbShtZXNzYWdlLnNpZ25hdHVyZVIpLnRvU3RyaW5nKCdiYXNlNjQnKSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIGNvbW1vbmtleUNoYWluIGZyb20gREtMUyBrZXlTaGFyZVxuICogQHBhcmFtIHtCdWZmZXJ9IGtleVNoYXJlIC0gREtMUyBrZXlTaGFyZVxuICogQHJldHVybnMge3N0cmluZ30gY29tbW9uS2V5Y2hhaW4gaW4gaGV4IGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tbW9uS2V5Y2hhaW4oa2V5U2hhcmU6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZEtleVNoYXJlID0gZGVjb2RlKGtleVNoYXJlKTtcbiAgYXNzZXJ0KHBhcnNlZEtleVNoYXJlLnB1YmxpY19rZXksICdwdWJsaWNfa2V5IG5vdCBmb3VuZCBpbiBrZXlTaGFyZScpO1xuICBhc3NlcnQocGFyc2VkS2V5U2hhcmUucm9vdF9jaGFpbl9jb2RlLCAncm9vdF9jaGFpbl9jb2RlIG5vdCBmb3VuZCBpbiBwdWJsaWNfa2V5Jyk7XG4gIGNvbnN0IHB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHBhcnNlZEtleVNoYXJlLnB1YmxpY19rZXkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uc3Qgcm9vdENoYWluQ29kZSA9IEJ1ZmZlci5mcm9tKHBhcnNlZEtleVNoYXJlLnJvb3RfY2hhaW5fY29kZSkudG9TdHJpbmcoJ2hleCcpO1xuICByZXR1cm4gcHVibGljS2V5ICsgcm9vdENoYWluQ29kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlY29kZWRSZWR1Y2VkS2V5U2hhcmUocmVkdWNlZEtleVNoYXJlOiBCdWZmZXIgfCBVaW50OEFycmF5KTogUmVkdWNlZEtleVNoYXJlIHtcbiAgY29uc3QgZGVjb2RlZCA9IFJlZHVjZWRLZXlTaGFyZVR5cGUuZGVjb2RlKGRlY29kZShyZWR1Y2VkS2V5U2hhcmUpKTtcbiAgaWYgKGlzTGVmdChkZWNvZGVkKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIHJlZHVjZWRLZXlTaGFyZTogJHtkZWNvZGVkLmxlZnR9YCk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQucmlnaHQ7XG59XG4iXX0=
|
|
179
|
+
/**
|
|
180
|
+
* Builds a plain (CBOR-encodable) DKLS key share object from a retrofit x-share,
|
|
181
|
+
* without running a DKG ceremony. This is the pure core of `Dkg._createDKLsRetrofitKeyShare`:
|
|
182
|
+
* the party's secret scalar and public key are copied verbatim, the OT seeds are zeroed
|
|
183
|
+
* (a retrofit/derived share cannot sign directly), and the session id is `sha256(pub || chaincode)`
|
|
184
|
+
* so every party of the same key rebuilds the same id.
|
|
185
|
+
*/
|
|
186
|
+
function buildDklsKeyShare(params) {
|
|
187
|
+
const { xShare, n, t, partyIdx, xiList } = params;
|
|
188
|
+
if (!xShare.y || !xShare.chaincode || !xShare.x) {
|
|
189
|
+
throw Error('xShare must have a public key, private share value, and a chaincode.');
|
|
190
|
+
}
|
|
191
|
+
const defaultXiList = [];
|
|
192
|
+
for (let i = 0; i < n; i++) {
|
|
193
|
+
defaultXiList.push(Array.from((0, util_1.bigIntToBufferBE)(BigInt(i + 1), 32)));
|
|
194
|
+
}
|
|
195
|
+
const secp256k1 = new curves_1.Secp256k1Curve();
|
|
196
|
+
return {
|
|
197
|
+
total_parties: n,
|
|
198
|
+
threshold: t,
|
|
199
|
+
rank_list: new Array(n).fill(0),
|
|
200
|
+
party_id: partyIdx,
|
|
201
|
+
public_key: Array.from(Buffer.from(xShare.y, 'hex')),
|
|
202
|
+
root_chain_code: Array.from(Buffer.from(xShare.chaincode, 'hex')),
|
|
203
|
+
final_session_id: Array.from((0, crypto_1.createHash)('sha256').update(Buffer.from(xShare.y, 'hex')).update(Buffer.from(xShare.chaincode, 'hex')).digest()),
|
|
204
|
+
seed_ot_receivers: new Array(n - 1).fill(Array(32832).fill(0)),
|
|
205
|
+
seed_ot_senders: new Array(n - 1).fill(Array(32768).fill(0)),
|
|
206
|
+
sent_seed_list: [Array(32).fill(0)],
|
|
207
|
+
rec_seed_list: [Array(32).fill(0)],
|
|
208
|
+
s_i: Array.from(Buffer.from(xShare.x, 'hex')),
|
|
209
|
+
// big_s_list is now created internally during the protocol so isn't needed here, however a valid KeyShare object needs to have it.
|
|
210
|
+
// a dummy public key is used to fill big_s_list.
|
|
211
|
+
big_s_list: new Array(n).fill(Array.from((0, util_1.bigIntToBufferBE)(secp256k1.basePointMult(BigInt('0x' + xShare.x))))),
|
|
212
|
+
x_i_list: xiList ? xiList : defaultXiList,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHNzL2VjZHNhLWRrbHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEdBLDhDQUtDO0FBTUQsa0RBS0M7QUFNRCxzREFPQztBQU1ELGtFQU1DO0FBTUQsa0RBT0M7QUFNRCw4REFNQztBQU9ELDhDQU9DO0FBRUQsOERBTUM7QUErQkQsOENBb0NDO0FBelFELG9EQUE0QjtBQUM1QixtQ0FBb0M7QUFDcEMsbUNBQWdDO0FBQ2hDLHlDQUEyQjtBQUUzQix5Q0FBOEM7QUFDOUMscUNBQThDO0FBQzlDLHlDQUFzQztBQWlCdEMsSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLHlEQUFpQixDQUFBO0lBQ2pCLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwrQ0FBUSxDQUFBO0lBQ1IsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFSVyxRQUFRLHdCQUFSLFFBQVEsUUFRbkI7QUFFRCxJQUFZLFFBUVg7QUFSRCxXQUFZLFFBQVE7SUFDbEIseURBQWEsQ0FBQTtJQUNiLDJDQUFNLENBQUE7SUFDTiwyQ0FBTSxDQUFBO0lBQ04sMkNBQU0sQ0FBQTtJQUNOLDJDQUFNLENBQUE7SUFDTiwrQ0FBUSxDQUFBO0lBQ1IsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFSVyxRQUFRLHdCQUFSLFFBQVEsUUFRbkI7QUF1QkQ7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hDLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENB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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBkZWNvZGUgfSBmcm9tICdjYm9yLXgnO1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgeyBYU2hhcmUgfSBmcm9tICcuLi9lY2RzYS90eXBlcyc7XG5pbXBvcnQgeyBTZWNwMjU2azFDdXJ2ZSB9IGZyb20gJy4uLy4uL2N1cnZlcyc7XG5pbXBvcnQgeyBiaWdJbnRUb0J1ZmZlckJFIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgeyBpc0xlZnQgfSBmcm9tICdmcC10cy9FaXRoZXInO1xuXG4vLyBCcm9hZGNhc3QgbWVzc2FnZSBtZWFudCB0byBiZSBzZW50IHRvIG11bHRpcGxlIHBhcnRpZXNcbmludGVyZmFjZSBCcm9hZGNhc3RNZXNzYWdlPFQ+IHtcbiAgcGF5bG9hZDogVDtcbiAgZnJvbTogbnVtYmVyO1xuICBzaWduYXR1cmVSPzogVDtcbn1cblxuLy8gUDJQIG1lc3NhZ2UgbWVhbnQgdG8gYmUgc2VudCB0byBhIHNwZWNpZmljIHBhcnR5XG5pbnRlcmZhY2UgUDJQTWVzc2FnZTxULCBHPiB7XG4gIHBheWxvYWQ6IFQ7XG4gIGZyb206IG51bWJlcjtcbiAgY29tbWl0bWVudD86IEc7XG4gIHRvOiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIERrZ1N0YXRlIHtcbiAgVW5pbml0aWFsaXplZCA9IDAsXG4gIFJvdW5kMSxcbiAgUm91bmQyLFxuICBSb3VuZDMsXG4gIFJvdW5kNCxcbiAgQ29tcGxldGUsXG4gIEludmFsaWRTdGF0ZSxcbn1cblxuZXhwb3J0IGVudW0gRHNnU3RhdGUge1xuICBVbmluaXRpYWxpemVkLFxuICBSb3VuZDEsXG4gIFJvdW5kMixcbiAgUm91bmQzLFxuICBSb3VuZDQsXG4gIENvbXBsZXRlLFxuICBJbnZhbGlkU3RhdGUsXG59XG5cbmV4cG9ydCB0eXBlIEF1dGhFbmNNZXNzYWdlID0ge1xuICBlbmNyeXB0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEF1dGhNZXNzYWdlID0ge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFBhcnR5R3BnS2V5ID0ge1xuICBwYXJ0eUlkOiBudW1iZXI7XG4gIGdwZ0tleTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERrbHNTaWduYXR1cmU8VD4gPSB7XG4gIFI6IFQ7XG4gIFM6IFQ7XG59O1xuZXhwb3J0IHR5cGUgUmV0cm9maXREYXRhID0ge1xuICB4U2hhcmU6IFBhcnRpYWw8WFNoYXJlPjtcbiAgeGlMaXN0PzogbnVtYmVyW11bXTtcbn07XG5cbi8qKlxuICogQSBDQk9SLWVuY29kZWQgc3Vic2V0IG9mIGFuIE1QQ3YyIChES0xTKSBrZXkgc2hhcmUgc3RvcmVkIG9uIHRoZSBrZXkgY2FyZC5cbiAqXG4gKiBAcHJvcGVydHkgYmlnU0xpc3QgLSBQdWJsaWMgY29tbWl0bWVudHMgU19pID0gc19pICogRyBmb3IgZWFjaCBwYXJ0eS5cbiAqIEBwcm9wZXJ0eSB4TGlzdCAtIEV2YWx1YXRpb24gcG9pbnRzICh4LWNvb3JkaW5hdGVzIGZvciBMYWdyYW5nZSBpbnRlcnBvbGF0aW9uKS5cbiAqIEBwcm9wZXJ0eSByb290Q2hhaW5Db2RlIC0gUm9vdCBjaGFpbiBjb2RlIGZvciBIRCBkZXJpdmF0aW9uLlxuICogQHByb3BlcnR5IHBydiAtIFRoZSBwYXJ0eSdzIHByaXZhdGUgc2NhbGFyIHNfaS4gVGhpcyBpcyBwcml2YXRlIGtleSBtYXRlcmlhbDtcbiAqICAgcG9zc2Vzc2lvbiBvZiB0aGlzIHZhbHVlIGFsbG93cyB0aGUgaG9sZGVyIHRvIGFjdCBhcyB0aGlzIHBhcnR5IGluIHNpZ25pbmcuXG4gKiBAcHJvcGVydHkgcHViIC0gVGhlIHBhcnR5J3MgcHVibGljIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlZHVjZWRLZXlTaGFyZVR5cGUgPSB0LnR5cGUoe1xuICBiaWdTTGlzdDogdC5hcnJheSh0LmFycmF5KHQubnVtYmVyKSksXG4gIHhMaXN0OiB0LmFycmF5KHQuYXJyYXkodC5udW1iZXIpKSxcbiAgcm9vdENoYWluQ29kZTogdC5hcnJheSh0Lm51bWJlciksXG4gIHBydjogdC5hcnJheSh0Lm51bWJlciksXG4gIHB1YjogdC5hcnJheSh0Lm51bWJlciksXG59KTtcblxuZXhwb3J0IHR5cGUgUmVkdWNlZEtleVNoYXJlID0gdC5UeXBlT2Y8dHlwZW9mIFJlZHVjZWRLZXlTaGFyZVR5cGU+O1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSA9IEJyb2FkY2FzdE1lc3NhZ2U8c3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2UgPSBCcm9hZGNhc3RNZXNzYWdlPFVpbnQ4QXJyYXk+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZFAyUE1lc3NhZ2UgPSBQMlBNZXNzYWdlPHN0cmluZywgc3RyaW5nPjtcbmV4cG9ydCB0eXBlIERlc2VyaWFsaXplZFAyUE1lc3NhZ2UgPSBQMlBNZXNzYWdlPFVpbnQ4QXJyYXksIFVpbnQ4QXJyYXk+O1xuZXhwb3J0IHR5cGUgU2VyaWFsaXplZERrbHNTaWduYXR1cmUgPSBEa2xzU2lnbmF0dXJlPHN0cmluZz47XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlID0gRGtsc1NpZ25hdHVyZTxVaW50OEFycmF5PjtcbmV4cG9ydCB0eXBlIEF1dGhFbmNQMlBNZXNzYWdlID0gUDJQTWVzc2FnZTxBdXRoRW5jTWVzc2FnZSwgc3RyaW5nPjtcbmV4cG9ydCB0eXBlIEF1dGhCcm9hZGNhc3RNZXNzYWdlID0gQnJvYWRjYXN0TWVzc2FnZTxBdXRoTWVzc2FnZT47XG5leHBvcnQgdHlwZSBTZXJpYWxpemVkTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBTZXJpYWxpemVkUDJQTWVzc2FnZVtdO1xuICBicm9hZGNhc3RNZXNzYWdlczogU2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5leHBvcnQgdHlwZSBBdXRoRW5jTWVzc2FnZXMgPSB7XG4gIHAycE1lc3NhZ2VzOiBBdXRoRW5jUDJQTWVzc2FnZVtdO1xuICBicm9hZGNhc3RNZXNzYWdlczogQXV0aEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5leHBvcnQgdHlwZSBEZXNlcmlhbGl6ZWRNZXNzYWdlcyA9IHtcbiAgcDJwTWVzc2FnZXM6IERlc2VyaWFsaXplZFAyUE1lc3NhZ2VbXTtcbiAgYnJvYWRjYXN0TWVzc2FnZXM6IERlc2VyaWFsaXplZEJyb2FkY2FzdE1lc3NhZ2VbXTtcbn07XG5cbi8qKlxuICogU2VyaWFsaXplcyBtZXNzYWdlcyBwYXlsb2FkcyB0byBiYXNlNjQgc3RyaW5ncy5cbiAqIEBwYXJhbSBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplTWVzc2FnZXMobWVzc2FnZXM6IERlc2VyaWFsaXplZE1lc3NhZ2VzKTogU2VyaWFsaXplZE1lc3NhZ2VzIHtcbiAgcmV0dXJuIHtcbiAgICBwMnBNZXNzYWdlczogbWVzc2FnZXMucDJwTWVzc2FnZXMubWFwKHNlcmlhbGl6ZVAyUE1lc3NhZ2UpLFxuICAgIGJyb2FkY2FzdE1lc3NhZ2VzOiBtZXNzYWdlcy5icm9hZGNhc3RNZXNzYWdlcy5tYXAoc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZSksXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemUgbWVzc2FnZXMgcGF5bG9hZHMgdG8gVWludDhBcnJheS5cbiAqIEBwYXJhbSBtZXNzYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVNZXNzYWdlcyhtZXNzYWdlczogU2VyaWFsaXplZE1lc3NhZ2VzKTogRGVzZXJpYWxpemVkTWVzc2FnZXMge1xuICByZXR1cm4ge1xuICAgIHAycE1lc3NhZ2VzOiBtZXNzYWdlcy5wMnBNZXNzYWdlcy5tYXAoZGVzZXJpYWxpemVQMlBNZXNzYWdlKSxcbiAgICBicm9hZGNhc3RNZXNzYWdlczogbWVzc2FnZXMuYnJvYWRjYXN0TWVzc2FnZXMubWFwKGRlc2VyaWFsaXplQnJvYWRjYXN0TWVzc2FnZSksXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgUDJQIG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVQMlBNZXNzYWdlKG1lc3NhZ2U6IFNlcmlhbGl6ZWRQMlBNZXNzYWdlKTogRGVzZXJpYWxpemVkUDJQTWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgdG86IG1lc3NhZ2UudG8sXG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICBjb21taXRtZW50OiBtZXNzYWdlLmNvbW1pdG1lbnQgPyBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLmNvbW1pdG1lbnQsICdoZXgnKSkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogRGVzZXJpYWxpemVzIGEgQnJvYWRjYXN0IG1lc3NhZ2UuXG4gKiBAcGFyYW0gbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzZXJpYWxpemVCcm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2U6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlKTogRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSB7XG4gIHJldHVybiB7XG4gICAgZnJvbTogbWVzc2FnZS5mcm9tLFxuICAgIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UucGF5bG9hZCwgJ2Jhc2U2NCcpKSxcbiAgICBzaWduYXR1cmVSOiBtZXNzYWdlLnNpZ25hdHVyZVIgPyBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlLnNpZ25hdHVyZVIsICdiYXNlNjQnKSkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIFAyUCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZVAyUE1lc3NhZ2UobWVzc2FnZTogRGVzZXJpYWxpemVkUDJQTWVzc2FnZSk6IFNlcmlhbGl6ZWRQMlBNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICB0bzogbWVzc2FnZS50byxcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgY29tbWl0bWVudDogbWVzc2FnZS5jb21taXRtZW50ID8gQnVmZmVyLmZyb20obWVzc2FnZS5jb21taXRtZW50KS50b1N0cmluZygnaGV4JykgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIEJyb2FkY2FzdCBtZXNzYWdlLlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZTogRGVzZXJpYWxpemVkQnJvYWRjYXN0TWVzc2FnZSk6IFNlcmlhbGl6ZWRCcm9hZGNhc3RNZXNzYWdlIHtcbiAgcmV0dXJuIHtcbiAgICBmcm9tOiBtZXNzYWdlLmZyb20sXG4gICAgcGF5bG9hZDogQnVmZmVyLmZyb20obWVzc2FnZS5wYXlsb2FkKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgc2lnbmF0dXJlUjogbWVzc2FnZS5zaWduYXR1cmVSID8gQnVmZmVyLmZyb20obWVzc2FnZS5zaWduYXR1cmVSKS50b1N0cmluZygnYmFzZTY0JykgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBjb21tb25rZXlDaGFpbiBmcm9tIERLTFMga2V5U2hhcmVcbiAqIEBwYXJhbSB7QnVmZmVyfSBrZXlTaGFyZSAtIERLTFMga2V5U2hhcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IGNvbW1vbktleWNoYWluIGluIGhleCBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vbktleWNoYWluKGtleVNoYXJlOiBCdWZmZXIpOiBzdHJpbmcge1xuICBjb25zdCBwYXJzZWRLZXlTaGFyZSA9IGRlY29kZShrZXlTaGFyZSk7XG4gIGFzc2VydChwYXJzZWRLZXlTaGFyZS5wdWJsaWNfa2V5LCAncHVibGljX2tleSBub3QgZm91bmQgaW4ga2V5U2hhcmUnKTtcbiAgYXNzZXJ0KHBhcnNlZEtleVNoYXJlLnJvb3RfY2hhaW5fY29kZSwgJ3Jvb3RfY2hhaW5fY29kZSBub3QgZm91bmQgaW4gcHVibGljX2tleScpO1xuICBjb25zdCBwdWJsaWNLZXkgPSBCdWZmZXIuZnJvbShwYXJzZWRLZXlTaGFyZS5wdWJsaWNfa2V5KS50b1N0cmluZygnaGV4Jyk7XG4gIGNvbnN0IHJvb3RDaGFpbkNvZGUgPSBCdWZmZXIuZnJvbShwYXJzZWRLZXlTaGFyZS5yb290X2NoYWluX2NvZGUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgcmV0dXJuIHB1YmxpY0tleSArIHJvb3RDaGFpbkNvZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKHJlZHVjZWRLZXlTaGFyZTogQnVmZmVyIHwgVWludDhBcnJheSk6IFJlZHVjZWRLZXlTaGFyZSB7XG4gIGNvbnN0IGRlY29kZWQgPSBSZWR1Y2VkS2V5U2hhcmVUeXBlLmRlY29kZShkZWNvZGUocmVkdWNlZEtleVNoYXJlKSk7XG4gIGlmIChpc0xlZnQoZGVjb2RlZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSByZWR1Y2VkS2V5U2hhcmU6ICR7ZGVjb2RlZC5sZWZ0fWApO1xuICB9XG4gIHJldHVybiBkZWNvZGVkLnJpZ2h0O1xufVxuXG4vKipcbiAqIFBsYWluLW9iamVjdCBmb3JtIG9mIGEgREtMUyBrZXlzaGFyZSwgbWF0Y2hpbmcgd2hhdCB0aGUgd2FzbSBgS2V5c2hhcmVgIHNlcmlhbGl6ZXMgdG9cbiAqIChzbmFrZV9jYXNlIGZpZWxkcykuIGBidWlsZERrbHNLZXlTaGFyZWAgcHJvZHVjZXMgdGhpczsgaXQgaXMgYGVuY29kZWBkIHRvIENCT1IgYW5kIHRoZW5cbiAqIHBhcnNlZCBieSBgS2V5c2hhcmUuZnJvbUJ5dGVzYC5cbiAqL1xuZXhwb3J0IHR5cGUgRGtsc0tleVNoYXJlID0ge1xuICB0b3RhbF9wYXJ0aWVzOiBudW1iZXI7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICByYW5rX2xpc3Q6IG51bWJlcltdO1xuICBwYXJ0eV9pZDogbnVtYmVyO1xuICBwdWJsaWNfa2V5OiBudW1iZXJbXTtcbiAgcm9vdF9jaGFpbl9jb2RlOiBudW1iZXJbXTtcbiAgZmluYWxfc2Vzc2lvbl9pZDogbnVtYmVyW107XG4gIHNlZWRfb3RfcmVjZWl2ZXJzOiBudW1iZXJbXVtdO1xuICBzZWVkX290X3NlbmRlcnM6IG51bWJlcltdW107XG4gIHNlbnRfc2VlZF9saXN0OiBudW1iZXJbXVtdO1xuICByZWNfc2VlZF9saXN0OiBudW1iZXJbXVtdO1xuICBzX2k6IG51bWJlcltdO1xuICBiaWdfc19saXN0OiBudW1iZXJbXVtdO1xuICB4X2lfbGlzdDogbnVtYmVyW11bXTtcbn07XG5cbi8qKlxuICogQnVpbGRzIGEgcGxhaW4gKENCT1ItZW5jb2RhYmxlKSBES0xTIGtleSBzaGFyZSBvYmplY3QgZnJvbSBhIHJldHJvZml0IHgtc2hhcmUsXG4gKiB3aXRob3V0IHJ1bm5pbmcgYSBES0cgY2VyZW1vbnkuIFRoaXMgaXMgdGhlIHB1cmUgY29yZSBvZiBgRGtnLl9jcmVhdGVES0xzUmV0cm9maXRLZXlTaGFyZWA6XG4gKiB0aGUgcGFydHkncyBzZWNyZXQgc2NhbGFyIGFuZCBwdWJsaWMga2V5IGFyZSBjb3BpZWQgdmVyYmF0aW0sIHRoZSBPVCBzZWVkcyBhcmUgemVyb2VkXG4gKiAoYSByZXRyb2ZpdC9kZXJpdmVkIHNoYXJlIGNhbm5vdCBzaWduIGRpcmVjdGx5KSwgYW5kIHRoZSBzZXNzaW9uIGlkIGlzIGBzaGEyNTYocHViIHx8IGNoYWluY29kZSlgXG4gKiBzbyBldmVyeSBwYXJ0eSBvZiB0aGUgc2FtZSBrZXkgcmVidWlsZHMgdGhlIHNhbWUgaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZERrbHNLZXlTaGFyZShwYXJhbXM6IHtcbiAgeFNoYXJlOiBQYXJ0aWFsPFhTaGFyZT47XG4gIG46IG51bWJlcjtcbiAgdDogbnVtYmVyO1xuICBwYXJ0eUlkeDogbnVtYmVyO1xuICB4aUxpc3Q/OiBudW1iZXJbXVtdO1xufSk6IERrbHNLZXlTaGFyZSB7XG4gIGNvbnN0IHsgeFNoYXJlLCBuLCB0LCBwYXJ0eUlkeCwgeGlMaXN0IH0gPSBwYXJhbXM7XG4gIGlmICgheFNoYXJlLnkgfHwgIXhTaGFyZS5jaGFpbmNvZGUgfHwgIXhTaGFyZS54KSB7XG4gICAgdGhyb3cgRXJyb3IoJ3hTaGFyZSBtdXN0IGhhdmUgYSBwdWJsaWMga2V5LCBwcml2YXRlIHNoYXJlIHZhbHVlLCBhbmQgYSBjaGFpbmNvZGUuJyk7XG4gIH1cbiAgY29uc3QgZGVmYXVsdFhpTGlzdDogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICBkZWZhdWx0WGlMaXN0LnB1c2goQXJyYXkuZnJvbShiaWdJbnRUb0J1ZmZlckJFKEJpZ0ludChpICsgMSksIDMyKSkpO1xuICB9XG4gIGNvbnN0IHNlY3AyNTZrMSA9IG5ldyBTZWNwMjU2azFDdXJ2ZSgpO1xuICByZXR1cm4ge1xuICAgIHRvdGFsX3BhcnRpZXM6IG4sXG4gICAgdGhyZXNob2xkOiB0LFxuICAgIHJhbmtfbGlzdDogbmV3IEFycmF5KG4pLmZpbGwoMCksXG4gICAgcGFydHlfaWQ6IHBhcnR5SWR4LFxuICAgIHB1YmxpY19rZXk6IEFycmF5LmZyb20oQnVmZmVyLmZyb20oeFNoYXJlLnksICdoZXgnKSksXG4gICAgcm9vdF9jaGFpbl9jb2RlOiBBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHhTaGFyZS5jaGFpbmNvZGUsICdoZXgnKSksXG4gICAgZmluYWxfc2Vzc2lvbl9pZDogQXJyYXkuZnJvbShcbiAgICAgIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShCdWZmZXIuZnJvbSh4U2hhcmUueSwgJ2hleCcpKS51cGRhdGUoQnVmZmVyLmZyb20oeFNoYXJlLmNoYWluY29kZSwgJ2hleCcpKS5kaWdlc3QoKVxuICAgICksXG4gICAgc2VlZF9vdF9yZWNlaXZlcnM6IG5ldyBBcnJheShuIC0gMSkuZmlsbChBcnJheSgzMjgzMikuZmlsbCgwKSksXG4gICAgc2VlZF9vdF9zZW5kZXJzOiBuZXcgQXJyYXkobiAtIDEpLmZpbGwoQXJyYXkoMzI3NjgpLmZpbGwoMCkpLFxuICAgIHNlbnRfc2VlZF9saXN0OiBbQXJyYXkoMzIpLmZpbGwoMCldLFxuICAgIHJlY19zZWVkX2xpc3Q6IFtBcnJheSgzMikuZmlsbCgwKV0sXG4gICAgc19pOiBBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHhTaGFyZS54LCAnaGV4JykpLFxuICAgIC8vIGJpZ19zX2xpc3QgaXMgbm93IGNyZWF0ZWQgaW50ZXJuYWxseSBkdXJpbmcgdGhlIHByb3RvY29sIHNvIGlzbid0IG5lZWRlZCBoZXJlLCBob3dldmVyIGEgdmFsaWQgS2V5U2hhcmUgb2JqZWN0IG5lZWRzIHRvIGhhdmUgaXQuXG4gICAgLy8gYSBkdW1teSBwdWJsaWMga2V5IGlzIHVzZWQgdG8gZmlsbCBiaWdfc19saXN0LlxuICAgIGJpZ19zX2xpc3Q6IG5ldyBBcnJheShuKS5maWxsKEFycmF5LmZyb20oYmlnSW50VG9CdWZmZXJCRShzZWNwMjU2azEuYmFzZVBvaW50TXVsdChCaWdJbnQoJzB4JyArIHhTaGFyZS54KSkpKSksXG4gICAgeF9pX2xpc3Q6IHhpTGlzdCA/IHhpTGlzdCA6IGRlZmF1bHRYaUxpc3QsXG4gIH07XG59XG4iXX0=
|