Skip to content

Commit fdc1b13

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

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,41 +53,61 @@ 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+
6172
if (isEddsaCoin(sdkCoin)) {
6273
if (params.evmRecoveryOptions || params.utxoRecoveryOptions) {
6374
throw new ValidationError('Invalid parameters provided for Solana coin recovery');
6475
}
65-
} else if (isEcdsaCoin(sdkCoin)) {
76+
return;
77+
}
78+
79+
if (isEcdsaCoin(sdkCoin)) {
6680
if (isEthLikeCoin(sdkCoin)) {
67-
if (!params.ecdsaEthLikeRecoverySpecificParams) {
68-
throw new ValidationError('Invalid parameters provided for ETH-like MPC V2 coin recovery');
81+
if (isMpcRecovery) {
82+
if (!params.ecdsaEthLikeRecoverySpecificParams) {
83+
throw new ValidationError(
84+
'Invalid parameters provided for ETH-like MPC V2 coin recovery',
85+
);
86+
}
87+
} else {
88+
if (params.solanaRecoveryOptions || params.utxoRecoveryOptions) {
89+
throw new ValidationError('Invalid parameters provided for ETH-like coin recovery');
90+
}
6991
}
92+
return;
7093
} else if (isCosmosLikeCoin(sdkCoin)) {
71-
if (!params.ecdsaCosmosLikeRecoverySpecificParams) {
72-
throw new ValidationError(
73-
'Invalid parameters provided for Cosmos-like MPC V2 coin recovery',
74-
);
94+
if (isMpcRecovery) {
95+
if (!params.ecdsaCosmosLikeRecoverySpecificParams) {
96+
throw new ValidationError(
97+
'Invalid parameters provided for Cosmos-like MPC V2 coin recovery',
98+
);
99+
}
100+
} else {
101+
if (params.solanaRecoveryOptions || params.utxoRecoveryOptions) {
102+
throw new ValidationError('Invalid parameters provided for Cosmos-like coin recovery');
103+
}
75104
}
76105
} else {
77106
throw new NotImplementedError(
78107
`MPC V2 recovery is not supported for coin family: ${sdkCoin.getFamily()}`,
79108
);
80109
}
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-
}
110+
return;
91111
}
92112
}
93113

@@ -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)