Skip to content

Commit 31ba2ce

Browse files
committed
fix(mbe): fix validation params order for utxo
Ticket: WP-5454
1 parent 0759b97 commit 31ba2ce

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

src/api/master/handlers/recoveryWallet.ts

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,37 @@ interface EnclavedRecoveryParams {
5353
walletContractAddress: string;
5454
}
5555

56-
function validateRecoveryParams(sdkCoin: BaseCoin, params?: CoinSpecificParams) {
56+
function validateRecoveryParams(
57+
sdkCoin: BaseCoin,
58+
params?: CoinSpecificParams,
59+
isMpcRecovery = false,
60+
) {
5761
if (!params) {
5862
return;
5963
}
6064

65+
if (!isMpcRecovery) {
66+
if (isUtxoCoin(sdkCoin)) {
67+
if (params.solanaRecoveryOptions || params.evmRecoveryOptions) {
68+
throw new ValidationError('Invalid parameters provided for UTXO coin recovery');
69+
}
70+
} else if (isEthLikeCoin(sdkCoin)) {
71+
if (params.solanaRecoveryOptions || params.utxoRecoveryOptions) {
72+
throw new ValidationError('Invalid parameters provided for ETH-like coin recovery');
73+
}
74+
}
75+
return;
76+
}
77+
78+
// Only validate EdDSA and ECDSA coins for MPC recovery
6179
if (isEddsaCoin(sdkCoin)) {
6280
if (params.evmRecoveryOptions || params.utxoRecoveryOptions) {
6381
throw new ValidationError('Invalid parameters provided for Solana coin recovery');
6482
}
65-
} else if (isEcdsaCoin(sdkCoin)) {
83+
return;
84+
}
85+
86+
if (isEcdsaCoin(sdkCoin)) {
6687
if (isEthLikeCoin(sdkCoin)) {
6788
if (!params.ecdsaEthLikeRecoverySpecificParams) {
6889
throw new ValidationError('Invalid parameters provided for ETH-like MPC V2 coin recovery');
@@ -78,17 +99,9 @@ function validateRecoveryParams(sdkCoin: BaseCoin, params?: CoinSpecificParams)
7899
`MPC V2 recovery is not supported for coin family: ${sdkCoin.getFamily()}`,
79100
);
80101
}
81-
} else {
82-
if (isUtxoCoin(sdkCoin)) {
83-
if (params.solanaRecoveryOptions || params.evmRecoveryOptions) {
84-
throw new ValidationError('Invalid parameters provided for UTXO coin recovery');
85-
}
86-
} else if (isEthLikeCoin(sdkCoin)) {
87-
if (params.solanaRecoveryOptions || params.utxoRecoveryOptions) {
88-
throw new ValidationError('Invalid parameters provided for ETH-like coin recovery');
89-
}
90-
}
102+
return;
91103
}
104+
throw new ValidationError('Invalid parameters provided for MPC recovery');
92105
}
93106

94107
async function handleEthLikeRecovery(
@@ -216,7 +229,7 @@ export async function handleRecoveryWalletOnPrem(
216229

217230
const sdkCoin = await coinFactory.getCoin(coin, bitgo);
218231
// Validate that we have correct parameters for recovery
219-
validateRecoveryParams(sdkCoin, coinSpecificParams);
232+
validateRecoveryParams(sdkCoin, coinSpecificParams, req.decoded.isTssRecovery);
220233

221234
// Handle TSS recovery
222235
if (req.decoded.isTssRecovery) {

0 commit comments

Comments
 (0)