@bitgo-beta/utxo-core 1.0.1-alpha.69 → 1.0.1-alpha.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/bip32utils.d.ts +2 -2
- package/dist/src/bip32utils.d.ts.map +1 -1
- package/dist/src/bip32utils.js +3 -4
- package/dist/src/paygo/parsePayGoAttestation.d.ts +1 -1
- package/dist/src/paygo/parsePayGoAttestation.d.ts.map +1 -1
- package/dist/src/paygo/parsePayGoAttestation.js +5 -6
- package/dist/src/paygo/psbt/payGoAddressProof.d.ts +2 -1
- package/dist/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -1
- package/dist/src/paygo/psbt/payGoAddressProof.js +5 -3
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -1
- package/dist/src/testutil/generatePayGoAttestationProof.utils.js +2 -10
- package/package.json +5 -9
package/dist/src/bip32utils.d.ts
CHANGED
|
@@ -3,14 +3,14 @@ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
|
|
|
3
3
|
* bip32-aware wrapper around bitcoin-message package
|
|
4
4
|
* @see {bitcoinMessage.sign}
|
|
5
5
|
*/
|
|
6
|
-
export declare function signMessage(message: string, privateKey: BIP32Interface | Buffer, network: {
|
|
6
|
+
export declare function signMessage(message: string | Buffer, privateKey: BIP32Interface | Buffer, network: {
|
|
7
7
|
messagePrefix: string;
|
|
8
8
|
}): Buffer;
|
|
9
9
|
/**
|
|
10
10
|
* bip32-aware wrapper around bitcoin-message package
|
|
11
11
|
* @see {bitcoinMessage.verify}
|
|
12
12
|
*/
|
|
13
|
-
export declare function verifyMessage(message: string, publicKey: BIP32Interface | Buffer, signature: Buffer, network: {
|
|
13
|
+
export declare function verifyMessage(message: string | Buffer, publicKey: BIP32Interface | Buffer, signature: Buffer, network: {
|
|
14
14
|
messagePrefix: string;
|
|
15
15
|
}): boolean;
|
|
16
16
|
//# sourceMappingURL=bip32utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bip32utils.d.ts","sourceRoot":"","sources":["../../src/bip32utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bip32utils.d.ts","sourceRoot":"","sources":["../../src/bip32utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,UAAU,EAAE,cAAc,GAAG,MAAM,EACnC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,cAAc,GAAG,MAAM,EAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAcT"}
|
package/dist/src/bip32utils.js
CHANGED
|
@@ -36,7 +36,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.signMessage = signMessage;
|
|
37
37
|
exports.verifyMessage = verifyMessage;
|
|
38
38
|
const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
|
|
39
|
-
const _ = __importStar(require("lodash"));
|
|
40
39
|
const bitcoinMessage = __importStar(require("bitcoinjs-message"));
|
|
41
40
|
/**
|
|
42
41
|
* bip32-aware wrapper around bitcoin-message package
|
|
@@ -49,7 +48,7 @@ function signMessage(message, privateKey, network) {
|
|
|
49
48
|
throw new Error(`must provide privateKey`);
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
|
-
if (
|
|
51
|
+
if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
|
|
53
52
|
throw new Error(`invalid argument 'network'`);
|
|
54
53
|
}
|
|
55
54
|
const compressed = true;
|
|
@@ -63,10 +62,10 @@ function verifyMessage(message, publicKey, signature, network) {
|
|
|
63
62
|
if (!Buffer.isBuffer(publicKey)) {
|
|
64
63
|
publicKey = publicKey.publicKey;
|
|
65
64
|
}
|
|
66
|
-
if (
|
|
65
|
+
if (network === null || typeof network !== 'object' || typeof network.messagePrefix !== 'string') {
|
|
67
66
|
throw new Error(`invalid argument 'network'`);
|
|
68
67
|
}
|
|
69
68
|
const address = utxolib.address.toBase58Check(utxolib.crypto.hash160(publicKey), utxolib.networks.bitcoin.pubKeyHash, utxolib.networks.bitcoin);
|
|
70
69
|
return bitcoinMessage.verify(message, address, signature, network.messagePrefix);
|
|
71
70
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJ1dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaXAzMnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT0Esa0NBZ0JDO0FBTUQsc0NBbUJDO0FBaERELDhEQUFnRDtBQUNoRCxrRUFBb0Q7QUFFcEQ7OztHQUdHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixPQUF3QixFQUN4QixVQUFtQyxFQUNuQyxPQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ2pDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBb0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxhQUFhLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakcsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDeEIsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixPQUF3QixFQUN4QixTQUFrQyxFQUNsQyxTQUFpQixFQUNqQixPQUFrQztJQUVsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ2hDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqRyxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUMzQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDakMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUNuQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FDekIsQ0FBQztJQUNGLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgYml0Y29pbk1lc3NhZ2UgZnJvbSAnYml0Y29pbmpzLW1lc3NhZ2UnO1xuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG4vKipcbiAqIGJpcDMyLWF3YXJlIHdyYXBwZXIgYXJvdW5kIGJpdGNvaW4tbWVzc2FnZSBwYWNrYWdlXG4gKiBAc2VlIHtiaXRjb2luTWVzc2FnZS5zaWdufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2lnbk1lc3NhZ2UoXG4gIG1lc3NhZ2U6IHN0cmluZyB8IEJ1ZmZlcixcbiAgcHJpdmF0ZUtleTogQklQMzJJbnRlcmZhY2UgfCBCdWZmZXIsXG4gIG5ldHdvcms6IHsgbWVzc2FnZVByZWZpeDogc3RyaW5nIH1cbik6IEJ1ZmZlciB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXZhdGVLZXkpKSB7XG4gICAgcHJpdmF0ZUtleSA9IHByaXZhdGVLZXkucHJpdmF0ZUtleSBhcyBCdWZmZXI7XG4gICAgaWYgKCFwcml2YXRlS2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG11c3QgcHJvdmlkZSBwcml2YXRlS2V5YCk7XG4gICAgfVxuICB9XG4gIGlmIChuZXR3b3JrID09PSBudWxsIHx8IHR5cGVvZiBuZXR3b3JrICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV0d29yay5tZXNzYWdlUHJlZml4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAnbmV0d29yaydgKTtcbiAgfVxuICBjb25zdCBjb21wcmVzc2VkID0gdHJ1ZTtcbiAgcmV0dXJuIGJpdGNvaW5NZXNzYWdlLnNpZ24obWVzc2FnZSwgcHJpdmF0ZUtleSwgY29tcHJlc3NlZCwgbmV0d29yay5tZXNzYWdlUHJlZml4KTtcbn1cblxuLyoqXG4gKiBiaXAzMi1hd2FyZSB3cmFwcGVyIGFyb3VuZCBiaXRjb2luLW1lc3NhZ2UgcGFja2FnZVxuICogQHNlZSB7Yml0Y29pbk1lc3NhZ2UudmVyaWZ5fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZShcbiAgbWVzc2FnZTogc3RyaW5nIHwgQnVmZmVyLFxuICBwdWJsaWNLZXk6IEJJUDMySW50ZXJmYWNlIHwgQnVmZmVyLFxuICBzaWduYXR1cmU6IEJ1ZmZlcixcbiAgbmV0d29yazogeyBtZXNzYWdlUHJlZml4OiBzdHJpbmcgfVxuKTogYm9vbGVhbiB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHB1YmxpY0tleSkpIHtcbiAgICBwdWJsaWNLZXkgPSBwdWJsaWNLZXkucHVibGljS2V5O1xuICB9XG4gIGlmIChuZXR3b3JrID09PSBudWxsIHx8IHR5cGVvZiBuZXR3b3JrICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV0d29yay5tZXNzYWdlUHJlZml4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBhcmd1bWVudCAnbmV0d29yaydgKTtcbiAgfVxuXG4gIGNvbnN0IGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MudG9CYXNlNThDaGVjayhcbiAgICB1dHhvbGliLmNyeXB0by5oYXNoMTYwKHB1YmxpY0tleSksXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luLnB1YktleUhhc2gsXG4gICAgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luXG4gICk7XG4gIHJldHVybiBiaXRjb2luTWVzc2FnZS52ZXJpZnkobWVzc2FnZSwgYWRkcmVzcywgc2lnbmF0dXJlLCBuZXR3b3JrLm1lc3NhZ2VQcmVmaXgpO1xufVxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This function takes in the attestation proof of a PayGo address of the from
|
|
3
|
-
*
|
|
3
|
+
* <varint_length><ENTROPY><ADDRESS><UUID> and returns
|
|
4
4
|
* the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
|
|
5
5
|
* so if not given an address proof length we can still extract the address from the proof.
|
|
6
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":"AAaA;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAuBA"}
|
|
@@ -7,8 +7,7 @@ exports.parsePayGoAttestation = parsePayGoAttestation;
|
|
|
7
7
|
const assert_1 = __importDefault(require("assert"));
|
|
8
8
|
const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
9
9
|
// The signed address will always have the following structure:
|
|
10
|
-
//
|
|
11
|
-
const PrefixLength = Buffer.from([0x18]).length + Buffer.from('Bitcoin Signed Message:\n').length;
|
|
10
|
+
// <varint_length><ENTROPY><ADDRESS><UUID>
|
|
12
11
|
// UUID has the structure 00000000-0000-0000-0000-000000000000, and after
|
|
13
12
|
// we Buffer.from and get it's length its 36.
|
|
14
13
|
const UuidBufferLength = 36;
|
|
@@ -16,7 +15,7 @@ const UuidBufferLength = 36;
|
|
|
16
15
|
const EntropyLen = 64;
|
|
17
16
|
/**
|
|
18
17
|
* This function takes in the attestation proof of a PayGo address of the from
|
|
19
|
-
*
|
|
18
|
+
* <varint_length><ENTROPY><ADDRESS><UUID> and returns
|
|
20
19
|
* the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
|
|
21
20
|
* so if not given an address proof length we can still extract the address from the proof.
|
|
22
21
|
*
|
|
@@ -24,12 +23,12 @@ const EntropyLen = 64;
|
|
|
24
23
|
* @param adressProofLength
|
|
25
24
|
*/
|
|
26
25
|
function parsePayGoAttestation(message) {
|
|
27
|
-
if (message.length <=
|
|
26
|
+
if (message.length <= EntropyLen + UuidBufferLength) {
|
|
28
27
|
throw new Error('PayGo attestation proof is too short to contain a valid address');
|
|
29
28
|
}
|
|
30
29
|
// This generates the first part before the varint length so that we can
|
|
31
30
|
// determine how many bytes this is and iterate through the Buffer.
|
|
32
|
-
let offset =
|
|
31
|
+
let offset = 0;
|
|
33
32
|
// we decode the varint of the message which is uint32
|
|
34
33
|
// https://en.bitcoin.it/wiki/Protocol_documentation
|
|
35
34
|
const varInt = utxo_lib_1.bufferutils.varuint.decode(message, offset);
|
|
@@ -43,4 +42,4 @@ function parsePayGoAttestation(message) {
|
|
|
43
42
|
// we break up the original message and retuen the entropy, address and uuid in their buffers
|
|
44
43
|
return { entropy, address, uuid };
|
|
45
44
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BheWdvL3BhcnNlUGF5R29BdHRlc3RhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXNCQSxzREEyQkM7QUFqREQsb0RBQTRCO0FBRTVCLG1EQUFtRDtBQUVuRCwrREFBK0Q7QUFDL0QsMENBQTBDO0FBRTFDLHlFQUF5RTtBQUN6RSw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLE9BQWU7SUFLbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFZixzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELE1BQU0sTUFBTSxHQUFHLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsTUFBTSxJQUFJLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFFM0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQzlELE1BQU0sSUFBSSxVQUFVLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWpFLDZGQUE2RjtJQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBidWZmZXJ1dGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLy8gVGhlIHNpZ25lZCBhZGRyZXNzIHdpbGwgYWx3YXlzIGhhdmUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4vLyA8dmFyaW50X2xlbmd0aD48RU5UUk9QWT48QUREUkVTUz48VVVJRD5cblxuLy8gVVVJRCBoYXMgdGhlIHN0cnVjdHVyZSAwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAsIGFuZCBhZnRlclxuLy8gd2UgQnVmZmVyLmZyb20gYW5kIGdldCBpdCdzIGxlbmd0aCBpdHMgMzYuXG5jb25zdCBVdWlkQnVmZmVyTGVuZ3RoID0gMzY7XG4vLyBUaGUgZW50cm9weSB3aWxsIGFsd2F5cyBiZSA2NCBieXRlc1xuY29uc3QgRW50cm9weUxlbiA9IDY0O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW4gdGhlIGF0dGVzdGF0aW9uIHByb29mIG9mIGEgUGF5R28gYWRkcmVzcyBvZiB0aGUgZnJvbVxuICogPHZhcmludF9sZW5ndGg+PEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+IGFuZCByZXR1cm5zXG4gKiB0aGUgYWRkcmVzcyBnaXZlbiBpdHMgbGVuZ3RoLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIEVOVFJPUFkgaXMgNjQgYnl0ZXMgaW4gdGhlIEJ1ZmZlclxuICogc28gaWYgbm90IGdpdmVuIGFuIGFkZHJlc3MgcHJvb2YgbGVuZ3RoIHdlIGNhbiBzdGlsbCBleHRyYWN0IHRoZSBhZGRyZXNzIGZyb20gdGhlIHByb29mLlxuICpcbiAqIEBwYXJhbSBtZXNzYWdlXG4gKiBAcGFyYW0gYWRyZXNzUHJvb2ZMZW5ndGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGF5R29BdHRlc3RhdGlvbihtZXNzYWdlOiBCdWZmZXIpOiB7XG4gIGVudHJvcHk6IEJ1ZmZlcjtcbiAgYWRkcmVzczogQnVmZmVyO1xuICB1dWlkOiBCdWZmZXI7XG59IHtcbiAgaWYgKG1lc3NhZ2UubGVuZ3RoIDw9IEVudHJvcHlMZW4gKyBVdWlkQnVmZmVyTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQYXlHbyBhdHRlc3RhdGlvbiBwcm9vZiBpcyB0b28gc2hvcnQgdG8gY29udGFpbiBhIHZhbGlkIGFkZHJlc3MnKTtcbiAgfVxuXG4gIC8vIFRoaXMgZ2VuZXJhdGVzIHRoZSBmaXJzdCBwYXJ0IGJlZm9yZSB0aGUgdmFyaW50IGxlbmd0aCBzbyB0aGF0IHdlIGNhblxuICAvLyBkZXRlcm1pbmUgaG93IG1hbnkgYnl0ZXMgdGhpcyBpcyBhbmQgaXRlcmF0ZSB0aHJvdWdoIHRoZSBCdWZmZXIuXG4gIGxldCBvZmZzZXQgPSAwO1xuXG4gIC8vIHdlIGRlY29kZSB0aGUgdmFyaW50IG9mIHRoZSBtZXNzYWdlIHdoaWNoIGlzIHVpbnQzMlxuICAvLyBodHRwczovL2VuLmJpdGNvaW4uaXQvd2lraS9Qcm90b2NvbF9kb2N1bWVudGF0aW9uXG4gIGNvbnN0IHZhckludCA9IGJ1ZmZlcnV0aWxzLnZhcnVpbnQuZGVjb2RlKG1lc3NhZ2UsIG9mZnNldCk7XG4gIGFzc2VydCh2YXJJbnQpO1xuICBvZmZzZXQgKz0gYnVmZmVydXRpbHMudmFydWludC5kZWNvZGUuYnl0ZXM7XG5cbiAgY29uc3QgZW50cm9weSA9IG1lc3NhZ2Uuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBFbnRyb3B5TGVuKTtcbiAgb2Zmc2V0ICs9IEVudHJvcHlMZW47XG4gIGNvbnN0IGFkZHJlc3MgPSBtZXNzYWdlLnN1YmFycmF5KG9mZnNldCwgbWVzc2FnZS5sZW5ndGggLSBVdWlkQnVmZmVyTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IGFkZHJlc3MubGVuZ3RoO1xuICBjb25zdCB1dWlkID0gbWVzc2FnZS5zdWJhcnJheShtZXNzYWdlLmxlbmd0aCAtIFV1aWRCdWZmZXJMZW5ndGgpO1xuXG4gIC8vIHdlIGJyZWFrIHVwIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFuZCByZXR1ZW4gdGhlIGVudHJvcHksIGFkZHJlc3MgYW5kIHV1aWQgaW4gdGhlaXIgYnVmZmVyc1xuICByZXR1cm4geyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH07XG59XG4iXX0=
|
|
@@ -6,13 +6,14 @@ import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
|
6
6
|
* @param psbt - PSBT that we need to encode our paygo address into
|
|
7
7
|
* @param outputIndex - the index of the address in our output
|
|
8
8
|
* @param sig - the signature that we want to encode
|
|
9
|
+
* @param entropy - the arbitrary entropy bytes from our vasp proof
|
|
9
10
|
*/
|
|
10
11
|
export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
|
|
11
12
|
/** Verify the paygo address signature is valid using verification pub key.
|
|
12
13
|
*
|
|
13
14
|
* @param psbt - PSBT we want to verify that the paygo address is in
|
|
14
15
|
* @param outputIndex - we have the output index that address is in
|
|
15
|
-
* @param
|
|
16
|
+
* @param verificationPubkey - the pubkey signed by the HSM to verify our message
|
|
16
17
|
* @returns
|
|
17
18
|
*/
|
|
18
19
|
export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
|
|
@@ -1 +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
|
|
1
|
+
{"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;GAQG;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,CAiCN;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"}
|
|
@@ -49,6 +49,7 @@ const Errors_1 = require("./Errors");
|
|
|
49
49
|
* @param psbt - PSBT that we need to encode our paygo address into
|
|
50
50
|
* @param outputIndex - the index of the address in our output
|
|
51
51
|
* @param sig - the signature that we want to encode
|
|
52
|
+
* @param entropy - the arbitrary entropy bytes from our vasp proof
|
|
52
53
|
*/
|
|
53
54
|
function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
|
|
54
55
|
utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
|
|
@@ -64,7 +65,7 @@ function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
|
|
|
64
65
|
*
|
|
65
66
|
* @param psbt - PSBT we want to verify that the paygo address is in
|
|
66
67
|
* @param outputIndex - we have the output index that address is in
|
|
67
|
-
* @param
|
|
68
|
+
* @param verificationPubkey - the pubkey signed by the HSM to verify our message
|
|
68
69
|
* @returns
|
|
69
70
|
*/
|
|
70
71
|
function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
|
|
@@ -92,7 +93,8 @@ function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
|
|
|
92
93
|
const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
|
|
93
94
|
// We construct our message <ENTROPY><ADDRESS><UUID>
|
|
94
95
|
const message = (0, attestation_1.createPayGoAttestationBuffer)(addressFromOutput, entropy, psbt.network);
|
|
95
|
-
|
|
96
|
+
// bip32utils.verifyMessage now takes in message as a Buffer
|
|
97
|
+
if (!(0, bip32utils_1.verifyMessage)(message, verificationPubkey, signature, utxolib.networks.bitcoin)) {
|
|
96
98
|
throw new Errors_1.ErrorPayGoAddressProofFailedVerification();
|
|
97
99
|
}
|
|
98
100
|
}
|
|
@@ -119,4 +121,4 @@ function getPayGoAddressProofOutputIndex(psbt) {
|
|
|
119
121
|
function psbtOutputIncludesPaygoAddressProof(psbt) {
|
|
120
122
|
return getPayGoAddressProofOutputIndex(psbt) !== undefined;
|
|
121
123
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQSxvREFjQztBQVNELDBEQXFDQztBQVNELDBFQWVDO0FBRUQsa0ZBRUM7QUEvR0QsOERBQWdEO0FBQ2hELGdEQUFzRDtBQUV0RCxpREFBaUQ7QUFDakQsZ0RBQThEO0FBRTlELHFDQU1rQjtBQUVsQjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLG9CQUFvQixDQUNsQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixHQUFXLEVBQ1gsT0FBZTtJQUVmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7UUFDckYsR0FBRyxFQUFFO1lBQ0gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1lBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtZQUM1RSxPQUFPLEVBQUUsT0FBTztTQUNqQjtRQUNELEtBQUssRUFBRSxHQUFHO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixrQkFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsSUFBQSxzQkFBYyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLENBQUMsV0FBVyxFQUFFO1FBQ3BGLFVBQVUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQjtRQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQywrQkFBK0I7S0FDN0UsQ0FBQyxDQUFDO0lBRUgsaUNBQWlDO0lBQ2pDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksMEJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztTQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksZ0NBQXVCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7SUFFdEMsK0NBQStDO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDakMsSUFBSSxXQUFXLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxvQ0FBMkIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV4RixvREFBb0Q7SUFDcEQsTUFBTSxPQUFPLEdBQUcsSUFBQSwwQ0FBNEIsRUFBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXZGLDREQUE0RDtJQUM1RCxJQUFJLENBQUMsSUFBQSwwQkFBYSxFQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3JGLE1BQU0sSUFBSSxpREFBd0MsRUFBRSxDQUFDO0lBQ3ZELENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsK0JBQStCLENBQUMsSUFBNEI7SUFDMUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLEVBQUU7WUFDL0UsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCO1lBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLCtCQUErQjtTQUM3RSxDQUFDLENBQUM7UUFFSCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksMkNBQWtDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE9BQU8sa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQWdCLG1DQUFtQyxDQUFDLElBQTRCO0lBQzlFLE9BQU8sK0JBQStCLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDO0FBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYmlwMzJ1dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vYXR0ZXN0YXRpb24nO1xuXG5pbXBvcnQge1xuICBFcnJvck11bHRpcGxlUGF5R29Qcm9vZixcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleCxcbiAgRXJyb3JOb1BheUdvUHJvb2YsXG4gIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyxcbiAgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbixcbn0gZnJvbSAnLi9FcnJvcnMnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBlbnRyb3B5IGFuZCBzaWduYXR1cmUgaW50byB0aGUgUFNCVCBvdXRwdXQgdW5rbm93biBrZXkgdmFscy5cbiAqIFdlIHN0b3JlIHRoZSBlbnRyb3B5IHNvIHRoYXQgd2UgcmVjb25zdHJ1Y3QgdGhlIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gKiB0byBsYXRlciB2ZXJpZnkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHRoYXQgd2UgbmVlZCB0byBlbmNvZGUgb3VyIHBheWdvIGFkZHJlc3MgaW50b1xuICogQHBhcmFtIG91dHB1dEluZGV4IC0gdGhlIGluZGV4IG9mIHRoZSBhZGRyZXNzIGluIG91ciBvdXRwdXRcbiAqIEBwYXJhbSBzaWcgLSB0aGUgc2lnbmF0dXJlIHRoYXQgd2Ugd2FudCB0byBlbmNvZGVcbiAqIEBwYXJhbSBlbnRyb3B5IC0gdGhlIGFyYml0cmFyeSBlbnRyb3B5IGJ5dGVzIGZyb20gb3VyIHZhc3AgcHJvb2ZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBheUdvQWRkcmVzc1Byb29mKFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBzaWc6IEJ1ZmZlcixcbiAgZW50cm9weTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgdXR4b2xpYi5iaXRnby5hZGRQcm9wcmlldGFyeUtleVZhbHVlc0Zyb21Vbmtub3duS2V5VmFsdWVzKHBzYnQsICdvdXRwdXQnLCBvdXRwdXRJbmRleCwge1xuICAgIGtleToge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgICAga2V5ZGF0YTogZW50cm9weSxcbiAgICB9LFxuICAgIHZhbHVlOiBzaWcsXG4gIH0pO1xufVxuXG4vKiogVmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSBpcyB2YWxpZCB1c2luZyB2ZXJpZmljYXRpb24gcHViIGtleS5cbiAqXG4gKiBAcGFyYW0gcHNidCAtIFBTQlQgd2Ugd2FudCB0byB2ZXJpZnkgdGhhdCB0aGUgcGF5Z28gYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIG91dHB1dEluZGV4IC0gd2UgaGF2ZSB0aGUgb3V0cHV0IGluZGV4IHRoYXQgYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIHZlcmlmaWNhdGlvblB1YmtleSAtIHRoZSBwdWJrZXkgc2lnbmVkIGJ5IHRoZSBIU00gdG8gdmVyaWZ5IG91ciBtZXNzYWdlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIC8vIGJpcDMydXRpbHMudmVyaWZ5TWVzc2FnZSBub3cgdGFrZXMgaW4gbWVzc2FnZSBhcyBhIEJ1ZmZlclxuICBpZiAoIXZlcmlmeU1lc3NhZ2UobWVzc2FnZSwgdmVyaWZpY2F0aW9uUHVia2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbigpO1xuICB9XG59XG5cbi8qKiBHZXQgdGhlIG91dHB1dCBpbmRleCBvZiB0aGUgcGF5Z28gb3V0cHV0IGlmIHRoZXJlIGlzIG9uZS4gSXQgZG9lcyB0aGlzIGJ5XG4gKiBjaGVja2luZyBpZiB0aGUgbWV0YWRhdGEgaXMgb24gb25lIG9mIHRoZSBvdXRwdXRzIG9mIHRoZSBQU0JULiBJZiB0aGVyZSBpc1xuICogbm8gcGF5Z28gb3V0cHV0LCByZXR1cm4gdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEByZXR1cm5zIG51bWJlciAtIHRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlcyA9IHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKG91dHB1dCwgb3V0cHV0SW5kZXgpID0+IHtcbiAgICBjb25zdCBwcm9wcmlldGFyeUtleVZhbHMgPSB1dHhvbGliLmJpdGdvLmdldFBzYnRPdXRwdXRQcm9wcmlldGFyeUtleVZhbHMob3V0cHV0LCB7XG4gICAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICAgIHN1YnR5cGU6IHV0eG9saWIuYml0Z28uUHJvcHJpZXRhcnlLZXlTdWJ0eXBlLlBBWUdPX0FERFJFU1NfQVRURVNUQVRJT05fUFJPT0YsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4KG91dHB1dEluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA9PT0gMCA/IFtdIDogW291dHB1dEluZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generatePayGoAttestationProof.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/generatePayGoAttestationProof.utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"generatePayGoAttestationProof.utils.d.ts","sourceRoot":"","sources":["../../../src/testutil/generatePayGoAttestationProof.utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoBnF"}
|
|
@@ -17,10 +17,6 @@ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
|
|
|
17
17
|
* @returns
|
|
18
18
|
*/
|
|
19
19
|
function generatePayGoAttestationProof(uuid, address) {
|
|
20
|
-
// <0x18Bitcoin Signed Message:\n
|
|
21
|
-
const prefixByte = Buffer.from([0x18]);
|
|
22
|
-
const prefixMessage = Buffer.from('Bitcoin Signed Message:\n');
|
|
23
|
-
const prefixBuffer = Buffer.concat([prefixByte, prefixMessage]);
|
|
24
20
|
// <ENTROPY>
|
|
25
21
|
const entropyLength = 64;
|
|
26
22
|
const entropy = crypto_1.default.randomBytes(entropyLength);
|
|
@@ -33,11 +29,7 @@ function generatePayGoAttestationProof(uuid, address) {
|
|
|
33
29
|
const msgLength = entropyLength + addressBufferLength + uuidBufferLength;
|
|
34
30
|
const msgLengthBuffer = utxo_lib_1.bufferutils.varuint.encode(msgLength);
|
|
35
31
|
// <0x18Bitcoin Signed Message:\n<LENGTH><ENTROPY><ADDRESS><UUID>
|
|
36
|
-
const proofMessage = Buffer.concat([
|
|
37
|
-
// we sign this with the priv key
|
|
38
|
-
// don't know what sign function to call. Since this is just a mirrored function don't know if we need
|
|
39
|
-
// to include this part.
|
|
40
|
-
// const signedMsg = sign(attestationPrvKey, proofMessage);
|
|
32
|
+
const proofMessage = Buffer.concat([msgLengthBuffer, entropy, address, uuidBuffer]);
|
|
41
33
|
return proofMessage;
|
|
42
34
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFhQSxzRUFvQkM7QUFqQ0Qsb0RBQTRCO0FBRTVCLG1EQUFtRDtBQUNuRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUN6RSxZQUFZO0lBQ1osTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLGdCQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRWxELFNBQVM7SUFDVCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztJQUUzQyxZQUFZO0lBQ1osTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRTNDLGtCQUFrQjtJQUNsQixNQUFNLFNBQVMsR0FBRyxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7SUFDekUsTUFBTSxlQUFlLEdBQUcsc0JBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlELGlFQUFpRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVwRixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBidWZmZXJ1dGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbi8qKiBXZSBoYXZlIGEgbWlycm9yZWQgZnVuY3Rpb24gc2ltaWxhciB0byBvdXIgaHNtIHRoYXQgZ2VuZXJhdGVzIG91ciBCaXRjb2luIHNpZ25lZFxuICogbWVzc2FnZSBzbyB0aGF0IHdlIGNhbiB1c2UgZm9yIHRlc3RpbmcuIFRoaXMgY3JlYXRlcyBhIHJhbmRvbSBlbnRyb3B5IGFzIHdlbGwgdXNpbmdcbiAqIHRoZSBuaWxVVUlEIHN0cnVjdHVyZSB0byBjb25zdHJ1Y3Qgb3VyIHV1aWQgYnVmZmVyIGFuZCBnaXZlbiBvdXIgYWRkcmVzcyB3ZSBjYW5cbiAqIGRpcmVjdGx5IGVuY29kZSBpdCBpbnRvIG91ciBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBhdHRlc3RhdGlvblBydktleVxuICogQHBhcmFtIHV1aWRcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXlHb0F0dGVzdGF0aW9uUHJvb2YodXVpZDogc3RyaW5nLCBhZGRyZXNzOiBCdWZmZXIpOiBCdWZmZXIge1xuICAvLyA8RU5UUk9QWT5cbiAgY29uc3QgZW50cm9weUxlbmd0aCA9IDY0O1xuICBjb25zdCBlbnRyb3B5ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKGVudHJvcHlMZW5ndGgpO1xuXG4gIC8vIDxVVUlEPlxuICBjb25zdCB1dWlkQnVmZmVyID0gQnVmZmVyLmZyb20odXVpZCk7XG4gIGNvbnN0IHV1aWRCdWZmZXJMZW5ndGggPSB1dWlkQnVmZmVyLmxlbmd0aDtcblxuICAvLyA8QUREUkVTUz5cbiAgY29uc3QgYWRkcmVzc0J1ZmZlckxlbmd0aCA9IGFkZHJlc3MubGVuZ3RoO1xuXG4gIC8vIDxWQVJJTlRfTEVOR1RIPlxuICBjb25zdCBtc2dMZW5ndGggPSBlbnRyb3B5TGVuZ3RoICsgYWRkcmVzc0J1ZmZlckxlbmd0aCArIHV1aWRCdWZmZXJMZW5ndGg7XG4gIGNvbnN0IG1zZ0xlbmd0aEJ1ZmZlciA9IGJ1ZmZlcnV0aWxzLnZhcnVpbnQuZW5jb2RlKG1zZ0xlbmd0aCk7XG5cbiAgLy8gPDB4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbjxMRU5HVEg+PEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IHByb29mTWVzc2FnZSA9IEJ1ZmZlci5jb25jYXQoW21zZ0xlbmd0aEJ1ZmZlciwgZW50cm9weSwgYWRkcmVzcywgdXVpZEJ1ZmZlcl0pO1xuXG4gIHJldHVybiBwcm9vZk1lc3NhZ2U7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/utxo-core",
|
|
3
|
-
"version": "1.0.1-alpha.
|
|
3
|
+
"version": "1.0.1-alpha.70",
|
|
4
4
|
"description": "BitGo UTXO Core types",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -51,15 +51,11 @@
|
|
|
51
51
|
]
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@bitgo-beta/unspents": "0.11.3-alpha.
|
|
55
|
-
"@bitgo-beta/utxo-lib": "4.0.1-alpha.
|
|
54
|
+
"@bitgo-beta/unspents": "0.11.3-alpha.340",
|
|
55
|
+
"@bitgo-beta/utxo-lib": "4.0.1-alpha.340",
|
|
56
56
|
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
|
|
57
57
|
"bip174": "npm:@bitgo-forks/bip174@3.1.0-master.4",
|
|
58
|
-
"bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3"
|
|
59
|
-
"lodash": "^4.17.15"
|
|
58
|
+
"bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3"
|
|
60
59
|
},
|
|
61
|
-
"
|
|
62
|
-
"@types/lodash": "^4.14.151"
|
|
63
|
-
},
|
|
64
|
-
"gitHead": "0496b3b7b46a6bde4e486c2c31c6655139c4e32d"
|
|
60
|
+
"gitHead": "bb2f9bfad7c1038626a425d0b927f1c0555fa7cc"
|
|
65
61
|
}
|