@bitgo-beta/utxo-core 1.8.1-beta.79 → 1.8.1-beta.80

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.
@@ -0,0 +1,11 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare const NIL_UUID = "00000000-0000-0000-0000-000000000000";
3
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
4
+ * given the address and entropy.
5
+ *
6
+ * @param address
7
+ * @param entropy
8
+ * @returns
9
+ */
10
+ export declare function createPayGoAttestationBuffer(address: string, entropy: Buffer, network: utxolib.Network): Buffer;
11
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/attestation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,QAAQ,yCAAyC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM/G"}
@@ -0,0 +1,58 @@
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.NIL_UUID = void 0;
40
+ exports.createPayGoAttestationBuffer = createPayGoAttestationBuffer;
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
43
+ exports.NIL_UUID = '00000000-0000-0000-0000-000000000000';
44
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
45
+ * given the address and entropy.
46
+ *
47
+ * @param address
48
+ * @param entropy
49
+ * @returns
50
+ */
51
+ function createPayGoAttestationBuffer(address, entropy, network) {
52
+ (0, assert_1.default)(address.length > 0);
53
+ const isValidAddress = utxolib.address.toOutputScript(address, network);
54
+ (0, assert_1.default)(isValidAddress, `Address ${address} is not a valid address.`);
55
+ const addressBuffer = Buffer.from(address);
56
+ return Buffer.concat([entropy, addressBuffer, Buffer.from(exports.NIL_UUID)]);
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsb0VBTUM7QUFsQkQsb0RBQTRCO0FBRTVCLDhEQUFnRDtBQUNuQyxRQUFBLFFBQVEsR0FBRyxzQ0FBc0MsQ0FBQztBQUUvRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQXdCO0lBQ3JHLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxJQUFBLGdCQUFNLEVBQUMsY0FBYyxFQUFFLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5leHBvcnQgY29uc3QgTklMX1VVSUQgPSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gcmVjb25zdHJ1Y3RzIHRoZSBwcm9vZiA8RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbiAqIGdpdmVuIHRoZSBhZGRyZXNzIGFuZCBlbnRyb3B5LlxuICpcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcGFyYW0gZW50cm9weVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXIoYWRkcmVzczogc3RyaW5nLCBlbnRyb3B5OiBCdWZmZXIsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IEJ1ZmZlciB7XG4gIGFzc2VydChhZGRyZXNzLmxlbmd0aCA+IDApO1xuICBjb25zdCBpc1ZhbGlkQWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzLCBuZXR3b3JrKTtcbiAgYXNzZXJ0KGlzVmFsaWRBZGRyZXNzLCBgQWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHZhbGlkIGFkZHJlc3MuYCk7XG4gIGNvbnN0IGFkZHJlc3NCdWZmZXIgPSBCdWZmZXIuZnJvbShhZGRyZXNzKTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2VudHJvcHksIGFkZHJlc3NCdWZmZXIsIEJ1ZmZlci5mcm9tKE5JTF9VVUlEKV0pO1xufVxuIl19
@@ -1,2 +1,3 @@
1
1
  export * from './ExtractAddressPayGoAttestation';
2
+ export * from './psbt';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,QAAQ,CAAC"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./ExtractAddressPayGoAttestation"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFpRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vRXh0cmFjdEFkZHJlc3NQYXlHb0F0dGVzdGF0aW9uJztcbiJdfQ==
18
+ __exportStar(require("./psbt"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFpRDtBQUNqRCx5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0V4dHJhY3RBZGRyZXNzUGF5R29BdHRlc3RhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BzYnQnO1xuIl19
@@ -0,0 +1,22 @@
1
+ export declare class PayGoError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ErrorNoPayGoProof extends PayGoError {
5
+ outputIndex: number;
6
+ constructor(outputIndex: number);
7
+ }
8
+ export declare class ErrorMultiplePayGoProof extends PayGoError {
9
+ constructor();
10
+ }
11
+ export declare class ErrorPayGoAddressProofFailedVerification extends PayGoError {
12
+ constructor();
13
+ }
14
+ export declare class ErrorOutputIndexOutOfBounds extends PayGoError {
15
+ outputIndex: number;
16
+ constructor(outputIndex: number);
17
+ }
18
+ export declare class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
19
+ outputIndex: number;
20
+ constructor(outputIndex: number);
21
+ }
22
+ //# sourceMappingURL=Errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAC5B,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,uBAAwB,SAAQ,UAAU;;CAItD;AAED,qBAAa,wCAAyC,SAAQ,UAAU;;CAIvE;AAED,qBAAa,2BAA4B,SAAQ,UAAU;IACtC,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,kCAAmC,SAAQ,UAAU;IAC7C,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorMultiplePayGoProofAtPsbtIndex = exports.ErrorOutputIndexOutOfBounds = exports.ErrorPayGoAddressProofFailedVerification = exports.ErrorMultiplePayGoProof = exports.ErrorNoPayGoProof = exports.PayGoError = void 0;
4
+ class PayGoError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = this.constructor.name;
8
+ }
9
+ }
10
+ exports.PayGoError = PayGoError;
11
+ class ErrorNoPayGoProof extends PayGoError {
12
+ constructor(outputIndex) {
13
+ super(`There is no paygo address proof encoded in the PSBT at output ${outputIndex}.`);
14
+ this.outputIndex = outputIndex;
15
+ }
16
+ }
17
+ exports.ErrorNoPayGoProof = ErrorNoPayGoProof;
18
+ class ErrorMultiplePayGoProof extends PayGoError {
19
+ constructor() {
20
+ super('There are multiple paygo address proofs encoded in the PSBT. Something went wrong.');
21
+ }
22
+ }
23
+ exports.ErrorMultiplePayGoProof = ErrorMultiplePayGoProof;
24
+ class ErrorPayGoAddressProofFailedVerification extends PayGoError {
25
+ constructor() {
26
+ super('Cannot verify the paygo address signature with the provided pubkey.');
27
+ }
28
+ }
29
+ exports.ErrorPayGoAddressProofFailedVerification = ErrorPayGoAddressProofFailedVerification;
30
+ class ErrorOutputIndexOutOfBounds extends PayGoError {
31
+ constructor(outputIndex) {
32
+ super(`Output index ${outputIndex} is out of bounds for PSBT outputs.`);
33
+ this.outputIndex = outputIndex;
34
+ }
35
+ }
36
+ exports.ErrorOutputIndexOutOfBounds = ErrorOutputIndexOutOfBounds;
37
+ class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
38
+ constructor(outputIndex) {
39
+ super(`There are multiple PayGo addresses in the PSBT output ${outputIndex}.`);
40
+ this.outputIndex = outputIndex;
41
+ }
42
+ }
43
+ exports.ErrorMultiplePayGoProofAtPsbtIndex = ErrorMultiplePayGoProofAtPsbtIndex;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BheWdvL3BzYnQvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsVUFBVyxTQUFRLEtBQUs7SUFDbkMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBTEQsZ0NBS0M7QUFFRCxNQUFhLGlCQUFrQixTQUFRLFVBQVU7SUFDL0MsWUFBbUIsV0FBbUI7UUFDcEMsS0FBSyxDQUFDLGlFQUFpRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRHRFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBRXRDLENBQUM7Q0FDRjtBQUpELDhDQUlDO0FBRUQsTUFBYSx1QkFBd0IsU0FBUSxVQUFVO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLG9GQUFvRixDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNGO0FBSkQsMERBSUM7QUFFRCxNQUFhLHdDQUF5QyxTQUFRLFVBQVU7SUFDdEU7UUFDRSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0NBQ0Y7QUFKRCw0RkFJQztBQUVELE1BQWEsMkJBQTRCLFNBQVEsVUFBVTtJQUN6RCxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMsZ0JBQWdCLFdBQVcscUNBQXFDLENBQUMsQ0FBQztRQUR2RCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUV0QyxDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELE1BQWEsa0NBQW1DLFNBQVEsVUFBVTtJQUNoRSxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMseURBQXlELFdBQVcsR0FBRyxDQUFDLENBQUM7UUFEOUQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFdEMsQ0FBQztDQUNGO0FBSkQsZ0ZBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF5R29FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBUaGVyZSBpcyBubyBwYXlnbyBhZGRyZXNzIHByb29mIGVuY29kZWQgaW4gdGhlIFBTQlQgYXQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVGhlcmUgYXJlIG11bHRpcGxlIHBheWdvIGFkZHJlc3MgcHJvb2ZzIGVuY29kZWQgaW4gdGhlIFBTQlQuIFNvbWV0aGluZyB3ZW50IHdyb25nLicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclBheUdvQWRkcmVzc1Byb29mRmFpbGVkVmVyaWZpY2F0aW9uIGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdDYW5ub3QgdmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSB3aXRoIHRoZSBwcm92aWRlZCBwdWJrZXkuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBPdXRwdXQgaW5kZXggJHtvdXRwdXRJbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBmb3IgUFNCVCBvdXRwdXRzLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4IGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdXRwdXRJbmRleDogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFRoZXJlIGFyZSBtdWx0aXBsZSBQYXlHbyBhZGRyZXNzZXMgaW4gdGhlIFBTQlQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './payGoAddressProof';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./payGoAddressProof"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXlHb0FkZHJlc3NQcm9vZic7XG4iXX0=
@@ -0,0 +1,28 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
3
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
4
+ * to later verify.
5
+ *
6
+ * @param psbt - PSBT that we need to encode our paygo address into
7
+ * @param outputIndex - the index of the address in our output
8
+ * @param sig - the signature that we want to encode
9
+ */
10
+ export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
11
+ /** Verify the paygo address signature is valid using verification pub key.
12
+ *
13
+ * @param psbt - PSBT we want to verify that the paygo address is in
14
+ * @param outputIndex - we have the output index that address is in
15
+ * @param uuid
16
+ * @returns
17
+ */
18
+ export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
19
+ /** Get the output index of the paygo output if there is one. It does this by
20
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
21
+ * no paygo output, return undefined
22
+ *
23
+ * @param psbt
24
+ * @returns number - the index of the output address
25
+ */
26
+ export declare function getPayGoAddressProofOutputIndex(psbt: utxolib.bitgo.UtxoPsbt): number | undefined;
27
+ export declare function psbtOutputIncludesPaygoAddressProof(psbt: utxolib.bitgo.UtxoPsbt): boolean;
28
+ //# sourceMappingURL=payGoAddressProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAgCN;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAehG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAEzF"}
@@ -0,0 +1,122 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.addPayGoAddressProof = addPayGoAddressProof;
37
+ exports.verifyPayGoAddressProof = verifyPayGoAddressProof;
38
+ exports.getPayGoAddressProofOutputIndex = getPayGoAddressProofOutputIndex;
39
+ exports.psbtOutputIncludesPaygoAddressProof = psbtOutputIncludesPaygoAddressProof;
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ const utils_1 = require("bip174/src/lib/utils");
42
+ const bip32utils_1 = require("../../bip32utils");
43
+ const attestation_1 = require("../attestation");
44
+ const Errors_1 = require("./Errors");
45
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
46
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
47
+ * to later verify.
48
+ *
49
+ * @param psbt - PSBT that we need to encode our paygo address into
50
+ * @param outputIndex - the index of the address in our output
51
+ * @param sig - the signature that we want to encode
52
+ */
53
+ function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
54
+ utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
55
+ key: {
56
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
57
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
58
+ keydata: entropy,
59
+ },
60
+ value: sig,
61
+ });
62
+ }
63
+ /** Verify the paygo address signature is valid using verification pub key.
64
+ *
65
+ * @param psbt - PSBT we want to verify that the paygo address is in
66
+ * @param outputIndex - we have the output index that address is in
67
+ * @param uuid
68
+ * @returns
69
+ */
70
+ function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
71
+ const psbtOutputs = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
72
+ const stored = utxolib.bitgo.getProprietaryKeyValuesFromUnknownKeyValues(psbtOutputs, {
73
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
74
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
75
+ });
76
+ // assert stored length is 0 or 1
77
+ if (stored.length === 0) {
78
+ throw new Errors_1.ErrorNoPayGoProof(outputIndex);
79
+ }
80
+ else if (stored.length > 1) {
81
+ throw new Errors_1.ErrorMultiplePayGoProof();
82
+ }
83
+ // We get the signature and entropy from our PSBT unknown key vals
84
+ const signature = stored[0].value;
85
+ const entropy = stored[0].key.keydata;
86
+ // Get the the PayGo address from the txOutputs
87
+ const txOutputs = psbt.txOutputs;
88
+ if (outputIndex >= txOutputs.length) {
89
+ throw new Errors_1.ErrorOutputIndexOutOfBounds(outputIndex);
90
+ }
91
+ const output = txOutputs[outputIndex];
92
+ const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
93
+ // We construct our message <ENTROPY><ADDRESS><UUID>
94
+ const message = (0, attestation_1.createPayGoAttestationBuffer)(addressFromOutput, entropy, psbt.network);
95
+ if (!(0, bip32utils_1.verifyMessage)(message.toString(), verificationPubkey, signature, utxolib.networks.bitcoin)) {
96
+ throw new Errors_1.ErrorPayGoAddressProofFailedVerification();
97
+ }
98
+ }
99
+ /** Get the output index of the paygo output if there is one. It does this by
100
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
101
+ * no paygo output, return undefined
102
+ *
103
+ * @param psbt
104
+ * @returns number - the index of the output address
105
+ */
106
+ function getPayGoAddressProofOutputIndex(psbt) {
107
+ const res = psbt.data.outputs.flatMap((output, outputIndex) => {
108
+ const proprietaryKeyVals = utxolib.bitgo.getPsbtOutputProprietaryKeyVals(output, {
109
+ identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
110
+ subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
111
+ });
112
+ if (proprietaryKeyVals.length > 1) {
113
+ throw new Errors_1.ErrorMultiplePayGoProofAtPsbtIndex(outputIndex);
114
+ }
115
+ return proprietaryKeyVals.length === 0 ? [] : [outputIndex];
116
+ });
117
+ return res.length === 0 ? undefined : res[0];
118
+ }
119
+ function psbtOutputIncludesPaygoAddressProof(psbt) {
120
+ return getPayGoAddressProofOutputIndex(psbt) !== undefined;
121
+ }
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxvREFjQztBQVNELDBEQW9DQztBQVNELDBFQWVDO0FBRUQsa0ZBRUM7QUE3R0QsOERBQWdEO0FBQ2hELGdEQUFzRDtBQUV0RCxpREFBaUQ7QUFDakQsZ0RBQThEO0FBRTlELHFDQU1rQjtBQUVsQjs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQ2xDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLEdBQVcsRUFDWCxPQUFlO0lBRWYsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNyRixHQUFHLEVBQUU7WUFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1lBQzVFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0QsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLGtCQUEwQjtJQUUxQixNQUFNLFdBQVcsR0FBRyxJQUFBLHNCQUFjLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxXQUFXLEVBQUU7UUFDcEYsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1FBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtLQUM3RSxDQUFDLENBQUM7SUFFSCxpQ0FBaUM7SUFDakMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSwwQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO1NBQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxnQ0FBdUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUV0QywrQ0FBK0M7SUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxJQUFJLFdBQVcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLG9DQUEyQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhGLG9EQUFvRDtJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFBLDBDQUE0QixFQUFDLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkYsSUFBSSxDQUFDLElBQUEsMEJBQWEsRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNoRyxNQUFNLElBQUksaURBQXdDLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLCtCQUErQixDQUFDLElBQTRCO0lBQzFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRTtRQUM1RCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsTUFBTSxFQUFFO1lBQy9FLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQjtZQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7U0FDN0UsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxJQUFJLDJDQUFrQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFnQixtQ0FBbUMsQ0FBQyxJQUE0QjtJQUM5RSxPQUFPLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBjaGVja0Zvck91dHB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL3V0aWxzJztcblxuaW1wb3J0IHsgdmVyaWZ5TWVzc2FnZSB9IGZyb20gJy4uLy4uL2JpcDMydXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlciB9IGZyb20gJy4uL2F0dGVzdGF0aW9uJztcblxuaW1wb3J0IHtcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2YsXG4gIEVycm9yTXVsdGlwbGVQYXlHb1Byb29mQXRQc2J0SW5kZXgsXG4gIEVycm9yTm9QYXlHb1Byb29mLFxuICBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMsXG4gIEVycm9yUGF5R29BZGRyZXNzUHJvb2ZGYWlsZWRWZXJpZmljYXRpb24sXG59IGZyb20gJy4vRXJyb3JzJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gYWRkcyB0aGUgZW50cm9weSBhbmQgc2lnbmF0dXJlIGludG8gdGhlIFBTQlQgb3V0cHV0IHVua25vd24ga2V5IHZhbHMuXG4gKiBXZSBzdG9yZSB0aGUgZW50cm9weSBzbyB0aGF0IHdlIHJlY29uc3RydWN0IHRoZSBtZXNzYWdlIDxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICogdG8gbGF0ZXIgdmVyaWZ5LlxuICpcbiAqIEBwYXJhbSBwc2J0IC0gUFNCVCB0aGF0IHdlIG5lZWQgdG8gZW5jb2RlIG91ciBwYXlnbyBhZGRyZXNzIGludG9cbiAqIEBwYXJhbSBvdXRwdXRJbmRleCAtIHRoZSBpbmRleCBvZiB0aGUgYWRkcmVzcyBpbiBvdXIgb3V0cHV0XG4gKiBAcGFyYW0gc2lnIC0gdGhlIHNpZ25hdHVyZSB0aGF0IHdlIHdhbnQgdG8gZW5jb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRQYXlHb0FkZHJlc3NQcm9vZihcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgc2lnOiBCdWZmZXIsXG4gIGVudHJvcHk6IEJ1ZmZlclxuKTogdm9pZCB7XG4gIHV0eG9saWIuYml0Z28uYWRkUHJvcHJpZXRhcnlLZXlWYWx1ZXNGcm9tVW5rbm93bktleVZhbHVlcyhwc2J0LCAnb3V0cHV0Jywgb3V0cHV0SW5kZXgsIHtcbiAgICBrZXk6IHtcbiAgICAgIGlkZW50aWZpZXI6IHV0eG9saWIuYml0Z28uUFNCVF9QUk9QUklFVEFSWV9JREVOVElGSUVSLFxuICAgICAgc3VidHlwZTogdXR4b2xpYi5iaXRnby5Qcm9wcmlldGFyeUtleVN1YnR5cGUuUEFZR09fQUREUkVTU19BVFRFU1RBVElPTl9QUk9PRixcbiAgICAgIGtleWRhdGE6IGVudHJvcHksXG4gICAgfSxcbiAgICB2YWx1ZTogc2lnLFxuICB9KTtcbn1cblxuLyoqIFZlcmlmeSB0aGUgcGF5Z28gYWRkcmVzcyBzaWduYXR1cmUgaXMgdmFsaWQgdXNpbmcgdmVyaWZpY2F0aW9uIHB1YiBrZXkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHdlIHdhbnQgdG8gdmVyaWZ5IHRoYXQgdGhlIHBheWdvIGFkZHJlc3MgaXMgaW5cbiAqIEBwYXJhbSBvdXRwdXRJbmRleCAtIHdlIGhhdmUgdGhlIG91dHB1dCBpbmRleCB0aGF0IGFkZHJlc3MgaXMgaW5cbiAqIEBwYXJhbSB1dWlkXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIGlmICghdmVyaWZ5TWVzc2FnZShtZXNzYWdlLnRvU3RyaW5nKCksIHZlcmlmaWNhdGlvblB1YmtleSwgc2lnbmF0dXJlLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yUGF5R29BZGRyZXNzUHJvb2ZGYWlsZWRWZXJpZmljYXRpb24oKTtcbiAgfVxufVxuXG4vKiogR2V0IHRoZSBvdXRwdXQgaW5kZXggb2YgdGhlIHBheWdvIG91dHB1dCBpZiB0aGVyZSBpcyBvbmUuIEl0IGRvZXMgdGhpcyBieVxuICogY2hlY2tpbmcgaWYgdGhlIG1ldGFkYXRhIGlzIG9uIG9uZSBvZiB0aGUgb3V0cHV0cyBvZiB0aGUgUFNCVC4gSWYgdGhlcmUgaXNcbiAqIG5vIHBheWdvIG91dHB1dCwgcmV0dXJuIHVuZGVmaW5lZFxuICpcbiAqIEBwYXJhbSBwc2J0XG4gKiBAcmV0dXJucyBudW1iZXIgLSB0aGUgaW5kZXggb2YgdGhlIG91dHB1dCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICBjb25zdCByZXMgPSBwc2J0LmRhdGEub3V0cHV0cy5mbGF0TWFwKChvdXRwdXQsIG91dHB1dEluZGV4KSA9PiB7XG4gICAgY29uc3QgcHJvcHJpZXRhcnlLZXlWYWxzID0gdXR4b2xpYi5iaXRnby5nZXRQc2J0T3V0cHV0UHJvcHJpZXRhcnlLZXlWYWxzKG91dHB1dCwge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3ByaWV0YXJ5S2V5VmFscy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleChvdXRwdXRJbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3ByaWV0YXJ5S2V5VmFscy5sZW5ndGggPT09IDAgPyBbXSA6IFtvdXRwdXRJbmRleF07XG4gIH0pO1xuXG4gIHJldHVybiByZXMubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogcmVzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHNidE91dHB1dEluY2x1ZGVzUGF5Z29BZGRyZXNzUHJvb2YocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0UGF5R29BZGRyZXNzUHJvb2ZPdXRwdXRJbmRleChwc2J0KSAhPT0gdW5kZWZpbmVkO1xufVxuIl19
@@ -2,4 +2,5 @@ export * from './fixtures.utils';
2
2
  export * from './key.utils';
3
3
  export * from './toPlainObject.utils';
4
4
  export * from './generatePayGoAttestationProof.utils';
5
+ export * from './trimMessagePrefix';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC"}
@@ -18,4 +18,5 @@ __exportStar(require("./fixtures.utils"), exports);
18
18
  __exportStar(require("./key.utils"), exports);
19
19
  __exportStar(require("./toPlainObject.utils"), exports);
20
20
  __exportStar(require("./generatePayGoAttestationProof.utils"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLHdFQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZml4dHVyZXMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXkudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi90b1BsYWluT2JqZWN0LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMnO1xuIl19
21
+ __exportStar(require("./trimMessagePrefix"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLHdFQUFzRDtBQUN0RCxzREFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ZpeHR1cmVzLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4va2V5LnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdG9QbGFpbk9iamVjdC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyYXRlUGF5R29BdHRlc3RhdGlvblByb29mLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdHJpbU1lc3NhZ2VQcmVmaXgnO1xuIl19
@@ -0,0 +1,11 @@
1
+ /** We receive a proof in the form:
2
+ * 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
3
+ * and when verifying our message we want to exclude the 0x18Bitcoin Signed Message:\n<varint_length>
4
+ * of the proof so that we are left with the entropy address and uuid as our message.
5
+ * This is what we are going to be verifying.
6
+ *
7
+ * @param proof
8
+ * @returns
9
+ */
10
+ export declare function trimMessagePrefix(proof: Buffer): Buffer;
11
+ //# sourceMappingURL=trimMessagePrefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trimMessagePrefix.d.ts","sourceRoot":"","sources":["../../../src/testutil/trimMessagePrefix.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAavD"}
@@ -0,0 +1,60 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.trimMessagePrefix = trimMessagePrefix;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ /** We receive a proof in the form:
39
+ * 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
40
+ * and when verifying our message we want to exclude the 0x18Bitcoin Signed Message:\n<varint_length>
41
+ * of the proof so that we are left with the entropy address and uuid as our message.
42
+ * This is what we are going to be verifying.
43
+ *
44
+ * @param proof
45
+ * @returns
46
+ */
47
+ function trimMessagePrefix(proof) {
48
+ const prefix = '\u0018Bitcoin Signed Message:\n';
49
+ if (proof.toString().startsWith(prefix)) {
50
+ proof = proof.slice(Buffer.from(prefix).length);
51
+ utxolib.bufferutils.varuint.decode(proof, 0);
52
+ // Determines how many bytes were consumed during our last varuint.decode(Buffer, offset)
53
+ // So if varuint.decode(0xfd) then varuint.decode.bytes = 3
54
+ // varuint.decode(0xfe) then varuint.decode.bytes = 5, etc.
55
+ const varintBytesLength = utxolib.bufferutils.varuint.decode.bytes;
56
+ proof.slice(varintBytesLength);
57
+ }
58
+ return proof;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbU1lc3NhZ2VQcmVmaXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvdHJpbU1lc3NhZ2VQcmVmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQSw4Q0FhQztBQXhCRCw4REFBZ0Q7QUFFaEQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFhO0lBQzdDLE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUFDO0lBQ2pELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3hDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3Qyx5RkFBeUY7UUFDekYsMkRBQTJEO1FBQzNELDJEQUEyRDtRQUMzRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFFbkUsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLyoqIFdlIHJlY2VpdmUgYSBwcm9vZiBpbiB0aGUgZm9ybTpcbiAqIDB4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbjx2YXJpbnRfbGVuZ3RoPjxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICogYW5kIHdoZW4gdmVyaWZ5aW5nIG91ciBtZXNzYWdlIHdlIHdhbnQgdG8gZXhjbHVkZSB0aGUgMHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuPHZhcmludF9sZW5ndGg+XG4gKiBvZiB0aGUgcHJvb2Ygc28gdGhhdCB3ZSBhcmUgbGVmdCB3aXRoIHRoZSBlbnRyb3B5IGFkZHJlc3MgYW5kIHV1aWQgYXMgb3VyIG1lc3NhZ2UuXG4gKiBUaGlzIGlzIHdoYXQgd2UgYXJlIGdvaW5nIHRvIGJlIHZlcmlmeWluZy5cbiAqXG4gKiBAcGFyYW0gcHJvb2ZcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTWVzc2FnZVByZWZpeChwcm9vZjogQnVmZmVyKTogQnVmZmVyIHtcbiAgY29uc3QgcHJlZml4ID0gJ1xcdTAwMThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbic7XG4gIGlmIChwcm9vZi50b1N0cmluZygpLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgIHByb29mID0gcHJvb2Yuc2xpY2UoQnVmZmVyLmZyb20ocHJlZml4KS5sZW5ndGgpO1xuICAgIHV0eG9saWIuYnVmZmVydXRpbHMudmFydWludC5kZWNvZGUocHJvb2YsIDApO1xuICAgIC8vIERldGVybWluZXMgaG93IG1hbnkgYnl0ZXMgd2VyZSBjb25zdW1lZCBkdXJpbmcgb3VyIGxhc3QgdmFydWludC5kZWNvZGUoQnVmZmVyLCBvZmZzZXQpXG4gICAgLy8gU28gaWYgdmFydWludC5kZWNvZGUoMHhmZCkgdGhlbiB2YXJ1aW50LmRlY29kZS5ieXRlcyA9IDNcbiAgICAvLyB2YXJ1aW50LmRlY29kZSgweGZlKSB0aGVuIHZhcnVpbnQuZGVjb2RlLmJ5dGVzID0gNSwgZXRjLlxuICAgIGNvbnN0IHZhcmludEJ5dGVzTGVuZ3RoID0gdXR4b2xpYi5idWZmZXJ1dGlscy52YXJ1aW50LmRlY29kZS5ieXRlcztcblxuICAgIHByb29mLnNsaWNlKHZhcmludEJ5dGVzTGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gcHJvb2Y7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/utxo-core",
3
- "version": "1.8.1-beta.79",
3
+ "version": "1.8.1-beta.80",
4
4
  "description": "BitGo UTXO Core types",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -51,8 +51,8 @@
51
51
  ]
52
52
  },
53
53
  "dependencies": {
54
- "@bitgo-beta/unspents": "0.13.2-beta.962",
55
- "@bitgo-beta/utxo-lib": "8.0.3-beta.963",
54
+ "@bitgo-beta/unspents": "0.13.2-beta.963",
55
+ "@bitgo-beta/utxo-lib": "8.0.3-beta.964",
56
56
  "@bitgo/wasm-miniscript": "2.0.0-beta.7",
57
57
  "bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4",
58
58
  "bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
@@ -61,5 +61,5 @@
61
61
  "devDependencies": {
62
62
  "@types/lodash": "^4.14.151"
63
63
  },
64
- "gitHead": "ff9739c532693ba465e24e285cc6402ec3f76233"
64
+ "gitHead": "3a1744b2d1c5200b7279b491078962c7ad31f532"
65
65
  }