@bitgo/sdk-coin-algo 2.3.13 → 2.3.15
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/CHANGELOG.md +8 -0
- package/package.json +6 -6
- package/LICENSE +0 -191
- package/dist/src/algo.d.ts +0 -291
- package/dist/src/algo.d.ts.map +0 -1
- package/dist/src/algo.js +0 -637
- package/dist/src/algoToken.d.ts +0 -32
- package/dist/src/algoToken.d.ts.map +0 -1
- package/dist/src/algoToken.js +0 -82
- package/dist/src/builder.d.ts +0 -3
- package/dist/src/builder.d.ts.map +0 -1
- package/dist/src/builder.js +0 -10
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -45
- package/dist/src/lib/assetTransferBuilder.d.ts +0 -42
- package/dist/src/lib/assetTransferBuilder.d.ts.map +0 -1
- package/dist/src/lib/assetTransferBuilder.js +0 -105
- package/dist/src/lib/errors.d.ts +0 -11
- package/dist/src/lib/errors.d.ts.map +0 -1
- package/dist/src/lib/errors.js +0 -27
- package/dist/src/lib/ifaces.d.ts +0 -45
- package/dist/src/lib/ifaces.d.ts.map +0 -1
- package/dist/src/lib/ifaces.js +0 -3
- package/dist/src/lib/index.d.ts +0 -13
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -61
- package/dist/src/lib/keyPair.d.ts +0 -25
- package/dist/src/lib/keyPair.d.ts.map +0 -1
- package/dist/src/lib/keyPair.js +0 -91
- package/dist/src/lib/keyRegistrationBuilder.d.ts +0 -104
- package/dist/src/lib/keyRegistrationBuilder.d.ts.map +0 -1
- package/dist/src/lib/keyRegistrationBuilder.js +0 -240
- package/dist/src/lib/seedEncoding.d.ts +0 -25
- package/dist/src/lib/seedEncoding.d.ts.map +0 -1
- package/dist/src/lib/seedEncoding.js +0 -111
- package/dist/src/lib/transaction.d.ts +0 -75
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -250
- package/dist/src/lib/transactionBuilder.d.ts +0 -210
- package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilder.js +0 -389
- package/dist/src/lib/transactionBuilderFactory.d.ts +0 -16
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
- package/dist/src/lib/transactionBuilderFactory.js +0 -52
- package/dist/src/lib/transferBuilder.d.ts +0 -40
- package/dist/src/lib/transferBuilder.d.ts.map +0 -1
- package/dist/src/lib/transferBuilder.js +0 -89
- package/dist/src/lib/txnSchema.d.ts +0 -7
- package/dist/src/lib/txnSchema.d.ts.map +0 -1
- package/dist/src/lib/txnSchema.js +0 -68
- package/dist/src/lib/utils.d.ts +0 -254
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -563
- package/dist/src/register.d.ts +0 -3
- package/dist/src/register.d.ts.map +0 -1
- package/dist/src/register.js +0 -15
- package/dist/src/seedValidator.d.ts +0 -31
- package/dist/src/seedValidator.d.ts.map +0 -1
- package/dist/src/seedValidator.js +0 -103
- package/dist/src/talgo.d.ts +0 -12
- package/dist/src/talgo.d.ts.map +0 -1
- package/dist/src/talgo.js +0 -20
package/dist/src/lib/keyPair.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.KeyPair = void 0;
|
|
40
|
-
const algosdk_1 = __importStar(require("algosdk"));
|
|
41
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
42
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
43
|
-
class KeyPair extends sdk_core_1.Ed25519KeyPair {
|
|
44
|
-
/**
|
|
45
|
-
* Public constructor. By default, creates a key pair with a random master seed.
|
|
46
|
-
*
|
|
47
|
-
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
48
|
-
*/
|
|
49
|
-
constructor(source) {
|
|
50
|
-
super(source);
|
|
51
|
-
}
|
|
52
|
-
/** @inheritdoc */
|
|
53
|
-
recordKeysFromPrivateKeyInProtocolFormat(prv) {
|
|
54
|
-
const decodedSeed = utils_1.default.decodeSeed(prv);
|
|
55
|
-
const bufferFromSeed = Buffer.from(decodedSeed.seed);
|
|
56
|
-
return utils_1.default.keyPairFromSeed(bufferFromSeed).keyPair;
|
|
57
|
-
}
|
|
58
|
-
/** @inheritdoc */
|
|
59
|
-
recordKeysFromPublicKeyInProtocolFormat(pub) {
|
|
60
|
-
const publicKey = algosdk_1.default.decodeAddress(pub).publicKey;
|
|
61
|
-
return { pub: utils_1.default.toHex(publicKey) };
|
|
62
|
-
}
|
|
63
|
-
/** @inheritdoc */
|
|
64
|
-
getAddress() {
|
|
65
|
-
return (0, algosdk_1.encodeAddress)(utils_1.default.toUint8Array(this.keyPair.pub));
|
|
66
|
-
}
|
|
67
|
-
/** @inheritdoc */
|
|
68
|
-
getKeys() {
|
|
69
|
-
// TODO(https://bitgoinc.atlassian.net/browse/STLX-6062): refactor this method
|
|
70
|
-
// should return the pub and prv in the Algorand encoded format
|
|
71
|
-
const result = { pub: this.keyPair.pub };
|
|
72
|
-
if (this.keyPair.prv) {
|
|
73
|
-
result.prv = this.keyPair.prv;
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Getting the base64 private key for signing an algo transaction.
|
|
79
|
-
*
|
|
80
|
-
* @returns {Uint8Array} base64 private key
|
|
81
|
-
* @see https://developer.algorand.org/docs/features/accounts/#transformation-private-key-to-base64-private-key
|
|
82
|
-
*/
|
|
83
|
-
getSigningKey() {
|
|
84
|
-
if (!this.keyPair.prv) {
|
|
85
|
-
throw new sdk_core_1.InvalidKey('Private key undefined');
|
|
86
|
-
}
|
|
87
|
-
return utils_1.default.toUint8Array(this.keyPair.prv + this.keyPair.pub);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
exports.KeyPair = KeyPair;
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUQ7QUFDakQsOENBQTBGO0FBQzFGLG9EQUE0QjtBQUU1QixNQUFhLE9BQVEsU0FBUSx5QkFBYztJQUN6Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELE1BQU0sV0FBVyxHQUFHLGVBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsT0FBTyxlQUFLLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN2RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHVDQUF1QyxDQUFDLEdBQVc7UUFDakQsTUFBTSxTQUFTLEdBQUcsaUJBQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxHQUFHLEVBQUUsZUFBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVTtRQUNSLE9BQU8sSUFBQSx1QkFBYSxFQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTztRQUNMLDhFQUE4RTtRQUM5RSwrREFBK0Q7UUFDL0QsTUFBTSxNQUFNLEdBQWdCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDaEMsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWE7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUkscUJBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLGVBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0Y7QUF0REQsMEJBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFsZ29zZGssIHsgZW5jb2RlQWRkcmVzcyB9IGZyb20gJ2FsZ29zZGsnO1xuaW1wb3J0IHsgRWQyNTUxOUtleVBhaXIsIERlZmF1bHRLZXlzLCBLZXlQYWlyT3B0aW9ucywgSW52YWxpZEtleSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgRWQyNTUxOUtleVBhaXIge1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgZGVjb2RlZFNlZWQgPSB1dGlscy5kZWNvZGVTZWVkKHBydik7XG4gICAgY29uc3QgYnVmZmVyRnJvbVNlZWQgPSBCdWZmZXIuZnJvbShkZWNvZGVkU2VlZC5zZWVkKTtcblxuICAgIHJldHVybiB1dGlscy5rZXlQYWlyRnJvbVNlZWQoYnVmZmVyRnJvbVNlZWQpLmtleVBhaXI7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXlJblByb3RvY29sRm9ybWF0KHB1Yjogc3RyaW5nKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IGFsZ29zZGsuZGVjb2RlQWRkcmVzcyhwdWIpLnB1YmxpY0tleTtcbiAgICByZXR1cm4geyBwdWI6IHV0aWxzLnRvSGV4KHB1YmxpY0tleSkgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGVuY29kZUFkZHJlc3ModXRpbHMudG9VaW50OEFycmF5KHRoaXMua2V5UGFpci5wdWIpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRLZXlzKCk6IERlZmF1bHRLZXlzIHtcbiAgICAvLyBUT0RPKGh0dHBzOi8vYml0Z29pbmMuYXRsYXNzaWFuLm5ldC9icm93c2UvU1RMWC02MDYyKTogcmVmYWN0b3IgdGhpcyBtZXRob2RcbiAgICAvLyBzaG91bGQgcmV0dXJuIHRoZSBwdWIgYW5kIHBydiBpbiB0aGUgQWxnb3JhbmQgZW5jb2RlZCBmb3JtYXRcbiAgICBjb25zdCByZXN1bHQ6IERlZmF1bHRLZXlzID0geyBwdWI6IHRoaXMua2V5UGFpci5wdWIgfTtcblxuICAgIGlmICh0aGlzLmtleVBhaXIucHJ2KSB7XG4gICAgICByZXN1bHQucHJ2ID0gdGhpcy5rZXlQYWlyLnBydjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRpbmcgdGhlIGJhc2U2NCBwcml2YXRlIGtleSBmb3Igc2lnbmluZyBhbiBhbGdvIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gYmFzZTY0IHByaXZhdGUga2V5XG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvZmVhdHVyZXMvYWNjb3VudHMvI3RyYW5zZm9ybWF0aW9uLXByaXZhdGUta2V5LXRvLWJhc2U2NC1wcml2YXRlLWtleVxuICAgKi9cbiAgZ2V0U2lnbmluZ0tleSgpOiBVaW50OEFycmF5IHtcbiAgICBpZiAoIXRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkS2V5KCdQcml2YXRlIGtleSB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHV0aWxzLnRvVWludDhBcnJheSh0aGlzLmtleVBhaXIucHJ2ICsgdGhpcy5rZXlQYWlyLnB1Yik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import algosdk from 'algosdk';
|
|
2
|
-
import { BaseCoin as CoinConfig } from '@bitgo/statics';
|
|
3
|
-
import { TransactionType } from '@bitgo/sdk-core';
|
|
4
|
-
import { TransactionBuilder } from './transactionBuilder';
|
|
5
|
-
import { Transaction } from './transaction';
|
|
6
|
-
export declare class KeyRegistrationBuilder extends TransactionBuilder {
|
|
7
|
-
protected _voteKey: string;
|
|
8
|
-
protected _selectionKey: string;
|
|
9
|
-
protected _voteFirst: number;
|
|
10
|
-
protected _voteLast: number;
|
|
11
|
-
protected _voteKeyDilution: number;
|
|
12
|
-
protected _nonParticipation: boolean;
|
|
13
|
-
protected _stateProofKey: string;
|
|
14
|
-
constructor(coinConfig: Readonly<CoinConfig>);
|
|
15
|
-
/**
|
|
16
|
-
* Sets the vote key
|
|
17
|
-
*
|
|
18
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
19
|
-
*
|
|
20
|
-
* @param {string} key The root participation public key. See Generate a Participation Key to learn more.
|
|
21
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
22
|
-
*/
|
|
23
|
-
voteKey(key: string): KeyRegistrationBuilder;
|
|
24
|
-
/**
|
|
25
|
-
* Sets the selection key
|
|
26
|
-
*
|
|
27
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
28
|
-
*
|
|
29
|
-
* @param {string} key The VRF public key for the account.
|
|
30
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
31
|
-
*/
|
|
32
|
-
selectionKey(key: string): KeyRegistrationBuilder;
|
|
33
|
-
/**
|
|
34
|
-
* Sets the stateProof key
|
|
35
|
-
*
|
|
36
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
37
|
-
*
|
|
38
|
-
* @param {string} key The stateproof key. See consensus for more information.
|
|
39
|
-
* https://developer.algorand.org/docs/get-details/algorand_consensus/?from_query=state#state-proof-keys
|
|
40
|
-
*/
|
|
41
|
-
stateProofKey(key: string): KeyRegistrationBuilder;
|
|
42
|
-
/**
|
|
43
|
-
*Sets the vote first round
|
|
44
|
-
*
|
|
45
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
46
|
-
*
|
|
47
|
-
* @param {number} round The first round that the participation key is valid. Not to be confused with the FirstValid round of the keyreg transaction.
|
|
48
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
49
|
-
*/
|
|
50
|
-
voteFirst(round: number): KeyRegistrationBuilder;
|
|
51
|
-
/**
|
|
52
|
-
* Sets the vote last round
|
|
53
|
-
*
|
|
54
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
55
|
-
*
|
|
56
|
-
* A recommended range is 3,000,000 rounds.
|
|
57
|
-
*
|
|
58
|
-
* @param {number} round No theoretical limit.
|
|
59
|
-
* https://developer.algorand.org/docs/run-a-node/participate/generate_keys/
|
|
60
|
-
*/
|
|
61
|
-
voteLast(round: number): KeyRegistrationBuilder;
|
|
62
|
-
/**
|
|
63
|
-
* Sets the vote key dilution
|
|
64
|
-
*
|
|
65
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
66
|
-
*
|
|
67
|
-
* Defaults to 10,000
|
|
68
|
-
*
|
|
69
|
-
* @param {number} size [10000]. To reduce the size of the participation key, set the key dilution value to roughly the square root of the range that the partkey is valid for.
|
|
70
|
-
* https://developer.algorand.org/docs/run-a-node/participate/generate_keys/#generate-the-participation-key-with-goal
|
|
71
|
-
* @param size
|
|
72
|
-
*/
|
|
73
|
-
voteKeyDilution(size?: number): KeyRegistrationBuilder;
|
|
74
|
-
/**
|
|
75
|
-
* Sets the non participation flag
|
|
76
|
-
*
|
|
77
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
78
|
-
*
|
|
79
|
-
* @param {boolean} nonParticipation All new Algorand accounts are participating by default.
|
|
80
|
-
* This means that they earn rewards. Mark an account nonparticipating by setting this value to true and this account
|
|
81
|
-
* will no longer earn rewards NEVER.
|
|
82
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
83
|
-
*/
|
|
84
|
-
nonParticipation(nonParticipation: boolean): KeyRegistrationBuilder;
|
|
85
|
-
protected buildAlgoTxn(): algosdk.Transaction;
|
|
86
|
-
private buildOfflineKeyRegTransaction;
|
|
87
|
-
private buildOnlineKeyRegTransaction;
|
|
88
|
-
private buildNonParticipationKeyRegTransaction;
|
|
89
|
-
protected get transactionType(): TransactionType;
|
|
90
|
-
/** @inheritdoc */
|
|
91
|
-
protected fromImplementation(rawTransaction: Uint8Array | string): Transaction;
|
|
92
|
-
/** @inheritdoc */
|
|
93
|
-
validateRawTransaction(rawTransaction: Uint8Array | string): void;
|
|
94
|
-
private isNonParticipationKeyRegAlgoSDKTransaction;
|
|
95
|
-
private isNonParticipationKeyRegAccountLibTransaction;
|
|
96
|
-
private isOnlineKeyRegAlgoSDKTransaction;
|
|
97
|
-
private isOnlineKeyRegAccountLibTransaction;
|
|
98
|
-
private isOfflineKeyRegAlgoSDKTransaction;
|
|
99
|
-
private isOfflineKeyRegAccountLibTransaction;
|
|
100
|
-
/** @inheritdoc */
|
|
101
|
-
validateTransaction(transaction: Transaction): void;
|
|
102
|
-
private validateFields;
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=keyRegistrationBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyRegistrationBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/keyRegistrationBuilder.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,eAAe,EAA2B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACrC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAErB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAK5C;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAKjD;;;;;;;OAOG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB;IAMlD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAOhD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAO/C;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAI,SAAQ,GAAG,sBAAsB;IAOrD;;;;;;;;;OASG;IACH,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,GAAG,sBAAsB;IAMnE,SAAS,CAAC,YAAY,IAAI,OAAO,CAAC,WAAW;IAQ7C,OAAO,CAAC,6BAA6B;IAarC,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,sCAAsC;IAe9C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,WAAW;IAqB9E,kBAAkB;IAClB,sBAAsB,CAAC,cAAc,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IAqBjE,OAAO,CAAC,0CAA0C;IAIlD,OAAO,CAAC,6CAA6C;IAIrD,OAAO,CAAC,gCAAgC;IAMxC,OAAO,CAAC,mCAAmC;IAI3C,OAAO,CAAC,iCAAiC;IAYzC,OAAO,CAAC,oCAAoC;IAY5C,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IA6BnD,OAAO,CAAC,cAAc;CAqBvB"}
|
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.KeyRegistrationBuilder = void 0;
|
|
7
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
8
|
-
const algosdk_1 = __importDefault(require("algosdk"));
|
|
9
|
-
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
10
|
-
const transactionBuilder_1 = require("./transactionBuilder");
|
|
11
|
-
const txnSchema_1 = require("./txnSchema");
|
|
12
|
-
const utils_1 = __importDefault(require("./utils"));
|
|
13
|
-
class KeyRegistrationBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
14
|
-
constructor(coinConfig) {
|
|
15
|
-
super(coinConfig);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Sets the vote key
|
|
19
|
-
*
|
|
20
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
21
|
-
*
|
|
22
|
-
* @param {string} key The root participation public key. See Generate a Participation Key to learn more.
|
|
23
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
24
|
-
*/
|
|
25
|
-
voteKey(key) {
|
|
26
|
-
this._voteKey = key;
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Sets the selection key
|
|
31
|
-
*
|
|
32
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
33
|
-
*
|
|
34
|
-
* @param {string} key The VRF public key for the account.
|
|
35
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
36
|
-
*/
|
|
37
|
-
selectionKey(key) {
|
|
38
|
-
this._selectionKey = key;
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Sets the stateProof key
|
|
43
|
-
*
|
|
44
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
45
|
-
*
|
|
46
|
-
* @param {string} key The stateproof key. See consensus for more information.
|
|
47
|
-
* https://developer.algorand.org/docs/get-details/algorand_consensus/?from_query=state#state-proof-keys
|
|
48
|
-
*/
|
|
49
|
-
stateProofKey(key) {
|
|
50
|
-
utils_1.default.validateBase64(key);
|
|
51
|
-
this._stateProofKey = key;
|
|
52
|
-
return this;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
*Sets the vote first round
|
|
56
|
-
*
|
|
57
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
58
|
-
*
|
|
59
|
-
* @param {number} round The first round that the participation key is valid. Not to be confused with the FirstValid round of the keyreg transaction.
|
|
60
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
61
|
-
*/
|
|
62
|
-
voteFirst(round) {
|
|
63
|
-
this.validateValue(new bignumber_js_1.default(round));
|
|
64
|
-
this._voteFirst = round;
|
|
65
|
-
return this;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Sets the vote last round
|
|
69
|
-
*
|
|
70
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
71
|
-
*
|
|
72
|
-
* A recommended range is 3,000,000 rounds.
|
|
73
|
-
*
|
|
74
|
-
* @param {number} round No theoretical limit.
|
|
75
|
-
* https://developer.algorand.org/docs/run-a-node/participate/generate_keys/
|
|
76
|
-
*/
|
|
77
|
-
voteLast(round) {
|
|
78
|
-
this.validateValue(new bignumber_js_1.default(round));
|
|
79
|
-
this._voteLast = round;
|
|
80
|
-
return this;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Sets the vote key dilution
|
|
84
|
-
*
|
|
85
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
86
|
-
*
|
|
87
|
-
* Defaults to 10,000
|
|
88
|
-
*
|
|
89
|
-
* @param {number} size [10000]. To reduce the size of the participation key, set the key dilution value to roughly the square root of the range that the partkey is valid for.
|
|
90
|
-
* https://developer.algorand.org/docs/run-a-node/participate/generate_keys/#generate-the-participation-key-with-goal
|
|
91
|
-
* @param size
|
|
92
|
-
*/
|
|
93
|
-
voteKeyDilution(size = 10000) {
|
|
94
|
-
this.validateValue(new bignumber_js_1.default(size));
|
|
95
|
-
this._voteKeyDilution = size;
|
|
96
|
-
return this;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Sets the non participation flag
|
|
100
|
-
*
|
|
101
|
-
* @returns {KeyRegistrationBuilder} This Key Registration builder.
|
|
102
|
-
*
|
|
103
|
-
* @param {boolean} nonParticipation All new Algorand accounts are participating by default.
|
|
104
|
-
* This means that they earn rewards. Mark an account nonparticipating by setting this value to true and this account
|
|
105
|
-
* will no longer earn rewards NEVER.
|
|
106
|
-
* https://developer.algorand.org/docs/reference/transactions/#key-registration-transaction
|
|
107
|
-
*/
|
|
108
|
-
nonParticipation(nonParticipation) {
|
|
109
|
-
this._nonParticipation = nonParticipation;
|
|
110
|
-
return this;
|
|
111
|
-
}
|
|
112
|
-
buildAlgoTxn() {
|
|
113
|
-
return this.isOfflineKeyRegAccountLibTransaction()
|
|
114
|
-
? this.buildOfflineKeyRegTransaction()
|
|
115
|
-
: this.isNonParticipationKeyRegAccountLibTransaction()
|
|
116
|
-
? this.buildNonParticipationKeyRegTransaction()
|
|
117
|
-
: this.buildOnlineKeyRegTransaction();
|
|
118
|
-
}
|
|
119
|
-
buildOfflineKeyRegTransaction() {
|
|
120
|
-
return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, // voteKey param
|
|
121
|
-
undefined, // selectionKey param
|
|
122
|
-
undefined, // voteFirst param
|
|
123
|
-
undefined, // voteLast param
|
|
124
|
-
undefined, // voteKeyDilution param
|
|
125
|
-
this.suggestedParams);
|
|
126
|
-
}
|
|
127
|
-
buildOnlineKeyRegTransaction() {
|
|
128
|
-
return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this.suggestedParams, undefined, // reKeyTo param
|
|
129
|
-
undefined, // nonParticipation param
|
|
130
|
-
this._stateProofKey);
|
|
131
|
-
}
|
|
132
|
-
buildNonParticipationKeyRegTransaction() {
|
|
133
|
-
return algosdk_1.default.makeKeyRegistrationTxnWithSuggestedParams(this._sender, this._note, undefined, // voteKey param
|
|
134
|
-
undefined, // selectionKey param
|
|
135
|
-
undefined, // voteFirst param
|
|
136
|
-
undefined, // voteLast param
|
|
137
|
-
undefined, // voteKeyDilution param
|
|
138
|
-
this.suggestedParams, this._reKeyTo, true // nonParticipation param
|
|
139
|
-
);
|
|
140
|
-
}
|
|
141
|
-
get transactionType() {
|
|
142
|
-
return sdk_core_1.TransactionType.WalletInitialization;
|
|
143
|
-
}
|
|
144
|
-
/** @inheritdoc */
|
|
145
|
-
fromImplementation(rawTransaction) {
|
|
146
|
-
const tx = super.fromImplementation(rawTransaction);
|
|
147
|
-
const algoTxn = tx.getAlgoTransaction();
|
|
148
|
-
if (algoTxn) {
|
|
149
|
-
if (this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn)) {
|
|
150
|
-
this.nonParticipation(!!algoTxn.nonParticipation);
|
|
151
|
-
}
|
|
152
|
-
else if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
|
|
153
|
-
this.voteKey(algoTxn.voteKey.toString('base64'));
|
|
154
|
-
this.selectionKey(algoTxn.selectionKey.toString('base64'));
|
|
155
|
-
this.voteFirst(algoTxn.voteFirst);
|
|
156
|
-
this.voteLast(algoTxn.voteLast);
|
|
157
|
-
this.voteKeyDilution(algoTxn.voteKeyDilution);
|
|
158
|
-
if (algoTxn.stateProofKey) {
|
|
159
|
-
this.stateProofKey(algoTxn.stateProofKey.toString('base64'));
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return tx;
|
|
164
|
-
}
|
|
165
|
-
/** @inheritdoc */
|
|
166
|
-
validateRawTransaction(rawTransaction) {
|
|
167
|
-
const decodeTxn = utils_1.default.decodeAlgoTxn(rawTransaction);
|
|
168
|
-
const algoTxn = decodeTxn.txn;
|
|
169
|
-
if (algoTxn.type !== algosdk_1.default.TransactionType.keyreg) {
|
|
170
|
-
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${algoTxn.type}. Expected ${algosdk_1.default.TransactionType.keyreg}`);
|
|
171
|
-
}
|
|
172
|
-
if (this.isOnlineKeyRegAlgoSDKTransaction(algoTxn)) {
|
|
173
|
-
this.validateFields(algoTxn.voteKey.toString('base64'), algoTxn.selectionKey.toString('base64'), algoTxn.voteFirst, algoTxn.voteLast, algoTxn.voteKeyDilution, algoTxn.stateProofKey && algoTxn.stateProofKey.toString('base64'));
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
isNonParticipationKeyRegAlgoSDKTransaction(algoTxn) {
|
|
177
|
-
return !!algoTxn.nonParticipation;
|
|
178
|
-
}
|
|
179
|
-
isNonParticipationKeyRegAccountLibTransaction() {
|
|
180
|
-
return !!this._nonParticipation;
|
|
181
|
-
}
|
|
182
|
-
isOnlineKeyRegAlgoSDKTransaction(algoTxn) {
|
|
183
|
-
return !(this.isOfflineKeyRegAlgoSDKTransaction(algoTxn) || this.isNonParticipationKeyRegAlgoSDKTransaction(algoTxn));
|
|
184
|
-
}
|
|
185
|
-
isOnlineKeyRegAccountLibTransaction() {
|
|
186
|
-
return !(this.isOfflineKeyRegAccountLibTransaction() || this.isNonParticipationKeyRegAccountLibTransaction());
|
|
187
|
-
}
|
|
188
|
-
isOfflineKeyRegAlgoSDKTransaction(algoTxn) {
|
|
189
|
-
return (!algoTxn.voteKey &&
|
|
190
|
-
!algoTxn.selectionKey &&
|
|
191
|
-
!algoTxn.voteFirst &&
|
|
192
|
-
!algoTxn.voteLast &&
|
|
193
|
-
!algoTxn.voteKeyDilution &&
|
|
194
|
-
!algoTxn.stateProofKey &&
|
|
195
|
-
!algoTxn.nonParticipation);
|
|
196
|
-
}
|
|
197
|
-
isOfflineKeyRegAccountLibTransaction() {
|
|
198
|
-
return (!this._voteKey &&
|
|
199
|
-
!this._selectionKey &&
|
|
200
|
-
!this._voteFirst &&
|
|
201
|
-
!this._voteLast &&
|
|
202
|
-
!this._voteKeyDilution &&
|
|
203
|
-
!this._stateProofKey &&
|
|
204
|
-
!this._nonParticipation);
|
|
205
|
-
}
|
|
206
|
-
/** @inheritdoc */
|
|
207
|
-
validateTransaction(transaction) {
|
|
208
|
-
super.validateTransaction(transaction);
|
|
209
|
-
if (this.isOnlineKeyRegAccountLibTransaction()) {
|
|
210
|
-
// invalid offline will reach here
|
|
211
|
-
this.validateFields(this._voteKey, this._selectionKey, this._voteFirst, this._voteLast, this._voteKeyDilution, this._stateProofKey);
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
// offline or nonparticipation transaction
|
|
215
|
-
if (this._voteKey ||
|
|
216
|
-
this._selectionKey ||
|
|
217
|
-
this._voteFirst ||
|
|
218
|
-
this._voteLast ||
|
|
219
|
-
this._voteKeyDilution ||
|
|
220
|
-
this._stateProofKey) {
|
|
221
|
-
throw new sdk_core_1.InvalidTransactionError('VoteKey, SelectionKey, VoteFirst, VoteLast, VoteKeyDilution, StateProofKey fields cannot be set when offline or nonparticipation is set');
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
validateFields(voteKey, selectionKey, voteFirst, voteLast, voteKeyDilution, stateProofKey) {
|
|
226
|
-
const validationResult = txnSchema_1.KeyRegTxnSchema.validate({
|
|
227
|
-
voteKey,
|
|
228
|
-
selectionKey,
|
|
229
|
-
voteFirst,
|
|
230
|
-
voteLast,
|
|
231
|
-
voteKeyDilution,
|
|
232
|
-
stateProofKey,
|
|
233
|
-
});
|
|
234
|
-
if (validationResult.error) {
|
|
235
|
-
throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
exports.KeyRegistrationBuilder = KeyRegistrationBuilder;
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UmVnaXN0cmF0aW9uQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UmVnaXN0cmF0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnRUFBcUM7QUFDckMsc0RBQThCO0FBRTlCLDhDQUEyRTtBQUMzRSw2REFBMEQ7QUFFMUQsMkNBQThDO0FBQzlDLG9EQUE0QjtBQUU1QixNQUFhLHNCQUF1QixTQUFRLHVDQUFrQjtJQVM1RCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsYUFBYSxDQUFDLEdBQVc7UUFDdkIsZUFBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHNCQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUV4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUks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UTtZQUNSLGVBQWU7WUFDZixhQUFhO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksa0NBQXVCLENBQUMsa0NBQWtDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF4VEQsd0RBd1RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IGFsZ29zZGsgZnJvbSAnYWxnb3Nkayc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UmVnVHhuU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgS2V5UmVnaXN0cmF0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfdm90ZUtleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NlbGVjdGlvbktleTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3ZvdGVGaXJzdDogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3ZvdGVMYXN0OiBudW1iZXI7XG4gIHByb3RlY3RlZCBfdm90ZUtleURpbHV0aW9uOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfbm9uUGFydGljaXBhdGlvbjogYm9vbGVhbjtcbiAgcHJvdGVjdGVkIF9zdGF0ZVByb29mS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2b3RlIGtleVxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJvb3QgcGFydGljaXBhdGlvbiBwdWJsaWMga2V5LiBTZWUgR2VuZXJhdGUgYSBQYXJ0aWNpcGF0aW9uIEtleSB0byBsZWFybiBtb3JlLlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICB2b3RlS2V5KGtleTogc3RyaW5nKTogS2V5UmVnaXN0cmF0aW9uQnVpbGRlciB7XG4gICAgdGhpcy5fdm90ZUtleSA9IGtleTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24ga2V5XG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgVlJGIHB1YmxpYyBrZXkgZm9yIHRoZSBhY2NvdW50LlxuICAgKiBodHRwczovL2RldmVsb3Blci5hbGdvcmFuZC5vcmcvZG9jcy9yZWZlcmVuY2UvdHJhbnNhY3Rpb25zLyNrZXktcmVnaXN0cmF0aW9uLXRyYW5zYWN0aW9uXG4gICAqL1xuICBzZWxlY3Rpb25LZXkoa2V5OiBzdHJpbmcpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25LZXkgPSBrZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3RhdGVQcm9vZiBrZXlcbiAgICpcbiAgICogQHJldHVybnMge0tleVJlZ2lzdHJhdGlvbkJ1aWxkZXJ9IFRoaXMgS2V5IFJlZ2lzdHJhdGlvbiBidWlsZGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBzdGF0ZXByb29mIGtleS4gU2VlIGNvbnNlbnN1cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvZ2V0LWRldGFpbHMvYWxnb3JhbmRfY29uc2Vuc3VzLz9mcm9tX3F1ZXJ5PXN0YXRlI3N0YXRlLXByb29mLWtleXNcbiAgICovXG4gIHN0YXRlUHJvb2ZLZXkoa2V5OiBzdHJpbmcpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICBVdGlscy52YWxpZGF0ZUJhc2U2NChrZXkpO1xuICAgIHRoaXMuX3N0YXRlUHJvb2ZLZXkgPSBrZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpTZXRzIHRoZSB2b3RlIGZpcnN0IHJvdW5kXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHJvdW5kIFRoZSBmaXJzdCByb3VuZCB0aGF0IHRoZSBwYXJ0aWNpcGF0aW9uIGtleSBpcyB2YWxpZC4gTm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdGhlIEZpcnN0VmFsaWQgcm91bmQgb2YgdGhlIGtleXJlZyB0cmFuc2FjdGlvbi5cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIuYWxnb3JhbmQub3JnL2RvY3MvcmVmZXJlbmNlL3RyYW5zYWN0aW9ucy8ja2V5LXJlZ2lzdHJhdGlvbi10cmFuc2FjdGlvblxuICAgKi9cbiAgdm90ZUZpcnN0KHJvdW5kOiBudW1iZXIpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyb3VuZCkpO1xuICAgIHRoaXMuX3ZvdGVGaXJzdCA9IHJvdW5kO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdm90ZSBsYXN0IHJvdW5kXG4gICAqXG4gICAqIEByZXR1cm5zIHtLZXlSZWdpc3RyYXRpb25CdWlsZGVyfSBUaGlzIEtleSBSZWdpc3RyYXRpb24gYnVpbGRlci5cbiAgICpcbiAgICogQSByZWNvbW1lbmRlZCByYW5nZSBpcyAzLDAwMCwwMDAgcm91bmRzLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gcm91bmQgTm8gdGhlb3JldGljYWwgbGltaXQuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3J1bi1hLW5vZGUvcGFydGljaXBhdGUvZ2VuZXJhdGVfa2V5cy9cbiAgICovXG4gIHZvdGVMYXN0KHJvdW5kOiBudW1iZXIpOiBLZXlSZWdpc3RyYXRpb25CdWlsZGVyIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihyb3VuZCkpO1xuICAgIHRoaXMuX3ZvdGVMYXN0ID0gcm91bmQ7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2b3RlIGtleSBkaWx1dGlvblxuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIERlZmF1bHRzIHRvIDEwLDAwMFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBbMTAwMDBdLiBUbyByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIHBhcnRpY2lwYXRpb24ga2V5LCBzZXQgdGhlIGtleSBkaWx1dGlvbiB2YWx1ZSB0byByb3VnaGx5IHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgcmFuZ2UgdGhhdCB0aGUgcGFydGtleSBpcyB2YWxpZCBmb3IuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3J1bi1hLW5vZGUvcGFydGljaXBhdGUvZ2VuZXJhdGVfa2V5cy8jZ2VuZXJhdGUtdGhlLXBhcnRpY2lwYXRpb24ta2V5LXdpdGgtZ29hbFxuICAgKiBAcGFyYW0gc2l6ZVxuICAgKi9cbiAgdm90ZUtleURpbHV0aW9uKHNpemUgPSAxMDAwMCk6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZShuZXcgQmlnTnVtYmVyKHNpemUpKTtcbiAgICB0aGlzLl92b3RlS2V5RGlsdXRpb24gPSBzaXplO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbm9uIHBhcnRpY2lwYXRpb24gZmxhZ1xuICAgKlxuICAgKiBAcmV0dXJucyB7S2V5UmVnaXN0cmF0aW9uQnVpbGRlcn0gVGhpcyBLZXkgUmVnaXN0cmF0aW9uIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9uUGFydGljaXBhdGlvbiBBbGwgbmV3IEFsZ29yYW5kIGFjY291bnRzIGFyZSBwYXJ0aWNpcGF0aW5nIGJ5IGRlZmF1bHQuXG4gICAqIFRoaXMgbWVhbnMgdGhhdCB0aGV5IGVhcm4gcmV3YXJkcy4gTWFyayBhbiBhY2NvdW50IG5vbnBhcnRpY2lwYXRpbmcgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIHRydWUgYW5kIHRoaXMgYWNjb3VudFxuICAgKiB3aWxsIG5vIGxvbmdlciBlYXJuIHJld2FyZHMgTkVWRVIuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFsZ29yYW5kLm9yZy9kb2NzL3JlZmVyZW5jZS90cmFuc2FjdGlvbnMvI2tleS1yZWdpc3RyYXRpb24tdHJhbnNhY3Rpb25cbiAgICovXG4gIG5vblBhcnRpY2lwYXRpb24obm9uUGFydGljaXBhdGlvbjogYm9vbGVhbik6IEtleVJlZ2lzdHJhdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMuX25vblBhcnRpY2lwYXRpb24gPSBub25QYXJ0aWNpcGF0aW9uO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRBbGdvVHhuKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLmlzT2ZmbGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpXG4gICAgICA/IHRoaXMuYnVpbGRPZmZsaW5lS2V5UmVnVHJhbnNhY3Rpb24oKVxuICAgICAgOiB0aGlzLmlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpXG4gICAgICA/IHRoaXMuYnVpbGROb25QYXJ0aWNpcGF0aW9uS2V5UmVnVHJhbnNhY3Rpb24oKVxuICAgICAgOiB0aGlzLmJ1aWxkT25saW5lS2V5UmVnVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRPZmZsaW5lS2V5UmVnVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFrZUtleVJlZ2lzdHJhdGlvblR4bldpdGhTdWdnZXN0ZWRQYXJhbXMoXG4gICAgICB0aGlzLl9zZW5kZXIsXG4gICAgICB0aGlzLl9ub3RlLFxuICAgICAgdW5kZWZpbmVkLCAvLyB2b3RlS2V5IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHNlbGVjdGlvbktleSBwYXJhbVxuICAgICAgdW5kZWZpbmVkLCAvLyB2b3RlRmlyc3QgcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUxhc3QgcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUtleURpbHV0aW9uIHBhcmFtXG4gICAgICB0aGlzLnN1Z2dlc3RlZFBhcmFtc1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkT25saW5lS2V5UmVnVHJhbnNhY3Rpb24oKTogYWxnb3Nkay5UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIGFsZ29zZGsubWFrZUtleVJlZ2lzdHJhdGlvblR4bldpdGhTdWdnZXN0ZWRQYXJhbXMoXG4gICAgICB0aGlzLl9zZW5kZXIsXG4gICAgICB0aGlzLl9ub3RlLFxuICAgICAgdGhpcy5fdm90ZUtleSxcbiAgICAgIHRoaXMuX3NlbGVjdGlvbktleSxcbiAgICAgIHRoaXMuX3ZvdGVGaXJzdCxcbiAgICAgIHRoaXMuX3ZvdGVMYXN0LFxuICAgICAgdGhpcy5fdm90ZUtleURpbHV0aW9uLFxuICAgICAgdGhpcy5zdWdnZXN0ZWRQYXJhbXMsXG4gICAgICB1bmRlZmluZWQsIC8vIHJlS2V5VG8gcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gbm9uUGFydGljaXBhdGlvbiBwYXJhbVxuICAgICAgdGhpcy5fc3RhdGVQcm9vZktleVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTm9uUGFydGljaXBhdGlvbktleVJlZ1RyYW5zYWN0aW9uKCk6IGFsZ29zZGsuVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiBhbGdvc2RrLm1ha2VLZXlSZWdpc3RyYXRpb25UeG5XaXRoU3VnZ2VzdGVkUGFyYW1zKFxuICAgICAgdGhpcy5fc2VuZGVyLFxuICAgICAgdGhpcy5fbm90ZSxcbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUtleSBwYXJhbVxuICAgICAgdW5kZWZpbmVkLCAvLyBzZWxlY3Rpb25LZXkgcGFyYW1cbiAgICAgIHVuZGVmaW5lZCwgLy8gdm90ZUZpcnN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVMYXN0IHBhcmFtXG4gICAgICB1bmRlZmluZWQsIC8vIHZvdGVLZXlEaWx1dGlvbiBwYXJhbVxuICAgICAgdGhpcy5zdWdnZXN0ZWRQYXJhbXMsXG4gICAgICB0aGlzLl9yZUtleVRvLFxuICAgICAgdHJ1ZSAvLyBub25QYXJ0aWNpcGF0aW9uIHBhcmFtXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBVaW50OEFycmF5IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBhbGdvVHhuID0gdHguZ2V0QWxnb1RyYW5zYWN0aW9uKCk7XG5cbiAgICBpZiAoYWxnb1R4bikge1xuICAgICAgaWYgKHRoaXMuaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWxnb1NES1RyYW5zYWN0aW9uKGFsZ29UeG4pKSB7XG4gICAgICAgIHRoaXMubm9uUGFydGljaXBhdGlvbighIWFsZ29UeG4ubm9uUGFydGljaXBhdGlvbik7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNPbmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bikpIHtcbiAgICAgICAgdGhpcy52b3RlS2V5KGFsZ29UeG4udm90ZUtleS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbktleShhbGdvVHhuLnNlbGVjdGlvbktleS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgICAgICB0aGlzLnZvdGVGaXJzdChhbGdvVHhuLnZvdGVGaXJzdCk7XG4gICAgICAgIHRoaXMudm90ZUxhc3QoYWxnb1R4bi52b3RlTGFzdCk7XG4gICAgICAgIHRoaXMudm90ZUtleURpbHV0aW9uKGFsZ29UeG4udm90ZUtleURpbHV0aW9uKTtcbiAgICAgICAgaWYgKGFsZ29UeG4uc3RhdGVQcm9vZktleSkge1xuICAgICAgICAgIHRoaXMuc3RhdGVQcm9vZktleShhbGdvVHhuLnN0YXRlUHJvb2ZLZXkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogVWludDhBcnJheSB8IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlY29kZVR4biA9IFV0aWxzLmRlY29kZUFsZ29UeG4ocmF3VHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IGFsZ29UeG4gPSBkZWNvZGVUeG4udHhuO1xuICAgIGlmIChhbGdvVHhuLnR5cGUgIT09IGFsZ29zZGsuVHJhbnNhY3Rpb25UeXBlLmtleXJlZykge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke2FsZ29UeG4udHlwZX0uIEV4cGVjdGVkICR7YWxnb3Nkay5UcmFuc2FjdGlvblR5cGUua2V5cmVnfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPbmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bikpIHtcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoXG4gICAgICAgIGFsZ29UeG4udm90ZUtleS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgIGFsZ29UeG4uc2VsZWN0aW9uS2V5LnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgYWxnb1R4bi52b3RlRmlyc3QsXG4gICAgICAgIGFsZ29UeG4udm90ZUxhc3QsXG4gICAgICAgIGFsZ29UeG4udm90ZUtleURpbHV0aW9uLFxuICAgICAgICBhbGdvVHhuLnN0YXRlUHJvb2ZLZXkgJiYgYWxnb1R4bi5zdGF0ZVByb29mS2V5LnRvU3RyaW5nKCdiYXNlNjQnKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzTm9uUGFydGljaXBhdGlvbktleVJlZ0FsZ29TREtUcmFuc2FjdGlvbihhbGdvVHhuOiBhbGdvc2RrLlRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhYWxnb1R4bi5ub25QYXJ0aWNpcGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vblBhcnRpY2lwYXRpb25LZXlSZWdBY2NvdW50TGliVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fbm9uUGFydGljaXBhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgaXNPbmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bjogYWxnb3Nkay5UcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKFxuICAgICAgdGhpcy5pc09mZmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bikgfHwgdGhpcy5pc05vblBhcnRpY2lwYXRpb25LZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09ubGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLmlzT2ZmbGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpIHx8IHRoaXMuaXNOb25QYXJ0aWNpcGF0aW9uS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc09mZmxpbmVLZXlSZWdBbGdvU0RLVHJhbnNhY3Rpb24oYWxnb1R4bjogYWxnb3Nkay5UcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhYWxnb1R4bi52b3RlS2V5ICYmXG4gICAgICAhYWxnb1R4bi5zZWxlY3Rpb25LZXkgJiZcbiAgICAgICFhbGdvVHhuLnZvdGVGaXJzdCAmJlxuICAgICAgIWFsZ29UeG4udm90ZUxhc3QgJiZcbiAgICAgICFhbGdvVHhuLnZvdGVLZXlEaWx1dGlvbiAmJlxuICAgICAgIWFsZ29UeG4uc3RhdGVQcm9vZktleSAmJlxuICAgICAgIWFsZ29UeG4ubm9uUGFydGljaXBhdGlvblxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzT2ZmbGluZUtleVJlZ0FjY291bnRMaWJUcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMuX3ZvdGVLZXkgJiZcbiAgICAgICF0aGlzLl9zZWxlY3Rpb25LZXkgJiZcbiAgICAgICF0aGlzLl92b3RlRmlyc3QgJiZcbiAgICAgICF0aGlzLl92b3RlTGFzdCAmJlxuICAgICAgIXRoaXMuX3ZvdGVLZXlEaWx1dGlvbiAmJlxuICAgICAgIXRoaXMuX3N0YXRlUHJvb2ZLZXkgJiZcbiAgICAgICF0aGlzLl9ub25QYXJ0aWNpcGF0aW9uXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pO1xuICAgIGlmICh0aGlzLmlzT25saW5lS2V5UmVnQWNjb3VudExpYlRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIC8vIGludmFsaWQgb2ZmbGluZSB3aWxsIHJlYWNoIGhlcmVcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZHMoXG4gICAgICAgIHRoaXMuX3ZvdGVLZXksXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbktleSxcbiAgICAgICAgdGhpcy5fdm90ZUZpcnN0LFxuICAgICAgICB0aGlzLl92b3RlTGFzdCxcbiAgICAgICAgdGhpcy5fdm90ZUtleURpbHV0aW9uLFxuICAgICAgICB0aGlzLl9zdGF0ZVByb29mS2V5XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBvZmZsaW5lIG9yIG5vbnBhcnRpY2lwYXRpb24gdHJhbnNhY3Rpb25cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fdm90ZUtleSB8fFxuICAgICAgICB0aGlzLl9zZWxlY3Rpb25LZXkgfHxcbiAgICAgICAgdGhpcy5fdm90ZUZpcnN0IHx8XG4gICAgICAgIHRoaXMuX3ZvdGVMYXN0IHx8XG4gICAgICAgIHRoaXMuX3ZvdGVLZXlEaWx1dGlvbiB8fFxuICAgICAgICB0aGlzLl9zdGF0ZVByb29mS2V5XG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICdWb3RlS2V5LCBTZWxlY3Rpb25LZXksIFZvdGVGaXJzdCwgVm90ZUxhc3QsIFZvdGVLZXlEaWx1dGlvbiwgU3RhdGVQcm9vZktleSBmaWVsZHMgY2Fubm90IGJlIHNldCB3aGVuIG9mZmxpbmUgb3Igbm9ucGFydGljaXBhdGlvbiBpcyBzZXQnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcyhcbiAgICB2b3RlS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0aW9uS2V5OiBzdHJpbmcsXG4gICAgdm90ZUZpcnN0OiBudW1iZXIsXG4gICAgdm90ZUxhc3Q6IG51bWJlcixcbiAgICB2b3RlS2V5RGlsdXRpb246IG51bWJlcixcbiAgICBzdGF0ZVByb29mS2V5Pzogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSBLZXlSZWdUeG5TY2hlbWEudmFsaWRhdGUoe1xuICAgICAgdm90ZUtleSxcbiAgICAgIHNlbGVjdGlvbktleSxcbiAgICAgIHZvdGVGaXJzdCxcbiAgICAgIHZvdGVMYXN0LFxuICAgICAgdm90ZUtleURpbHV0aW9uLFxuICAgICAgc3RhdGVQcm9vZktleSxcbiAgICB9KTtcblxuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Seed } from './ifaces';
|
|
2
|
-
export declare class SeedEncoding {
|
|
3
|
-
private static genericHash;
|
|
4
|
-
/**
|
|
5
|
-
* Checks if a seed is valid
|
|
6
|
-
* @param {String} seed - encoded Algorand seed
|
|
7
|
-
* @returns {Boolean} true if valid, false otherwise
|
|
8
|
-
*/
|
|
9
|
-
static isValidSeed(seed: string): boolean;
|
|
10
|
-
/**
|
|
11
|
-
* Decode a seed
|
|
12
|
-
*
|
|
13
|
-
* @param seed
|
|
14
|
-
* @return {{checksum: Uint8Array, seed: Uint8Array}}
|
|
15
|
-
*/
|
|
16
|
-
static decode(seed: string): Seed;
|
|
17
|
-
/**
|
|
18
|
-
* Encode a secret key into a seed
|
|
19
|
-
*
|
|
20
|
-
* @param secretKey
|
|
21
|
-
* @return {String} encoded seed
|
|
22
|
-
*/
|
|
23
|
-
static encode(secretKey: Uint8Array): string;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=seedEncoding.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seedEncoding.d.ts","sourceRoot":"","sources":["../../../src/lib/seedEncoding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAOhC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA0BzC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAajC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;CAe7C"}
|
|
@@ -1,111 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.SeedEncoding = void 0;
|
|
40
|
-
const base32 = __importStar(require("hi-base32"));
|
|
41
|
-
const js_sha512_1 = __importDefault(require("js-sha512"));
|
|
42
|
-
const SEED_BYTES_LENGTH = 32;
|
|
43
|
-
const ALGORAND_SEED_BYTE_LENGTH = 36;
|
|
44
|
-
const ALGORAND_CHECKSUM_BYTE_LENGTH = 4;
|
|
45
|
-
const ALGORAND_SEED_LENGTH = 58;
|
|
46
|
-
class SeedEncoding {
|
|
47
|
-
static genericHash(arr) {
|
|
48
|
-
return js_sha512_1.default.sha512_256.array(arr);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Checks if a seed is valid
|
|
52
|
-
* @param {String} seed - encoded Algorand seed
|
|
53
|
-
* @returns {Boolean} true if valid, false otherwise
|
|
54
|
-
*/
|
|
55
|
-
static isValidSeed(seed) {
|
|
56
|
-
if (seed.length !== ALGORAND_SEED_LENGTH) {
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
// Try to decode
|
|
60
|
-
let decoded;
|
|
61
|
-
try {
|
|
62
|
-
decoded = SeedEncoding.decode(seed);
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
// Compute checksum
|
|
68
|
-
const checksum = SeedEncoding.genericHash(decoded.seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH);
|
|
69
|
-
// Check if the checksum and the seed are equal
|
|
70
|
-
if (checksum.length !== decoded.checksum.length) {
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
return checksum.every((val, i) => val === decoded.checksum[i]);
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Decode a seed
|
|
77
|
-
*
|
|
78
|
-
* @param seed
|
|
79
|
-
* @return {{checksum: Uint8Array, seed: Uint8Array}}
|
|
80
|
-
*/
|
|
81
|
-
static decode(seed) {
|
|
82
|
-
// try to decode
|
|
83
|
-
const decoded = base32.decode.asBytes(seed);
|
|
84
|
-
// Sanity check
|
|
85
|
-
if (decoded.length !== ALGORAND_SEED_BYTE_LENGTH)
|
|
86
|
-
throw new Error('seed seems to be malformed');
|
|
87
|
-
return {
|
|
88
|
-
seed: new Uint8Array(decoded.slice(0, ALGORAND_SEED_BYTE_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH)),
|
|
89
|
-
checksum: new Uint8Array(decoded.slice(SEED_BYTES_LENGTH, ALGORAND_SEED_BYTE_LENGTH)),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Encode a secret key into a seed
|
|
94
|
-
*
|
|
95
|
-
* @param secretKey
|
|
96
|
-
* @return {String} encoded seed
|
|
97
|
-
*/
|
|
98
|
-
static encode(secretKey) {
|
|
99
|
-
// get seed
|
|
100
|
-
const seed = secretKey.slice(0, SEED_BYTES_LENGTH);
|
|
101
|
-
// compute checksum
|
|
102
|
-
const checksum = SeedEncoding.genericHash(seed).slice(SEED_BYTES_LENGTH - ALGORAND_CHECKSUM_BYTE_LENGTH, SEED_BYTES_LENGTH);
|
|
103
|
-
const arraySeed = new Uint8Array(seed.length + checksum.length);
|
|
104
|
-
arraySeed.set(seed);
|
|
105
|
-
arraySeed.set(checksum, seed.length);
|
|
106
|
-
const encodedSeed = base32.encode(arraySeed);
|
|
107
|
-
return encodedSeed.toString().slice(0, ALGORAND_SEED_LENGTH); // removing the extra '===='
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
exports.SeedEncoding = SeedEncoding;
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VlZEVuY29kaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zZWVkRW5jb2RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQW9DO0FBQ3BDLDBEQUErQjtBQUcvQixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLHlCQUF5QixHQUFHLEVBQUUsQ0FBQztBQUNyQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsQ0FBQztBQUN4QyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUVoQyxNQUFhLFlBQVk7SUFDZixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQWU7UUFDeEMsT0FBTyxtQkFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQVk7UUFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLG9CQUFvQixFQUFFLENBQUM7WUFDekMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQUksT0FBYSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FDM0QsaUJBQWlCLEdBQUcsNkJBQTZCLEVBQ2pELGlCQUFpQixDQUNsQixDQUFDO1FBRUYsK0NBQStDO1FBQy9DLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFZO1FBQ3hCLGdCQUFnQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxlQUFlO1FBQ2YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLHlCQUF5QjtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUVoRyxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixHQUFHLDZCQUE2QixDQUFDLENBQUM7WUFDakcsUUFBUSxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUseUJBQXlCLENBQUMsQ0FBQztTQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFxQjtRQUNqQyxXQUFXO1FBQ1gsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxtQkFBbUI7UUFDbkIsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQ25ELGlCQUFpQixHQUFHLDZCQUE2QixFQUNqRCxpQkFBaUIsQ0FDbEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsT0FBTyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBQzVGLENBQUM7Q0FDRjtBQTVFRCxvQ0E0RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlMzIgZnJvbSAnaGktYmFzZTMyJztcbmltcG9ydCBzaGE1MTIgZnJvbSAnanMtc2hhNTEyJztcbmltcG9ydCB7IFNlZWQgfSBmcm9tICcuL2lmYWNlcyc7XG5cbmNvbnN0IFNFRURfQllURVNfTEVOR1RIID0gMzI7XG5jb25zdCBBTEdPUkFORF9TRUVEX0JZVEVfTEVOR1RIID0gMzY7XG5jb25zdCBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCA9IDQ7XG5jb25zdCBBTEdPUkFORF9TRUVEX0xFTkdUSCA9IDU4O1xuXG5leHBvcnQgY2xhc3MgU2VlZEVuY29kaW5nIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZ2VuZXJpY0hhc2goYXJyOiBVaW50OEFycmF5KTogbnVtYmVyW10ge1xuICAgIHJldHVybiBzaGE1MTIuc2hhNTEyXzI1Ni5hcnJheShhcnIpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHNlZWQgaXMgdmFsaWRcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlZWQgLSBlbmNvZGVkIEFsZ29yYW5kIHNlZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdmFsaWQsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgc3RhdGljIGlzVmFsaWRTZWVkKHNlZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChzZWVkLmxlbmd0aCAhPT0gQUxHT1JBTkRfU0VFRF9MRU5HVEgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgdG8gZGVjb2RlXG4gICAgbGV0IGRlY29kZWQ6IFNlZWQ7XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWQgPSBTZWVkRW5jb2RpbmcuZGVjb2RlKHNlZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGNoZWNrc3VtXG4gICAgY29uc3QgY2hlY2tzdW0gPSBTZWVkRW5jb2RpbmcuZ2VuZXJpY0hhc2goZGVjb2RlZC5zZWVkKS5zbGljZShcbiAgICAgIFNFRURfQllURVNfTEVOR1RIIC0gQUxHT1JBTkRfQ0hFQ0tTVU1fQllURV9MRU5HVEgsXG4gICAgICBTRUVEX0JZVEVTX0xFTkdUSFxuICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY2hlY2tzdW0gYW5kIHRoZSBzZWVkIGFyZSBlcXVhbFxuICAgIGlmIChjaGVja3N1bS5sZW5ndGggIT09IGRlY29kZWQuY2hlY2tzdW0ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBjaGVja3N1bS5ldmVyeSgodmFsLCBpKSA9PiB2YWwgPT09IGRlY29kZWQuY2hlY2tzdW1baV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSBhIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHNlZWRcbiAgICogQHJldHVybiB7e2NoZWNrc3VtOiBVaW50OEFycmF5LCBzZWVkOiBVaW50OEFycmF5fX1cbiAgICovXG4gIHN0YXRpYyBkZWNvZGUoc2VlZDogc3RyaW5nKTogU2VlZCB7XG4gICAgLy8gdHJ5IHRvIGRlY29kZVxuICAgIGNvbnN0IGRlY29kZWQgPSBiYXNlMzIuZGVjb2RlLmFzQnl0ZXMoc2VlZCk7XG5cbiAgICAvLyBTYW5pdHkgY2hlY2tcbiAgICBpZiAoZGVjb2RlZC5sZW5ndGggIT09IEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpIHRocm93IG5ldyBFcnJvcignc2VlZCBzZWVtcyB0byBiZSBtYWxmb3JtZWQnKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzZWVkOiBuZXcgVWludDhBcnJheShkZWNvZGVkLnNsaWNlKDAsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCkpLFxuICAgICAgY2hlY2tzdW06IG5ldyBVaW50OEFycmF5KGRlY29kZWQuc2xpY2UoU0VFRF9CWVRFU19MRU5HVEgsIEFMR09SQU5EX1NFRURfQllURV9MRU5HVEgpKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhIHNlY3JldCBrZXkgaW50byBhIHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHNlY3JldEtleVxuICAgKiBAcmV0dXJuIHtTdHJpbmd9IGVuY29kZWQgc2VlZFxuICAgKi9cbiAgc3RhdGljIGVuY29kZShzZWNyZXRLZXk6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIC8vIGdldCBzZWVkXG4gICAgY29uc3Qgc2VlZCA9IHNlY3JldEtleS5zbGljZSgwLCBTRUVEX0JZVEVTX0xFTkdUSCk7XG4gICAgLy8gY29tcHV0ZSBjaGVja3N1bVxuICAgIGNvbnN0IGNoZWNrc3VtID0gU2VlZEVuY29kaW5nLmdlbmVyaWNIYXNoKHNlZWQpLnNsaWNlKFxuICAgICAgU0VFRF9CWVRFU19MRU5HVEggLSBBTEdPUkFORF9DSEVDS1NVTV9CWVRFX0xFTkdUSCxcbiAgICAgIFNFRURfQllURVNfTEVOR1RIXG4gICAgKTtcbiAgICBjb25zdCBhcnJheVNlZWQgPSBuZXcgVWludDhBcnJheShzZWVkLmxlbmd0aCArIGNoZWNrc3VtLmxlbmd0aCk7XG4gICAgYXJyYXlTZWVkLnNldChzZWVkKTtcbiAgICBhcnJheVNlZWQuc2V0KGNoZWNrc3VtLCBzZWVkLmxlbmd0aCk7XG4gICAgY29uc3QgZW5jb2RlZFNlZWQgPSBiYXNlMzIuZW5jb2RlKGFycmF5U2VlZCk7XG5cbiAgICByZXR1cm4gZW5jb2RlZFNlZWQudG9TdHJpbmcoKS5zbGljZSgwLCBBTEdPUkFORF9TRUVEX0xFTkdUSCk7IC8vIHJlbW92aW5nIHRoZSBleHRyYSAnPT09PSdcbiAgfVxufVxuIl19
|