diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts index 81067d0fee..a160fb8ef9 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTSSUtils.ts @@ -15,6 +15,9 @@ import { CreateBitGoKeychainParamsBase, CreateKeychainParamsBase, CustomCommitmentGeneratingFunction, + CustomEddsaMPCv2SigningRound1GeneratingFunction, + CustomEddsaMPCv2SigningRound2GeneratingFunction, + CustomEddsaMPCv2SigningRound3GeneratingFunction, CustomGShareGeneratingFunction, CustomKShareGeneratingFunction, CustomMPCv2SigningRound1GeneratingFunction, @@ -288,6 +291,16 @@ export default class BaseTssUtils extends MpcUtils implements ITssUtil throw new Error('Method not implemented.'); } + signEddsaMPCv2TssUsingExternalSigner( + params: TSSParams | TSSParamsForMessage, + externalSignerEddsaMPCv2SigningRound1Generator: CustomEddsaMPCv2SigningRound1GeneratingFunction, + externalSignerEddsaMPCv2SigningRound2Generator: CustomEddsaMPCv2SigningRound2GeneratingFunction, + externalSignerEddsaMPCv2SigningRound3Generator: CustomEddsaMPCv2SigningRound3GeneratingFunction, + requestType?: RequestType + ): Promise { + throw new Error('Method not implemented.'); + } + /** * Create an Commitment (User to BitGo) share from an unsigned transaction and private user signing material * EDDSA only diff --git a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts index 74aa27ea0c..87b20aaea7 100644 --- a/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts +++ b/modules/sdk-core/src/bitgo/utils/tss/baseTypes.ts @@ -92,6 +92,9 @@ export enum ShareType { MPCv2Round1 = 'MPCv2Round1', MPCv2Round2 = 'MPCv2Round2', MPCv2Round3 = 'MPCv2Round3', + EddsaMPCv2Round1 = 'EddsaMPCv2Round1', + EddsaMPCv2Round2 = 'EddsaMPCv2Round2', + EddsaMPCv2Round3 = 'EddsaMPCv2Round3', } export enum MPCType { @@ -189,6 +192,36 @@ export interface CustomMPCv2SigningRound3GeneratingFunction { }>; } +export interface CustomEddsaMPCv2SigningRound1GeneratingFunction { + (params: { txRequest: TxRequest }): Promise<{ + signatureShareRound1: SignatureShareRecord; + encryptedRound1Session: string; + userGpgPubKey: string; + encryptedUserGpgPrvKey: string; + }>; +} + +export interface CustomEddsaMPCv2SigningRound2GeneratingFunction { + (params: { + txRequest: TxRequest; + bitgoPublicGpgKey: string; + encryptedUserGpgPrvKey: string; + encryptedRound1Session: string; + }): Promise<{ + signatureShareRound2: SignatureShareRecord; + encryptedRound2Session: string; + }>; +} + +export interface CustomEddsaMPCv2SigningRound3GeneratingFunction { + (params: { + txRequest: TxRequest; + bitgoPublicGpgKey: string; + encryptedUserGpgPrvKey: string; + encryptedRound2Session: string; + }): Promise<{ signatureShareRound3: SignatureShareRecord }>; +} + export enum TokenType { ERC721 = 'ERC721', ERC1155 = 'ERC1155', diff --git a/modules/sdk-core/src/bitgo/wallet/iWallet.ts b/modules/sdk-core/src/bitgo/wallet/iWallet.ts index 848f465a77..f98e985d7d 100644 --- a/modules/sdk-core/src/bitgo/wallet/iWallet.ts +++ b/modules/sdk-core/src/bitgo/wallet/iWallet.ts @@ -18,6 +18,9 @@ import { IGoStakingWallet, IStakingWallet } from '../staking'; import { ITradingAccount } from '../trading'; import { CustomCommitmentGeneratingFunction, + CustomEddsaMPCv2SigningRound1GeneratingFunction, + CustomEddsaMPCv2SigningRound2GeneratingFunction, + CustomEddsaMPCv2SigningRound3GeneratingFunction, CustomGShareGeneratingFunction, CustomKShareGeneratingFunction, CustomMPCv2SigningRound1GeneratingFunction, @@ -323,6 +326,9 @@ export interface WalletSignTransactionOptions extends WalletSignBaseOptions { customMPCv2SigningRound1GenerationFunction?: CustomMPCv2SigningRound1GeneratingFunction; customMPCv2SigningRound2GenerationFunction?: CustomMPCv2SigningRound2GeneratingFunction; customMPCv2SigningRound3GenerationFunction?: CustomMPCv2SigningRound3GeneratingFunction; + customEddsaMPCv2SigningRound1GenerationFunction?: CustomEddsaMPCv2SigningRound1GeneratingFunction; + customEddsaMPCv2SigningRound2GenerationFunction?: CustomEddsaMPCv2SigningRound2GeneratingFunction; + customEddsaMPCv2SigningRound3GenerationFunction?: CustomEddsaMPCv2SigningRound3GeneratingFunction; apiVersion?: ApiVersion; multisigTypeVersion?: 'MPCv2'; walletPassphrase?: string;