Skip to content

Commit 15ffaea

Browse files
committed
fix(mbe): fix backup key signing
Ticket: WP-4717
1 parent 7ab0f9c commit 15ffaea

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/masterBitgoExpress/handleSendMany.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { RequestTracer, PrebuildTransactionOptions, Memo } from '@bitgo/sdk-core';
1+
import { RequestTracer, PrebuildTransactionOptions, Memo, KeyIndices } from '@bitgo/sdk-core';
22
import { createEnclavedExpressClient } from './enclavedExpressClient';
33
import logger from '../logger';
44
import { MasterApiSpecRouteRequest } from './routers/masterApiSpec';
@@ -43,18 +43,24 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s
4343
// throw new Error('Wallet is not an on-prem wallet');
4444
// }
4545

46+
const keyIdIndex = params.source === 'user' ? KeyIndices.USER : KeyIndices.BACKUP;
47+
logger.info(`Key ID index: ${keyIdIndex}`);
48+
logger.info(`Key IDs: ${JSON.stringify(wallet.keyIds(), null, 2)}`);
49+
4650
// Get the signing keychains
47-
const signingKeychains = await baseCoin.keychains().getKeysForSigning({
48-
wallet,
49-
reqId,
51+
const signingKeychain = await baseCoin.keychains().get({
52+
id: wallet.keyIds()[keyIdIndex],
5053
});
5154

52-
// Find the user keychain for signing
53-
const signingKeychain = signingKeychains.find((k) => k.source === params.source);
5455
if (!signingKeychain || !signingKeychain.pub) {
5556
throw new Error(`Signing keychain for ${params.source} not found`);
5657
}
5758

59+
if (params.pubkey && params.pubkey !== signingKeychain.pub) {
60+
throw new Error(`Pub provided does not match the keychain on wallet for ${params.source}`);
61+
}
62+
63+
logger.info(`Signing with ${params.source} keychain, pub: ${signingKeychain.pub}`);
5864
logger.debug(`Signing keychain: ${JSON.stringify(signingKeychain, null, 2)}`);
5965

6066
try {

0 commit comments

Comments
 (0)