@bitgo-beta/sdk-coin-sol 7.6.4-beta.708 → 7.6.4-beta.709
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/cjs/src/lib/serialization/codecs/v1/message.d.ts +10 -0
- package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -1
- package/dist/cjs/src/lib/serialization/codecs/v1/message.js +129 -1
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
- package/dist/cjs/src/sol.d.ts.map +1 -1
- package/dist/cjs/src/sol.js +22 -2
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
- package/dist/cjs/test/unit/sol.js +77 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts +10 -0
- package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -1
- package/dist/esm/lib/serialization/codecs/v1/message.js +129 -2
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
- package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
- package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
- package/dist/esm/sol.d.ts.map +1 -1
- package/dist/esm/sol.js +22 -2
- package/package.json +7 -7
|
@@ -14,4 +14,14 @@ export declare function encodeV1Message(args: {
|
|
|
14
14
|
compiledInstructions: CompiledInstruction[];
|
|
15
15
|
}): Uint8Array;
|
|
16
16
|
export { encodeConfigMaskAndValues };
|
|
17
|
+
export type V1DecodedMessage = {
|
|
18
|
+
header: V1MessageHeader;
|
|
19
|
+
configMask: number;
|
|
20
|
+
configValues: ConfigValue[];
|
|
21
|
+
blockhash: string;
|
|
22
|
+
staticAccounts: string[];
|
|
23
|
+
compiledInstructions: CompiledInstruction[];
|
|
24
|
+
byteLength: number;
|
|
25
|
+
};
|
|
26
|
+
export declare function decodeV1Message(bytes: Uint8Array): V1DecodedMessage;
|
|
17
27
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/serialization/codecs/v1/message.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,WAAW,EAKZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAuBxE,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yBAAyB,EAAE,MAAM,CAAC;IAClC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,GAAG,UAAU,CA+Bb;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC;AAUrC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAyBF,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,CAwGnE"}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.encodeConfigMaskAndValues = void 0;
|
|
7
7
|
exports.encodeV1Message = encodeV1Message;
|
|
8
|
+
exports.decodeV1Message = decodeV1Message;
|
|
8
9
|
const bs58_1 = __importDefault(require("bs58"));
|
|
9
10
|
const web3_js_1 = require("@solana/web3.js");
|
|
10
11
|
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
@@ -65,4 +66,131 @@ function encodeV1Message(args) {
|
|
|
65
66
|
(0, instruction_1.encodeInstructions)(buf, compiledInstructions);
|
|
66
67
|
return new Uint8Array(buf);
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
70
|
+
const KNOWN_CONFIG_MASK = config_1.PRIORITY_FEE_BITS | config_1.COMPUTE_UNIT_LIMIT_BIT | config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT | config_1.HEAP_SIZE_BIT;
|
|
71
|
+
const MAX_ACCOUNTS = 64;
|
|
72
|
+
const MAX_INSTRUCTIONS = 64;
|
|
73
|
+
const MAX_ACCOUNTS_PER_INSTRUCTION = 255;
|
|
74
|
+
const STATIC_ACCOUNT_BYTES = 32;
|
|
75
|
+
function readU8(b, o) {
|
|
76
|
+
return b[o];
|
|
77
|
+
}
|
|
78
|
+
function readU16LE(b, o) {
|
|
79
|
+
return b[o] | (b[o + 1] << 8);
|
|
80
|
+
}
|
|
81
|
+
function readU32LE(b, o) {
|
|
82
|
+
return (b[o] | (b[o + 1] << 8) | (b[o + 2] << 16) | (b[o + 3] << 24)) >>> 0;
|
|
83
|
+
}
|
|
84
|
+
function readU64LE(b, o) {
|
|
85
|
+
let v = 0n;
|
|
86
|
+
for (let i = 0; i < 8; i++) {
|
|
87
|
+
v |= BigInt(b[o + i]) << BigInt(8 * i);
|
|
88
|
+
}
|
|
89
|
+
return v;
|
|
90
|
+
}
|
|
91
|
+
function ensureAvailable(b, off, size) {
|
|
92
|
+
if (off + size > b.length) {
|
|
93
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: truncated');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function decodeV1Message(bytes) {
|
|
97
|
+
if (!bytes || bytes.length < 42) {
|
|
98
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too short');
|
|
99
|
+
}
|
|
100
|
+
let off = 0;
|
|
101
|
+
if (bytes[off++] !== V1_VERSION_PREFIX) {
|
|
102
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 version prefix: 0x${bytes[0].toString(16)}`);
|
|
103
|
+
}
|
|
104
|
+
const numSignerAccounts = readU8(bytes, off++);
|
|
105
|
+
const numReadonlySignerAccounts = readU8(bytes, off++);
|
|
106
|
+
const numReadonlyNonSignerAccounts = readU8(bytes, off++);
|
|
107
|
+
const configMask = readU32LE(bytes, off);
|
|
108
|
+
off += 4;
|
|
109
|
+
if ((configMask & ~KNOWN_CONFIG_MASK) !== 0) {
|
|
110
|
+
throw new sdk_core_1.BuildTransactionError(`Unknown config mask bits: ${(configMask & ~KNOWN_CONFIG_MASK).toString(2)}`);
|
|
111
|
+
}
|
|
112
|
+
const blockhash = bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES));
|
|
113
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
114
|
+
const numInstructions = readU8(bytes, off++);
|
|
115
|
+
const numStaticAccounts = readU8(bytes, off++);
|
|
116
|
+
if (numStaticAccounts > MAX_ACCOUNTS) {
|
|
117
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many static accounts');
|
|
118
|
+
}
|
|
119
|
+
if (numInstructions > MAX_INSTRUCTIONS) {
|
|
120
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 message: too many instructions');
|
|
121
|
+
}
|
|
122
|
+
if (numReadonlySignerAccounts > numSignerAccounts) {
|
|
123
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 header: readonly signers exceed signers');
|
|
124
|
+
}
|
|
125
|
+
if (numSignerAccounts + numReadonlyNonSignerAccounts > numStaticAccounts) {
|
|
126
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 header: signers + readonly non-signers exceed static accounts');
|
|
127
|
+
}
|
|
128
|
+
const staticAccounts = [];
|
|
129
|
+
for (let i = 0; i < numStaticAccounts; i++) {
|
|
130
|
+
ensureAvailable(bytes, off, STATIC_ACCOUNT_BYTES);
|
|
131
|
+
staticAccounts.push(bs58_1.default.encode(bytes.slice(off, off + STATIC_ACCOUNT_BYTES)));
|
|
132
|
+
off += STATIC_ACCOUNT_BYTES;
|
|
133
|
+
}
|
|
134
|
+
const configValues = [];
|
|
135
|
+
if (configMask & config_1.PRIORITY_FEE_BITS) {
|
|
136
|
+
ensureAvailable(bytes, off, 8);
|
|
137
|
+
configValues.push({ kind: 'u64', value: readU64LE(bytes, off) });
|
|
138
|
+
off += 8;
|
|
139
|
+
}
|
|
140
|
+
if (configMask & config_1.COMPUTE_UNIT_LIMIT_BIT) {
|
|
141
|
+
ensureAvailable(bytes, off, 4);
|
|
142
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
143
|
+
off += 4;
|
|
144
|
+
}
|
|
145
|
+
if (configMask & config_1.LOADED_ACCOUNTS_DATA_SIZE_LIMIT_BIT) {
|
|
146
|
+
ensureAvailable(bytes, off, 4);
|
|
147
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
148
|
+
off += 4;
|
|
149
|
+
}
|
|
150
|
+
if (configMask & config_1.HEAP_SIZE_BIT) {
|
|
151
|
+
ensureAvailable(bytes, off, 4);
|
|
152
|
+
configValues.push({ kind: 'u32', value: readU32LE(bytes, off) });
|
|
153
|
+
off += 4;
|
|
154
|
+
}
|
|
155
|
+
const headers = [];
|
|
156
|
+
for (let i = 0; i < numInstructions; i++) {
|
|
157
|
+
ensureAvailable(bytes, off, 4);
|
|
158
|
+
const programAddressIndex = readU8(bytes, off++);
|
|
159
|
+
const accountCount = readU8(bytes, off++);
|
|
160
|
+
const dataLength = readU16LE(bytes, off);
|
|
161
|
+
off += 2;
|
|
162
|
+
if (programAddressIndex >= numStaticAccounts) {
|
|
163
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: program index out of range');
|
|
164
|
+
}
|
|
165
|
+
if (accountCount > MAX_ACCOUNTS_PER_INSTRUCTION) {
|
|
166
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: too many accounts');
|
|
167
|
+
}
|
|
168
|
+
headers.push({ programAddressIndex, accountCount, dataLength });
|
|
169
|
+
}
|
|
170
|
+
const compiledInstructions = [];
|
|
171
|
+
for (const h of headers) {
|
|
172
|
+
ensureAvailable(bytes, off, h.accountCount);
|
|
173
|
+
const accountIndices = [];
|
|
174
|
+
for (let i = 0; i < h.accountCount; i++) {
|
|
175
|
+
const idx = readU8(bytes, off++);
|
|
176
|
+
if (idx >= numStaticAccounts) {
|
|
177
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 instruction: account index out of range');
|
|
178
|
+
}
|
|
179
|
+
accountIndices.push(idx);
|
|
180
|
+
}
|
|
181
|
+
ensureAvailable(bytes, off, h.dataLength);
|
|
182
|
+
const data = bytes.slice(off, off + h.dataLength);
|
|
183
|
+
off += h.dataLength;
|
|
184
|
+
compiledInstructions.push({ programAddressIndex: h.programAddressIndex, accountIndices, data });
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
header: { numSignerAccounts, numReadonlySignerAccounts, numReadonlyNonSignerAccounts },
|
|
188
|
+
configMask,
|
|
189
|
+
configValues,
|
|
190
|
+
blockhash,
|
|
191
|
+
staticAccounts,
|
|
192
|
+
compiledInstructions,
|
|
193
|
+
byteLength: off,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VyaWFsaXphdGlvbi9jb2RlY3MvdjEvbWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF3Q0EsMENBc0NDO0FBNkNELDBDQXdHQztBQW5PRCxnREFBd0I7QUFDeEIsNkNBQTRDO0FBQzVDLG1EQUE2RDtBQUM3RCxxQ0FPa0I7QUFzRVQsMEdBNUVQLGtDQUF5QixPQTRFTztBQXJFbEMsK0NBQXdFO0FBRXhFOzs7Ozs7O0dBT0c7QUFFSCxTQUFTLE1BQU0sQ0FBQyxHQUFhLEVBQUUsQ0FBUztJQUN0QyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsR0FBYSxFQUFFLENBQVM7SUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUNELFNBQVMsU0FBUyxDQUFDLEdBQWEsRUFBRSxDQUFTO0lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQVFELFNBQWdCLGVBQWUsQ0FBQyxJQU8vQjtJQUNDLE1BQU0sRUFBRSxNQUFNLEVBQUUs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R0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCLEVBQUUsNEJBQTRCLEVBQUU7UUFDdEYsVUFBVTtRQUNWLFlBQVk7UUFDWixTQUFTO1FBQ1QsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixVQUFVLEVBQUUsR0FBRztLQUNoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHsgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIGVuY29kZUNvbmZpZ01hc2tBbmRWYWx1ZXMsXG4gIENvbmZpZ1ZhbHVlLFxuICBQUklPUklUWV9GRUVfQklUUyxcbiAgQ09NUFVURV9VTklUX0xJTUlUX0JJVCxcbiAgTE9BREVEX0FDQ09VTlRTX0RBVEFfU0laRV9MSU1JVF9CSVQsXG4gIEhFQVBfU0laRV9CSVQsXG59IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IGVuY29kZUluc3RydWN0aW9ucywgQ29tcGlsZWRJbnN0cnVjdGlvbiB9IGZyb20gJy4vaW5zdHJ1Y3Rpb24nO1xuXG4vKipcbiAqIHYxIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb24gbWVzc2FnZSB3aXJlIGVuY29kZXIuXG4gKlxuICogTGF5b3V0OiBbdmVyc2lvbjogMHg4MV1baGVhZGVyOiAzIHggdThdW2NvbmZpZ01hc2s6IHUzMiBMRV1bYmxvY2toYXNoOiAzMl1cbiAqICAgW251bUluc3RydWN0aW9uczogdThdW251bVN0YXRpY0FjY291bnRzOiB1OF1cbiAqICAgW3N0YXRpY0FjY291bnRzOiAzMiB4IG5dW2NvbmZpZ1ZhbHVlczogcGVyIG1hc2tdXG4gKiAgIFtpbnN0cnVjdGlvbkhlYWRlcnM6IDQgeCBuXVtpbnN0cnVjdGlvblBheWxvYWRzOiBwZXIgaW5zdHJ1Y3Rpb25dXG4gKi9cblxuZnVuY3Rpb24gcHVzaFU4KGJ1ZjogbnVtYmVyW10sIHY6IG51bWJlcikge1xuICBidWYucHVzaCh2ICYgMHhmZik7XG59XG5mdW5jdGlvbiBwdXNoVTMyTEUoYnVmOiBudW1iZXJbXSwgdjogbnVtYmVyKSB7XG4gIGJ1Zi5wdXNoKHYgJiAweGZmLCAodiA+Pj4gOCkgJiAweGZmLCAodiA+Pj4gMTYpICYgMHhmZiwgKHYgPj4+IDI0KSAmIDB4ZmYpO1xufVxuZnVuY3Rpb24gcHVzaFU2NExFKGJ1ZjogbnVtYmVyW10sIHY6IGJpZ2ludCkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIGJ1Zi5wdXNoKE51bWJlcigodiA+PiBCaWdJbnQoOCAqIGkpKSAmIDB4ZmZuKSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVjFNZXNzYWdlSGVhZGVyID0ge1xuICBudW1TaWduZXJBY2NvdW50czogbnVtYmVyO1xuICBudW1SZWFkb25seVNpZ25lckFjY291bnRzOiBudW1iZXI7XG4gIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVWMU1lc3NhZ2UoYXJnczoge1xuICBoZWFkZXI6IFYxTWVzc2FnZUhlYWRlcjtcbiAgY29uZmlnTWFzazogbnVtYmVyO1xuICBjb25maWdWYWx1ZXM6IENvbmZpZ1ZhbHVlW107XG4gIGJsb2NraGFzaDogc3RyaW5nO1xuICBzdGF0aWNBY2NvdW50czogc3RyaW5nW107XG4gIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW107XG59KTogVWludDhBcnJheSB7XG4gIGNvbnN0IHsgaGVhZGVyLCBjb25maWdNYXNrLCBjb25maWdWYWx1ZXMsIGJsb2NraGFzaCwgc3RhdGljQWNjb3VudHMsIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zIH0gPSBhcmdzO1xuXG4gIGxldCBibG9ja2hhc2hCeXRlczogVWludDhBcnJheTtcbiAgdHJ5IHtcbiAgICBibG9ja2hhc2hCeXRlcyA9IGJzNTguZGVjb2RlKGJsb2NraGFzaCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmVjZW50IGJsb2NraGFzaCcpO1xuICB9XG4gIGlmIChibG9ja2hhc2hCeXRlcy5sZW5ndGggIT09IDMyKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByZWNlbnQgYmxvY2toYXNoJyk7XG4gIH1cblxuICBjb25zdCBidWY6IG51bWJlcltdID0gW107XG4gIHB1c2hVOChidWYsIDB4ODEpOyAvLyB2ZXJzaW9uXG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1TaWduZXJBY2NvdW50cyk7XG4gIHB1c2hVOChidWYsIGhlYWRlci5udW1SZWFkb25seVNpZ25lckFjY291bnRzKTtcbiAgcHVzaFU4KGJ1ZiwgaGVhZGVyLm51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMpO1xuICBwdXNoVTMyTEUoYnVmLCBjb25maWdNYXNrKTtcbiAgZm9yIChjb25zdCBiIG9mIGJsb2NraGFzaEJ5dGVzKSBwdXNoVTgoYnVmLCBiKTtcbiAgcHVzaFU4KGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcbiAgcHVzaFU4KGJ1Ziwgc3RhdGljQWNjb3VudHMubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIHN0YXRpY0FjY291bnRzKSB7XG4gICAgZm9yIChjb25zdCBiIG9mIG5ldyBQdWJsaWNLZXkoYWNjb3VudCkudG9CeXRlcygpKSBwdXNoVTgoYnVmLCBiKTtcbiAgfVxuICBmb3IgKGNvbnN0IHZhbHVlIG9mIGNvbmZpZ1ZhbHVlcykge1xuICAgIGlmICh2YWx1ZS5raW5kID09PSAndTY0JykgcHVzaFU2NExFKGJ1ZiwgdmFsdWUudmFsdWUgYXMgYmlnaW50KTtcbiAgICBlbHNlIHB1c2hVMzJMRShidWYsIHZhbHVlLnZhbHVlIGFzIG51bWJlcik7XG4gIH1cbiAgZW5jb2RlSW5zdHJ1Y3Rpb25zKGJ1ZiwgY29tcGlsZWRJbnN0cnVjdGlvbnMpO1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbn1cblxuZXhwb3J0IHsgZW5jb2RlQ29uZmlnTWFza0FuZFZhbHVlcyB9O1xuXG5jb25zdCBWMV9WRVJTSU9OX1BSRUZJWCA9IDB4ODE7XG5jb25zdCBLTk9XTl9DT05GSUdfTUFTSyA9XG4gIFBSSU9SSVRZX0ZFRV9CSVRTIHwgQ09NUFVURV9VTklUX0xJTUlUX0JJVCB8IExPQURFRF9BQ0NPVU5UU19EQVRBX1NJWkVfTElNSVRfQklUIHwgSEVBUF9TSVpFX0JJVDtcbmNvbnN0IE1BWF9BQ0NPVU5UUyA9IDY0O1xuY29uc3QgTUFYX0lOU1RSVUNUSU9OUyA9IDY0O1xuY29uc3QgTUFYX0FDQ09VTlRTX1BFUl9JTlNUUlVDVElPTiA9IDI1NTtcbmNvbnN0IFNUQVRJQ19BQ0NPVU5UX0JZVEVTID0gMzI7XG5cbmV4cG9ydCB0eXBlIFYxRGVjb2RlZE1lc3NhZ2UgPSB7XG4gIGhlYWRlcjogVjFNZXNzYWdlSGVhZGVyO1xuICBjb25maWdNYXNrOiBudW1iZXI7XG4gIGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXTtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIHN0YXRpY0FjY291bnRzOiBzdHJpbmdbXTtcbiAgY29tcGlsZWRJbnN0cnVjdGlvbnM6IENvbXBpbGVkSW5zdHJ1Y3Rpb25bXTtcbiAgYnl0ZUxlbmd0aDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gcmVhZFU4KGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dO1xufVxuZnVuY3Rpb24gcmVhZFUxNkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBiW29dIHwgKGJbbyArIDFdIDw8IDgpO1xufVxuZnVuY3Rpb24gcmVhZFUzMkxFKGI6IFVpbnQ4QXJyYXksIG86IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiAoYltvXSB8IChiW28gKyAxXSA8PCA4KSB8IChiW28gKyAyXSA8PCAxNikgfCAoYltvICsgM10gPDwgMjQpKSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIHJlYWRVNjRMRShiOiBVaW50OEFycmF5LCBvOiBudW1iZXIpOiBiaWdpbnQge1xuICBsZXQgdiA9IDBuO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDg7IGkrKykge1xuICAgIHYgfD0gQmlnSW50KGJbbyArIGldKSA8PCBCaWdJbnQoOCAqIGkpO1xuICB9XG4gIHJldHVybiB2O1xufVxuXG5mdW5jdGlvbiBlbnN1cmVBdmFpbGFibGUoYjogVWludDhBcnJheSwgb2ZmOiBudW1iZXIsIHNpemU6IG51bWJlcik6IHZvaWQge1xuICBpZiAob2ZmICsgc2l6ZSA+IGIubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBtZXNzYWdlOiB0cnVuY2F0ZWQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVjFNZXNzYWdlKGJ5dGVzOiBVaW50OEFycmF5KTogVjFEZWNvZGVkTWVzc2FnZSB7XG4gIGlmICghYnl0ZXMgfHwgYnl0ZXMubGVuZ3RoIDwgNDIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBzaG9ydCcpO1xuICB9XG4gIGxldCBvZmYgPSAwO1xuICBpZiAoYnl0ZXNbb2ZmKytdICE9PSBWMV9WRVJTSU9OX1BSRUZJWCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgdjEgdmVyc2lvbiBwcmVmaXg6IDB4JHtieXRlc1swXS50b1N0cmluZygxNil9YCk7XG4gIH1cbiAgY29uc3QgbnVtU2lnbmVyQWNjb3VudHMgPSByZWFkVTgoYnl0ZXMsIG9mZisrKTtcbiAgY29uc3QgbnVtUmVhZG9ubHlTaWduZXJBY2NvdW50cyA9IHJlYWRVOChieXRlcywgb2ZmKyspO1xuICBjb25zdCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IGNvbmZpZ01hc2sgPSByZWFkVTMyTEUoYnl0ZXMsIG9mZik7XG4gIG9mZiArPSA0O1xuICBpZiAoKGNvbmZpZ01hc2sgJiB+S05PV05fQ09ORklHX01BU0spICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgVW5rbm93biBjb25maWcgbWFzayBiaXRzOiAkeyhjb25maWdNYXNrICYgfktOT1dOX0NPTkZJR19NQVNLKS50b1N0cmluZygyKX1gKTtcbiAgfVxuICBjb25zdCBibG9ja2hhc2ggPSBiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSk7XG4gIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgY29uc3QgbnVtSW5zdHJ1Y3Rpb25zID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGNvbnN0IG51bVN0YXRpY0FjY291bnRzID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gIGlmIChudW1TdGF0aWNBY2NvdW50cyA+IE1BWF9BQ0NPVU5UUykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgbWVzc2FnZTogdG9vIG1hbnkgc3RhdGljIGFjY291bnRzJyk7XG4gIH1cbiAgaWYgKG51bUluc3RydWN0aW9ucyA+IE1BWF9JTlNUUlVDVElPTlMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIG1lc3NhZ2U6IHRvbyBtYW55IGluc3RydWN0aW9ucycpO1xuICB9XG4gIGlmIChudW1SZWFkb25seVNpZ25lckFjY291bnRzID4gbnVtU2lnbmVyQWNjb3VudHMpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIGhlYWRlcjogcmVhZG9ubHkgc2lnbmVycyBleGNlZWQgc2lnbmVycycpO1xuICB9XG4gIGlmIChudW1TaWduZXJBY2NvdW50cyArIG51bVJlYWRvbmx5Tm9uU2lnbmVyQWNjb3VudHMgPiBudW1TdGF0aWNBY2NvdW50cykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaGVhZGVyOiBzaWduZXJzICsgcmVhZG9ubHkgbm9uLXNpZ25lcnMgZXhjZWVkIHN0YXRpYyBhY2NvdW50cycpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGljQWNjb3VudHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtU3RhdGljQWNjb3VudHM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBTVEFUSUNfQUNDT1VOVF9CWVRFUyk7XG4gICAgc3RhdGljQWNjb3VudHMucHVzaChiczU4LmVuY29kZShieXRlcy5zbGljZShvZmYsIG9mZiArIFNUQVRJQ19BQ0NPVU5UX0JZVEVTKSkpO1xuICAgIG9mZiArPSBTVEFUSUNfQUNDT1VOVF9CWVRFUztcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1ZhbHVlczogQ29uZmlnVmFsdWVbXSA9IFtdO1xuICBpZiAoY29uZmlnTWFzayAmIFBSSU9SSVRZX0ZFRV9CSVRTKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDgpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3U2NCcsIHZhbHVlOiByZWFkVTY0TEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDg7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBDT01QVVRFX1VOSVRfTElNSVRfQklUKSB7XG4gICAgZW5zdXJlQXZhaWxhYmxlKGJ5dGVzLCBvZmYsIDQpO1xuICAgIGNvbmZpZ1ZhbHVlcy5wdXNoKHsga2luZDogJ3UzMicsIHZhbHVlOiByZWFkVTMyTEUoYnl0ZXMsIG9mZikgfSk7XG4gICAgb2ZmICs9IDQ7XG4gIH1cbiAgaWYgKGNvbmZpZ01hc2sgJiBMT0FERURfQUNDT1VOVFNfREFUQV9TSVpFX0xJTUlUX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG4gIGlmIChjb25maWdNYXNrICYgSEVBUF9TSVpFX0JJVCkge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25maWdWYWx1ZXMucHVzaCh7IGtpbmQ6ICd1MzInLCB2YWx1ZTogcmVhZFUzMkxFKGJ5dGVzLCBvZmYpIH0pO1xuICAgIG9mZiArPSA0O1xuICB9XG5cbiAgY29uc3QgaGVhZGVyczogQXJyYXk8eyBwcm9ncmFtQWRkcmVzc0luZGV4OiBudW1iZXI7IGFjY291bnRDb3VudDogbnVtYmVyOyBkYXRhTGVuZ3RoOiBudW1iZXIgfT4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1JbnN0cnVjdGlvbnM7IGkrKykge1xuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCA0KTtcbiAgICBjb25zdCBwcm9ncmFtQWRkcmVzc0luZGV4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgYWNjb3VudENvdW50ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IHJlYWRVMTZMRShieXRlcywgb2ZmKTtcbiAgICBvZmYgKz0gMjtcbiAgICBpZiAocHJvZ3JhbUFkZHJlc3NJbmRleCA+PSBudW1TdGF0aWNBY2NvdW50cykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB2MSBpbnN0cnVjdGlvbjogcHJvZ3JhbSBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gICAgaWYgKGFjY291bnRDb3VudCA+IE1BWF9BQ0NPVU5UU19QRVJfSU5TVFJVQ1RJT04pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IHRvbyBtYW55IGFjY291bnRzJyk7XG4gICAgfVxuICAgIGhlYWRlcnMucHVzaCh7IHByb2dyYW1BZGRyZXNzSW5kZXgsIGFjY291bnRDb3VudCwgZGF0YUxlbmd0aCB9KTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVkSW5zdHJ1Y3Rpb25zOiBDb21waWxlZEluc3RydWN0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBoIG9mIGhlYWRlcnMpIHtcbiAgICBlbnN1cmVBdmFpbGFibGUoYnl0ZXMsIG9mZiwgaC5hY2NvdW50Q291bnQpO1xuICAgIGNvbnN0IGFjY291bnRJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaC5hY2NvdW50Q291bnQ7IGkrKykge1xuICAgICAgY29uc3QgaWR4ID0gcmVhZFU4KGJ5dGVzLCBvZmYrKyk7XG4gICAgICBpZiAoaWR4ID49IG51bVN0YXRpY0FjY291bnRzKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdjEgaW5zdHJ1Y3Rpb246IGFjY291bnQgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gICAgICB9XG4gICAgICBhY2NvdW50SW5kaWNlcy5wdXNoKGlkeCk7XG4gICAgfVxuICAgIGVuc3VyZUF2YWlsYWJsZShieXRlcywgb2ZmLCBoLmRhdGFMZW5ndGgpO1xuICAgIGNvbnN0IGRhdGEgPSBieXRlcy5zbGljZShvZmYsIG9mZiArIGguZGF0YUxlbmd0aCk7XG4gICAgb2ZmICs9IGguZGF0YUxlbmd0aDtcbiAgICBjb21waWxlZEluc3RydWN0aW9ucy5wdXNoKHsgcHJvZ3JhbUFkZHJlc3NJbmRleDogaC5wcm9ncmFtQWRkcmVzc0luZGV4LCBhY2NvdW50SW5kaWNlcywgZGF0YSB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGVhZGVyOiB7IG51bVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seVNpZ25lckFjY291bnRzLCBudW1SZWFkb25seU5vblNpZ25lckFjY291bnRzIH0sXG4gICAgY29uZmlnTWFzayxcbiAgICBjb25maWdWYWx1ZXMsXG4gICAgYmxvY2toYXNoLFxuICAgIHN0YXRpY0FjY291bnRzLFxuICAgIGNvbXBpbGVkSW5zdHJ1Y3Rpb25zLFxuICAgIGJ5dGVMZW5ndGg6IG9mZixcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ParsedWireTransaction = {
|
|
2
|
+
messageBytes: Uint8Array;
|
|
3
|
+
signatures: Uint8Array[];
|
|
4
|
+
signerPublicKeys: string[];
|
|
5
|
+
};
|
|
6
|
+
export declare function parseWireTransaction(wireBytes: Uint8Array): ParsedWireTransaction;
|
|
7
|
+
export declare function verifyV1Signatures(messageBytes: Uint8Array, signatures: Uint8Array[], signerPublicKeys: string[]): void;
|
|
8
|
+
export declare function validateRawTransactionV1(wireBytes: Uint8Array): void;
|
|
9
|
+
//# sourceMappingURL=parseWireTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseWireTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/lib/serialization/parseWireTransaction.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,UAAU,CAAC;IACzB,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,UAAU,GAAG,qBAAqB,CAwCjF;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,UAAU,EACxB,UAAU,EAAE,UAAU,EAAE,EACxB,gBAAgB,EAAE,MAAM,EAAE,GACzB,IAAI,CAUN;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAGpE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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.parseWireTransaction = parseWireTransaction;
|
|
7
|
+
exports.verifyV1Signatures = verifyV1Signatures;
|
|
8
|
+
exports.validateRawTransactionV1 = validateRawTransactionV1;
|
|
9
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
+
const tweetnacl_1 = __importDefault(require("tweetnacl"));
|
|
11
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
12
|
+
const message_1 = require("./codecs/v1/message");
|
|
13
|
+
const SIGNATURE_BYTE_LENGTH = 64;
|
|
14
|
+
const V1_VERSION_PREFIX = 0x81;
|
|
15
|
+
const V1_TRANSACTION_SIZE_LIMIT = 4096;
|
|
16
|
+
function parseWireTransaction(wireBytes) {
|
|
17
|
+
if (!wireBytes || wireBytes.length === 0) {
|
|
18
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 transaction: empty');
|
|
19
|
+
}
|
|
20
|
+
if (wireBytes[0] !== V1_VERSION_PREFIX) {
|
|
21
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: expected version prefix 0x${V1_VERSION_PREFIX.toString(16)}, got 0x${wireBytes[0].toString(16)}`);
|
|
22
|
+
}
|
|
23
|
+
if (wireBytes.length < 42) {
|
|
24
|
+
throw new sdk_core_1.BuildTransactionError('Invalid v1 transaction: too short');
|
|
25
|
+
}
|
|
26
|
+
if (wireBytes.length > V1_TRANSACTION_SIZE_LIMIT) {
|
|
27
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: exceeds the ${V1_TRANSACTION_SIZE_LIMIT}-byte size limit: ${wireBytes.length} bytes`);
|
|
28
|
+
}
|
|
29
|
+
const decoded = (0, message_1.decodeV1Message)(wireBytes);
|
|
30
|
+
const messageLength = decoded.byteLength;
|
|
31
|
+
const numSignatures = decoded.header.numSignerAccounts;
|
|
32
|
+
const expectedSigBytes = numSignatures * SIGNATURE_BYTE_LENGTH;
|
|
33
|
+
if (wireBytes.length - messageLength !== expectedSigBytes) {
|
|
34
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid v1 transaction: expected ${expectedSigBytes} signature bytes after message, got ${wireBytes.length - messageLength}`);
|
|
35
|
+
}
|
|
36
|
+
const messageBytes = wireBytes.slice(0, messageLength);
|
|
37
|
+
const signatures = [];
|
|
38
|
+
for (let i = 0; i < numSignatures; i++) {
|
|
39
|
+
signatures.push(wireBytes.slice(messageLength + i * SIGNATURE_BYTE_LENGTH, messageLength + (i + 1) * SIGNATURE_BYTE_LENGTH));
|
|
40
|
+
}
|
|
41
|
+
return { messageBytes, signatures, signerPublicKeys: decoded.staticAccounts.slice(0, numSignatures) };
|
|
42
|
+
}
|
|
43
|
+
function verifyV1Signatures(messageBytes, signatures, signerPublicKeys) {
|
|
44
|
+
if (signatures.length !== signerPublicKeys.length) {
|
|
45
|
+
throw new sdk_core_1.BuildTransactionError('Signature count does not match signer count');
|
|
46
|
+
}
|
|
47
|
+
for (let i = 0; i < signatures.length; i++) {
|
|
48
|
+
const pubkey = new web3_js_1.PublicKey(signerPublicKeys[i]).toBuffer();
|
|
49
|
+
if (!tweetnacl_1.default.sign.detached.verify(messageBytes, signatures[i], pubkey)) {
|
|
50
|
+
throw new sdk_core_1.BuildTransactionError(`Signature verification failed for signer ${i}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function validateRawTransactionV1(wireBytes) {
|
|
55
|
+
const { messageBytes, signatures, signerPublicKeys } = parseWireTransaction(wireBytes);
|
|
56
|
+
verifyV1Signatures(messageBytes, signatures, signerPublicKeys);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXJlVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREF3Q0M7QUFFRCxnREFjQztBQUVELDREQUdDO0FBNUVELG1EQUE2RDtBQUM3RCwwREFBNkI7QUFDN0IsNkNBQTRDO0FBQzVDLGlEQUFzRDtBQUV0RCxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQVF2QyxTQUFnQixvQkFBb0IsQ0FBQyxTQUFxQjtJQUN4RCxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGlCQUFpQixFQUFFLENBQUM7UUFDdkMsTUFBTSxJQUFJLGdDQUFxQixDQUM3QixxREFBcUQsaUJBQWlCLENBQUMsUUFBUSxDQUM3RSxFQUFFLENBQ0gsV0FBVyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQ3hDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLHVDQUF1Qyx5QkFBeUIscUJBQXFCLFNBQVMsQ0FBQyxNQUFNLFFBQVEsQ0FDOUcsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFlLEVBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN6QyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0lBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxHQUFHLHFCQUFxQixDQUFDO0lBRS9ELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxhQUFhLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLElBQUksZ0NBQXFCLENBQzdCLG9DQUFvQyxnQkFBZ0IsdUNBQ2xELFNBQVMsQ0FBQyxNQUFNLEdBQUcsYUFDckIsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkQsTUFBTSxVQUFVLEdBQWlCLEVBQUUsQ0FBQztJQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkMsVUFBVSxDQUFDLElBQUksQ0FDYixTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQzVHLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFDeEcsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUNoQyxZQUF3QixFQUN4QixVQUF3QixFQUN4QixnQkFBMEI7SUFFMUIsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxtQkFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsU0FBcUI7SUFDNUQsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RixrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDakUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBQdWJsaWNLZXkgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgZGVjb2RlVjFNZXNzYWdlIH0gZnJvbSAnLi9jb2RlY3MvdjEvbWVzc2FnZSc7XG5cbmNvbnN0IFNJR05BVFVSRV9CWVRFX0xFTkdUSCA9IDY0O1xuY29uc3QgVjFfVkVSU0lPTl9QUkVGSVggPSAweDgxO1xuY29uc3QgVjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVCA9IDQwOTY7XG5cbmV4cG9ydCB0eXBlIFBhcnNlZFdpcmVUcmFuc2FjdGlvbiA9IHtcbiAgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5O1xuICBzaWduYXR1cmVzOiBVaW50OEFycmF5W107XG4gIHNpZ25lclB1YmxpY0tleXM6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2lyZVRyYW5zYWN0aW9uKHdpcmVCeXRlczogVWludDhBcnJheSk6IFBhcnNlZFdpcmVUcmFuc2FjdGlvbiB7XG4gIGlmICghd2lyZUJ5dGVzIHx8IHdpcmVCeXRlcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBlbXB0eScpO1xuICB9XG4gIGlmICh3aXJlQnl0ZXNbMF0gIT09IFYxX1ZFUlNJT05fUFJFRklYKSB7XG4gICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgIGBJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiBleHBlY3RlZCB2ZXJzaW9uIHByZWZpeCAweCR7VjFfVkVSU0lPTl9QUkVGSVgudG9TdHJpbmcoXG4gICAgICAgIDE2XG4gICAgICApfSwgZ290IDB4JHt3aXJlQnl0ZXNbMF0udG9TdHJpbmcoMTYpfWBcbiAgICApO1xuICB9XG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoIDwgNDIpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHYxIHRyYW5zYWN0aW9uOiB0b28gc2hvcnQnKTtcbiAgfVxuICBpZiAod2lyZUJ5dGVzLmxlbmd0aCA+IFYxX1RSQU5TQUNUSU9OX1NJWkVfTElNSVQpIHtcbiAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgYEludmFsaWQgdjEgdHJhbnNhY3Rpb246IGV4Y2VlZHMgdGhlICR7VjFfVFJBTlNBQ1RJT05fU0laRV9MSU1JVH0tYnl0ZSBzaXplIGxpbWl0OiAke3dpcmVCeXRlcy5sZW5ndGh9IGJ5dGVzYFxuICAgICk7XG4gIH1cbiAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZSh3aXJlQnl0ZXMpO1xuICBjb25zdCBtZXNzYWdlTGVuZ3RoID0gZGVjb2RlZC5ieXRlTGVuZ3RoO1xuICBjb25zdCBudW1TaWduYXR1cmVzID0gZGVjb2RlZC5oZWFkZXIubnVtU2lnbmVyQWNjb3VudHM7XG4gIGNvbnN0IGV4cGVjdGVkU2lnQnl0ZXMgPSBudW1TaWduYXR1cmVzICogU0lHTkFUVVJFX0JZVEVfTEVOR1RIO1xuXG4gIGlmICh3aXJlQnl0ZXMubGVuZ3RoIC0gbWVzc2FnZUxlbmd0aCAhPT0gZXhwZWN0ZWRTaWdCeXRlcykge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICBgSW52YWxpZCB2MSB0cmFuc2FjdGlvbjogZXhwZWN0ZWQgJHtleHBlY3RlZFNpZ0J5dGVzfSBzaWduYXR1cmUgYnl0ZXMgYWZ0ZXIgbWVzc2FnZSwgZ290ICR7XG4gICAgICAgIHdpcmVCeXRlcy5sZW5ndGggLSBtZXNzYWdlTGVuZ3RoXG4gICAgICB9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtZXNzYWdlQnl0ZXMgPSB3aXJlQnl0ZXMuc2xpY2UoMCwgbWVzc2FnZUxlbmd0aCk7XG4gIGNvbnN0IHNpZ25hdHVyZXM6IFVpbnQ4QXJyYXlbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVNpZ25hdHVyZXM7IGkrKykge1xuICAgIHNpZ25hdHVyZXMucHVzaChcbiAgICAgIHdpcmVCeXRlcy5zbGljZShtZXNzYWdlTGVuZ3RoICsgaSAqIFNJR05BVFVSRV9CWVRFX0xFTkdUSCwgbWVzc2FnZUxlbmd0aCArIChpICsgMSkgKiBTSUdOQVRVUkVfQllURV9MRU5HVEgpXG4gICAgKTtcbiAgfVxuICByZXR1cm4geyBtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMsIHNpZ25lclB1YmxpY0tleXM6IGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgbnVtU2lnbmF0dXJlcykgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVYxU2lnbmF0dXJlcyhcbiAgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5LFxuICBzaWduYXR1cmVzOiBVaW50OEFycmF5W10sXG4gIHNpZ25lclB1YmxpY0tleXM6IHN0cmluZ1tdXG4pOiB2b2lkIHtcbiAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoICE9PSBzaWduZXJQdWJsaWNLZXlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NpZ25hdHVyZSBjb3VudCBkb2VzIG5vdCBtYXRjaCBzaWduZXIgY291bnQnKTtcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hdHVyZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBwdWJrZXkgPSBuZXcgUHVibGljS2V5KHNpZ25lclB1YmxpY0tleXNbaV0pLnRvQnVmZmVyKCk7XG4gICAgaWYgKCFuYWNsLnNpZ24uZGV0YWNoZWQudmVyaWZ5KG1lc3NhZ2VCeXRlcywgc2lnbmF0dXJlc1tpXSwgcHVia2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yIHNpZ25lciAke2l9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uVjEod2lyZUJ5dGVzOiBVaW50OEFycmF5KTogdm9pZCB7XG4gIGNvbnN0IHsgbWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzLCBzaWduZXJQdWJsaWNLZXlzIH0gPSBwYXJzZVdpcmVUcmFuc2FjdGlvbih3aXJlQnl0ZXMpO1xuICB2ZXJpZnlWMVNpZ25hdHVyZXMobWVzc2FnZUJ5dGVzLCBzaWduYXR1cmVzLCBzaWduZXJQdWJsaWNLZXlzKTtcbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../../src/sol.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAe,UAAU,EAA6B,MAAM,iBAAiB,CAAC;AAIrF,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AAKtC,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,uBAAuB,IAAI,2BAA2B,EAEtD,mBAAmB,IAAI,uBAAuB,EAC9C,SAAS,EAIT,gBAAgB,EAChB,OAAO,EAEP,IAAI,EACJ,OAAO,EAEP,YAAY,EACZ,+BAA+B,EAC/B,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,KAAK,EACL,MAAM,EAEN,YAAY,EAIZ,iBAAiB,EACjB,eAAe,EACf,oCAAoC,EACpC,yBAAyB,EAGzB,iBAAiB,EACjB,sBAAsB,EAEtB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EAEpB,wBAAwB,EACxB,uBAAuB,EAGvB,oBAAoB,EACpB,mBAAmB,EAIpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,UAAU,EAAkB,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAGL,kBAAkB,EAGnB,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,gBAAgB,EAChB,sBAAsB,IAAI,4BAA4B,EACvD,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,+BAA+B,EAKhC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"sol.d.ts","sourceRoot":"","sources":["../../../src/sol.ts"],"names":[],"mappings":"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"}
|