@bitgo-beta/sdk-core 8.2.1-beta.213 → 8.2.1-beta.2131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +43 -31
- package/dist/src/account-lib/baseCoin/enum.d.ts +59 -5
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +112 -10
- package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/errors.js +8 -2
- package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/iface.js +26 -18
- package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
- package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/index.js +8 -5
- package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +88 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessage.js +154 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +45 -0
- package/dist/src/account-lib/baseCoin/messages/iface.d.ts +164 -0
- package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
- package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
- package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +28 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
- package/dist/src/account-lib/index.d.ts +0 -1
- package/dist/src/account-lib/index.d.ts.map +1 -1
- package/dist/src/account-lib/index.js +23 -10
- package/dist/src/account-lib/mpc/index.d.ts +1 -1
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/index.js +6 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -3
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +376 -354
- package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +46 -53
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
- package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
- package/dist/src/account-lib/mpc/tss/index.js +23 -9
- package/dist/src/account-lib/mpc/util.d.ts +7 -1
- package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
- package/dist/src/account-lib/mpc/util.js +24 -1
- package/dist/src/account-lib/staking/index.js +6 -2
- package/dist/src/account-lib/staking/utils.js +3 -3
- package/dist/src/account-lib/util/crypto.d.ts +8 -2
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
- package/dist/src/account-lib/util/crypto.js +69 -38
- package/dist/src/api/bip32path.js +2 -3
- package/dist/src/api/index.js +6 -2
- package/dist/src/api/types.d.ts +37 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +8 -1
- package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -1
- package/dist/src/bitgo/address-book/address-book.js +20 -12
- package/dist/src/bitgo/address-book/index.js +6 -2
- package/dist/src/bitgo/address-book/types.d.ts +36 -36
- package/dist/src/bitgo/address-book/types.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +123 -13
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +200 -16
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +337 -33
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +14 -3
- package/dist/src/bitgo/baseCoin/index.js +6 -2
- package/dist/src/bitgo/bip32util.d.ts +3 -16
- package/dist/src/bitgo/bip32util.d.ts.map +1 -1
- package/dist/src/bitgo/bip32util.js +4 -56
- package/dist/src/bitgo/bitcoin.d.ts +0 -1
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/bitcoin.js +26 -13
- package/dist/src/bitgo/bitgoBase.d.ts +17 -4
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
- package/dist/src/bitgo/bitgoBase.js +1 -1
- package/dist/src/bitgo/coinFactory.d.ts +24 -3
- package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
- package/dist/src/bitgo/coinFactory.js +35 -3
- package/dist/src/bitgo/config.d.ts +3 -101
- package/dist/src/bitgo/config.d.ts.map +1 -1
- package/dist/src/bitgo/config.js +26 -15
- package/dist/src/bitgo/defi/defiVault.d.ts +171 -0
- package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
- package/dist/src/bitgo/defi/defiVault.js +445 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts +101 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
- package/dist/src/bitgo/defi/iDefiVault.js +6 -0
- package/dist/src/bitgo/defi/index.d.ts +3 -0
- package/dist/src/bitgo/defi/index.d.ts.map +1 -0
- package/dist/src/bitgo/defi/index.js +22 -0
- package/dist/src/bitgo/ecdh.d.ts +0 -1
- package/dist/src/bitgo/ecdh.d.ts.map +1 -1
- package/dist/src/bitgo/ecdh.js +26 -13
- package/dist/src/bitgo/enterprise/enterprise.d.ts +9 -4
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +47 -21
- package/dist/src/bitgo/enterprise/enterprises.js +27 -13
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +5 -3
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
- package/dist/src/bitgo/enterprise/index.js +6 -2
- package/dist/src/bitgo/environments.d.ts +74 -3
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +417 -34
- package/dist/src/bitgo/errors.d.ts +193 -1
- package/dist/src/bitgo/errors.d.ts.map +1 -1
- package/dist/src/bitgo/errors.js +194 -3
- package/dist/src/bitgo/evm/evmUtils.d.ts +26 -0
- package/dist/src/bitgo/evm/evmUtils.d.ts.map +1 -0
- package/dist/src/bitgo/evm/evmUtils.js +50 -0
- package/dist/src/bitgo/index.d.ts +6 -1
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +32 -11
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
- package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
- package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
- package/dist/src/bitgo/internal/index.js +6 -2
- package/dist/src/bitgo/internal/internal.js +5 -6
- package/dist/src/bitgo/internal/keycard.d.ts +13 -8
- package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
- package/dist/src/bitgo/internal/keycard.js +63 -48
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts +14 -0
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/decryptKeychain.js +36 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts +180 -11
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/iKeychains.js +2 -2
- package/dist/src/bitgo/keychain/index.d.ts +1 -0
- package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/index.js +7 -2
- package/dist/src/bitgo/keychain/keychains.d.ts +106 -13
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +423 -72
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
- package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
- package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
- package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
- package/dist/src/bitgo/legacyBitcoin.js +27 -13
- package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
- package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
- package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
- package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
- package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
- package/dist/src/bitgo/market/index.js +6 -2
- package/dist/src/bitgo/market/markets.js +23 -9
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +5 -1
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
- package/dist/src/bitgo/pendingApproval/index.js +6 -2
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +246 -111
- package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
- package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
- package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
- package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
- package/dist/src/bitgo/proofs/index.d.ts +2 -0
- package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
- package/dist/src/bitgo/proofs/index.js +6 -0
- package/dist/src/bitgo/proofs/types.d.ts +80 -0
- package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
- package/dist/src/bitgo/proofs/types.js +80 -0
- package/dist/src/bitgo/recovery/index.js +6 -2
- package/dist/src/bitgo/recovery/initiate.d.ts +13 -3
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +49 -41
- package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +72 -0
- package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
- package/dist/src/bitgo/safe/derivableEd25519Pub.js +186 -0
- package/dist/src/bitgo/safe/iSafe.d.ts +124 -0
- package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
- package/dist/src/bitgo/safe/iSafe.js +3 -0
- package/dist/src/bitgo/safe/iSafes.d.ts +94 -0
- package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
- package/dist/src/bitgo/safe/iSafes.js +3 -0
- package/dist/src/bitgo/safe/index.d.ts +8 -0
- package/dist/src/bitgo/safe/index.d.ts.map +1 -0
- package/dist/src/bitgo/safe/index.js +24 -0
- package/dist/src/bitgo/safe/recovery.d.ts +192 -0
- package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
- package/dist/src/bitgo/safe/recovery.js +253 -0
- package/dist/src/bitgo/safe/rootCoin.d.ts +15 -0
- package/dist/src/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/src/bitgo/safe/rootCoin.js +47 -0
- package/dist/src/bitgo/safe/safe.d.ts +88 -0
- package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
- package/dist/src/bitgo/safe/safe.js +417 -0
- package/dist/src/bitgo/safe/safes.d.ts +102 -0
- package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
- package/dist/src/bitgo/safe/safes.js +281 -0
- package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
- package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
- package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
- package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
- package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
- package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
- package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
- package/dist/src/bitgo/staking/iStakingWallet.d.ts +161 -8
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
- package/dist/src/bitgo/staking/index.d.ts +3 -0
- package/dist/src/bitgo/staking/index.d.ts.map +1 -1
- package/dist/src/bitgo/staking/index.js +9 -2
- package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +153 -7
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +13 -1
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
- package/dist/src/bitgo/trading/index.d.ts +1 -0
- package/dist/src/bitgo/trading/index.d.ts.map +1 -1
- package/dist/src/bitgo/trading/index.js +7 -2
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
- package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
- package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/decrypt.js +23 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
- package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
- package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/encrypt.js +58 -0
- package/dist/src/bitgo/trading/network/index.d.ts +2 -0
- package/dist/src/bitgo/trading/network/index.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/index.js +8 -2
- package/dist/src/bitgo/trading/network/network.d.ts +4 -3
- package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/network.js +24 -27
- package/dist/src/bitgo/trading/network/types.d.ts +79 -46
- package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
- package/dist/src/bitgo/trading/network/types.js +1 -1
- package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
- package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/utils.js +54 -0
- package/dist/src/bitgo/trading/tradingAccount.d.ts +15 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/tradingAccount.js +55 -7
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +49 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.js +92 -0
- package/dist/src/bitgo/tss/common.d.ts +50 -6
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +139 -17
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +42 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +104 -0
- package/dist/src/bitgo/tss/eddsa/index.js +23 -9
- package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
- package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/index.d.ts +3 -2
- package/dist/src/bitgo/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/tss/index.js +26 -10
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +138 -0
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +255 -0
- package/dist/src/bitgo/tss/types.d.ts +3 -3
- package/dist/src/bitgo/tss/types.d.ts.map +1 -1
- package/dist/src/bitgo/tss/types.js +2 -2
- package/dist/src/bitgo/types.d.ts +3 -3
- package/dist/src/bitgo/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +10 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +76 -14
- package/dist/src/bitgo/utils/codecProps.js +24 -11
- package/dist/src/bitgo/utils/codecs.d.ts +11 -0
- package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
- package/dist/src/bitgo/utils/codecs.js +59 -0
- package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
- package/dist/src/bitgo/utils/decode.js +30 -16
- package/dist/src/bitgo/utils/index.d.ts +5 -2
- package/dist/src/bitgo/utils/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/index.js +28 -11
- package/dist/src/bitgo/utils/messageTypes.d.ts +46 -0
- package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
- package/dist/src/bitgo/utils/messageTypes.js +23 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/mpcUtils.js +210 -14
- package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
- package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
- package/dist/src/bitgo/utils/notEmpty.js +7 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -7
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +79 -62
- package/dist/src/bitgo/utils/postWithCodec.js +2 -3
- package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
- package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/promise-utils.js +2 -3
- package/dist/src/bitgo/utils/siws.d.ts +17 -0
- package/dist/src/bitgo/utils/siws.d.ts.map +1 -0
- package/dist/src/bitgo/utils/siws.js +171 -0
- package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
- package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/transactionUtils.js +29 -0
- package/dist/src/bitgo/utils/triple.d.ts +1 -1
- package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
- package/dist/src/bitgo/utils/triple.js +2 -3
- package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
- package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/addressVerification.js +93 -0
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +99 -17
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +322 -45
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +478 -55
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +25 -51
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +173 -246
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +241 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1082 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +17 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +39 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +65 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +439 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +5 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +11 -2
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
- package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +151 -0
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +119 -0
- package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
- package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +43 -11
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +261 -96
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +261 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +994 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +14 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +29 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +44 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +268 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/index.js +30 -8
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +15 -7
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +75 -0
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
- package/dist/src/bitgo/utils/tss/index.d.ts +7 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +31 -10
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
- package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
- package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
- package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +42 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/recipientUtils.js +179 -0
- package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
- package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +126 -0
- package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +27 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +43 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +45 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
- package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts +8 -0
- package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/serializedTxHexVerify.js +13 -0
- package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
- package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
- package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
- package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
- package/dist/src/bitgo/utils/txRequest.js +49 -0
- package/dist/src/bitgo/utils/util.js +24 -10
- package/dist/src/bitgo/utils/wallet.d.ts +7 -0
- package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
- package/dist/src/bitgo/utils/wallet.js +48 -0
- package/dist/src/bitgo/v1Wallets.d.ts +170 -0
- package/dist/src/bitgo/v1Wallets.d.ts.map +1 -0
- package/dist/src/bitgo/v1Wallets.js +3 -0
- package/dist/src/bitgo/wallet/BuildParams.d.ts +92 -1
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +97 -11
- package/dist/src/bitgo/wallet/iWallet.d.ts +647 -33
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallet.js +1 -1
- package/dist/src/bitgo/wallet/iWallets.d.ts +311 -16
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +84 -3
- package/dist/src/bitgo/wallet/index.d.ts +1 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/index.js +7 -2
- package/dist/src/bitgo/wallet/safeKeychain.d.ts +75 -0
- package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/safeKeychain.js +152 -0
- package/dist/src/bitgo/wallet/wallet.d.ts +410 -27
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +2525 -510
- package/dist/src/bitgo/wallet/wallets.d.ts +99 -4
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +1256 -156
- package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
- package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
- package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
- package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
- package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
- package/dist/src/bitgo/walletUtil/index.js +19 -0
- package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
- package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
- package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
- package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
- package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
- package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
- package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
- package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
- package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
- package/dist/src/bitgo/webauthn/base64url.d.ts +16 -0
- package/dist/src/bitgo/webauthn/base64url.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/base64url.js +27 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts +18 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.js +26 -0
- package/dist/src/bitgo/webauthn/derivePassword.d.ts +11 -0
- package/dist/src/bitgo/webauthn/derivePassword.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/derivePassword.js +16 -0
- package/dist/src/bitgo/webauthn/index.d.ts +5 -0
- package/dist/src/bitgo/webauthn/index.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/index.js +21 -0
- package/dist/src/bitgo/webauthn/types.d.ts +18 -0
- package/dist/src/bitgo/webauthn/types.d.ts.map +1 -0
- package/dist/src/bitgo/webauthn/types.js +3 -0
- package/dist/src/bitgo/webhook/index.js +6 -2
- package/dist/src/bitgo/webhook/webhooks.js +23 -9
- package/dist/src/coins/fiat.d.ts +45 -0
- package/dist/src/coins/fiat.d.ts.map +1 -0
- package/dist/src/coins/fiat.js +94 -0
- package/dist/src/coins/index.d.ts +1 -6
- package/dist/src/coins/index.d.ts.map +1 -1
- package/dist/src/coins/index.js +7 -8
- package/dist/src/coins/ofc.d.ts +21 -2
- package/dist/src/coins/ofc.d.ts.map +1 -1
- package/dist/src/coins/ofc.js +29 -3
- package/dist/src/coins/ofcToken.d.ts +15 -4
- package/dist/src/coins/ofcToken.d.ts.map +1 -1
- package/dist/src/coins/ofcToken.js +43 -5
- package/dist/src/coins/susd.d.ts +3 -2
- package/dist/src/coins/susd.d.ts.map +1 -1
- package/dist/src/coins/susd.js +5 -1
- package/dist/src/common.js +27 -13
- package/dist/src/index.d.ts +9 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +40 -11
- package/dist/src/lightning.d.ts +20 -0
- package/dist/src/lightning.d.ts.map +1 -0
- package/dist/src/lightning.js +13 -0
- package/dist/src/units.js +5 -6
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
- package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
- package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
- package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
- package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
- package/dist/test/unit/account-lib/mpc/util.js +53 -0
- package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
- package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
- package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
- package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
- package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
- package/dist/test/unit/bitgo/defi/defiVault.js +863 -0
- package/dist/test/unit/bitgo/environment.d.ts +2 -0
- package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
- package/dist/test/unit/bitgo/environment.js +38 -0
- package/dist/test/unit/bitgo/errors.d.ts +2 -0
- package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
- package/dist/test/unit/bitgo/errors.js +276 -0
- package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
- package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
- package/dist/test/unit/bitgo/keychain/keychains.js +426 -0
- package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
- package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
- package/dist/test/unit/bitgo/recovery/initiate.js +159 -0
- package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +257 -0
- package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +72 -0
- package/dist/test/unit/bitgo/safe/fixtures/safeBip44Vectors.json +319 -0
- package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/recovery.js +647 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
- package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safe.js +607 -0
- package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safeBip44Vectors.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safeBip44Vectors.js +189 -0
- package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safeDerivation.js +37 -0
- package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
- package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
- package/dist/test/unit/bitgo/safe/safes.js +376 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
- package/dist/test/unit/bitgo/trading/network/network.test.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/network/network.test.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/network/network.test.js +136 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
- package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
- package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
- package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
- package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
- package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
- package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
- package/dist/test/unit/bitgo/tss/common.js +84 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +370 -0
- package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -4
- package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.js +109 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.js +106 -0
- package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
- package/dist/test/unit/bitgo/utils/postWithCodec.js +24 -10
- package/dist/test/unit/bitgo/utils/siws.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/siws.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/siws.js +206 -0
- package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/addressVerification.js +251 -0
- package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +348 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1246 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +2410 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +553 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +376 -0
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +498 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +80 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +279 -0
- package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
- package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
- package/dist/test/unit/bitgo/utils/wallet.d.ts +2 -0
- package/dist/test/unit/bitgo/utils/wallet.d.ts.map +1 -0
- package/dist/test/unit/bitgo/utils/wallet.js +55 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/BuildParams.js +167 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +79 -9
- package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
- package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
- package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
- package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts +5 -0
- package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +651 -0
- package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
- package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/safeShareWallet.js +304 -0
- package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/tokenApproval.js +210 -0
- package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +69 -0
- package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +304 -0
- package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +853 -0
- package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +150 -0
- package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
- package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
- package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +201 -0
- package/dist/test/unit/coins/ofc.d.ts +2 -0
- package/dist/test/unit/coins/ofc.d.ts.map +1 -0
- package/dist/test/unit/coins/ofc.js +124 -0
- package/dist/test/unit/lightning.d.ts +2 -0
- package/dist/test/unit/lightning.d.ts.map +1 -0
- package/dist/test/unit/lightning.js +23 -0
- package/dist/test/unit/units.d.ts.map +1 -1
- package/dist/test/unit/units.js +64 -64
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +25 -22
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -1866
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -49
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -87
- package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
- package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/iLightning.js +0 -106
- package/dist/src/bitgo/lightning/index.d.ts +0 -5
- package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/index.js +0 -17
- package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
- package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightning.js +0 -111
- package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
- package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
- package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
- package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
- package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
- package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/blsUtils.js +0 -237
- package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
- package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
- package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
- package/dist/src/coins/fiateur.d.ts +0 -31
- package/dist/src/coins/fiateur.d.ts.map +0 -1
- package/dist/src/coins/fiateur.js +0 -57
- package/dist/src/coins/fiatgbp.d.ts +0 -31
- package/dist/src/coins/fiatgbp.d.ts.map +0 -1
- package/dist/src/coins/fiatgbp.js +0 -57
- package/dist/src/coins/fiatusd.d.ts +0 -31
- package/dist/src/coins/fiatusd.d.ts.map +0 -1
- package/dist/src/coins/fiatusd.js +0 -57
- package/dist/src/coins/tfiateur.d.ts +0 -11
- package/dist/src/coins/tfiateur.d.ts.map +0 -1
- package/dist/src/coins/tfiateur.js +0 -17
- package/dist/src/coins/tfiatgbp.d.ts +0 -11
- package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
- package/dist/src/coins/tfiatgbp.js +0 -17
- package/dist/src/coins/tfiatusd.d.ts +0 -11
- package/dist/src/coins/tfiatusd.d.ts.map +0 -1
- package/dist/src/coins/tfiatusd.js +0 -17
- package/dist/src/openssl/index.d.ts +0 -5
- package/dist/src/openssl/index.d.ts.map +0 -1
- package/dist/src/openssl/index.js +0 -9
- package/dist/test/unit/openssl.d.ts +0 -2
- package/dist/test/unit/openssl.d.ts.map +0 -1
- package/dist/test/unit/openssl.js +0 -39
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.parseEddsaUserSigningMaterial = parseEddsaUserSigningMaterial;
|
|
40
|
+
exports.eddsaUserSigningMaterialMatchesCommonKeychain = eddsaUserSigningMaterialMatchesCommonKeychain;
|
|
41
|
+
/**
|
|
42
|
+
* @prettier
|
|
43
|
+
*/
|
|
44
|
+
const t = __importStar(require("io-ts"));
|
|
45
|
+
const tss_1 = __importDefault(require("../../../account-lib/mpc/tss"));
|
|
46
|
+
const HEX_32_BYTES = /^[0-9a-f]{64}$/i;
|
|
47
|
+
/** 32-byte hex string; every hex field of genuine MPCv1 signing material is fixed-width 32 bytes. */
|
|
48
|
+
const Hex32Bytes = new t.Type('Hex32Bytes', (u) => typeof u === 'string' && HEX_32_BYTES.test(u), (u, c) => (typeof u === 'string' && HEX_32_BYTES.test(u) ? t.success(u) : t.failure(u, c)), t.identity);
|
|
49
|
+
const UShareCodec = t.type({
|
|
50
|
+
i: t.number,
|
|
51
|
+
t: t.number,
|
|
52
|
+
n: t.number,
|
|
53
|
+
y: Hex32Bytes,
|
|
54
|
+
seed: Hex32Bytes,
|
|
55
|
+
chaincode: Hex32Bytes,
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* `v` is the optional VSS commitment: absent on shares created without verifiable secret sharing.
|
|
59
|
+
* It is declared through `t.partial` rather than a union with `undefined` so that decoding an
|
|
60
|
+
* absent `v` does not materialize it as an own property on the share handed to `keyCombine`.
|
|
61
|
+
*/
|
|
62
|
+
const YShareCodec = t.intersection([
|
|
63
|
+
t.type({
|
|
64
|
+
i: t.number,
|
|
65
|
+
j: t.number,
|
|
66
|
+
y: Hex32Bytes,
|
|
67
|
+
u: Hex32Bytes,
|
|
68
|
+
chaincode: Hex32Bytes,
|
|
69
|
+
}),
|
|
70
|
+
t.partial({ v: Hex32Bytes }),
|
|
71
|
+
]);
|
|
72
|
+
const UserSigningMaterialCodec = t.type({
|
|
73
|
+
uShare: UShareCodec,
|
|
74
|
+
bitgoYShare: YShareCodec,
|
|
75
|
+
backupYShare: YShareCodec,
|
|
76
|
+
});
|
|
77
|
+
/**
|
|
78
|
+
* Maps a decode failure to a constant message. Never interpolates `error.value`: the input is
|
|
79
|
+
* private key material. This is also why the codecs call `t.failure` without a message and why
|
|
80
|
+
* the `validationErrors` reporter in `utils/decode.ts` is not used — both embed the failing value.
|
|
81
|
+
*/
|
|
82
|
+
function toInvalidKeyMessage(errors) {
|
|
83
|
+
const [error] = errors;
|
|
84
|
+
// the head of the context is the root codec itself, so the remaining keys are the field path.
|
|
85
|
+
// purely numeric keys are intersection/union member indices rather than field names.
|
|
86
|
+
const segments = error.context
|
|
87
|
+
.slice(1)
|
|
88
|
+
.map((entry) => entry.key)
|
|
89
|
+
.filter((key) => !/^\d+$/.test(key));
|
|
90
|
+
if (segments.length === 0) {
|
|
91
|
+
return 'Invalid user key - signing material is not an object';
|
|
92
|
+
}
|
|
93
|
+
if (segments.length === 1 && (error.value === undefined || error.value === null)) {
|
|
94
|
+
return `Invalid user key - missing ${segments[0]}`;
|
|
95
|
+
}
|
|
96
|
+
return `Invalid user key - ${segments[0]} is not a valid share`;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Parses the user TSS EdDSA signing material that a client passes as `prv` when signing,
|
|
100
|
+
* and rejects anything that does not decode as user signing material.
|
|
101
|
+
*
|
|
102
|
+
* Decoding is a shape check only, but it keeps malformed input away from the combine routine,
|
|
103
|
+
* which throws raw, input-interpolating errors for malformed shares.
|
|
104
|
+
*
|
|
105
|
+
* The input is private key material, so no error message may interpolate any part of it.
|
|
106
|
+
* In particular, JSON.parse errors on Node >= 20 include the raw input in their message,
|
|
107
|
+
* which is why parse failures are rethrown with a constant message.
|
|
108
|
+
*
|
|
109
|
+
* @param prv - stringified user signing material (`uShare`, `bitgoYShare`, `backupYShare`)
|
|
110
|
+
*/
|
|
111
|
+
function parseEddsaUserSigningMaterial(prv) {
|
|
112
|
+
let parsed;
|
|
113
|
+
try {
|
|
114
|
+
parsed = JSON.parse(prv);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
throw new Error('Invalid user key - could not parse signing material');
|
|
118
|
+
}
|
|
119
|
+
const decoded = UserSigningMaterialCodec.decode(parsed);
|
|
120
|
+
if (decoded._tag === 'Left') {
|
|
121
|
+
throw new Error(toInvalidKeyMessage(decoded.left));
|
|
122
|
+
}
|
|
123
|
+
return decoded.right;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Checks that `uShare.y` is the public point actually derived from `uShare.seed`.
|
|
127
|
+
*
|
|
128
|
+
* `keyCombine` derives the private scalar from the seed but reconstructs the common keychain from
|
|
129
|
+
* the declared `y` fields, so it never compares the two. Without this check a caller who knows
|
|
130
|
+
* only the wallet's public commonKeychain can submit genuine public fields alongside a seed they
|
|
131
|
+
* do not own and still verify. Re-running `keyShare` with the share's own seed and chaincode
|
|
132
|
+
* reproduces the derivation and yields the `y` the seed really commits to.
|
|
133
|
+
*/
|
|
134
|
+
function uShareSeedMatchesY(MPC, uShare) {
|
|
135
|
+
const seedchain = Buffer.concat([Buffer.from(uShare.seed, 'hex'), Buffer.from(uShare.chaincode, 'hex')]);
|
|
136
|
+
let derived;
|
|
137
|
+
try {
|
|
138
|
+
derived = MPC.keyShare(uShare.i, uShare.t, uShare.n, seedchain).uShare;
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
// keyShare rejects an out-of-range index or threshold, which makes the share unusable
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
return derived.y === uShare.y;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Verifies that user TSS EdDSA signing material (`prv`) recombines to a given commonKeychain.
|
|
148
|
+
*
|
|
149
|
+
* Recombines the user's share with the BitGo and backup Y shares — the same computation the
|
|
150
|
+
* SDK performs when creating the user keychain or signing — and compares the result against
|
|
151
|
+
* the wallet's commonKeychain. Returns false rather than throwing when the keys do not match.
|
|
152
|
+
* Shares that pass the shape check but are cryptographically inconsistent are rejected with
|
|
153
|
+
* a constant message: the combine routine throws raw errors, some of which interpolate
|
|
154
|
+
* submitter-controlled fields, which must not surface through the API.
|
|
155
|
+
*
|
|
156
|
+
* Recombination alone is not proof of possession, so two further checks run first. The seed is
|
|
157
|
+
* bound to `uShare.y`, and the Y shares must carry their VSS commitment `v` — `keyCombine`
|
|
158
|
+
* verifies a Y share's secret `u` only when `v` is present, so material without `v` cannot be
|
|
159
|
+
* verified at all and throws a distinct error rather than being judged a non-match. Genuine
|
|
160
|
+
* shares produced by `keyShare` always carry `v`.
|
|
161
|
+
*
|
|
162
|
+
* A true result is a consistency check for a caller inspecting its own material, not proof of
|
|
163
|
+
* possession, and must never be used as an authorization signal: a caller who knows only the
|
|
164
|
+
* wallet's public commonKeychain can construct material that passes — an `uShare` whose seed
|
|
165
|
+
* matches its `y`, plus Y shares with a chosen secret `u` and the `v` solved from it, whose
|
|
166
|
+
* `y` values sum to the common key.
|
|
167
|
+
*
|
|
168
|
+
* @param params.prv - stringified user signing material, as passed as `prv` when signing
|
|
169
|
+
* @param params.commonKeychain - the wallet's user keychain commonKeychain
|
|
170
|
+
*/
|
|
171
|
+
async function eddsaUserSigningMaterialMatchesCommonKeychain(params) {
|
|
172
|
+
const signingMaterial = parseEddsaUserSigningMaterial(params.prv);
|
|
173
|
+
const MPC = await tss_1.default.initialize();
|
|
174
|
+
if (!uShareSeedMatchesY(MPC, signingMaterial.uShare)) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
// keyCombine verifies a Y share's secret `u` against its commitment only when `v` is present,
|
|
178
|
+
// so material without `v` cannot be verified at all; reject it distinctly instead of judging
|
|
179
|
+
// it a non-match, which would misreport genuine material that lacks the commitment
|
|
180
|
+
if (signingMaterial.bitgoYShare.v === undefined || signingMaterial.backupYShare.v === undefined) {
|
|
181
|
+
throw new Error('Unable to verify key - signing material has no VSS commitment');
|
|
182
|
+
}
|
|
183
|
+
let combinedKey;
|
|
184
|
+
try {
|
|
185
|
+
combinedKey = MPC.keyCombine(signingMaterial.uShare, [signingMaterial.bitgoYShare, signingMaterial.backupYShare]);
|
|
186
|
+
}
|
|
187
|
+
catch (e) {
|
|
188
|
+
throw new Error('Invalid user key - could not combine signing material');
|
|
189
|
+
}
|
|
190
|
+
return combinedKey.pShare.y + combinedKey.pShare.chaincode === params.commonKeychain;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5VmVyaWZpY2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9rZXlWZXJpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtRkEsc0VBWUM7QUFnREQsc0dBc0JDO0FBcktEOztHQUVHO0FBQ0gseUNBQTJCO0FBQzNCLHVFQUFpRTtBQUdqRSxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztBQUV2QyxxR0FBcUc7QUFDckcsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUMzQixZQUFZLEVBQ1osQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNqRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFGLENBQUMsQ0FBQyxRQUFRLENBQ1gsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1gsQ0FBQyxFQUFFLFVBQVU7SUFDYixJQUFJLEVBQUUsVUFBVTtJQUNoQixTQUFTLEVBQUUsVUFBVTtDQUN0QixDQUFDLENBQUM7QUFFSDs7OztHQUlHO0FBQ0gsTUFBTSxX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QUFDLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCBFZGRzYSwgeyBLZXlDb21iaW5lIH0gZnJvbSAnLi4vLi4vLi4vYWNjb3VudC1saWIvbXBjL3Rzcyc7XG5pbXBvcnQgeyBVc2VyU2lnbmluZ01hdGVyaWFsIH0gZnJvbSAnLi4vLi4vdHNzL2VkZHNhL3R5cGVzJztcblxuY29uc3QgSEVYXzMyX0JZVEVTID0gL15bMC05YS1mXXs2NH0kL2k7XG5cbi8qKiAzMi1ieXRlIGhleCBzdHJpbmc7IGV2ZXJ5IGhleCBmaWVsZCBvZiBnZW51aW5lIE1QQ3YxIHNpZ25pbmcgbWF0ZXJpYWwgaXMgZml4ZWQtd2lkdGggMzIgYnl0ZXMuICovXG5jb25zdCBIZXgzMkJ5dGVzID0gbmV3IHQuVHlwZTxzdHJpbmcsIHN0cmluZywgdW5rbm93bj4oXG4gICdIZXgzMkJ5dGVzJyxcbiAgKHUpOiB1IGlzIHN0cmluZyA9PiB0eXBlb2YgdSA9PT0gJ3N0cmluZycgJiYgSEVYXzMyX0JZVEVTLnRlc3QodSksXG4gICh1LCBjKSA9PiAodHlwZW9mIHUgPT09ICdzdHJpbmcnICYmIEhFWF8zMl9CWVRFUy50ZXN0KHUpID8gdC5zdWNjZXNzKHUpIDogdC5mYWlsdXJlKHUsIGMpKSxcbiAgdC5pZGVudGl0eVxuKTtcblxuY29uc3QgVVNoYXJlQ29kZWMgPSB0LnR5cGUoe1xuICBpOiB0Lm51bWJlcixcbiAgdDogdC5udW1iZXIsXG4gIG46IHQubnVtYmVyLFxuICB5OiBIZXgzMkJ5dGVzLFxuICBzZWVkOiBIZXgzMkJ5dGVzLFxuICBjaGFpbmNvZGU6IEhleDMyQnl0ZXMsXG59KTtcblxuLyoqXG4gKiBgdmAgaXMgdGhlIG9wdGlvbmFsIFZTUyBjb21taXRtZW50OiBhYnNlbnQgb24gc2hhcmVzIGNyZWF0ZWQgd2l0aG91dCB2ZXJpZmlhYmxlIHNlY3JldCBzaGFyaW5nLlxuICogSXQgaXMgZGVjbGFyZWQgdGhyb3VnaCBgdC5wYXJ0aWFsYCByYXRoZXIgdGhhbiBhIHVuaW9uIHdpdGggYHVuZGVmaW5lZGAgc28gdGhhdCBkZWNvZGluZyBhblxuICogYWJzZW50IGB2YCBkb2VzIG5vdCBtYXRlcmlhbGl6ZSBpdCBhcyBhbiBvd24gcHJvcGVydHkgb24gdGhlIHNoYXJlIGhhbmRlZCB0byBga2V5Q29tYmluZWAuXG4gKi9cbmNvbnN0IFlTaGFyZUNvZGVjID0gdC5pbnRlcnNlY3Rpb24oW1xuICB0LnR5cGUoe1xuICAgIGk6IHQubnVtYmVyLFxuICAgIGo6IHQubnVtYmVyLFxuICAgIHk6IEhleDMyQnl0ZXMsXG4gICAgdTogSGV4MzJCeXRlcyxcbiAgICBjaGFpbmNvZGU6IEhleDMyQnl0ZXMsXG4gIH0pLFxuICB0LnBhcnRpYWwoeyB2OiBIZXgzMkJ5dGVzIH0pLFxuXSk7XG5cbmNvbnN0IFVzZXJTaWduaW5nTWF0ZXJpYWxDb2RlYyA9IHQudHlwZSh7XG4gIHVTaGFyZTogVVNoYXJlQ29kZWMsXG4gIGJpdGdvWVNoYXJlOiBZU2hhcmVDb2RlYyxcbiAgYmFja3VwWVNoYXJlOiBZU2hhcmVDb2RlYyxcbn0pO1xuXG4vKipcbiAqIE1hcHMgYSBkZWNvZGUgZmFpbHVyZSB0byBhIGNvbnN0YW50IG1lc3NhZ2UuIE5ldmVyIGludGVycG9sYXRlcyBgZXJyb3IudmFsdWVgOiB0aGUgaW5wdXQgaXNcbiAqIHByaXZhdGUga2V5IG1hdGVyaWFsLiBUaGlzIGlzIGFsc28gd2h5IHRoZSBjb2RlY3MgY2FsbCBgdC5mYWlsdXJlYCB3aXRob3V0IGEgbWVzc2FnZSBhbmQgd2h5XG4gKiB0aGUgYHZhbGlkYXRpb25FcnJvcnNgIHJlcG9ydGVyIGluIGB1dGlscy9kZWNvZGUudHNgIGlzIG5vdCB1c2VkIOKAlCBib3RoIGVtYmVkIHRoZSBmYWlsaW5nIHZhbHVlLlxuICovXG5mdW5jdGlvbiB0b0ludmFsaWRLZXlNZXNzYWdlKGVycm9yczogdC5FcnJvcnMpOiBzdHJpbmcge1xuICBjb25zdCBbZXJyb3JdID0gZXJyb3JzO1xuICAvLyB0aGUgaGVhZCBvZiB0aGUgY29udGV4dCBpcyB0aGUgcm9vdCBjb2RlYyBpdHNlbGYsIHNvIHRoZSByZW1haW5pbmcga2V5cyBhcmUgdGhlIGZpZWxkIHBhdGguXG4gIC8vIHB1cmVseSBudW1lcmljIGtleXMgYXJlIGludGVyc2VjdGlvbi91bmlvbiBtZW1iZXIgaW5kaWNlcyByYXRoZXIgdGhhbiBmaWVsZCBuYW1lcy5cbiAgY29uc3Qgc2VnbWVudHMgPSBlcnJvci5jb250ZXh0XG4gICAgLnNsaWNlKDEpXG4gICAgLm1hcCgoZW50cnkpID0+IGVudHJ5LmtleSlcbiAgICAuZmlsdGVyKChrZXkpID0+ICEvXlxcZCskLy50ZXN0KGtleSkpO1xuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdJbnZhbGlkIHVzZXIga2V5IC0gc2lnbmluZyBtYXRlcmlhbCBpcyBub3QgYW4gb2JqZWN0JztcbiAgfVxuICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAxICYmIChlcnJvci52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVycm9yLnZhbHVlID09PSBudWxsKSkge1xuICAgIHJldHVybiBgSW52YWxpZCB1c2VyIGtleSAtIG1pc3NpbmcgJHtzZWdtZW50c1swXX1gO1xuICB9XG4gIHJldHVybiBgSW52YWxpZCB1c2VyIGtleSAtICR7c2VnbWVudHNbMF19IGlzIG5vdCBhIHZhbGlkIHNoYXJlYDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIHVzZXIgVFNTIEVkRFNBIHNpZ25pbmcgbWF0ZXJpYWwgdGhhdCBhIGNsaWVudCBwYXNzZXMgYXMgYHBydmAgd2hlbiBzaWduaW5nLFxuICogYW5kIHJlamVjdHMgYW55dGhpbmcgdGhhdCBkb2VzIG5vdCBkZWNvZGUgYXMgdXNlciBzaWduaW5nIG1hdGVyaWFsLlxuICpcbiAqIERlY29kaW5nIGlzIGEgc2hhcGUgY2hlY2sgb25seSwgYnV0IGl0IGtlZXBzIG1hbGZvcm1lZCBpbnB1dCBhd2F5IGZyb20gdGhlIGNvbWJpbmUgcm91dGluZSxcbiAqIHdoaWNoIHRocm93cyByYXcsIGlucHV0LWludGVycG9sYXRpbmcgZXJyb3JzIGZvciBtYWxmb3JtZWQgc2hhcmVzLlxuICpcbiAqIFRoZSBpbnB1dCBpcyBwcml2YXRlIGtleSBtYXRlcmlhbCwgc28gbm8gZXJyb3IgbWVzc2FnZSBtYXkgaW50ZXJwb2xhdGUgYW55IHBhcnQgb2YgaXQuXG4gKiBJbiBwYXJ0aWN1bGFyLCBKU09OLnBhcnNlIGVycm9ycyBvbiBOb2RlID49IDIwIGluY2x1ZGUgdGhlIHJhdyBpbnB1dCBpbiB0aGVpciBtZXNzYWdlLFxuICogd2hpY2ggaXMgd2h5IHBhcnNlIGZhaWx1cmVzIGFyZSByZXRocm93biB3aXRoIGEgY29uc3RhbnQgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcHJ2IC0gc3RyaW5naWZpZWQgdXNlciBzaWduaW5nIG1hdGVyaWFsIChgdVNoYXJlYCwgYGJpdGdvWVNoYXJlYCwgYGJhY2t1cFlTaGFyZWApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUVkZHNhVXNlclNpZ25pbmdNYXRlcmlhbChwcnY6IHN0cmluZyk6IFVzZXJTaWduaW5nTWF0ZXJpYWwge1xuICBsZXQgcGFyc2VkOiB1bmtub3duO1xuICB0cnkge1xuICAgIHBhcnNlZCA9IEpTT04ucGFyc2UocHJ2KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleSAtIGNvdWxkIG5vdCBwYXJzZSBzaWduaW5nIG1hdGVyaWFsJyk7XG4gIH1cbiAgY29uc3QgZGVjb2RlZCA9IFVzZXJTaWduaW5nTWF0ZXJpYWxDb2RlYy5kZWNvZGUocGFyc2VkKTtcbiAgaWYgKGRlY29kZWQuX3RhZyA9PT0gJ0xlZnQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHRvSW52YWxpZEtleU1lc3NhZ2UoZGVjb2RlZC5sZWZ0KSk7XG4gIH1cbiAgcmV0dXJuIGRlY29kZWQucmlnaHQgYXMgVXNlclNpZ25pbmdNYXRlcmlhbDtcbn1cblxuLyoqXG4gKiBDaGVja3MgdGhhdCBgdVNoYXJlLnlgIGlzIHRoZSBwdWJsaWMgcG9pbnQgYWN0dWFsbHkgZGVyaXZlZCBmcm9tIGB1U2hhcmUuc2VlZGAuXG4gKlxuICogYGtleUNvbWJpbmVgIGRlcml2ZXMgdGhlIHByaXZhdGUgc2NhbGFyIGZyb20gdGhlIHNlZWQgYnV0IHJlY29uc3RydWN0cyB0aGUgY29tbW9uIGtleWNoYWluIGZyb21cbiAqIHRoZSBkZWNsYXJlZCBgeWAgZmllbGRzLCBzbyBpdCBuZXZlciBjb21wYXJlcyB0aGUgdHdvLiBXaXRob3V0IHRoaXMgY2hlY2sgYSBjYWxsZXIgd2hvIGtub3dzXG4gKiBvbmx5IHRoZSB3YWxsZXQncyBwdWJsaWMgY29tbW9uS2V5Y2hhaW4gY2FuIHN1Ym1pdCBnZW51aW5lIHB1YmxpYyBmaWVsZHMgYWxvbmdzaWRlIGEgc2VlZCB0aGV5XG4gKiBkbyBub3Qgb3duIGFuZCBzdGlsbCB2ZXJpZnkuIFJlLXJ1bm5pbmcgYGtleVNoYXJlYCB3aXRoIHRoZSBzaGFyZSdzIG93biBzZWVkIGFuZCBjaGFpbmNvZGVcbiAqIHJlcHJvZHVjZXMgdGhlIGRlcml2YXRpb24gYW5kIHlpZWxkcyB0aGUgYHlgIHRoZSBzZWVkIHJlYWxseSBjb21taXRzIHRvLlxuICovXG5mdW5jdGlvbiB1U2hhcmVTZWVkTWF0Y2hlc1koTVBDOiBFZGRzYSwgdVNoYXJlOiBVc2VyU2lnbmluZ01hdGVyaWFsWyd1U2hhcmUnXSk6IGJvb2xlYW4ge1xuICBjb25zdCBzZWVkY2hhaW4gPSBCdWZmZXIuY29uY2F0KFtCdWZmZXIuZnJvbSh1U2hhcmUuc2VlZCwgJ2hleCcpLCBCdWZmZXIuZnJvbSh1U2hhcmUuY2hhaW5jb2RlLCAnaGV4JyldKTtcbiAgbGV0IGRlcml2ZWQ6IFVzZXJTaWduaW5nTWF0ZXJpYWxbJ3VTaGFyZSddO1xuICB0cnkge1xuICAgIGRlcml2ZWQgPSBNUEMua2V5U2hhcmUodVNoYXJlLmksIHVTaGFyZS50LCB1U2hhcmUubiwgc2VlZGNoYWluKS51U2hhcmU7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBrZXlTaGFyZSByZWplY3RzIGFuIG91dC1vZi1yYW5nZSBpbmRleCBvciB0aHJlc2hvbGQsIHdoaWNoIG1ha2VzIHRoZSBzaGFyZSB1bnVzYWJsZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZGVyaXZlZC55ID09PSB1U2hhcmUueTtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB0aGF0IHVzZXIgVFNTIEVkRFNBIHNpZ25pbmcgbWF0ZXJpYWwgKGBwcnZgKSByZWNvbWJpbmVzIHRvIGEgZ2l2ZW4gY29tbW9uS2V5Y2hhaW4uXG4gKlxuICogUmVjb21iaW5lcyB0aGUgdXNlcidzIHNoYXJlIHdpdGggdGhlIEJpdEdvIGFuZCBiYWNrdXAgWSBzaGFyZXMg4oCUIHRoZSBzYW1lIGNvbXB1dGF0aW9uIHRoZVxuICogU0RLIHBlcmZvcm1zIHdoZW4gY3JlYXRpbmcgdGhlIHVzZXIga2V5Y2hhaW4gb3Igc2lnbmluZyDigJQgYW5kIGNvbXBhcmVzIHRoZSByZXN1bHQgYWdhaW5zdFxuICogdGhlIHdhbGxldCdzIGNvbW1vbktleWNoYWluLiBSZXR1cm5zIGZhbHNlIHJhdGhlciB0aGFuIHRocm93aW5nIHdoZW4gdGhlIGtleXMgZG8gbm90IG1hdGNoLlxuICogU2hhcmVzIHRoYXQgcGFzcyB0aGUgc2hhcGUgY2hlY2sgYnV0IGFyZSBjcnlwdG9ncmFwaGljYWxseSBpbmNvbnNpc3RlbnQgYXJlIHJlamVjdGVkIHdpdGhcbiAqIGEgY29uc3RhbnQgbWVzc2FnZTogdGhlIGNvbWJpbmUgcm91dGluZSB0aHJvd3MgcmF3IGVycm9ycywgc29tZSBvZiB3aGljaCBpbnRlcnBvbGF0ZVxuICogc3VibWl0dGVyLWNvbnRyb2xsZWQgZmllbGRzLCB3aGljaCBtdXN0IG5vdCBzdXJmYWNlIHRocm91Z2ggdGhlIEFQSS5cbiAqXG4gKiBSZWNvbWJpbmF0aW9uIGFsb25lIGlzIG5vdCBwcm9vZiBvZiBwb3NzZXNzaW9uLCBzbyB0d28gZnVydGhlciBjaGVja3MgcnVuIGZpcnN0LiBUaGUgc2VlZCBpc1xuICogYm91bmQgdG8gYHVTaGFyZS55YCwgYW5kIHRoZSBZIHNoYXJlcyBtdXN0IGNhcnJ5IHRoZWlyIFZTUyBjb21taXRtZW50IGB2YCDigJQgYGtleUNvbWJpbmVgXG4gKiB2ZXJpZmllcyBhIFkgc2hhcmUncyBzZWNyZXQgYHVgIG9ubHkgd2hlbiBgdmAgaXMgcHJlc2VudCwgc28gbWF0ZXJpYWwgd2l0aG91dCBgdmAgY2Fubm90IGJlXG4gKiB2ZXJpZmllZCBhdCBhbGwgYW5kIHRocm93cyBhIGRpc3RpbmN0IGVycm9yIHJhdGhlciB0aGFuIGJlaW5nIGp1ZGdlZCBhIG5vbi1tYXRjaC4gR2VudWluZVxuICogc2hhcmVzIHByb2R1Y2VkIGJ5IGBrZXlTaGFyZWAgYWx3YXlzIGNhcnJ5IGB2YC5cbiAqXG4gKiBBIHRydWUgcmVzdWx0IGlzIGEgY29uc2lzdGVuY3kgY2hlY2sgZm9yIGEgY2FsbGVyIGluc3BlY3RpbmcgaXRzIG93biBtYXRlcmlhbCwgbm90IHByb29mIG9mXG4gKiBwb3NzZXNzaW9uLCBhbmQgbXVzdCBuZXZlciBiZSB1c2VkIGFzIGFuIGF1dGhvcml6YXRpb24gc2lnbmFsOiBhIGNhbGxlciB3aG8ga25vd3Mgb25seSB0aGVcbiAqIHdhbGxldCdzIHB1YmxpYyBjb21tb25LZXljaGFpbiBjYW4gY29uc3RydWN0IG1hdGVyaWFsIHRoYXQgcGFzc2VzIOKAlCBhbiBgdVNoYXJlYCB3aG9zZSBzZWVkXG4gKiBtYXRjaGVzIGl0cyBgeWAsIHBsdXMgWSBzaGFyZXMgd2l0aCBhIGNob3NlbiBzZWNyZXQgYHVgIGFuZCB0aGUgYHZgIHNvbHZlZCBmcm9tIGl0LCB3aG9zZVxuICogYHlgIHZhbHVlcyBzdW0gdG8gdGhlIGNvbW1vbiBrZXkuXG4gKlxuICogQHBhcmFtIHBhcmFtcy5wcnYgLSBzdHJpbmdpZmllZCB1c2VyIHNpZ25pbmcgbWF0ZXJpYWwsIGFzIHBhc3NlZCBhcyBgcHJ2YCB3aGVuIHNpZ25pbmdcbiAqIEBwYXJhbSBwYXJhbXMuY29tbW9uS2V5Y2hhaW4gLSB0aGUgd2FsbGV0J3MgdXNlciBrZXljaGFpbiBjb21tb25LZXljaGFpblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZWRkc2FVc2VyU2lnbmluZ01hdGVyaWFsTWF0Y2hlc0NvbW1vbktleWNoYWluKHBhcmFtczoge1xuICBwcnY6IHN0cmluZztcbiAgY29tbW9uS2V5Y2hhaW46IHN0cmluZztcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qgc2lnbmluZ01hdGVyaWFsID0gcGFyc2VFZGRzYVVzZXJTaWduaW5nTWF0ZXJpYWwocGFyYW1zLnBydik7XG4gIGNvbnN0IE1QQyA9IGF3YWl0IEVkZHNhLmluaXRpYWxpemUoKTtcbiAgaWYgKCF1U2hhcmVTZWVkTWF0Y2hlc1koTVBDLCBzaWduaW5nTWF0ZXJpYWwudVNoYXJlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBrZXlDb21iaW5lIHZlcmlmaWVzIGEgWSBzaGFyZSdzIHNlY3JldCBgdWAgYWdhaW5zdCBpdHMgY29tbWl0bWVudCBvbmx5IHdoZW4gYHZgIGlzIHByZXNlbnQsXG4gIC8vIHNvIG1hdGVyaWFsIHdpdGhvdXQgYHZgIGNhbm5vdCBiZSB2ZXJpZmllZCBhdCBhbGw7IHJlamVjdCBpdCBkaXN0aW5jdGx5IGluc3RlYWQgb2YganVkZ2luZ1xuICAvLyBpdCBhIG5vbi1tYXRjaCwgd2hpY2ggd291bGQgbWlzcmVwb3J0IGdlbnVpbmUgbWF0ZXJpYWwgdGhhdCBsYWNrcyB0aGUgY29tbWl0bWVudFxuICBpZiAoc2lnbmluZ01hdGVyaWFsLmJpdGdvWVNoYXJlLnYgPT09IHVuZGVmaW5lZCB8fCBzaWduaW5nTWF0ZXJpYWwuYmFja3VwWVNoYXJlLnYgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIHZlcmlmeSBrZXkgLSBzaWduaW5nIG1hdGVyaWFsIGhhcyBubyBWU1MgY29tbWl0bWVudCcpO1xuICB9XG4gIGxldCBjb21iaW5lZEtleTogS2V5Q29tYmluZTtcbiAgdHJ5IHtcbiAgICBjb21iaW5lZEtleSA9IE1QQy5rZXlDb21iaW5lKHNpZ25pbmdNYXRlcmlhbC51U2hhcmUsIFtzaWduaW5nTWF0ZXJpYWwuYml0Z29ZU2hhcmUsIHNpZ25pbmdNYXRlcmlhbC5iYWNrdXBZU2hhcmVdKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB1c2VyIGtleSAtIGNvdWxkIG5vdCBjb21iaW5lIHNpZ25pbmcgbWF0ZXJpYWwnKTtcbiAgfVxuICByZXR1cm4gY29tYmluZWRLZXkucFNoYXJlLnkgKyBjb21iaW5lZEtleS5wU2hhcmUuY2hhaW5jb2RlID09PSBwYXJhbXMuY29tbW9uS2V5Y2hhaW47XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IBaseCoin } from '../../baseCoin';
|
|
2
|
+
import { SignableTransaction } from './baseTypes';
|
|
3
|
+
export interface CoinWithPreHashedSignable {
|
|
4
|
+
/**
|
|
5
|
+
* Returns true when the signableHex for this transaction is already the
|
|
6
|
+
* final signing hash (SHA-256 for Avalanche atomic txs), and the MPC
|
|
7
|
+
* signing flow should use it directly without additional hashing.
|
|
8
|
+
*/
|
|
9
|
+
isSignablePreHashed(unsignedTx: SignableTransaction): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function isCoinWithPreHashedSignable(coin: unknown): coin is CoinWithPreHashedSignable;
|
|
12
|
+
/**
|
|
13
|
+
* Detect Avalanche atomic cross-chain transactions by codec prefix.
|
|
14
|
+
*
|
|
15
|
+
* Avalanche codec type IDs start with 0x00000000 (first 4 hex chars = '0000').
|
|
16
|
+
* Standard EVM RLP encoding starts with 0xf8xx — overlap is currently impossible.
|
|
17
|
+
*
|
|
18
|
+
* Note: The WP strips the '0x' prefix from serializedTxHex before storing,
|
|
19
|
+
* so we check for '0000' not '0x0000'.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isAvalancheAtomicTx(unsignedTx: SignableTransaction): boolean;
|
|
22
|
+
export declare function shouldUsePreHashedSignable(coin: IBaseCoin, unsignedTx: SignableTransaction): boolean;
|
|
23
|
+
//# sourceMappingURL=preHashedSignable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preHashedSignable.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/preHashedSignable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC;CAC/D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,yBAAyB,CAM5F;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE5E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAEpG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isCoinWithPreHashedSignable = isCoinWithPreHashedSignable;
|
|
4
|
+
exports.isAvalancheAtomicTx = isAvalancheAtomicTx;
|
|
5
|
+
exports.shouldUsePreHashedSignable = shouldUsePreHashedSignable;
|
|
6
|
+
function isCoinWithPreHashedSignable(coin) {
|
|
7
|
+
return (coin !== null &&
|
|
8
|
+
typeof coin === 'object' &&
|
|
9
|
+
typeof coin.isSignablePreHashed === 'function');
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Detect Avalanche atomic cross-chain transactions by codec prefix.
|
|
13
|
+
*
|
|
14
|
+
* Avalanche codec type IDs start with 0x00000000 (first 4 hex chars = '0000').
|
|
15
|
+
* Standard EVM RLP encoding starts with 0xf8xx — overlap is currently impossible.
|
|
16
|
+
*
|
|
17
|
+
* Note: The WP strips the '0x' prefix from serializedTxHex before storing,
|
|
18
|
+
* so we check for '0000' not '0x0000'.
|
|
19
|
+
*/
|
|
20
|
+
function isAvalancheAtomicTx(unsignedTx) {
|
|
21
|
+
return unsignedTx.serializedTxHex.startsWith('0000');
|
|
22
|
+
}
|
|
23
|
+
function shouldUsePreHashedSignable(coin, unsignedTx) {
|
|
24
|
+
return isCoinWithPreHashedSignable(coin) && coin.isSignablePreHashed(unsignedTx);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlSGFzaGVkU2lnbmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3ByZUhhc2hlZFNpZ25hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsa0VBTUM7QUFXRCxrREFFQztBQUVELGdFQUVDO0FBdkJELFNBQWdCLDJCQUEyQixDQUFDLElBQWE7SUFDdkQsT0FBTyxDQUNMLElBQUksS0FBSyxJQUFJO1FBQ2IsT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixPQUFRLElBQWtDLENBQUMsbUJBQW1CLEtBQUssVUFBVSxDQUM5RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsbUJBQW1CLENBQUMsVUFBK0I7SUFDakUsT0FBTyxVQUFVLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQUMsSUFBZSxFQUFFLFVBQStCO0lBQ3pGLE9BQU8sMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25GLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi8uLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBTaWduYWJsZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi9iYXNlVHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUge1xuICAvKipcbiAgICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHNpZ25hYmxlSGV4IGZvciB0aGlzIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkgdGhlXG4gICAqIGZpbmFsIHNpZ25pbmcgaGFzaCAoU0hBLTI1NiBmb3IgQXZhbGFuY2hlIGF0b21pYyB0eHMpLCBhbmQgdGhlIE1QQ1xuICAgKiBzaWduaW5nIGZsb3cgc2hvdWxkIHVzZSBpdCBkaXJlY3RseSB3aXRob3V0IGFkZGl0aW9uYWwgaGFzaGluZy5cbiAgICovXG4gIGlzU2lnbmFibGVQcmVIYXNoZWQodW5zaWduZWRUeDogU2lnbmFibGVUcmFuc2FjdGlvbik6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvaW5XaXRoUHJlSGFzaGVkU2lnbmFibGUoY29pbjogdW5rbm93bik6IGNvaW4gaXMgQ29pbldpdGhQcmVIYXNoZWRTaWduYWJsZSB7XG4gIHJldHVybiAoXG4gICAgY29pbiAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiBjb2luID09PSAnb2JqZWN0JyAmJlxuICAgIHR5cGVvZiAoY29pbiBhcyBDb2luV2l0aFByZUhhc2hlZFNpZ25hYmxlKS5pc1NpZ25hYmxlUHJlSGFzaGVkID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG5cbi8qKlxuICogRGV0ZWN0IEF2YWxhbmNoZSBhdG9taWMgY3Jvc3MtY2hhaW4gdHJhbnNhY3Rpb25zIGJ5IGNvZGVjIHByZWZpeC5cbiAqXG4gKiBBdmFsYW5jaGUgY29kZWMgdHlwZSBJRHMgc3RhcnQgd2l0aCAweDAwMDAwMDAwIChmaXJzdCA0IGhleCBjaGFycyA9ICcwMDAwJykuXG4gKiBTdGFuZGFyZCBFVk0gUkxQIGVuY29kaW5nIHN0YXJ0cyB3aXRoIDB4Zjh4eCDigJQgb3ZlcmxhcCBpcyBjdXJyZW50bHkgaW1wb3NzaWJsZS5cbiAqXG4gKiBOb3RlOiBUaGUgV1Agc3RyaXBzIHRoZSAnMHgnIHByZWZpeCBmcm9tIHNlcmlhbGl6ZWRUeEhleCBiZWZvcmUgc3RvcmluZyxcbiAqIHNvIHdlIGNoZWNrIGZvciAnMDAwMCcgbm90ICcweDAwMDAnLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBdmFsYW5jaGVBdG9taWNUeCh1bnNpZ25lZFR4OiBTaWduYWJsZVRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiB1bnNpZ25lZFR4LnNlcmlhbGl6ZWRUeEhleC5zdGFydHNXaXRoKCcwMDAwJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRVc2VQcmVIYXNoZWRTaWduYWJsZShjb2luOiBJQmFzZUNvaW4sIHVuc2lnbmVkVHg6IFNpZ25hYmxlVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzQ29pbldpdGhQcmVIYXNoZWRTaWduYWJsZShjb2luKSAmJiBjb2luLmlzU2lnbmFibGVQcmVIYXNoZWQodW5zaWduZWRUeCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TransactionParams } from '../../baseCoin';
|
|
2
|
+
import { TxRequest } from './baseTypes';
|
|
3
|
+
/**
|
|
4
|
+
* Transaction types that legitimately carry no explicit recipients.
|
|
5
|
+
* These are the intentType strings as stored in TxRequest.intent.intentType by WP.
|
|
6
|
+
* verifyTransaction handles no-recipient validation for these internally.
|
|
7
|
+
* Mirrors the bypass list in abstractEthLikeNewCoins.ts verifyTssTransaction.
|
|
8
|
+
*
|
|
9
|
+
* ECDSA types: acceleration, fillNonce, transferToken, tokenApproval, consolidate,
|
|
10
|
+
* bridgeFunds, enableToken, customTx, wrapApprove, wrap, unwrap,
|
|
11
|
+
* finalizeUnwrap, contractCall
|
|
12
|
+
* BSC/BNB delegation-based staking: delegate, undelegate, switchValidator
|
|
13
|
+
* CELO/ETH lock-based staking: stake, unstake, stakeWithCallData, unstakeWithCallData,
|
|
14
|
+
* transferStake, increaseStake, goUnstake
|
|
15
|
+
* Claim rewards (BSC, CELO — TRX/SOL use EdDSA and are unaffected): claim, stakeClaimRewards
|
|
16
|
+
*/
|
|
17
|
+
export declare const NO_RECIPIENT_TX_TYPES: Set<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Resolves the effective txParams for TSS signing recipient verification.
|
|
20
|
+
*
|
|
21
|
+
* For smart contract interactions, recipients live in txRequest.intent.recipients
|
|
22
|
+
* (native amount = 0, so buildParams is empty). Falls back to intent recipients
|
|
23
|
+
* mapped to ITransactionRecipient shape when txParams.recipients is absent.
|
|
24
|
+
*
|
|
25
|
+
* tokenName is derived from tokenData.tokenName when present, otherwise from
|
|
26
|
+
* amount.symbol when chainName is provided and symbol differs from it.
|
|
27
|
+
*
|
|
28
|
+
* Staking intents (BSC delegate/undelegate, CELO stake/unstake, etc.) are
|
|
29
|
+
* identified generically by the presence of `stakingRequestId` on the intent —
|
|
30
|
+
* a required field on BaseStakeIntent in @bitgo/public-types. These intents
|
|
31
|
+
* have no txParams recipients by design; validation is done at the coin layer.
|
|
32
|
+
*
|
|
33
|
+
* Throws InvalidTransactionError if no recipients can be resolved and the
|
|
34
|
+
* transaction is not a known no-recipient type.
|
|
35
|
+
*
|
|
36
|
+
* @param txRequest - the transaction request containing the persisted intent
|
|
37
|
+
* @param txParams - the caller-supplied transaction parameters (may be undefined)
|
|
38
|
+
* @param chainName - the base chain name (e.g. 'sol', 'tsol') used to exclude
|
|
39
|
+
* native-coin transfers from tokenName; pass baseCoin.getChain()
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveEffectiveTxParams(txRequest: TxRequest, txParams: TransactionParams | undefined, chainName?: string): TransactionParams;
|
|
42
|
+
//# sourceMappingURL=recipientUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recipientUtils.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/utils/tss/recipientUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAmB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,aAsFhC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,CAwEnB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NO_RECIPIENT_TX_TYPES = void 0;
|
|
4
|
+
exports.resolveEffectiveTxParams = resolveEffectiveTxParams;
|
|
5
|
+
const errors_1 = require("../../errors");
|
|
6
|
+
/**
|
|
7
|
+
* Transaction types that legitimately carry no explicit recipients.
|
|
8
|
+
* These are the intentType strings as stored in TxRequest.intent.intentType by WP.
|
|
9
|
+
* verifyTransaction handles no-recipient validation for these internally.
|
|
10
|
+
* Mirrors the bypass list in abstractEthLikeNewCoins.ts verifyTssTransaction.
|
|
11
|
+
*
|
|
12
|
+
* ECDSA types: acceleration, fillNonce, transferToken, tokenApproval, consolidate,
|
|
13
|
+
* bridgeFunds, enableToken, customTx, wrapApprove, wrap, unwrap,
|
|
14
|
+
* finalizeUnwrap, contractCall
|
|
15
|
+
* BSC/BNB delegation-based staking: delegate, undelegate, switchValidator
|
|
16
|
+
* CELO/ETH lock-based staking: stake, unstake, stakeWithCallData, unstakeWithCallData,
|
|
17
|
+
* transferStake, increaseStake, goUnstake
|
|
18
|
+
* Claim rewards (BSC, CELO — TRX/SOL use EdDSA and are unaffected): claim, stakeClaimRewards
|
|
19
|
+
*/
|
|
20
|
+
exports.NO_RECIPIENT_TX_TYPES = new Set([
|
|
21
|
+
// ECDSA types
|
|
22
|
+
'acceleration',
|
|
23
|
+
'fillNonce',
|
|
24
|
+
'transferToken',
|
|
25
|
+
'tokenApproval',
|
|
26
|
+
'consolidate',
|
|
27
|
+
'bridgeFunds',
|
|
28
|
+
'enableToken',
|
|
29
|
+
'enabletoken',
|
|
30
|
+
'disableToken',
|
|
31
|
+
'disabletoken',
|
|
32
|
+
'customTx',
|
|
33
|
+
// DeFi vault operations — recipients/calldata built server-side from defiParams
|
|
34
|
+
'defiApprove',
|
|
35
|
+
'defiDeposit',
|
|
36
|
+
'defiWithdraw',
|
|
37
|
+
// Native wrap/unwrap (WETH9 deposit()/withdraw()) — calldata and the WETH9
|
|
38
|
+
// address are resolved server-side from the vault binding, so no recipients.
|
|
39
|
+
// Registered in BOTH spellings on purpose: this set is matched against
|
|
40
|
+
// txParams.type, which is buildParams.type (camelCase, from wallet.sendMany),
|
|
41
|
+
// AND against intent.intentType (kebab-case, as WP persists it). Signing paths
|
|
42
|
+
// that carry no txParams — notably pendingApproval.approve() →
|
|
43
|
+
// recreateTxRequest() → signTxRequest() with no txParams — only ever see the
|
|
44
|
+
// kebab-case spelling.
|
|
45
|
+
'wrapNative',
|
|
46
|
+
'wrap-native',
|
|
47
|
+
'unwrapNative',
|
|
48
|
+
'unwrap-native',
|
|
49
|
+
// ERC-7984 shield/unshield: approve/wrap/unwrap calldata is built server-side from the
|
|
50
|
+
// intent, and finalizeUnwrap txnReqs are WP-created at READY_TO_FINALIZE (client signs
|
|
51
|
+
// only) — none carry SDK-level recipients.
|
|
52
|
+
'wrapApprove',
|
|
53
|
+
'wrap',
|
|
54
|
+
'unwrap',
|
|
55
|
+
'finalizeUnwrap',
|
|
56
|
+
// Smart contract invocations with no explicit SDK-level recipients
|
|
57
|
+
'contractCall',
|
|
58
|
+
// BSC/BNB delegation-based staking — intentType strings from TxRequest.intent.intentType.
|
|
59
|
+
// Note: SOL solDelegateIntent also uses intentType "delegate".
|
|
60
|
+
'delegate',
|
|
61
|
+
'undelegate',
|
|
62
|
+
'switchValidator',
|
|
63
|
+
// CELO/ETH lock-based staking
|
|
64
|
+
'stake',
|
|
65
|
+
'unstake',
|
|
66
|
+
'stakeWithCallData',
|
|
67
|
+
'unstakeWithCallData',
|
|
68
|
+
'transferStake',
|
|
69
|
+
'increaseStake',
|
|
70
|
+
'goUnstake',
|
|
71
|
+
// Claim rewards — BSC and CELO (TRX/SOL/Cosmos use EdDSA, not affected by this guard)
|
|
72
|
+
'claim',
|
|
73
|
+
'stakeClaimRewards',
|
|
74
|
+
'createAccount',
|
|
75
|
+
// Canton operations with no SDK-level recipients. Canton.verifyTransaction validates these from the transaction itself.
|
|
76
|
+
'transferAccept',
|
|
77
|
+
'transferReject',
|
|
78
|
+
'transferOfferWithdrawn',
|
|
79
|
+
'cosignDelegationAccept',
|
|
80
|
+
'allocationAllocate',
|
|
81
|
+
'allocationOfferWithdrawn',
|
|
82
|
+
'cantonCommand',
|
|
83
|
+
'cantonEndInvestorOnboardingOffer',
|
|
84
|
+
'cantonEndInvestorOnboardingAccept',
|
|
85
|
+
'cantonEndInvestorOnboardingReject',
|
|
86
|
+
'cantonParticipantOnboardingRequest',
|
|
87
|
+
'pledge',
|
|
88
|
+
// Avalanche / Flare cross-chain atomic imports — recipients are not supplied
|
|
89
|
+
// by the client because the import consumes UTXOs already owned by the
|
|
90
|
+
// wallet; the destination address is the wallet itself. WP issues these
|
|
91
|
+
// with intentType 'import' (P-chain) or 'importtoc' (C-chain).
|
|
92
|
+
'import',
|
|
93
|
+
'importtoc',
|
|
94
|
+
// SOL: deactivate stake account — no on-chain transfer recipient.
|
|
95
|
+
'deactivate',
|
|
96
|
+
// SOL: authorize stake account — no transfer recipient.
|
|
97
|
+
'authorize',
|
|
98
|
+
]);
|
|
99
|
+
/**
|
|
100
|
+
* Resolves the effective txParams for TSS signing recipient verification.
|
|
101
|
+
*
|
|
102
|
+
* For smart contract interactions, recipients live in txRequest.intent.recipients
|
|
103
|
+
* (native amount = 0, so buildParams is empty). Falls back to intent recipients
|
|
104
|
+
* mapped to ITransactionRecipient shape when txParams.recipients is absent.
|
|
105
|
+
*
|
|
106
|
+
* tokenName is derived from tokenData.tokenName when present, otherwise from
|
|
107
|
+
* amount.symbol when chainName is provided and symbol differs from it.
|
|
108
|
+
*
|
|
109
|
+
* Staking intents (BSC delegate/undelegate, CELO stake/unstake, etc.) are
|
|
110
|
+
* identified generically by the presence of `stakingRequestId` on the intent —
|
|
111
|
+
* a required field on BaseStakeIntent in @bitgo/public-types. These intents
|
|
112
|
+
* have no txParams recipients by design; validation is done at the coin layer.
|
|
113
|
+
*
|
|
114
|
+
* Throws InvalidTransactionError if no recipients can be resolved and the
|
|
115
|
+
* transaction is not a known no-recipient type.
|
|
116
|
+
*
|
|
117
|
+
* @param txRequest - the transaction request containing the persisted intent
|
|
118
|
+
* @param txParams - the caller-supplied transaction parameters (may be undefined)
|
|
119
|
+
* @param chainName - the base chain name (e.g. 'sol', 'tsol') used to exclude
|
|
120
|
+
* native-coin transfers from tokenName; pass baseCoin.getChain()
|
|
121
|
+
*/
|
|
122
|
+
function resolveEffectiveTxParams(txRequest, txParams, chainName) {
|
|
123
|
+
const intentRecipients = txRequest.intent?.recipients?.map((intentRecipient) => {
|
|
124
|
+
// Prefer tokenData.tokenName; fall back to amount.symbol when chainName is
|
|
125
|
+
// provided and differs from it. When absent, skip the symbol fallback.
|
|
126
|
+
const { symbol } = intentRecipient.amount;
|
|
127
|
+
const tokenName = intentRecipient.tokenData?.tokenName ||
|
|
128
|
+
(chainName !== undefined && symbol && symbol !== chainName ? symbol : undefined);
|
|
129
|
+
return {
|
|
130
|
+
address: intentRecipient.address.address,
|
|
131
|
+
amount: intentRecipient.amount.value,
|
|
132
|
+
data: intentRecipient.data,
|
|
133
|
+
...(tokenName && { tokenName }),
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
const effectiveTxParams = {
|
|
137
|
+
...txParams,
|
|
138
|
+
recipients: txParams?.recipients?.length ? txParams.recipients : intentRecipients,
|
|
139
|
+
};
|
|
140
|
+
// Fall back to intent.intentType when txParams.type is not explicitly set.
|
|
141
|
+
// Staking wallets call signTransaction without txParams, so the type lives only in the intent.
|
|
142
|
+
const txType = effectiveTxParams.type ?? txRequest.intent?.intentType ?? '';
|
|
143
|
+
// Propagate the resolved type so downstream callers
|
|
144
|
+
if (!effectiveTxParams.type && txType) {
|
|
145
|
+
effectiveTxParams.type = txType;
|
|
146
|
+
}
|
|
147
|
+
// Propagate stakingRequestId from intent into effectiveTxParams so verifyTssTransaction
|
|
148
|
+
// overrides can bypass the no-recipient guard without needing access to txRequest directly.
|
|
149
|
+
const intentStakingRequestId = txRequest.intent?.stakingRequestId;
|
|
150
|
+
if (intentStakingRequestId && !effectiveTxParams.stakingRequestId) {
|
|
151
|
+
effectiveTxParams.stakingRequestId = intentStakingRequestId;
|
|
152
|
+
}
|
|
153
|
+
// Propagate the ERC-7984 shield params from the persisted intent. Signing paths that carry no
|
|
154
|
+
// txParams (pendingApproval.approve() -> recreateTxRequest() -> signTxRequest()) would otherwise reach
|
|
155
|
+
// the coin verifier without wrapParams, and the wrapApprove calldata check would reject valid bytes.
|
|
156
|
+
// WP flattens wrapParams into intent.tokenName / intent.amount (see mpcUtils.createIntent).
|
|
157
|
+
const intent = txRequest.intent;
|
|
158
|
+
if (!effectiveTxParams.wrapParams &&
|
|
159
|
+
(intent?.intentType === 'wrapApprove' || intent?.intentType === 'wrap') &&
|
|
160
|
+
typeof intent.tokenName === 'string' &&
|
|
161
|
+
typeof intent.amount === 'string') {
|
|
162
|
+
effectiveTxParams.wrapParams = { tokenName: intent.tokenName, amount: intent.amount };
|
|
163
|
+
}
|
|
164
|
+
// All staking intents (BSC delegate/undelegate, CELO stake/unstake, etc.) carry
|
|
165
|
+
// stakingRequestId as a required field on BaseStakeIntent (@bitgo/public-types).
|
|
166
|
+
// Use its presence as a generic staking signal — no need to enumerate every intentType.
|
|
167
|
+
const isStakingIntent = !!txRequest.intent?.stakingRequestId;
|
|
168
|
+
// buildParams.type from the wallet UI is PascalCase ('Import'); intent.intentType from WP
|
|
169
|
+
// is lowercase ('import'). Either may be the source of truth depending on the signing path.
|
|
170
|
+
const intentType = txRequest.intent?.intentType ?? '';
|
|
171
|
+
if (!effectiveTxParams.recipients?.length &&
|
|
172
|
+
!isStakingIntent &&
|
|
173
|
+
!exports.NO_RECIPIENT_TX_TYPES.has(txType) &&
|
|
174
|
+
!exports.NO_RECIPIENT_TX_TYPES.has(intentType)) {
|
|
175
|
+
throw new errors_1.InvalidTransactionError('Recipient details are required to verify this transaction before signing. Pass txParams with at least one recipient.');
|
|
176
|
+
}
|
|
177
|
+
return effectiveTxParams;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBpZW50VXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL3JlY2lwaWVudFV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWlJQSw0REE0RUM7QUE1TUQseUNBQXVEO0FBR3ZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDVSxRQUFBLHFCQUFxQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQzNDLGNBQWM7SUFDZCxjQUFjO0lBQ2QsV0FBVztJQUNYLGVBQWU7SUFDZixlQUFlO0lBQ2YsYUFBYTtJQUNiLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCxjQUFjO0lBQ2QsVUFBVTtJQUNWLGdGQUFnRjtJQUNoRixhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7SUFDZCwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSw4RUFBOEU7SUFDOUUsK0VBQStFO0lBQy9FLCtEQUErRDtJQUMvRCw2RUFBNkU7SUFDN0UsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixhQUFhO0lBQ2IsY0FBYztJQUNkLGVBQWU7SUFDZix1RkFBdUY7SUFDdkYsdUZBQXVGO0lBQ3ZGLDJDQUEyQztJQUMzQyxhQUFhO0lBQ2IsTUFBTTtJQUNOLFFBQVE7SUFDUixnQkFBZ0I7SUFDaEIsbUVBQW1FO0lBQ25FLGNBQWM7SUFFZCwwRkFBMEY7SUFDMUYsK0RBQStEO0lBQy9ELFVBQVU7SUFDVixZQUFZO0lBQ1osaUJBQWlCO0lBRWpCLDhCQUE4QjtJQUM5QixPQUFPO0lBQ1AsU0FBUztJQUNULG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsZUFBZTtJQUNmLGVBQWU7SUFDZixXQUFXO0lBRVgsc0ZBQXNGO0lBQ3RGLE9BQU87SUFDUCxtQkFBbUI7SUFFbkIsZUFBZTtJQUNmLHdIQUF3SDtJQUN4SCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHdCQUF3QjtJQUN4Qix3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aUZBQWlGO0lBQ2pGLHdGQUF3RjtJQUN4RixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQTBCLEVBQUUsZ0JBQWdCLENBQUM7SUFFbEYsMEZBQTBGO0lBQzFGLDRGQUE0RjtJQUM1RixNQUFNLFVBQVUsR0FBSSxTQUFTLENBQUMsTUFBMEIsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO0lBRTNFLElBQ0UsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsTUFBTTtRQUNyQyxDQUFDLGVBQWU7UUFDaEIsQ0FBQyw2QkFBcUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2xDLENBQUMsNkJBQXFCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLGdDQUF1QixDQUMvQixzSEFBc0gsQ0FDdkgsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblBhcmFtcyB9IGZyb20gJy4uLy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yIH0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7IFBvcHVsYXRlZEludGVudCwgVHhSZXF1ZXN0IH0gZnJvbSAnLi9iYXNlVHlwZXMnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIHR5cGVzIHRoYXQgbGVnaXRpbWF0ZWx5IGNhcnJ5IG5vIGV4cGxpY2l0IHJlY2lwaWVudHMuXG4gKiBUaGVzZSBhcmUgdGhlIGludGVudFR5cGUgc3RyaW5ncyBhcyBzdG9yZWQgaW4gVHhSZXF1ZXN0LmludGVudC5pbnRlbnRUeXBlIGJ5IFdQLlxuICogdmVyaWZ5VHJhbnNhY3Rpb24gaGFuZGxlcyBuby1yZWNpcGllbnQgdmFsaWRhdGlvbiBmb3IgdGhlc2UgaW50ZXJuYWxseS5cbiAqIE1pcnJvcnMgdGhlIGJ5cGFzcyBsaXN0IGluIGFic3RyYWN0RXRoTGlrZU5ld0NvaW5zLnRzIHZlcmlmeVRzc1RyYW5zYWN0aW9uLlxuICpcbiAqIEVDRFNBIHR5cGVzOiBhY2NlbGVyYXRpb24sIGZpbGxOb25jZSwgdHJhbnNmZXJUb2tlbiwgdG9rZW5BcHByb3ZhbCwgY29uc29saWRhdGUsXG4gKiAgICAgICAgICAgICAgYnJpZGdlRnVuZHMsIGVuYWJsZVRva2VuLCBjdXN0b21UeCwgd3JhcEFwcHJvdmUsIHdyYXAsIHVud3JhcCxcbiAqICAgICAgICAgICAgICBmaW5hbGl6ZVVud3JhcCwgY29udHJhY3RDYWxsXG4gKiBCU0MvQk5CIGRlbGVnYXRpb24tYmFzZWQgc3Rha2luZzogZGVsZWdhdGUsIHVuZGVsZWdhdGUsIHN3aXRjaFZhbGlkYXRvclxuICogQ0VMTy9FVEggbG9jay1iYXNlZCBzdGFraW5nOiBzdGFrZSwgdW5zdGFrZSwgc3Rha2VXaXRoQ2FsbERhdGEsIHVuc3Rha2VXaXRoQ2FsbERhdGEsXG4gKiAgICAgICAgICAgICAgdHJhbnNmZXJTdGFrZSwgaW5jcmVhc2VTdGFrZSwgZ29VbnN0YWtlXG4gKiBDbGFpbSByZXdhcmRzIChCU0MsIENFTE8g4oCUIFRSWC9TT0wgdXNlIEVkRFNBIGFuZCBhcmUgdW5hZmZlY3RlZCk6IGNsYWltLCBzdGFrZUNsYWltUmV3YXJkc1xuICovXG5leHBvcnQgY29uc3QgTk9fUkVDSVBJRU5UX1RYX1RZUEVTID0gbmV3IFNldChbXG4gIC8vIEVDRFNBIHR5cGVzXG4gICdhY2NlbGVyYXRpb24nLFxuICAnZmlsbE5vbmNlJyxcbiAgJ3RyYW5zZmVyVG9rZW4nLFxuICAndG9rZW5BcHByb3ZhbCcsXG4gICdjb25zb2xpZGF0ZScsXG4gICdicmlkZ2VGdW5kcycsXG4gICdlbmFibGVUb2tlbicsXG4gICdlbmFibGV0b2tlbicsXG4gICdkaXNhYmxlVG9rZW4nLFxuICAnZGlzYWJsZXRva2VuJyxcbiAgJ2N1c3RvbVR4JyxcbiAgLy8gRGVGaSB2YXVsdCBvcGVyYXRpb25zIOKAlCByZWNpcGllbnRzL2NhbGxkYXRhIGJ1aWx0IHNlcnZlci1zaWRlIGZyb20gZGVmaVBhcmFtc1xuICAnZGVmaUFwcHJvdmUnLFxuICAnZGVmaURlcG9zaXQnLFxuICAnZGVmaVdpdGhkcmF3JyxcbiAgLy8gTmF0aXZlIHdyYXAvdW53cmFwIChXRVRIOSBkZXBvc2l0KCkvd2l0aGRyYXcoKSkg4oCUIGNhbGxkYXRhIGFuZCB0aGUgV0VUSDlcbiAgLy8gYWRkcmVzcyBhcmUgcmVzb2x2ZWQgc2VydmVyLXNpZGUgZnJvbSB0aGUgdmF1bHQgYmluZGluZywgc28gbm8gcmVjaXBpZW50cy5cbiAgLy8gUmVnaXN0ZXJlZCBpbiBCT1RIIHNwZWxsaW5ncyBvbiBwdXJwb3NlOiB0aGlzIHNldCBpcyBtYXRjaGVkIGFnYWluc3RcbiAgLy8gdHhQYXJhbXMudHlwZSwgd2hpY2ggaXMgYnVpbGRQYXJhbXMudHlwZSAoY2FtZWxDYXNlLCBmcm9tIHdhbGxldC5zZW5kTWFueSksXG4gIC8vIEFORCBhZ2FpbnN0IGludGVudC5pbnRlbnRUeXBlIChrZWJhYi1jYXNlLCBhcyBXUCBwZXJzaXN0cyBpdCkuIFNpZ25pbmcgcGF0aHNcbiAgLy8gdGhhdCBjYXJyeSBubyB0eFBhcmFtcyDigJQgbm90YWJseSBwZW5kaW5nQXBwcm92YWwuYXBwcm92ZSgpIOKGklxuICAvLyByZWNyZWF0ZVR4UmVxdWVzdCgpIOKGkiBzaWduVHhSZXF1ZXN0KCkgd2l0aCBubyB0eFBhcmFtcyDigJQgb25seSBldmVyIHNlZSB0aGVcbiAgLy8ga2ViYWItY2FzZSBzcGVsbGluZy5cbiAgJ3dyYXBOYXRpdmUnLFxuICAnd3JhcC1uYXRpdmUnLFxuICAndW53cmFwTmF0aXZlJyxcbiAgJ3Vud3JhcC1uYXRpdmUnLFxuICAvLyBFUkMtNzk4NCBzaGllbGQvdW5zaGllbGQ6IGFwcHJvdmUvd3JhcC91bndyYXAgY2FsbGRhdGEgaXMgYnVpbHQgc2VydmVyLXNpZGUgZnJvbSB0aGVcbiAgLy8gaW50ZW50LCBhbmQgZmluYWxpemVVbndyYXAgdHhuUmVxcyBhcmUgV1AtY3JlYXRlZCBhdCBSRUFEWV9UT19GSU5BTElaRSAoY2xpZW50IHNpZ25zXG4gIC8vIG9ubHkpIOKAlCBub25lIGNhcnJ5IFNESy1sZXZlbCByZWNpcGllbnRzLlxuICAnd3JhcEFwcHJvdmUnLFxuICAnd3JhcCcsXG4gICd1bndyYXAnLFxuICAnZmluYWxpemVVbndyYXAnLFxuICAvLyBTbWFydCBjb250cmFjdCBpbnZvY2F0aW9ucyB3aXRoIG5vIGV4cGxpY2l0IFNESy1sZXZlbCByZWNpcGllbnRzXG4gICdjb250cmFjdENhbGwnLFxuXG4gIC8vIEJTQy9CTkIgZGVsZWdhdGlvbi1iYXNlZCBzdGFraW5nIOKAlCBpbnRlbnRUeXBlIHN0cmluZ3MgZnJvbSBUeFJlcXVlc3QuaW50ZW50LmludGVudFR5cGUuXG4gIC8vIE5vdGU6IFNPTCBzb2xEZWxlZ2F0ZUludGVudCBhbHNvIHVzZXMgaW50ZW50VHlwZSBcImRlbGVnYXRlXCIuXG4gICdkZWxlZ2F0ZScsXG4gICd1bmRlbGVnYXRlJyxcbiAgJ3N3aXRjaFZhbGlkYXRvcicsXG5cbiAgLy8gQ0VMTy9FVEggbG9jay1iYXNlZCBzdGFraW5nXG4gICdzdGFrZScsXG4gICd1bnN0YWtlJyxcbiAgJ3N0YWtlV2l0aENhbGxEYXRhJyxcbiAgJ3Vuc3Rha2VXaXRoQ2FsbERhdGEnLFxuICAndHJhbnNmZXJTdGFrZScsXG4gICdpbmNyZWFzZVN0YWtlJyxcbiAgJ2dvVW5zdGFrZScsXG5cbiAgLy8gQ2xhaW0gcmV3YXJkcyDigJQgQlNDIGFuZCBDRUxPIChUUlgvU09ML0Nvc21vcyB1c2UgRWREU0EsIG5vdCBhZmZlY3RlZCBieSB0aGlzIGd1YXJkKVxuICAnY2xhaW0nLFxuICAnc3Rha2VDbGFpbVJld2FyZHMnLFxuXG4gICdjcmVhdGVBY2NvdW50JyxcbiAgLy8gQ2FudG9uIG9wZXJhdGlvbnMgd2l0aCBubyBTREstbGV2ZWwgcmVjaXBpZW50cy4gQ2FudG9uLnZlcmlmeVRyYW5zYWN0aW9uIHZhbGlkYXRlcyB0aGVzZSBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpdHNlbGYuXG4gICd0cmFuc2ZlckFjY2VwdCcsXG4gICd0cmFuc2ZlclJlamVjdCcsXG4gICd0cmFuc2Zlck9mZmVyV2l0aGRyYXduJyxcbiAgJ2Nvc2lnbkRlbGVnYXRpb25BY2NlcHQnLFxuICAnYWxsb2NhdGlvbkFsbG9jYXRlJyxcbiAgJ2FsbG9jYXRpb25PZmZlcldpdGhkcmF3bicsXG4gICdjYW50b25Db21tYW5kJyxcbiAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyJyxcbiAgJ2NhbnRvbkVuZEludmVzdG9yT25ib2FyZGluZ0FjY2VwdCcsXG4gICdjYW50b25FbmRJbnZlc3Rvck9uYm9hcmRpbmdSZWplY3QnLFxuICAnY2FudG9uUGFydGljaXBhbnRPbmJvYXJkaW5nUmVxdWVzdCcsXG5cbiAgJ3BsZWRnZScsXG5cbiAgLy8gQXZhbGFuY2hlIC8gRmxhcmUgY3Jvc3MtY2hhaW4gYXRvbWljIGltcG9ydHMg4oCUIHJlY2lwaWVudHMgYXJlIG5vdCBzdXBwbGllZFxuICAvLyBieSB0aGUgY2xpZW50IGJlY2F1c2UgdGhlIGltcG9ydCBjb25zdW1lcyBVVFhPcyBhbHJlYWR5IG93bmVkIGJ5IHRoZVxuICAvLyB3YWxsZXQ7IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGlzIHRoZSB3YWxsZXQgaXRzZWxmLiBXUCBpc3N1ZXMgdGhlc2VcbiAgLy8gd2l0aCBpbnRlbnRUeXBlICdpbXBvcnQnIChQLWNoYWluKSBvciAnaW1wb3J0dG9jJyAoQy1jaGFpbikuXG4gICdpbXBvcnQnLFxuICAnaW1wb3J0dG9jJyxcblxuICAvLyBTT0w6IGRlYWN0aXZhdGUgc3Rha2UgYWNjb3VudCDigJQgbm8gb24tY2hhaW4gdHJhbnNmZXIgcmVjaXBpZW50LlxuICAnZGVhY3RpdmF0ZScsXG5cbiAgLy8gU09MOiBhdXRob3JpemUgc3Rha2UgYWNjb3VudCDigJQgbm8gdHJhbnNmZXIgcmVjaXBpZW50LlxuICAnYXV0aG9yaXplJyxcbl0pO1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBlZmZlY3RpdmUgdHhQYXJhbXMgZm9yIFRTUyBzaWduaW5nIHJlY2lwaWVudCB2ZXJpZmljYXRpb24uXG4gKlxuICogRm9yIHNtYXJ0IGNvbnRyYWN0IGludGVyYWN0aW9ucywgcmVjaXBpZW50cyBsaXZlIGluIHR4UmVxdWVzdC5pbnRlbnQucmVjaXBpZW50c1xuICogKG5hdGl2ZSBhbW91bnQgPSAwLCBzbyBidWlsZFBhcmFtcyBpcyBlbXB0eSkuIEZhbGxzIGJhY2sgdG8gaW50ZW50IHJlY2lwaWVudHNcbiAqIG1hcHBlZCB0byBJVHJhbnNhY3Rpb25SZWNpcGllbnQgc2hhcGUgd2hlbiB0eFBhcmFtcy5yZWNpcGllbnRzIGlzIGFic2VudC5cbiAqXG4gKiB0b2tlbk5hbWUgaXMgZGVyaXZlZCBmcm9tIHRva2VuRGF0YS50b2tlbk5hbWUgd2hlbiBwcmVzZW50LCBvdGhlcndpc2UgZnJvbVxuICogYW1vdW50LnN5bWJvbCB3aGVuIGNoYWluTmFtZSBpcyBwcm92aWRlZCBhbmQgc3ltYm9sIGRpZmZlcnMgZnJvbSBpdC5cbiAqXG4gKiBTdGFraW5nIGludGVudHMgKEJTQyBkZWxlZ2F0ZS91bmRlbGVnYXRlLCBDRUxPIHN0YWtlL3Vuc3Rha2UsIGV0Yy4pIGFyZVxuICogaWRlbnRpZmllZCBnZW5lcmljYWxseSBieSB0aGUgcHJlc2VuY2Ugb2YgYHN0YWtpbmdSZXF1ZXN0SWRgIG9uIHRoZSBpbnRlbnQg4oCUXG4gKiBhIHJlcXVpcmVkIGZpZWxkIG9uIEJhc2VTdGFrZUludGVudCBpbiBAYml0Z28vcHVibGljLXR5cGVzLiBUaGVzZSBpbnRlbnRzXG4gKiBoYXZlIG5vIHR4UGFyYW1zIHJlY2lwaWVudHMgYnkgZGVzaWduOyB2YWxpZGF0aW9uIGlzIGRvbmUgYXQgdGhlIGNvaW4gbGF5ZXIuXG4gKlxuICogVGhyb3dzIEludmFsaWRUcmFuc2FjdGlvbkVycm9yIGlmIG5vIHJlY2lwaWVudHMgY2FuIGJlIHJlc29sdmVkIGFuZCB0aGVcbiAqIHRyYW5zYWN0aW9uIGlzIG5vdCBhIGtub3duIG5vLXJlY2lwaWVudCB0eXBlLlxuICpcbiAqIEBwYXJhbSB0eFJlcXVlc3QgLSB0aGUgdHJhbnNhY3Rpb24gcmVxdWVzdCBjb250YWluaW5nIHRoZSBwZXJzaXN0ZWQgaW50ZW50XG4gKiBAcGFyYW0gdHhQYXJhbXMgLSB0aGUgY2FsbGVyLXN1cHBsaWVkIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnMgKG1heSBiZSB1bmRlZmluZWQpXG4gKiBAcGFyYW0gY2hhaW5OYW1lIC0gdGhlIGJhc2UgY2hhaW4gbmFtZSAoZS5nLiAnc29sJywgJ3Rzb2wnKSB1c2VkIHRvIGV4Y2x1ZGVcbiAqICAgbmF0aXZlLWNvaW4gdHJhbnNmZXJzIGZyb20gdG9rZW5OYW1lOyBwYXNzIGJhc2VDb2luLmdldENoYWluKClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFZmZlY3RpdmVUeFBhcmFtcyhcbiAgdHhSZXF1ZXN0OiBUeFJlcXVlc3QsXG4gIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcyB8IHVuZGVmaW5lZCxcbiAgY2hhaW5OYW1lPzogc3RyaW5nXG4pOiBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIGNvbnN0IGludGVudFJlY2lwaWVudHMgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5yZWNpcGllbnRzPy5tYXAoKGludGVudFJlY2lwaWVudCkgPT4ge1xuICAgIC8vIFByZWZlciB0b2tlbkRhdGEudG9rZW5OYW1lOyBmYWxsIGJhY2sgdG8gYW1vdW50LnN5bWJvbCB3aGVuIGNoYWluTmFtZSBpc1xuICAgIC8vIHByb3ZpZGVkIGFuZCBkaWZmZXJzIGZyb20gaXQuIFdoZW4gYWJzZW50LCBza2lwIHRoZSBzeW1ib2wgZmFsbGJhY2suXG4gICAgY29uc3QgeyBzeW1ib2wgfSA9IGludGVudFJlY2lwaWVudC5hbW91bnQ7XG4gICAgY29uc3QgdG9rZW5OYW1lID1cbiAgICAgIGludGVudFJlY2lwaWVudC50b2tlbkRhdGE/LnRva2VuTmFtZSB8fFxuICAgICAgKGNoYWluTmFtZSAhPT0gdW5kZWZpbmVkICYmIHN5bWJvbCAmJiBzeW1ib2wgIT09IGNoYWluTmFtZSA/IHN5bWJvbCA6IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IGludGVudFJlY2lwaWVudC5hZGRyZXNzLmFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGludGVudFJlY2lwaWVudC5hbW91bnQudmFsdWUsXG4gICAgICBkYXRhOiBpbnRlbnRSZWNpcGllbnQuZGF0YSxcbiAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgfTtcbiAgfSk7XG5cbiAgY29uc3QgZWZmZWN0aXZlVHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zID0ge1xuICAgIC4uLnR4UGFyYW1zLFxuICAgIHJlY2lwaWVudHM6IHR4UGFyYW1zPy5yZWNpcGllbnRzPy5sZW5ndGggPyB0eFBhcmFtcy5yZWNpcGllbnRzIDogaW50ZW50UmVjaXBpZW50cyxcbiAgfTtcblxuICAvLyBGYWxsIGJhY2sgdG8gaW50ZW50LmludGVudFR5cGUgd2hlbiB0eFBhcmFtcy50eXBlIGlzIG5vdCBleHBsaWNpdGx5IHNldC5cbiAgLy8gU3Rha2luZyB3YWxsZXRzIGNhbGwgc2lnblRyYW5zYWN0aW9uIHdpdGhvdXQgdHhQYXJhbXMsIHNvIHRoZSB0eXBlIGxpdmVzIG9ubHkgaW4gdGhlIGludGVudC5cbiAgY29uc3QgdHhUeXBlID0gZWZmZWN0aXZlVHhQYXJhbXMudHlwZSA/PyAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5pbnRlbnRUeXBlID8/ICcnO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgcmVzb2x2ZWQgdHlwZSBzbyBkb3duc3RyZWFtIGNhbGxlcnNcbiAgaWYgKCFlZmZlY3RpdmVUeFBhcmFtcy50eXBlICYmIHR4VHlwZSkge1xuICAgIGVmZmVjdGl2ZVR4UGFyYW1zLnR5cGUgPSB0eFR5cGU7XG4gIH1cblxuICAvLyBQcm9wYWdhdGUgc3Rha2luZ1JlcXVlc3RJZCBmcm9tIGludGVudCBpbnRvIGVmZmVjdGl2ZVR4UGFyYW1zIHNvIHZlcmlmeVRzc1RyYW5zYWN0aW9uXG4gIC8vIG92ZXJyaWRlcyBjYW4gYnlwYXNzIHRoZSBuby1yZWNpcGllbnQgZ3VhcmQgd2l0aG91dCBuZWVkaW5nIGFjY2VzcyB0byB0eFJlcXVlc3QgZGlyZWN0bHkuXG4gIGNvbnN0IGludGVudFN0YWtpbmdSZXF1ZXN0SWQgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5zdGFraW5nUmVxdWVzdElkO1xuICBpZiAoaW50ZW50U3Rha2luZ1JlcXVlc3RJZCAmJiAhZWZmZWN0aXZlVHhQYXJhbXMuc3Rha2luZ1JlcXVlc3RJZCkge1xuICAgIGVmZmVjdGl2ZVR4UGFyYW1zLnN0YWtpbmdSZXF1ZXN0SWQgPSBpbnRlbnRTdGFraW5nUmVxdWVzdElkO1xuICB9XG5cbiAgLy8gUHJvcGFnYXRlIHRoZSBFUkMtNzk4NCBzaGllbGQgcGFyYW1zIGZyb20gdGhlIHBlcnNpc3RlZCBpbnRlbnQuIFNpZ25pbmcgcGF0aHMgdGhhdCBjYXJyeSBub1xuICAvLyB0eFBhcmFtcyAocGVuZGluZ0FwcHJvdmFsLmFwcHJvdmUoKSAtPiByZWNyZWF0ZVR4UmVxdWVzdCgpIC0+IHNpZ25UeFJlcXVlc3QoKSkgd291bGQgb3RoZXJ3aXNlIHJlYWNoXG4gIC8vIHRoZSBjb2luIHZlcmlmaWVyIHdpdGhvdXQgd3JhcFBhcmFtcywgYW5kIHRoZSB3cmFwQXBwcm92ZSBjYWxsZGF0YSBjaGVjayB3b3VsZCByZWplY3QgdmFsaWQgYnl0ZXMuXG4gIC8vIFdQIGZsYXR0ZW5zIHdyYXBQYXJhbXMgaW50byBpbnRlbnQudG9rZW5OYW1lIC8gaW50ZW50LmFtb3VudCAoc2VlIG1wY1V0aWxzLmNyZWF0ZUludGVudCkuXG4gIGNvbnN0IGludGVudCA9IHR4UmVxdWVzdC5pbnRlbnQgYXMgUG9wdWxhdGVkSW50ZW50O1xuICBpZiAoXG4gICAgIWVmZmVjdGl2ZVR4UGFyYW1zLndyYXBQYXJhbXMgJiZcbiAgICAoaW50ZW50Py5pbnRlbnRUeXBlID09PSAnd3JhcEFwcHJvdmUnIHx8IGludGVudD8uaW50ZW50VHlwZSA9PT0gJ3dyYXAnKSAmJlxuICAgIHR5cGVvZiBpbnRlbnQudG9rZW5OYW1lID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBpbnRlbnQuYW1vdW50ID09PSAnc3RyaW5nJ1xuICApIHtcbiAgICBlZmZlY3RpdmVUeFBhcmFtcy53cmFwUGFyYW1zID0geyB0b2tlbk5hbWU6IGludGVudC50b2tlbk5hbWUsIGFtb3VudDogaW50ZW50LmFtb3VudCB9O1xuICB9XG5cbiAgLy8gQWxsIHN0YWtpbmcgaW50ZW50cyAoQlNDIGRlbGVnYXRlL3VuZGVsZWdhdGUsIENFTE8gc3Rha2UvdW5zdGFrZSwgZXRjLikgY2FycnlcbiAgLy8gc3Rha2luZ1JlcXVlc3RJZCBhcyBhIHJlcXVpcmVkIGZpZWxkIG9uIEJhc2VTdGFrZUludGVudCAoQGJpdGdvL3B1YmxpYy10eXBlcykuXG4gIC8vIFVzZSBpdHMgcHJlc2VuY2UgYXMgYSBnZW5lcmljIHN0YWtpbmcgc2lnbmFsIOKAlCBubyBuZWVkIHRvIGVudW1lcmF0ZSBldmVyeSBpbnRlbnRUeXBlLlxuICBjb25zdCBpc1N0YWtpbmdJbnRlbnQgPSAhISh0eFJlcXVlc3QuaW50ZW50IGFzIFBvcHVsYXRlZEludGVudCk/LnN0YWtpbmdSZXF1ZXN0SWQ7XG5cbiAgLy8gYnVpbGRQYXJhbXMudHlwZSBmcm9tIHRoZSB3YWxsZXQgVUkgaXMgUGFzY2FsQ2FzZSAoJ0ltcG9ydCcpOyBpbnRlbnQuaW50ZW50VHlwZSBmcm9tIFdQXG4gIC8vIGlzIGxvd2VyY2FzZSAoJ2ltcG9ydCcpLiBFaXRoZXIgbWF5IGJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZGVwZW5kaW5nIG9uIHRoZSBzaWduaW5nIHBhdGguXG4gIGNvbnN0IGludGVudFR5cGUgPSAodHhSZXF1ZXN0LmludGVudCBhcyBQb3B1bGF0ZWRJbnRlbnQpPy5pbnRlbnRUeXBlID8/ICcnO1xuXG4gIGlmIChcbiAgICAhZWZmZWN0aXZlVHhQYXJhbXMucmVjaXBpZW50cz8ubGVuZ3RoICYmXG4gICAgIWlzU3Rha2luZ0ludGVudCAmJlxuICAgICFOT19SRUNJUElFTlRfVFhfVFlQRVMuaGFzKHR4VHlwZSkgJiZcbiAgICAhTk9fUkVDSVBJRU5UX1RYX1RZUEVTLmhhcyhpbnRlbnRUeXBlKVxuICApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAnUmVjaXBpZW50IGRldGFpbHMgYXJlIHJlcXVpcmVkIHRvIHZlcmlmeSB0aGlzIHRyYW5zYWN0aW9uIGJlZm9yZSBzaWduaW5nLiBQYXNzIHR4UGFyYW1zIHdpdGggYXQgbGVhc3Qgb25lIHJlY2lwaWVudC4nXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBlZmZlY3RpdmVUeFBhcmFtcztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { RedpallasBitgoToOVC1Round1Response, RedpallasBitgoToOVC1Round2Response, RedpallasMPCv2KeyGenRound1Response, RedpallasMPCv2KeyGenRound2Response, RedpallasOVC1ToBitgoRound1Payload, RedpallasOVC2ToBitgoRound2Payload } from '@bitgo/public-types';
|
|
2
|
+
import { IBaseCoin } from '../../../../baseCoin';
|
|
3
|
+
import { BitGoBase } from '../../../../bitgoBase';
|
|
4
|
+
import { Keychain } from '../../../..';
|
|
5
|
+
import { RedpallasMPCv2KeyGenSendFn } from '../redpallasMPCv2KeyGenSender';
|
|
6
|
+
/**
|
|
7
|
+
* Custodial (SMC/OVC) DKG-only key generation for the Zcash Orchard shielded pool (RedPallas).
|
|
8
|
+
*
|
|
9
|
+
* Mirrors for both custodial and SMC wallet
|
|
10
|
+
* ceremonies driven by external OVC (offline vault console) clients: round1/round2 payloads are
|
|
11
|
+
* relayed from OVC1/OVC2 to BitGo and back. There is no round3 (no signing) - RedPallas MPS DKG
|
|
12
|
+
* completes key generation in 2 online rounds, same as EdDSA MPS DKG.
|
|
13
|
+
*/
|
|
14
|
+
export declare class RedpallasMPCv2SMCUtils {
|
|
15
|
+
private bitgo;
|
|
16
|
+
private baseCoin;
|
|
17
|
+
private MPCv2Utils;
|
|
18
|
+
constructor(bitgo: BitGoBase, baseCoin: IBaseCoin);
|
|
19
|
+
keyGenRound1(enterprise: string, payload: RedpallasOVC1ToBitgoRound1Payload): Promise<RedpallasBitgoToOVC1Round1Response>;
|
|
20
|
+
keyGenRound2(enterprise: string, payload: RedpallasOVC2ToBitgoRound2Payload): Promise<RedpallasBitgoToOVC1Round2Response>;
|
|
21
|
+
keyGenRound1BySender(senderFn: RedpallasMPCv2KeyGenSendFn<RedpallasMPCv2KeyGenRound1Response>, payload: RedpallasOVC1ToBitgoRound1Payload): Promise<RedpallasBitgoToOVC1Round1Response>;
|
|
22
|
+
keyGenRound2BySender(senderFn: RedpallasMPCv2KeyGenSendFn<RedpallasMPCv2KeyGenRound2Response>, payload: RedpallasOVC2ToBitgoRound2Payload): Promise<RedpallasBitgoToOVC1Round2Response>;
|
|
23
|
+
uploadClientKeys(bitgoKeyId: string, userCommonKeychain: string, backupCommonKeychain: string): Promise<{
|
|
24
|
+
userKeychain: Keychain;
|
|
25
|
+
backupKeychain: Keychain;
|
|
26
|
+
bitgoKeychain: Keychain;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../../src/bitgo/utils/tss/redpallas/SMC/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kCAAkC,EAClC,kCAAkC,EAElC,kCAAkC,EAClC,kCAAkC,EAClC,iCAAiC,EACjC,iCAAiC,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,0BAA0B,EAAsC,MAAM,+BAA+B,CAAC;AAE/G;;;;;;;GAOG;AACH,qBAAa,sBAAsB;IAGrB,OAAO,CAAC,KAAK;IAAa,OAAO,CAAC,QAAQ;IAFtD,OAAO,CAAC,UAAU,CAAsB;gBAEpB,KAAK,EAAE,SAAS,EAAU,QAAQ,EAAE,SAAS;IAIpD,YAAY,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,kCAAkC,CAAC;IAIjC,YAAY,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,kCAAkC,CAAC;IAIjC,oBAAoB,CAC/B,QAAQ,EAAE,0BAA0B,CAAC,kCAAkC,CAAC,EACxE,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,kCAAkC,CAAC;IAwCjC,oBAAoB,CAC/B,QAAQ,EAAE,0BAA0B,CAAC,kCAAkC,CAAC,EACxE,OAAO,EAAE,iCAAiC,GACzC,OAAO,CAAC,kCAAkC,CAAC;IAsDjC,gBAAgB,CAC3B,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAC1B,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC;QAAE,YAAY,EAAE,QAAQ,CAAC;QAAC,cAAc,EAAE,QAAQ,CAAC;QAAC,aAAa,EAAE,QAAQ,CAAA;KAAE,CAAC;CA8B1F"}
|