Skip to content

Commit fbeb114

Browse files
feat(ebe): hide recovery api under non recovery mode-ebe
1 parent 788e3f8 commit fbeb114

File tree

6 files changed

+18
-3
lines changed

6 files changed

+18
-3
lines changed

src/__tests__/api/enclaved/recoveryMultisigTransaction.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe('UTXO recovery', () => {
2222
tlsMode: TlsMode.DISABLED,
2323
allowSelfSigned: true,
2424
kmsUrl: 'kms.example.com',
25+
recoveryMode: true,
2526
};
2627

2728
beforeEach(() => {

src/__tests__/api/enclaved/recoveryMusigEth.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ describe('recoveryMultisigTransaction', () => {
4040
kmsUrl: kmsUrl,
4141
tlsMode: TlsMode.DISABLED,
4242
allowSelfSigned: true,
43+
recoveryMode: true,
4344
};
4445

4546
configStub = sinon.stub(configModule, 'initConfig').returns(cfg);

src/__tests__/api/enclaved/signMpcRecoveryTransaction.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ describe('EdDSA Recovery Signing', () => {
1818
httpLoggerFile: '',
1919
tlsMode: TlsMode.DISABLED,
2020
allowSelfSigned: true,
21+
recoveryMode: true,
2122
};
2223

2324
const commonKeychain =

src/api/enclaved/handlers/recoveryMultisigTransaction.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
TransactionRecipient,
77
} from '@bitgo-beta/sdk-core';
88
import { EnclavedApiSpecRouteRequest } from '../../../enclavedBitgoExpress/routers/enclavedApiSpec';
9-
import { EnvironmentName } from '../../../initConfig';
9+
import { EnclavedConfig, EnvironmentName } from '../../../initConfig';
1010
import logger from '../../../logger';
1111
import {
1212
isEthLikeCoin,
@@ -19,12 +19,14 @@ import {
1919
getReplayProtectionOptions,
2020
} from '../../../shared/recoveryUtils';
2121
import { SignedEthLikeRecoveryTx } from '../../../types/transaction';
22-
import { retrieveKmsPrvKey } from '../utils';
22+
import { checkRecoveryMode, retrieveKmsPrvKey } from '../utils';
2323
import coinFactory from '../../../shared/coinFactory';
2424

2525
export async function recoveryMultisigTransaction(
2626
req: EnclavedApiSpecRouteRequest<'v1.multisig.recovery', 'post'>,
2727
): Promise<any> {
28+
checkRecoveryMode(req.config as EnclavedConfig);
29+
2830
const { userPub, backupPub, bitgoPub, unsignedSweepPrebuildTx, walletContractAddress, coin } =
2931
req.decoded;
3032

src/api/enclaved/handlers/signEddsaRecoveryTransaction.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
import { Ed25519Bip32HdTree } from '@bitgo-beta/sdk-lib-mpc';
1111
import { CoinFamily, coins } from '@bitgo-beta/statics';
1212
import { type KeyPair as SolKeyPair } from '@bitgo-beta/sdk-coin-sol';
13-
import { retrieveKmsPrvKey } from '../utils';
13+
import { checkRecoveryMode, retrieveKmsPrvKey } from '../utils';
1414
import { EnclavedConfig } from '../../../shared/types';
1515
import logger from '../../../logger';
1616

@@ -88,6 +88,8 @@ export async function signEddsaRecoveryTransaction({
8888
let publicKey = '';
8989
logger.info(`Received request ${JSON.stringify(request)}`);
9090

91+
checkRecoveryMode(cfg);
92+
9193
const hdTree = await Ed25519Bip32HdTree.initialize();
9294
const MPC = await Eddsa.initialize(hdTree);
9395

src/api/enclaved/utils.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,11 @@ export async function decryptDataKey({
116116
};
117117
}
118118
}
119+
120+
export function checkRecoveryMode(config: EnclavedConfig) {
121+
if (!config.recoveryMode) {
122+
throw new Error(
123+
'Recovery operations are not enabled. The server must be in recovery mode to perform this action.',
124+
);
125+
}
126+
}

0 commit comments

Comments
 (0)