Skip to content

Commit a98af04

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

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

src/api/master/handlers/recoveryWallet.ts

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,42 +53,62 @@ 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 (isUtxoCoin(sdkCoin)) {
66+
if (params.solanaRecoveryOptions || params.evmRecoveryOptions) {
67+
throw new ValidationError('Invalid parameters provided for UTXO coin recovery');
68+
}
69+
return;
70+
}
71+
72+
if (!isMpcRecovery && isEthLikeCoin(sdkCoin)) {
73+
if (params.solanaRecoveryOptions || params.utxoRecoveryOptions) {
74+
throw new ValidationError('Invalid parameters provided for ETH-like coin recovery');
75+
}
76+
return;
77+
}
78+
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)) {
67-
if (!params.ecdsaEthLikeRecoverySpecificParams) {
68-
throw new ValidationError('Invalid parameters provided for ETH-like MPC V2 coin recovery');
88+
if (isMpcRecovery) {
89+
if (!params.ecdsaEthLikeRecoverySpecificParams) {
90+
throw new ValidationError(
91+
'Invalid parameters provided for ETH-like MPC V2 coin recovery',
92+
);
93+
}
6994
}
95+
return;
7096
} else if (isCosmosLikeCoin(sdkCoin)) {
71-
if (!params.ecdsaCosmosLikeRecoverySpecificParams) {
72-
throw new ValidationError(
73-
'Invalid parameters provided for Cosmos-like MPC V2 coin recovery',
74-
);
97+
if (isMpcRecovery) {
98+
if (!params.ecdsaCosmosLikeRecoverySpecificParams) {
99+
throw new ValidationError(
100+
'Invalid parameters provided for Cosmos-like MPC V2 coin recovery',
101+
);
102+
}
75103
}
76104
} else {
77105
throw new NotImplementedError(
78106
`MPC V2 recovery is not supported for coin family: ${sdkCoin.getFamily()}`,
79107
);
80108
}
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-
}
109+
return;
91110
}
111+
throw new ValidationError('Recovery parameters are not valid');
92112
}
93113

94114
async function handleEthLikeRecovery(
@@ -216,7 +236,7 @@ export async function handleRecoveryWalletOnPrem(
216236

217237
const sdkCoin = await coinFactory.getCoin(coin, bitgo);
218238
// Validate that we have correct parameters for recovery
219-
validateRecoveryParams(sdkCoin, coinSpecificParams);
239+
validateRecoveryParams(sdkCoin, coinSpecificParams, req.decoded.isTssRecovery);
220240

221241
// Handle TSS recovery
222242
if (req.decoded.isTssRecovery) {

0 commit comments

Comments
 (0)