|
1 | | -import { RequestTracer, PrebuildTransactionOptions, Memo } from '@bitgo/sdk-core'; |
| 1 | +import { RequestTracer, PrebuildTransactionOptions, Memo, KeyIndices } from '@bitgo/sdk-core'; |
2 | 2 | import { createEnclavedExpressClient } from './enclavedExpressClient'; |
3 | 3 | import logger from '../logger'; |
4 | 4 | import { MasterApiSpecRouteRequest } from './routers/masterApiSpec'; |
@@ -43,18 +43,24 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s |
43 | 43 | // throw new Error('Wallet is not an on-prem wallet'); |
44 | 44 | // } |
45 | 45 |
|
| 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 | + |
46 | 50 | // 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], |
50 | 53 | }); |
51 | 54 |
|
52 | | - // Find the user keychain for signing |
53 | | - const signingKeychain = signingKeychains.find((k) => k.source === params.source); |
54 | 55 | if (!signingKeychain || !signingKeychain.pub) { |
55 | 56 | throw new Error(`Signing keychain for ${params.source} not found`); |
56 | 57 | } |
57 | 58 |
|
| 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}`); |
58 | 64 | logger.debug(`Signing keychain: ${JSON.stringify(signingKeychain, null, 2)}`); |
59 | 65 |
|
60 | 66 | try { |
|
0 commit comments