@bitgo-beta/sdk-core 8.2.1-beta.182 → 8.2.1-beta.1821
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 +41 -29
- package/dist/src/account-lib/baseCoin/enum.d.ts +50 -5
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
- package/dist/src/account-lib/baseCoin/enum.js +90 -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.js +23 -9
- 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/account-lib/util/ed25519KeyDeriver.d.ts +2 -1
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +5 -3
- package/dist/src/api/bip32path.js +2 -3
- package/dist/src/api/index.js +6 -2
- package/dist/src/api/types.d.ts +31 -0
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/api/types.js +1 -1
- package/dist/src/bitgo/address-book/address-book.d.ts +61 -0
- package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/address-book.js +139 -0
- package/dist/src/bitgo/address-book/index.d.ts +3 -0
- package/dist/src/bitgo/address-book/index.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/index.js +19 -0
- package/dist/src/bitgo/address-book/types.d.ts +170 -0
- package/dist/src/bitgo/address-book/types.d.ts.map +1 -0
- package/dist/src/bitgo/address-book/types.js +3 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +99 -11
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
- package/dist/src/bitgo/baseCoin/baseCoin.js +168 -16
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +192 -28
- 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 +8 -1
- 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 +17 -3
- package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
- package/dist/src/bitgo/coinFactory.js +26 -3
- package/dist/src/bitgo/config.d.ts +3 -95
- 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 +80 -0
- package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
- package/dist/src/bitgo/defi/defiVault.js +201 -0
- package/dist/src/bitgo/defi/iDefiVault.d.ts +59 -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 +3 -4
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
- package/dist/src/bitgo/enterprise/enterprise.js +39 -21
- package/dist/src/bitgo/enterprise/enterprises.js +27 -13
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +2 -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 +69 -5
- package/dist/src/bitgo/environments.d.ts.map +1 -1
- package/dist/src/bitgo/environments.js +403 -40
- package/dist/src/bitgo/errors.d.ts +175 -0
- package/dist/src/bitgo/errors.d.ts.map +1 -1
- package/dist/src/bitgo/errors.js +166 -2
- 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 +4 -1
- package/dist/src/bitgo/index.d.ts.map +1 -1
- package/dist/src/bitgo/index.js +30 -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 +19 -6
- package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
- package/dist/src/bitgo/internal/keycard.js +105 -44
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts +24 -0
- package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/decryptKeychain.js +67 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts +96 -8
- 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 +49 -6
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
- package/dist/src/bitgo/keychain/keychains.js +249 -46
- 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 +1 -0
- 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 +228 -110
- 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 +24 -1
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
- package/dist/src/bitgo/recovery/initiate.js +88 -40
- package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +132 -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 +173 -7
- 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 +140 -7
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +15 -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 +5 -0
- package/dist/src/bitgo/trading/network/index.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/index.js +21 -0
- package/dist/src/bitgo/trading/network/network.d.ts +36 -0
- package/dist/src/bitgo/trading/network/network.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/network.js +99 -0
- package/dist/src/bitgo/trading/network/types.d.ts +277 -0
- package/dist/src/bitgo/trading/network/types.d.ts.map +1 -0
- package/dist/src/bitgo/trading/network/types.js +3 -0
- 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 +22 -1
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
- package/dist/src/bitgo/trading/tradingAccount.js +64 -7
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +38 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
- package/dist/src/bitgo/tss/bitgoPubKeys.js +72 -0
- package/dist/src/bitgo/tss/common.d.ts +40 -6
- package/dist/src/bitgo/tss/common.d.ts.map +1 -1
- package/dist/src/bitgo/tss/common.js +122 -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 +37 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +95 -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/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 +8 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +55 -13
- 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 +4 -2
- package/dist/src/bitgo/utils/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/index.js +27 -11
- package/dist/src/bitgo/utils/messageTypes.d.ts +40 -0
- package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
- package/dist/src/bitgo/utils/messageTypes.js +17 -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 +129 -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 +12 -9
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/opengpgUtils.js +77 -64
- package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
- package/dist/src/bitgo/utils/postWithCodec.js +4 -38
- 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/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 +37 -0
- package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/addressVerification.js +82 -0
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +90 -17
- package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/baseTSSUtils.js +278 -45
- package/dist/src/bitgo/utils/tss/baseTypes.d.ts +380 -45
- 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 +24 -51
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +171 -246
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +203 -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 +8 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +13 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/ecdsa/index.js +10 -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 +107 -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 +118 -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 +28 -11
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +218 -103
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +90 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +561 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +6 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +13 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -8
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +7 -7
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +40 -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 +1 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
- package/dist/src/bitgo/utils/tss/index.js +24 -9
- 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/wallet/BuildParams.d.ts +50 -1
- package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/BuildParams.js +58 -11
- package/dist/src/bitgo/wallet/iWallet.d.ts +480 -22
- 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 +157 -16
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/iWallets.js +63 -3
- package/dist/src/bitgo/wallet/index.js +6 -2
- package/dist/src/bitgo/wallet/wallet.d.ts +369 -24
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallet.js +2017 -408
- package/dist/src/bitgo/wallet/wallets.d.ts +88 -4
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
- package/dist/src/bitgo/wallet/wallets.js +1054 -158
- 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/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 +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +32 -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/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 +283 -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 +262 -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 +230 -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/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/utils/abstractUtxoCoinUtil.js +24 -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/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 +32 -38
- 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 +203 -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 +316 -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 +875 -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/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 +1211 -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 +311 -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/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 +97 -0
- package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +23 -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/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/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/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/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 +135 -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 +43 -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/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 +228 -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 +320 -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 +204 -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 +24 -21
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -1499
- 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/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
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* @hidden
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.drawKeycard =
|
|
6
|
+
exports.drawKeycard = drawKeycard;
|
|
7
|
+
exports.drawKeycardAsync = drawKeycardAsync;
|
|
7
8
|
/**
|
|
8
9
|
*/
|
|
9
10
|
const lodash_1 = require("lodash");
|
|
@@ -80,27 +81,10 @@ const generateQuestions = (coin) => {
|
|
|
80
81
|
];
|
|
81
82
|
};
|
|
82
83
|
/**
|
|
83
|
-
*
|
|
84
|
-
* @param options
|
|
84
|
+
* Build QR code payload for each keycard box. Does not perform encryption.
|
|
85
85
|
*/
|
|
86
|
-
function
|
|
87
|
-
const {
|
|
88
|
-
// When using just 'generateWallet', we get back an unencrypted prv for the backup keychain
|
|
89
|
-
// If the user passes in their passphrase, we can encrypt it
|
|
90
|
-
if (backupKeychain.prv && passphrase) {
|
|
91
|
-
backupKeychain.encryptedPrv = encrypt({
|
|
92
|
-
input: backupKeychain.prv,
|
|
93
|
-
password: passphrase,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
// If we have the passcode encryption code, create a box D with the encryptedWalletPasscode
|
|
97
|
-
let encryptedWalletPasscode;
|
|
98
|
-
if (passphrase && passcodeEncryptionCode) {
|
|
99
|
-
encryptedWalletPasscode = encrypt({
|
|
100
|
-
input: passphrase,
|
|
101
|
-
password: passcodeEncryptionCode,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
86
|
+
function buildKeycardQrData(options, encryptedWalletPasscode) {
|
|
87
|
+
const { userKeychain, bitgoKeychain, backupKeychain, coinShortName, walletKeyID, backupKeyID } = options;
|
|
104
88
|
// PDF QR Code data
|
|
105
89
|
const qrData = {
|
|
106
90
|
user: {
|
|
@@ -131,7 +115,7 @@ function getKeyData(options) {
|
|
|
131
115
|
if (backupKeyID) {
|
|
132
116
|
qrData.backup.keyID = backupKeyID;
|
|
133
117
|
}
|
|
134
|
-
if (lodash_1.isUndefined(userKeychain.encryptedPrv)) {
|
|
118
|
+
if ((0, lodash_1.isUndefined)(userKeychain.encryptedPrv)) {
|
|
135
119
|
// User provided their own key - this is a cold wallet
|
|
136
120
|
qrData.user.title = 'A: Provided User Key';
|
|
137
121
|
qrData.user.desc = 'This is the public key you provided for your wallet.';
|
|
@@ -139,10 +123,10 @@ function getKeyData(options) {
|
|
|
139
123
|
// The user provided their own public key, we can remove box D
|
|
140
124
|
delete qrData.passcode;
|
|
141
125
|
}
|
|
142
|
-
else if (lodash_1.isUndefined(encryptedWalletPasscode)) {
|
|
126
|
+
else if ((0, lodash_1.isUndefined)(encryptedWalletPasscode)) {
|
|
143
127
|
delete qrData.passcode;
|
|
144
128
|
}
|
|
145
|
-
if (!lodash_1.isUndefined(backupKeychain.provider)) {
|
|
129
|
+
if (!(0, lodash_1.isUndefined)(backupKeychain.provider)) {
|
|
146
130
|
const backupKeyProviderName = backupKeychain.provider;
|
|
147
131
|
// Backup key held with KRS
|
|
148
132
|
qrData.backup = {
|
|
@@ -153,7 +137,7 @@ function getKeyData(options) {
|
|
|
153
137
|
data: backupKeychain.pub,
|
|
154
138
|
};
|
|
155
139
|
}
|
|
156
|
-
else if (lodash_1.isUndefined(backupKeychain.encryptedPrv)) {
|
|
140
|
+
else if ((0, lodash_1.isUndefined)(backupKeychain.encryptedPrv)) {
|
|
157
141
|
// User supplied the xpub
|
|
158
142
|
qrData.backup = {
|
|
159
143
|
title: 'B: Backup Key',
|
|
@@ -164,11 +148,59 @@ function getKeyData(options) {
|
|
|
164
148
|
return qrData;
|
|
165
149
|
}
|
|
166
150
|
/**
|
|
167
|
-
*
|
|
151
|
+
* TODO: Deprecate this function in favor of getKeyDataAsync once v2 encryption is default.
|
|
152
|
+
* Collect all data which will go onto the keycard
|
|
168
153
|
* @param options
|
|
169
154
|
*/
|
|
170
|
-
function
|
|
171
|
-
const {
|
|
155
|
+
function getKeyData(options) {
|
|
156
|
+
const { encrypt, backupKeychain, passphrase, passcodeEncryptionCode, ...qrOptions } = options;
|
|
157
|
+
// When using just 'generateWallet', we get back an unencrypted prv for the backup keychain
|
|
158
|
+
// If the user passes in their passphrase, we can encrypt it
|
|
159
|
+
if (backupKeychain.prv && passphrase) {
|
|
160
|
+
backupKeychain.encryptedPrv = encrypt({
|
|
161
|
+
input: backupKeychain.prv,
|
|
162
|
+
password: passphrase,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// If we have the passcode encryption code, create a box D with the encryptedWalletPasscode
|
|
166
|
+
let encryptedWalletPasscode;
|
|
167
|
+
if (passphrase && passcodeEncryptionCode) {
|
|
168
|
+
encryptedWalletPasscode = encrypt({
|
|
169
|
+
input: passphrase,
|
|
170
|
+
password: passcodeEncryptionCode,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return buildKeycardQrData({ ...qrOptions, backupKeychain }, encryptedWalletPasscode);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Async version of getKeyData with support for v2 (Argon2id) encryption.
|
|
177
|
+
* Sequential encrypt: backup key first, then passcode (matches original getKeyDataAsync).
|
|
178
|
+
* @param options
|
|
179
|
+
*/
|
|
180
|
+
async function getKeyDataAsync(options) {
|
|
181
|
+
const { encrypt, backupKeychain, passphrase, passcodeEncryptionCode, encryptionVersion, ...qrOptions } = options;
|
|
182
|
+
if (backupKeychain.prv && passphrase) {
|
|
183
|
+
backupKeychain.encryptedPrv = await encrypt({
|
|
184
|
+
input: backupKeychain.prv,
|
|
185
|
+
password: passphrase,
|
|
186
|
+
encryptionVersion,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
let encryptedWalletPasscode;
|
|
190
|
+
if (passphrase && passcodeEncryptionCode) {
|
|
191
|
+
encryptedWalletPasscode = await encrypt({
|
|
192
|
+
input: passphrase,
|
|
193
|
+
password: passcodeEncryptionCode,
|
|
194
|
+
encryptionVersion,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
return buildKeycardQrData({ ...qrOptions, backupKeychain }, encryptedWalletPasscode);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Render keycard PDF pages from pre-built QR data.
|
|
201
|
+
*/
|
|
202
|
+
function renderKeycardPdf(options, keyData) {
|
|
203
|
+
const { jsPDF, QRCode, activationCode, walletLabel, coinName } = options;
|
|
172
204
|
const margin = 30;
|
|
173
205
|
const font = {
|
|
174
206
|
header: 24,
|
|
@@ -222,20 +254,6 @@ function drawKeycard(options) {
|
|
|
222
254
|
moveDown(20);
|
|
223
255
|
doc.setFontSize(font.body).setTextColor(color.red);
|
|
224
256
|
doc.text('Print this document, or keep it securely offline. See second page for FAQ.', left(75), y);
|
|
225
|
-
const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, } = options;
|
|
226
|
-
// Get the data for the first page (qr codes)
|
|
227
|
-
const keyData = getKeyData({
|
|
228
|
-
encrypt,
|
|
229
|
-
coinShortName,
|
|
230
|
-
passphrase,
|
|
231
|
-
passcodeEncryptionCode,
|
|
232
|
-
walletKeyID,
|
|
233
|
-
backupKeyID,
|
|
234
|
-
userKeychain,
|
|
235
|
-
bitgoKeychain,
|
|
236
|
-
backupKeychain,
|
|
237
|
-
});
|
|
238
|
-
// Generate the first page's data for the backup PDF
|
|
239
257
|
moveDown(35);
|
|
240
258
|
const qrSize = 130;
|
|
241
259
|
// Draw each Box with QR code and description
|
|
@@ -300,5 +318,48 @@ function drawKeycard(options) {
|
|
|
300
318
|
});
|
|
301
319
|
return doc;
|
|
302
320
|
}
|
|
303
|
-
|
|
304
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7R0FDRztBQUNILG1DQUFxQztBQUdyQzs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDekMsT0FBTztRQUNMO1lBQ0UsQ0FBQyxFQUFFLHNCQUFzQjtZQUN6QixDQUFDLEVBQUU7Z0JBQ0QsK0VBQStFLElBQUksR0FBRztnQkFDdEYsMkRBQTJELEdBQUcsZ0NBQWdDO2dCQUM5Rix1RkFBdUY7YUFDeEY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDJCQUEyQjtZQUM5QixDQUFDLEVBQUU7Z0JBQ0QsK0ZBQStGO2dCQUMvRixtR0FBbUc7Z0JBQ25HLGdEQUFnRDtnQkFDaEQsRUFBRTtnQkFDRiw2RkFBNkY7Z0JBQzdGLCtGQUErRjtnQkFDL0Ysc0RBQXNEO2FBQ3ZEO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxnQ0FBZ0M7WUFDbkMsQ0FBQyxFQUFFO2dCQUNELGdFQUFnRSxJQUFJLDJCQUEyQjtnQkFDL0YsK0ZBQStGO2dCQUMvRix1Q0FBdUM7Z0JBQ3ZDLDBDQUEwQzthQUMzQztTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsa0NBQWtDO1lBQ3JDLENBQUMsRUFBRTtnQkFDRCxrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsOENBQThDO1lBQ2pELENBQUMsRUFBRTtnQkFDRCx3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsNERBQTREO1lBQy9ELENBQUMsRUFBRTtnQkFDRCxvRkFBb0Y7Z0JBQ3BGLDREQUE0RCxJQUFJLGlDQUFp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LENBQUMsQ0FBQztRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBNUtELGtDQTRLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IChwYXJhbXM6IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIGRhdGEgd2hpY2ggd2lsbCBnbyBvbnRvIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRLZXlEYXRhKG9wdGlvbnM6IEdldEtleURhdGFPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFdoZW4gdXNpbmcganVzdCAnZ2VuZXJhdGVXYWxsZXQnLCB3ZSBnZXQgYmFjayBhbiB1bmVuY3J5cHRlZCBwcnYgZm9yIHRoZSBiYWNrdXAga2V5Y2hhaW5cbiAgLy8gSWYgdGhlIHVzZXIgcGFzc2VzIGluIHRoZWlyIHBhc3NwaHJhc2UsIHdlIGNhbiBlbmNyeXB0IGl0XG4gIGlmIChiYWNrdXBLZXljaGFpbi5wcnYgJiYgcGFzc3BocmFzZSkge1xuICAgIGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydiA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IGJhY2t1cEtleWNoYWluLnBydixcbiAgICAgIHBhc3N3b3JkOiBwYXNzcGhyYXNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFzc2NvZGUgZW5jcnlwdGlvbiBjb2RlLCBjcmVhdGUgYSBib3ggRCB3aXRoIHRoZSBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZVxuICBsZXQgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGU7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBERiBRUiBDb2RlIGRhdGFcbiAgY29uc3QgcXJEYXRhOiBhbnkgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICtcbiAgICAgICAgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICAgIGRhdGE6IGJpdGdvS2V5Y2hhaW4ucHViLFxuICAgIH0sXG4gICAgcGFzc2NvZGU6IHtcbiAgICAgIHRpdGxlOiAnRDogRW5jcnlwdGVkIFdhbGxldCBQYXNzd29yZCcsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgd2FsbGV0ICBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlICcgKyAnd2l0aCBhIGtleSBoZWxkIGJ5XFxyXFxuQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHdhbGxldEtleUlEKSB7XG4gICAgcXJEYXRhLnVzZXIua2V5SUQgPSB3YWxsZXRLZXlJRDtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlJRCkge1xuICAgIHFyRGF0YS5iYWNrdXAua2V5SUQgPSBiYWNrdXBLZXlJRDtcbiAgfVxuXG4gIGlmIChpc1VuZGVmaW5lZCh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIGtleSAtIHRoaXMgaXMgYSBjb2xkIHdhbGxldFxuICAgIHFyRGF0YS51c2VyLnRpdGxlID0gJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JztcbiAgICBxckRhdGEudXNlci5kZXNjID0gJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nO1xuICAgIHFyRGF0YS51c2VyLmRhdGEgPSB1c2VyS2V5Y2hhaW4ucHViO1xuXG4gICAgLy8gVGhlIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIHB1YmxpYyBrZXksIHdlIGNhbiByZW1vdmUgYm94IERcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKSkge1xuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLnByb3ZpZGVyKSkge1xuICAgIGNvbnN0IGJhY2t1cEtleVByb3ZpZGVyTmFtZSA9IGJhY2t1cEtleWNoYWluLnByb3ZpZGVyO1xuICAgIC8vIEJhY2t1cCBrZXkgaGVsZCB3aXRoIEtSU1xuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgYCwgYW4gJHtjb2luU2hvcnROYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgJyB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgc3VwcGxpZWQgdGhlIHhwdWJcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSBwdWJsaWMgcG9ydGlvbiBvZiB5b3VyIGJhY2t1cCBrZXksIHdoaWNoIHlvdSBwcm92aWRlZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBqc1BERjogYW55O1xuICBRUkNvZGU6IGFueTtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsganNQREYsIFFSQ29kZSwgY29pblNob3J0TmFtZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBtYXJnaW4gPSAzMDtcblxuICBjb25zdCBmb250ID0ge1xuICAgIGhlYWRlcjogMjQsXG4gICAgc3ViaGVhZGVyOiAxNSxcbiAgICBib2R5OiAxMixcbiAgfTtcblxuICBjb25zdCBjb2xvciA9IHtcbiAgICBibGFjazogJyMwMDAwMDAnLFxuICAgIGRhcmtncmF5OiAnIzRjNGM0YycsXG4gICAgZ3JheTogJyM5YjliOWInLFxuICAgIHJlZDogJyNlMjFlMWUnLFxuICB9O1xuXG4gIC8vIGRvY3VtZW50IGRldGFpbHNcbiAgY29uc3Qgd2lkdGggPSA4LjUgKiA3MjtcbiAgbGV0IHkgPSAwO1xuXG4gIC8vIEhlbHBlcnMgZm9yIGRhdGEgZm9ybWF0dGluZyAvIHBvc2l0aW9uaW5nIG9uIHRoZSBwYXBlclxuICBjb25zdCBsZWZ0ID0gKHgpID0+IG1hcmdpbiArIHg7XG4gIGNvbnN0IG1vdmVEb3duID0gKHlEZWx0YSkgPT4ge1xuICAgIHkgKz0geURlbHRhO1xuICB9O1xuXG4gIGNvbnN0IGRvYyA9IG5ldyBqc1BERigncG9ydHJhaXQnLCAncHQnLCAnbGV0dGVyJyk7XG4gIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcblxuICAvLyBQREYgSGVhZGVyIEFyZWEgLSBpbmNsdWRlcyB0aGUgbG9nbyBhbmQgY29tcGFueSBuYW1lXG4gIC8vIFRoaXMgaXMgZGF0YSBmb3IgdGhlIEJpdEdvIGxvZ28gaW4gdGhlIHRvcCBsZWZ0IG9mIHRoZSBQREZcbiAgbW92ZURvd24oMzApO1xuXG4gIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhZGQgYW4gaW1hZ2UsIHNpbmNlIHRoYXQgcGF0aCBpcyBkZXBlbmRlbnQgb24gQml0R28gZnJvbnRlbmRcbiAgLy8gZG9jLmFkZEltYWdlKGNvaW5VdGlsaXR5LmdldFNlbGVjdGVkQ29pbk9iaigpLmtleUNhcmRJbWFnZSwgbGVmdCgwKSwgeSArIDEwKTtcblxuICAvLyBBY3RpdmF0aW9uIENvZGVcbiAgbW92ZURvd24oOCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoJ0FjdGl2YXRpb24gQ29kZScsIGxlZnQoNDYwKSwgeSk7XG5cbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBtb3ZlRG93bigyNSk7XG4gIGRvYy50ZXh0KCdZb3VyIEJpdEdvIEtleUNhcmQnLCBsZWZ0KDE1MCksIHkpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoYWN0aXZhdGlvbkNvZGUudG9TdHJpbmcoKSwgbGVmdCg0NjApLCB5KTtcblxuICAvLyBTdWJoZWFkZXJcbiAgLy8gdGl0bGVzXG4gIG1vdmVEb3duKG1hcmdpbik7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoXG4gICAgYENyZWF0ZWQgb24gJHtuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpfSBieSAke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gZm9yIHdhbGxldCBuYW1lZCAke3dhbGxldExhYmVsfWAsXG4gICAgbGVmdCgwKSxcbiAgICB5XG4gICk7XG4gIC8vIGNvcHlcbiAgbW92ZURvd24oMjUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KHdhbGxldExhYmVsLCBsZWZ0KDApLCB5KTtcbiAgLy8gUmVkIEJhclxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGaWxsQ29sb3IoMjU1LCAyMzAsIDIzMCk7XG4gIGRvYy5yZWN0KGxlZnQoMCksIHksIHdpZHRoIC0gMiAqIG1hcmdpbiwgMzIsICdGJyk7XG5cbiAgLy8gd2FybmluZyBtZXNzYWdlXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLnJlZCk7XG4gIGRvYy50ZXh0KCdQcmludCB0aGlzIGRvY3VtZW50LCBvciBrZWVwIGl0IHNlY3VyZWx5IG9mZmxpbmUuIFNlZSBzZWNvbmQgcGFnZSBmb3IgRkFRLicsIGxlZnQoNzUpLCB5KTtcblxuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGZpcnN0IHBhZ2UncyBkYXRhIGZvciB0aGUgYmFja3VwIFBERlxuICBtb3ZlRG93bigzNSk7XG4gIGNvbnN0IHFyU2l6ZSA9IDEzMDtcblxuICAvLyBEcmF3IGVhY2ggQm94IHdpdGggUVIgY29kZSBhbmQgZGVzY3JpcHRpb25cbiAgT2JqZWN0LmtleXMoa2V5RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5VHlwZSkge1xuICAgIGNvbnN0IGtleSA9IGtleURhdGFba2V5VHlwZV07XG4gICAgY29uc3QgdG9wWSA9IHk7XG5cbiAgICAvLyBEb24ndCBpbmRlbnQgaWYgd2UncmUgbm90IHByb2R1Y2luZyBRUiBjb2Rlc1xuICAgIGNvbnN0IHRleHRMZWZ0ID0gISFRUkNvZGUgPyBsZWZ0KHFyU2l6ZSArIDE1KSA6IGxlZnQoMTUpO1xuXG4gICAgLy8gRHJhdyBhIFFSIGNvZGUgaWYgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgICBpZiAoUVJDb2RlKSB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gbmV3IFFSQ29kZSh7IHZhbHVlOiBrZXkuZGF0YSwgc2l6ZTogcXJTaXplIH0pLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgZG9jLmFkZEltYWdlKGRhdGFVUkwsIGxlZnQoMCksIHksIHFyU2l6ZSwgcXJTaXplKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgbW92ZURvd24oMTApO1xuICAgIGRvYy50ZXh0KGtleS50aXRsZSwgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIGRvYy50ZXh0KGtleS5kZXNjLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMzApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkgLSAyKTtcbiAgICBkb2MudGV4dCgnRGF0YTonLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGNvbnN0IGlubmVyV2lkdGggPSA3MiAqIDguNSAtIHRleHRMZWZ0IC0gMzA7XG4gICAgZG9jLnNldEZvbnQoJ2NvdXJpZXInKS5zZXRGb250U2l6ZSg5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGNvbnN0IGxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShrZXkuZGF0YSwgaW5uZXJXaWR0aCk7XG4gICAgZG9jLnRleHQobGluZXMsIHRleHRMZWZ0LCB5KTtcblxuICAgIC8vIEFkZCBrZXkgSUQgKGRlcml2YXRpb24gc3RyaW5nKSBpZiBpdCBleGlzdHNcbiAgICBpZiAoa2V5LmtleUlEKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ0tleSBJZDogJyArIGtleS5rZXlJRDtcbiAgICAgIC8vIEdyYXkgYmFyXG4gICAgICBtb3ZlRG93big0NSk7XG4gICAgICBkb2Muc2V0RmlsbENvbG9yKDI0NywgMjQ5LCAyNDkpOyAvLyBHcmF5IGJhY2tncm91bmRcbiAgICAgIGRvYy5zZXREcmF3Q29sb3IoMCwgMCwgMCk7IC8vIEJvcmRlclxuICAgICAgZG9jLnJlY3QodGV4dExlZnQsIHksIHdpZHRoLCAxNSwgJ0ZEJyk7XG5cbiAgICAgIGRvYy50ZXh0KHRleHQsIHRleHRMZWZ0ICsgNSwgeSArIDEwKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG4gICAgLy8gTW92ZSBkb3duIHRoZSBzaXplIG9mIHRoZSBRUiBjb2RlIG1pbnVzIGFjY3VtdWxhdGVkIGhlaWdodCBvbiB0aGUgcmlnaHQgc2lkZSwgcGx1cyBidWZmZXJcbiAgICBtb3ZlRG93bihxclNpemUgLSAoeSAtIHRvcFkpICsgMTUpO1xuICB9KTtcblxuICAvLyBBZGQgYSBuZXcgcGFnZSAoUSArIEEgcGFnZSlcbiAgZG9jLmFkZFBhZ2UoKTtcblxuICAvLyAybmQgcGFnZSB0aXRsZVxuICB5ID0gMDtcbiAgbW92ZURvd24oNTUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KCdCaXRHbyBLZXlDYXJkIEZBUScsIGxlZnQoMCksIHkpO1xuXG4gIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlUXVlc3Rpb25zKGNvaW5OYW1lKTtcblxuICAvLyBEcmF3IHRoZSBRICsgQSBkYXRhIG9uIHRoZSBzZWNvbmQgcGFnZVxuICBtb3ZlRG93bigzMCk7XG4gIHF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KHEucSwgbGVmdCgwKSwgeSk7XG4gICAgbW92ZURvd24oMjApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgcS5hLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGRvYy50ZXh0KGxpbmUsIGxlZnQoMCksIHkpO1xuICAgICAgbW92ZURvd24oZm9udC5ib2R5ICsgMyk7XG4gICAgfSk7XG4gICAgbW92ZURvd24oMjIpO1xuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuIl19
|
|
321
|
+
/**
|
|
322
|
+
* TODO: Deprecate this function in favor of drawKeycardAsync once v2 encryption is default.
|
|
323
|
+
* Draw a keycard into a new pdf document object
|
|
324
|
+
* @param options
|
|
325
|
+
*/
|
|
326
|
+
function drawKeycard(options) {
|
|
327
|
+
const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, coinShortName, jsPDF, QRCode, activationCode, walletLabel, coinName, } = options;
|
|
328
|
+
const keyData = getKeyData({
|
|
329
|
+
encrypt,
|
|
330
|
+
coinShortName,
|
|
331
|
+
passphrase,
|
|
332
|
+
passcodeEncryptionCode,
|
|
333
|
+
walletKeyID,
|
|
334
|
+
backupKeyID,
|
|
335
|
+
userKeychain,
|
|
336
|
+
bitgoKeychain,
|
|
337
|
+
backupKeychain,
|
|
338
|
+
});
|
|
339
|
+
return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Async version of drawKeycard with support for v2 (Argon2id) encryption.
|
|
343
|
+
* Use this when the encrypt callback may return a Promise (e.g. encryptAsync).
|
|
344
|
+
*
|
|
345
|
+
* Draw a keycard into a new pdf document object
|
|
346
|
+
* @param options
|
|
347
|
+
*/
|
|
348
|
+
async function drawKeycardAsync(options) {
|
|
349
|
+
const { encrypt, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, userKeychain, bitgoKeychain, backupKeychain, coinShortName, jsPDF, QRCode, activationCode, walletLabel, coinName, encryptionVersion, } = options;
|
|
350
|
+
// Get the data for the first page (qr codes)
|
|
351
|
+
const keyData = await getKeyDataAsync({
|
|
352
|
+
encrypt,
|
|
353
|
+
coinShortName,
|
|
354
|
+
passphrase,
|
|
355
|
+
passcodeEncryptionCode,
|
|
356
|
+
walletKeyID,
|
|
357
|
+
backupKeyID,
|
|
358
|
+
userKeychain,
|
|
359
|
+
bitgoKeychain,
|
|
360
|
+
backupKeychain,
|
|
361
|
+
encryptionVersion,
|
|
362
|
+
});
|
|
363
|
+
return renderKeycardPdf({ jsPDF, QRCode, activationCode, walletLabel, coinName }, keyData);
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUE2Wkgsa0NBK0JDO0FBU0QsNENBa0NDO0FBcmVEO0dBQ0c7QUFDSCxtQ0FBcUM7QUFJckM7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3pDLE9BQU87UUFDTDtZQUNFLENBQUMsRUFBRSxzQkFBc0I7WUFDekIsQ0FBQyxFQUFFO2dCQUNELCtFQUErRSxJQUFJLEdBQUc7Z0JBQ3RGLDJEQUEyRCxHQUFHLGdDQUFnQztnQkFDOUYsdUZBQXVGO2FBQ3hGO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSwyQkFBMkI7WUFDOUIsQ0FBQyxFQUFFO2dCQUNELCtGQUErRjtnQkFDL0YsbUdBQW1HO2dCQUNuRyxnREFBZ0Q7Z0JBQ2hELEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RiwrRkFBK0Y7Z0JBQy9GLHNEQUFzRDthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsZ0NBQWdDO1lBQ25DLENBQUMsRUFBRTtnQkFDRCxnRUFBZ0UsSUFBSSwyQkFBMkI7Z0JBQy9GLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QywwQ0FBMEM7YUFDM0M7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLGtDQUFrQztZQUNyQyxDQUFDLEVBQUU7Z0JBQ0Qsa0dBQWtHO2dCQUNsRyx1RkFBdUY7Z0JBQ3ZGLHNGQUFzRjtnQkFDdEYsNkZBQTZGO2dCQUM3RiwrQ0FBK0M7YUFDaEQ7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDhDQUE4QztZQUNqRCxDQUFDLEVBQUU7Z0JBQ0Qsd0ZBQXdGO2dCQUN4Riw2RkFBNkY7YUFDOUY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDREQUE0RDtZQUMvRCxDQUFDLEVBQUU7Z0JBQ0Qsb0ZBQW9G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Q1IsaUJBQWlCLEdBQ2xCLEdBQUcsT0FBTyxDQUFDO0lBRVosNkNBQTZDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDO1FBQ3BDLE9BQU87UUFDUCxhQUFhO1FBQ2IsVUFBVTtRQUNWLHNCQUFzQjtRQUN0QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVk7UUFDWixhQUFhO1FBQ2IsY0FBYztRQUNkLGlCQUFpQjtLQUNsQixDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuaW1wb3J0IHsgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgS2V5Y2hhaW4gfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBFbmNyeXB0Rm4sIEVuY3J5cHRGbkFzeW5jLCBFbmNyeXB0aW9uVmVyc2lvbiB9IGZyb20gJy4uLy4uL2FwaSc7XG5cbi8qKlxuICogUmV0dXJuIHRoZSBsaXN0IG9mIHF1ZXN0aW9ucyB0aGF0IHdpbGwgYXBwZWFyIG9uIHRoZSBzZWNvbmQgcGFnZSBvZiB0aGUga2V5Y2FyZFxuICogQHBhcmFtIGNvaW4gbmFtZSBvZiB0aGUgY29pblxuICovXG5jb25zdCBnZW5lcmF0ZVF1ZXN0aW9ucyA9IChjb2luOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICBgVGhlIEtleUNhcmQgY29udGFpbnMgaW1wb3J0YW50IGluZm9ybWF0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlY292ZXIgdGhlICR7Y29pbn0gYCxcbiAgICAgICAgJ2Zyb20geW91ciB3YWxsZXQgaW4gc2V2ZXJhbCBzaXR1YXRpb25zLiBFYWNoIEJpdEdvIHdhbGxldCcgKyAnIGhhcyBpdHMgb3duLCB1bmlxdWUgS2V5Q2FyZC4gJyxcbiAgICAgICAgJ0lmIHlvdSBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgd2FsbGV0cywgeW91IHNob3VsZCByZXRhaW4gdGhlIEtleUNhcmQgZm9yIGVhY2ggb2YgdGhlbS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIHdpdGggaXQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdSBzaG91bGQgcHJpbnQgdGhlIEtleUNhcmQgYW5kL29yIHNhdmUgdGhlIFBERiB0byBhbiBvZmZsaW5lIHN0b3JhZ2UgZGV2aWNlLiBUaGUgcHJpbnQtb3V0ICcsXG4gICAgICAgIFwib3IgVVNCIHN0aWNrIHNob3VsZCBiZSBrZXB0IGluIGEgc2FmZSBwbGFjZSwgc3VjaCBhcyBhIGJhbmsgdmF1bHQgb3IgaG9tZSBzYWZlLiBJdCdzIGEgZ29vZCBpZGVhIFwiLFxuICAgICAgICAndG8ga2VlcCBhIHNlY29uZCBjb3B5IGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLicsXG4gICAgICAgICcnLFxuICAgICAgICBcIkltcG9ydGFudDogSWYgeW91IGhhdmVuJ3QgcHJvdmlkZWQgYW4gZXh0ZXJuYWwgYmFja3VwIGtleSwgdGhlbiB0aGUgb3JpZ2luYWwgUERGIHNob3VsZCBiZSBcIixcbiAgICAgICAgJ2RlbGV0ZWQgZnJvbSBhbnkgbWFjaGluZSB3aGVyZSB0aGUgd2FsbGV0IHdpbGwgYmUgcmVndWxhcmx5IGFjY2Vzc2VkIHRvIHByZXZlbnQgbWFsd2FyZSBmcm9tICcsXG4gICAgICAgICdjYXB0dXJpbmcgYm90aCB0aGUgS2V5Q2FyZCBhbmQgeW91ciB3YWxsZXQgcGFzc2NvZGUuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBzaG91bGQgSSBkbyBpZiBJIGxvc2UgaXQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgYElmIHlvdSBoYXZlIGxvc3Qgb3IgZGFtYWdlZCBhbGwgY29waWVzIG9mIHlvdXIgS2V5Q2FyZCwgeW91ciAke2NvaW59IGlzIHN0aWxsIHNhZmUsIGJ1dCB0aGlzIGAsXG4gICAgICAgICd3YWxsZXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgcmlzayBmb3IgbG9zcy4gQXMgc29vbiBhcyBpcyBjb252ZW5pZW50LCB5b3Ugc2hvdWxkIHVzZSBCaXRHbyAnLFxuICAgICAgICAndG8gZW1wdHkgdGhlIHdhbGxldCBpbnRvIGEgbmV3IHdhbGxldCcsXG4gICAgICAgICcsIGFuZCBkaXNjb250aW51ZSB1c2Ugb2YgdGhlIG9sZCB3YWxsZXQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpZiBzb21lb25lIHNlZXMgbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICBcIkRvbid0IHBhbmljISBBbGwgc2Vuc2l0aXZlIGluZm9ybWF0aW9uIG9uIHRoZSBLZXlDYXJkIGlzIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUsIG9yIHdpdGggYVwiLFxuICAgICAgICAna2V5IHdoaWNoIG9ubHkgQml0R28gaGFzLiBCdXQsIGluIGdlbmVyYWwsIHlvdSBzaG91bGQgbWFrZSBiZXN0IGVmZm9ydHMgdG8ga2VlcCB5b3VyICcsXG4gICAgICAgICdLZXlDYXJkIHByaXZhdGUuIElmIHlvdXIgS2V5Q2FyZCBkb2VzIGdldCBleHBvc2VkIG9yIGNvcGllZCBpbiBhIHdheSB0aGF0IG1ha2VzIHlvdSAnLFxuICAgICAgICAndW5jb21mb3J0YWJsZSwgdGhlIGJlc3QgY291cnNlIG9mIGFjdGlvbiBpcyB0byBlbXB0eSB0aGUgY29ycmVzcG9uZGluZyB3YWxsZXQgaW50byBhbm90aGVyICcsXG4gICAgICAgICd3YWxsZXQgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEkgZm9yZ2V0IG9yIGxvc2UgbXkgd2FsbGV0IHBhc3N3b3JkPycsXG4gICAgICBhOiBbXG4gICAgICAgICdCaXRHbyBjYW4gdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiBRUiBDb2RlIEQgdG8gaGVscCB5b3UgcmVjb3ZlciBhY2Nlc3MgdG8geW91ciB3YWxsZXQuICcsXG4gICAgICAgICdXaXRob3V0IHRoZSBLZXlDYXJkLCBCaXRHbyBpcyBub3QgYWJsZSB0byByZWNvdmVyIGZ1bmRzIGZyb20gYSB3YWxsZXQgd2l0aCBhIGxvc3QgcGFzc3dvcmQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnV2hhdCBpZiBCaXRHbyBiZWNvbWVzIGluYWNjZXNzaWJsZSBmb3IgYW4gZXh0ZW5kZWQgcGVyaW9kPycsXG4gICAgICBhOiBbXG4gICAgICAgICdZb3VyIEtleUNhcmQgYW5kIHdhbGxldCBwYXNzY29kZSBjYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIEJpdEdv4oCZcyBwdWJsaXNoZWQgb3BlbiAnLFxuICAgICAgICBgc291cmNlIHRvb2xzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRnbyB0byByZWNvdmVyIHlvdXIgJHtjb2lufS4gTm90ZTogWW91IHNob3VsZCBuZXZlciBlbnRlciBgLFxuICAgICAgICAnaW5mb3JtYXRpb24gZnJvbSB5b3VyIEtleUNhcmQgaW50byB0b29scyBvdGhlciB0aGFuIHRoZSB0b29scyBCaXRHbyBoYXMgcHVibGlzaGVkLCBvciB5b3VyICcsXG4gICAgICAgICdmdW5kcyBtYXkgYmUgYXQgcmlzayBmb3IgdGhlZnQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxOiAnU2hvdWxkIEkgd3JpdGUgbXkgd2FsbGV0IHBhc3N3b3JkIG9uIG15IEtleUNhcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ05vISBCaXRHb+KAmXMgbXVsdGktc2lnbmF0dXJlIGFwcHJvYWNoIHRvIHNlY3VyaXR5IGRlcGVuZHMgb24gdGhlcmUgbm90IGJlaW5nIGEgc2luZ2xlIHBvaW50ICcsXG4gICAgICAgICdvZiBhdHRhY2suIEJ1dCBpZiB5b3VyIHdhbGxldCBwYXNzd29yZCBpcyBvbiB5b3VyIEtleUNhcmQsIHRoZW4gYW55b25lIHdobyBnYWlucyBhY2Nlc3MgdG8gJyxcbiAgICAgICAgYHlvdXIgS2V5Q2FyZCB3aWxsIGJlIGFibGUgdG8gc3RlYWwgeW91ciAke2NvaW59LiBXZSByZWNvbW1lbmQga2VlcGluZyB5b3VyIHdhbGxldCBwYXNzd29yZCBgLFxuICAgICAgICAnc2FmZSBpbiBhIHNlY3VyZSBwYXNzd29yZCBtYW5hZ2VyIHN1Y2ggYXMgTGFzdFBhc3MsIDFQYXNzd29yZCBvciBLZWVQYXNzLicsXG4gICAgICBdLFxuICAgIH0sXG4gIF07XG59O1xuXG5pbnRlcmZhY2UgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm47XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG50eXBlIEdldEtleURhdGFBc3luY09wdGlvbnMgPSBPbWl0PEdldEtleURhdGFPcHRpb25zLCAnZW5jcnlwdCc+ICYge1xuICBlbmNyeXB0OiBFbmNyeXB0Rm5Bc3luYztcbiAgZW5jcnlwdGlvblZlcnNpb24/OiBFbmNyeXB0aW9uVmVyc2lvbjtcbn07XG5cbmludGVyZmFjZSBCdWlsZEtleWNhcmRRckRhdGFPcHRpb25zIHtcbiAgdXNlcktleWNoYWluOiBLZXljaGFpbjtcbiAgYml0Z29LZXljaGFpbjogS2V5Y2hhaW47XG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbjtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICB3YWxsZXRLZXlJRD86IHN0cmluZztcbiAgYmFja3VwS2V5SUQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQnVpbGQgUVIgY29kZSBwYXlsb2FkIGZvciBlYWNoIGtleWNhcmQgYm94LiBEb2VzIG5vdCBwZXJmb3JtIGVuY3J5cHRpb24uXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkS2V5Y2FyZFFyRGF0YShvcHRpb25zOiBCdWlsZEtleWNhcmRRckRhdGFPcHRpb25zLCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcbiAgY29uc3QgeyB1c2VyS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBjb2luU2hvcnROYW1lLCB3YWxsZXRLZXlJRCwgYmFja3VwS2V5SUQgfSA9IG9wdGlvbnM7XG5cbiAgLy8gUERGIFFSIENvZGUgZGF0YVxuICBjb25zdCBxckRhdGE6IGFueSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfSxcbiAgICBiYWNrdXA6IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZS4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYml0Z286IHtcbiAgICAgIHRpdGxlOiAnQzogQml0R28gUHVibGljIEtleScsXG4gICAgICBkZXNjOlxuICAgICAgICAnVGhpcyBpcyB0aGUgcHVibGljIHBhcnQgb2YgdGhlIGtleSB0aGF0IEJpdEdvIHdpbGwgdXNlIHRvICcgK1xuICAgICAgICAnY28tc2lnbiB0cmFuc2FjdGlvbnNcXHJcXG53aXRoIHlvdSBvbiB5b3VyIHdhbGxldC4nLFxuICAgICAgZGF0YTogYml0Z29LZXljaGFpbi5wdWIsXG4gICAgfSxcbiAgICBwYXNzY29kZToge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgV2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSB3YWxsZXQgIHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgJyArICd3aXRoIGEga2V5IGhlbGQgYnlcXHJcXG5CaXRHby4nLFxuICAgICAgZGF0YTogZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUsXG4gICAgfSxcbiAgfTtcblxuICBpZiAod2FsbGV0S2V5SUQpIHtcbiAgICBxckRhdGEudXNlci5rZXlJRCA9IHdhbGxldEtleUlEO1xuICB9XG5cbiAgaWYgKGJhY2t1cEtleUlEKSB7XG4gICAgcXJEYXRhLmJhY2t1cC5rZXlJRCA9IGJhY2t1cEtleUlEO1xuICB9XG5cbiAgaWYgKGlzVW5kZWZpbmVkKHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYpKSB7XG4gICAgLy8gVXNlciBwcm92aWRlZCB0aGVpciBvd24ga2V5IC0gdGhpcyBpcyBhIGNvbGQgd2FsbGV0XG4gICAgcXJEYXRhLnVzZXIudGl0bGUgPSAnQTogUHJvdmlkZWQgVXNlciBLZXknO1xuICAgIHFyRGF0YS51c2VyLmRlc2MgPSAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0Lic7XG4gICAgcXJEYXRhLnVzZXIuZGF0YSA9IHVzZXJLZXljaGFpbi5wdWI7XG5cbiAgICAvLyBUaGUgdXNlciBwcm92aWRlZCB0aGVpciBvd24gcHVibGljIGtleSwgd2UgY2FuIHJlbW92ZSBib3ggRFxuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUpKSB7XG4gICAgZGVsZXRlIHFyRGF0YS5wYXNzY29kZTtcbiAgfVxuXG4gIGlmICghaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4ucHJvdmlkZXIpKSB7XG4gICAgY29uc3QgYmFja3VwS2V5UHJvdmlkZXJOYW1lID0gYmFja3VwS2V5Y2hhaW4ucHJvdmlkZXI7XG4gICAgLy8gQmFja3VwIGtleSBoZWxkIHdpdGggS1JTXG4gICAgcXJEYXRhLmJhY2t1cCA9IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJOYW1lfWAgK1xuICAgICAgICBgLCBhbiAke2NvaW5TaG9ydE5hbWV9IHJlY292ZXJ5IHNlcnZpY2UuIElmIHlvdSBsb3NlXFxyXFxueW91ciBrZXksICR7YmFja3VwS2V5UHJvdmlkZXJOYW1lfWAgK1xuICAgICAgICAnIHdpbGwgYmUgYWJsZSB0byBzaWduIHRyYW5zYWN0aW9ucyB0byByZWNvdmVyIGZ1bmRzLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5wdWIsXG4gICAgfTtcbiAgfSBlbHNlIGlmIChpc1VuZGVmaW5lZChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpKSB7XG4gICAgLy8gVXNlciBzdXBwbGllZCB0aGUgeHB1YlxuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgdGhlIHB1YmxpYyBwb3J0aW9uIG9mIHlvdXIgYmFja3VwIGtleSwgd2hpY2ggeW91IHByb3ZpZGVkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5wdWIsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbi8qKlxuICogVE9ETzogRGVwcmVjYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3Igb2YgZ2V0S2V5RGF0YUFzeW5jIG9uY2UgdjIgZW5jcnlwdGlvbiBpcyBkZWZhdWx0LlxuICogQ29sbGVjdCBhbGwgZGF0YSB3aGljaCB3aWxsIGdvIG9udG8gdGhlIGtleWNhcmRcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGdldEtleURhdGEob3B0aW9uczogR2V0S2V5RGF0YU9wdGlvbnMpOiBhbnkge1xuICBjb25zdCB7IGVuY3J5cHQsIGJhY2t1cEtleWNoYWluLCBwYXNzcGhyYXNlLCBwYXNzY29kZUVuY3J5cHRpb25Db2RlLCAuLi5xck9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgLy8gV2hlbiB1c2luZyBqdXN0ICdnZW5lcmF0ZVdhbGxldCcsIHdlIGdldCBiYWNrIGFuIHVuZW5jcnlwdGVkIHBydiBmb3IgdGhlIGJhY2t1cCBrZXljaGFpblxuICAvLyBJZiB0aGUgdXNlciBwYXNzZXMgaW4gdGhlaXIgcGFzc3BocmFzZSwgd2UgY2FuIGVuY3J5cHQgaXRcbiAgaWYgKGJhY2t1cEtleWNoYWluLnBydiAmJiBwYXNzcGhyYXNlKSB7XG4gICAgYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2ID0gZW5jcnlwdCh7XG4gICAgICBpbnB1dDogYmFja3VwS2V5Y2hhaW4ucHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgfSk7XG4gIH1cblxuICAvLyBJZiB3ZSBoYXZlIHRoZSBwYXNzY29kZSBlbmNyeXB0aW9uIGNvZGUsIGNyZWF0ZSBhIGJveCBEIHdpdGggdGhlIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlXG4gIGxldCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXNzcGhyYXNlLFxuICAgICAgcGFzc3dvcmQ6IHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYnVpbGRLZXljYXJkUXJEYXRhKHsgLi4ucXJPcHRpb25zLCBiYWNrdXBLZXljaGFpbiB9LCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSk7XG59XG5cbi8qKlxuICogQXN5bmMgdmVyc2lvbiBvZiBnZXRLZXlEYXRhIHdpdGggc3VwcG9ydCBmb3IgdjIgKEFyZ29uMmlkKSBlbmNyeXB0aW9uLlxuICogU2VxdWVudGlhbCBlbmNyeXB0OiBiYWNrdXAga2V5IGZpcnN0LCB0aGVuIHBhc3Njb2RlIChtYXRjaGVzIG9yaWdpbmFsIGdldEtleURhdGFBc3luYykuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5hc3luYyBmdW5jdGlvbiBnZXRLZXlEYXRhQXN5bmMob3B0aW9uczogR2V0S2V5RGF0YUFzeW5jT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gIGNvbnN0IHsgZW5jcnlwdCwgYmFja3VwS2V5Y2hhaW4sIHBhc3NwaHJhc2UsIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIGVuY3J5cHRpb25WZXJzaW9uLCAuLi5xck9wdGlvbnMgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGJhY2t1cEtleWNoYWluLnBydiAmJiBwYXNzcGhyYXNlKSB7XG4gICAgYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2ID0gYXdhaXQgZW5jcnlwdCh7XG4gICAgICBpbnB1dDogYmFja3VwS2V5Y2hhaW4ucHJ2LFxuICAgICAgcGFzc3dvcmQ6IHBhc3NwaHJhc2UsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIGxldCBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBhd2FpdCBlbmNyeXB0KHtcbiAgICAgIGlucHV0OiBwYXNzcGhyYXNlLFxuICAgICAgcGFzc3dvcmQ6IHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBidWlsZEtleWNhcmRRckRhdGEoeyAuLi5xck9wdGlvbnMsIGJhY2t1cEtleWNoYWluIH0sIGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKTtcbn1cblxuaW50ZXJmYWNlIERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucyB7XG4gIGpzUERGOiBhbnk7XG4gIFFSQ29kZTogYW55O1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMsIERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucyB7XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHJhd0tleWNhcmRBc3luY09wdGlvbnMgPSBPbWl0PERyYXdLZXljYXJkT3B0aW9ucywgJ2VuY3J5cHQnPiAmIHtcbiAgZW5jcnlwdDogRW5jcnlwdEZuQXN5bmM7XG4gIGVuY3J5cHRpb25WZXJzaW9uPzogRW5jcnlwdGlvblZlcnNpb247XG59O1xuXG4vKipcbiAqIFJlbmRlciBrZXljYXJkIFBERiBwYWdlcyBmcm9tIHByZS1idWlsdCBRUiBkYXRhLlxuICovXG5mdW5jdGlvbiByZW5kZXJLZXljYXJkUGRmKG9wdGlvbnM6IERyYXdLZXljYXJkTGF5b3V0T3B0aW9ucywga2V5RGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgeyBqc1BERiwgUVJDb2RlLCBhY3RpdmF0aW9uQ29kZSwgd2FsbGV0TGFiZWwsIGNvaW5OYW1lIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IG1hcmdpbiA9IDMwO1xuXG4gIGNvbnN0IGZvbnQgPSB7XG4gICAgaGVhZGVyOiAyNCxcbiAgICBzdWJoZWFkZXI6IDE1LFxuICAgIGJvZHk6IDEyLFxuICB9O1xuXG4gIGNvbnN0IGNvbG9yID0ge1xuICAgIGJsYWNrOiAnIzAwMDAwMCcsXG4gICAgZGFya2dyYXk6ICcjNGM0YzRjJyxcbiAgICBncmF5OiAnIzliOWI5YicsXG4gICAgcmVkOiAnI2UyMWUxZScsXG4gIH07XG5cbiAgLy8gZG9jdW1lbnQgZGV0YWlsc1xuICBjb25zdCB3aWR0aCA9IDguNSAqIDcyO1xuICBsZXQgeSA9IDA7XG5cbiAgLy8gSGVscGVycyBmb3IgZGF0YSBmb3JtYXR0aW5nIC8gcG9zaXRpb25pbmcgb24gdGhlIHBhcGVyXG4gIGNvbnN0IGxlZnQgPSAoeCkgPT4gbWFyZ2luICsgeDtcbiAgY29uc3QgbW92ZURvd24gPSAoeURlbHRhKSA9PiB7XG4gICAgeSArPSB5RGVsdGE7XG4gIH07XG5cbiAgY29uc3QgZG9jID0gbmV3IGpzUERGKCdwb3J0cmFpdCcsICdwdCcsICdsZXR0ZXInKTtcbiAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScpO1xuXG4gIC8vIFBERiBIZWFkZXIgQXJlYSAtIGluY2x1ZGVzIHRoZSBsb2dvIGFuZCBjb21wYW55IG5hbWVcbiAgLy8gVGhpcyBpcyBkYXRhIGZvciB0aGUgQml0R28gbG9nbyBpbiB0aGUgdG9wIGxlZnQgb2YgdGhlIFBERlxuICBtb3ZlRG93bigzMCk7XG5cbiAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGFkZCBhbiBpbWFnZSwgc2luY2UgdGhhdCBwYXRoIGlzIGRlcGVuZGVudCBvbiBCaXRHbyBmcm9udGVuZFxuICAvLyBkb2MuYWRkSW1hZ2UoY29pblV0aWxpdHkuZ2V0U2VsZWN0ZWRDb2luT2JqKCkua2V5Q2FyZEltYWdlLCBsZWZ0KDApLCB5ICsgMTApO1xuXG4gIC8vIEFjdGl2YXRpb24gQ29kZVxuICBtb3ZlRG93big4KTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dCgnQWN0aXZhdGlvbiBDb2RlJywgbGVmdCg0NjApLCB5KTtcblxuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIG1vdmVEb3duKDI1KTtcbiAgZG9jLnRleHQoJ1lvdXIgQml0R28gS2V5Q2FyZCcsIGxlZnQoMTUwKSwgeSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChhY3RpdmF0aW9uQ29kZS50b1N0cmluZygpLCBsZWZ0KDQ2MCksIHkpO1xuXG4gIC8vIFN1YmhlYWRlclxuICAvLyB0aXRsZXNcbiAgbW92ZURvd24obWFyZ2luKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmdyYXkpO1xuICBkb2MudGV4dChcbiAgICBgQ3JlYXRlZCBvbiAke25ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCl9IGJ5ICR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSBmb3Igd2FsbGV0IG5hbWVkICR7d2FsbGV0TGFiZWx9YCxcbiAgICBsZWZ0KDApLFxuICAgIHlcbiAgKTtcbiAgLy8gY29weVxuICBtb3ZlRG93bigyNSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQod2FsbGV0TGFiZWwsIGxlZnQoMCksIHkpO1xuICAvLyBSZWQgQmFyXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZpbGxDb2xvcigyNTUsIDIzMCwgMjMwKTtcbiAgZG9jLnJlY3QobGVmdCgwKSwgeSwgd2lkdGggLSAyICogbWFyZ2luLCAzMiwgJ0YnKTtcblxuICAvLyB3YXJuaW5nIG1lc3NhZ2VcbiAgbW92ZURvd24oMjApO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IucmVkKTtcbiAgZG9jLnRleHQoJ1ByaW50IHRoaXMgZG9jdW1lbnQsIG9yIGtlZXAgaXQgc2VjdXJlbHkgb2ZmbGluZS4gU2VlIHNlY29uZCBwYWdlIGZvciBGQVEuJywgbGVmdCg3NSksIHkpO1xuXG4gIG1vdmVEb3duKDM1KTtcbiAgY29uc3QgcXJTaXplID0gMTMwO1xuXG4gIC8vIERyYXcgZWFjaCBCb3ggd2l0aCBRUiBjb2RlIGFuZCBkZXNjcmlwdGlvblxuICBPYmplY3Qua2V5cyhrZXlEYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlUeXBlKSB7XG4gICAgY29uc3Qga2V5ID0ga2V5RGF0YVtrZXlUeXBlXTtcbiAgICBjb25zdCB0b3BZID0geTtcblxuICAgIC8vIERvbid0IGluZGVudCBpZiB3ZSdyZSBub3QgcHJvZHVjaW5nIFFSIGNvZGVzXG4gICAgY29uc3QgdGV4dExlZnQgPSAhIVFSQ29kZSA/IGxlZnQocXJTaXplICsgMTUpIDogbGVmdCgxNSk7XG5cbiAgICAvLyBEcmF3IGEgUVIgY29kZSBpZiBsaWJyYXJ5IGlzIGF2YWlsYWJsZVxuICAgIGlmIChRUkNvZGUpIHtcbiAgICAgIGNvbnN0IGRhdGFVUkwgPSBuZXcgUVJDb2RlKHsgdmFsdWU6IGtleS5kYXRhLCBzaXplOiBxclNpemUgfSkudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICBkb2MuYWRkSW1hZ2UoZGF0YVVSTCwgbGVmdCgwKSwgeSwgcXJTaXplLCBxclNpemUpO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250U2l6ZShmb250LnN1YmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgICBtb3ZlRG93bigxMCk7XG4gICAgZG9jLnRleHQoa2V5LnRpdGxlLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgZG9jLnRleHQoa2V5LmRlc2MsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigzMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSAtIDIpO1xuICAgIGRvYy50ZXh0KCdEYXRhOicsIHRleHRMZWZ0LCB5KTtcbiAgICBtb3ZlRG93bigxNSk7XG4gICAgY29uc3QgaW5uZXJXaWR0aCA9IDcyICogOC41IC0gdGV4dExlZnQgLSAzMDtcbiAgICBkb2Muc2V0Rm9udCgnY291cmllcicpLnNldEZvbnRTaXplKDkpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgY29uc3QgbGluZXMgPSBkb2Muc3BsaXRUZXh0VG9TaXplKGtleS5kYXRhLCBpbm5lcldpZHRoKTtcbiAgICBkb2MudGV4dChsaW5lcywgdGV4dExlZnQsIHkpO1xuXG4gICAgLy8gQWRkIGtleSBJRCAoZGVyaXZhdGlvbiBzdHJpbmcpIGlmIGl0IGV4aXN0c1xuICAgIGlmIChrZXkua2V5SUQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSAnS2V5IElkOiAnICsga2V5LmtleUlEO1xuICAgICAgLy8gR3JheSBiYXJcbiAgICAgIG1vdmVEb3duKDQ1KTtcbiAgICAgIGRvYy5zZXRGaWxsQ29sb3IoMjQ3LCAyNDksIDI0OSk7IC8vIEdyYXkgYmFja2dyb3VuZFxuICAgICAgZG9jLnNldERyYXdDb2xvcigwLCAwLCAwKTsgLy8gQm9yZGVyXG4gICAgICBkb2MucmVjdCh0ZXh0TGVmdCwgeSwgd2lkdGgsIDE1LCAnRkQnKTtcblxuICAgICAgZG9jLnRleHQodGV4dCwgdGV4dExlZnQgKyA1LCB5ICsgMTApO1xuICAgIH1cblxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcbiAgICAvLyBNb3ZlIGRvd24gdGhlIHNpemUgb2YgdGhlIFFSIGNvZGUgbWludXMgYWNjdW11bGF0ZWQgaGVpZ2h0IG9uIHRoZSByaWdodCBzaWRlLCBwbHVzIGJ1ZmZlclxuICAgIG1vdmVEb3duKHFyU2l6ZSAtICh5IC0gdG9wWSkgKyAxNSk7XG4gIH0pO1xuXG4gIC8vIEFkZCBhIG5ldyBwYWdlIChRICsgQSBwYWdlKVxuICBkb2MuYWRkUGFnZSgpO1xuXG4gIC8vIDJuZCBwYWdlIHRpdGxlXG4gIHkgPSAwO1xuICBtb3ZlRG93big1NSk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmhlYWRlcikuc2V0VGV4dENvbG9yKGNvbG9yLmJsYWNrKTtcbiAgZG9jLnRleHQoJ0JpdEdvIEtleUNhcmQgRkFRJywgbGVmdCgwKSwgeSk7XG5cbiAgY29uc3QgcXVlc3Rpb25zID0gZ2VuZXJhdGVRdWVzdGlvbnMoY29pbk5hbWUpO1xuXG4gIC8vIERyYXcgdGhlIFEgKyBBIGRhdGEgb24gdGhlIHNlY29uZCBwYWdlXG4gIG1vdmVEb3duKDMwKTtcbiAgcXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHEpIHtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgZG9jLnRleHQocS5xLCBsZWZ0KDApLCB5KTtcbiAgICBtb3ZlRG93bigyMCk7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLmRhcmtncmF5KTtcbiAgICBxLmEuZm9yRWFjaChmdW5jdGlvbiAobGluZSkge1xuICAgICAgZG9jLnRleHQobGluZSwgbGVmdCgwKSwgeSk7XG4gICAgICBtb3ZlRG93bihmb250LmJvZHkgKyAzKTtcbiAgICB9KTtcbiAgICBtb3ZlRG93bigyMik7XG4gIH0pO1xuXG4gIHJldHVybiBkb2M7XG59XG5cbi8qKlxuICogVE9ETzogRGVwcmVjYXRlIHRoaXMgZnVuY3Rpb24gaW4gZmF2b3Igb2YgZHJhd0tleWNhcmRBc3luYyBvbmNlIHYyIGVuY3J5cHRpb24gaXMgZGVmYXVsdC5cbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHtcbiAgICBlbmNyeXB0LFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIGpzUERGLFxuICAgIFFSQ29kZSxcbiAgICBhY3RpdmF0aW9uQ29kZSxcbiAgICB3YWxsZXRMYWJlbCxcbiAgICBjb2luTmFtZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qga2V5RGF0YSA9IGdldEtleURhdGEoe1xuICAgIGVuY3J5cHQsXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0pO1xuXG4gIHJldHVybiByZW5kZXJLZXljYXJkUGRmKHsganNQREYsIFFSQ29kZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9LCBrZXlEYXRhKTtcbn1cblxuLyoqXG4gKiBBc3luYyB2ZXJzaW9uIG9mIGRyYXdLZXljYXJkIHdpdGggc3VwcG9ydCBmb3IgdjIgKEFyZ29uMmlkKSBlbmNyeXB0aW9uLlxuICogVXNlIHRoaXMgd2hlbiB0aGUgZW5jcnlwdCBjYWxsYmFjayBtYXkgcmV0dXJuIGEgUHJvbWlzZSAoZS5nLiBlbmNyeXB0QXN5bmMpLlxuICpcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRyYXdLZXljYXJkQXN5bmMob3B0aW9uczogRHJhd0tleWNhcmRBc3luY09wdGlvbnMpOiBQcm9taXNlPGFueT4ge1xuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBqc1BERixcbiAgICBRUkNvZGUsXG4gICAgYWN0aXZhdGlvbkNvZGUsXG4gICAgd2FsbGV0TGFiZWwsXG4gICAgY29pbk5hbWUsXG4gICAgZW5jcnlwdGlvblZlcnNpb24sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gYXdhaXQgZ2V0S2V5RGF0YUFzeW5jKHtcbiAgICBlbmNyeXB0LFxuICAgIGNvaW5TaG9ydE5hbWUsXG4gICAgcGFzc3BocmFzZSxcbiAgICBwYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgIHdhbGxldEtleUlELFxuICAgIGJhY2t1cEtleUlELFxuICAgIHVzZXJLZXljaGFpbixcbiAgICBiaXRnb0tleWNoYWluLFxuICAgIGJhY2t1cEtleWNoYWluLFxuICAgIGVuY3J5cHRpb25WZXJzaW9uLFxuICB9KTtcblxuICByZXR1cm4gcmVuZGVyS2V5Y2FyZFBkZih7IGpzUERGLCBRUkNvZGUsIGFjdGl2YXRpb25Db2RlLCB3YWxsZXRMYWJlbCwgY29pbk5hbWUgfSwga2V5RGF0YSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BitGoBase } from '../bitgoBase';
|
|
2
|
+
import { OptionalKeychainEncryptedKey } from './iKeychains';
|
|
3
|
+
/**
|
|
4
|
+
* Decrypts the private key of a keychain (sync, v1 only).
|
|
5
|
+
* This method will try the password against the traditional encryptedPrv,
|
|
6
|
+
* and any webauthn device encryptedPrvs.
|
|
7
|
+
*
|
|
8
|
+
* @param bitgo
|
|
9
|
+
* @param keychain
|
|
10
|
+
* @param password
|
|
11
|
+
*/
|
|
12
|
+
export declare function decryptKeychainPrivateKey(bitgo: BitGoBase, keychain: OptionalKeychainEncryptedKey, password: string): string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Decrypts the private key of a keychain (async, supports v1 and v2 envelopes).
|
|
15
|
+
* This method will try the password against the traditional encryptedPrv,
|
|
16
|
+
* and any webauthn device encryptedPrvs.
|
|
17
|
+
* Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
|
|
18
|
+
*
|
|
19
|
+
* @param bitgo
|
|
20
|
+
* @param keychain
|
|
21
|
+
* @param password
|
|
22
|
+
*/
|
|
23
|
+
export declare function decryptKeychainPrivateKeyAsync(bitgo: BitGoBase, keychain: OptionalKeychainEncryptedKey, password: string): Promise<string | undefined>;
|
|
24
|
+
//# sourceMappingURL=decryptKeychain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decryptKeychain.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/decryptKeychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAyB5D;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CASpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,4BAA4B,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decryptKeychainPrivateKey = decryptKeychainPrivateKey;
|
|
4
|
+
exports.decryptKeychainPrivateKeyAsync = decryptKeychainPrivateKeyAsync;
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
function maybeDecrypt(bitgo, input, password) {
|
|
7
|
+
try {
|
|
8
|
+
return bitgo.decrypt({
|
|
9
|
+
input,
|
|
10
|
+
password,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
catch (_e) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function maybeDecryptAsync(bitgo, input, password) {
|
|
18
|
+
try {
|
|
19
|
+
return await bitgo.decryptAsync({
|
|
20
|
+
input,
|
|
21
|
+
password,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch (_e) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Decrypts the private key of a keychain (sync, v1 only).
|
|
30
|
+
* This method will try the password against the traditional encryptedPrv,
|
|
31
|
+
* and any webauthn device encryptedPrvs.
|
|
32
|
+
*
|
|
33
|
+
* @param bitgo
|
|
34
|
+
* @param keychain
|
|
35
|
+
* @param password
|
|
36
|
+
*/
|
|
37
|
+
function decryptKeychainPrivateKey(bitgo, keychain, password) {
|
|
38
|
+
const prvs = [keychain.encryptedPrv, ...(keychain.webauthnDevices ?? []).map((d) => d.encryptedPrv)].filter(utils_1.notEmpty);
|
|
39
|
+
for (const prv of prvs) {
|
|
40
|
+
const decrypted = maybeDecrypt(bitgo, prv, password);
|
|
41
|
+
if (decrypted) {
|
|
42
|
+
return decrypted;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Decrypts the private key of a keychain (async, supports v1 and v2 envelopes).
|
|
49
|
+
* This method will try the password against the traditional encryptedPrv,
|
|
50
|
+
* and any webauthn device encryptedPrvs.
|
|
51
|
+
* Auto-detects v1 (SJCL) and v2 (Argon2id) envelopes.
|
|
52
|
+
*
|
|
53
|
+
* @param bitgo
|
|
54
|
+
* @param keychain
|
|
55
|
+
* @param password
|
|
56
|
+
*/
|
|
57
|
+
async function decryptKeychainPrivateKeyAsync(bitgo, keychain, password) {
|
|
58
|
+
const prvs = [keychain.encryptedPrv, ...(keychain.webauthnDevices ?? []).map((d) => d.encryptedPrv)].filter(utils_1.notEmpty);
|
|
59
|
+
for (const prv of prvs) {
|
|
60
|
+
const decrypted = await maybeDecryptAsync(bitgo, prv, password);
|
|
61
|
+
if (decrypted) {
|
|
62
|
+
return decrypted;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdEtleWNoYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2tleWNoYWluL2RlY3J5cHRLZXljaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1DQSw4REFhQztBQVlELHdFQWFDO0FBdkVELG9DQUFvQztBQUVwQyxTQUFTLFlBQVksQ0FBQyxLQUFnQixFQUFFLEtBQWEsRUFBRSxRQUFnQjtJQUNyRSxJQUFJLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDbkIsS0FBSztZQUNMLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEtBQWdCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO0lBQ2hGLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlCLEtBQUs7WUFDTCxRQUFRO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQ3ZDLEtBQWdCLEVBQ2hCLFFBQXNDLEVBQ3RDLFFBQWdCO0lBRWhCLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDdEgsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLDhCQUE4QixDQUNsRCxLQUFnQixFQUNoQixRQUFzQyxFQUN0QyxRQUFnQjtJQUVoQixNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZ0JBQVEsQ0FBQyxDQUFDO0lBQ3RILEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgT3B0aW9uYWxLZXljaGFpbkVuY3J5cHRlZEtleSB9IGZyb20gJy4vaUtleWNoYWlucyc7XG5pbXBvcnQgeyBub3RFbXB0eSB9IGZyb20gJy4uL3V0aWxzJztcblxuZnVuY3Rpb24gbWF5YmVEZWNyeXB0KGJpdGdvOiBCaXRHb0Jhc2UsIGlucHV0OiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIHJldHVybiBiaXRnby5kZWNyeXB0KHtcbiAgICAgIGlucHV0LFxuICAgICAgcGFzc3dvcmQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRBc3luYyhiaXRnbzogQml0R29CYXNlLCBpbnB1dDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgYml0Z28uZGVjcnlwdEFzeW5jKHtcbiAgICAgIGlucHV0LFxuICAgICAgcGFzc3dvcmQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF9lKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIERlY3J5cHRzIHRoZSBwcml2YXRlIGtleSBvZiBhIGtleWNoYWluIChzeW5jLCB2MSBvbmx5KS5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSB0cmFkaXRpb25hbCBlbmNyeXB0ZWRQcnYsXG4gKiBhbmQgYW55IHdlYmF1dGhuIGRldmljZSBlbmNyeXB0ZWRQcnZzLlxuICpcbiAqIEBwYXJhbSBiaXRnb1xuICogQHBhcmFtIGtleWNoYWluXG4gKiBAcGFyYW0gcGFzc3dvcmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY3J5cHRLZXljaGFpblByaXZhdGVLZXkoXG4gIGJpdGdvOiBCaXRHb0Jhc2UsXG4gIGtleWNoYWluOiBPcHRpb25hbEtleWNoYWluRW5jcnlwdGVkS2V5LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwcnZzID0gW2tleWNoYWluLmVuY3J5cHRlZFBydiwgLi4uKGtleWNoYWluLndlYmF1dGhuRGV2aWNlcyA/PyBbXSkubWFwKChkKSA9PiBkLmVuY3J5cHRlZFBydildLmZpbHRlcihub3RFbXB0eSk7XG4gIGZvciAoY29uc3QgcHJ2IG9mIHBydnMpIHtcbiAgICBjb25zdCBkZWNyeXB0ZWQgPSBtYXliZURlY3J5cHQoYml0Z28sIHBydiwgcGFzc3dvcmQpO1xuICAgIGlmIChkZWNyeXB0ZWQpIHtcbiAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjcnlwdHMgdGhlIHByaXZhdGUga2V5IG9mIGEga2V5Y2hhaW4gKGFzeW5jLCBzdXBwb3J0cyB2MSBhbmQgdjIgZW52ZWxvcGVzKS5cbiAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRoZSBwYXNzd29yZCBhZ2FpbnN0IHRoZSB0cmFkaXRpb25hbCBlbmNyeXB0ZWRQcnYsXG4gKiBhbmQgYW55IHdlYmF1dGhuIGRldmljZSBlbmNyeXB0ZWRQcnZzLlxuICogQXV0by1kZXRlY3RzIHYxIChTSkNMKSBhbmQgdjIgKEFyZ29uMmlkKSBlbnZlbG9wZXMuXG4gKlxuICogQHBhcmFtIGJpdGdvXG4gKiBAcGFyYW0ga2V5Y2hhaW5cbiAqIEBwYXJhbSBwYXNzd29yZFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVjcnlwdEtleWNoYWluUHJpdmF0ZUtleUFzeW5jKFxuICBiaXRnbzogQml0R29CYXNlLFxuICBrZXljaGFpbjogT3B0aW9uYWxLZXljaGFpbkVuY3J5cHRlZEtleSxcbiAgcGFzc3dvcmQ6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcHJ2cyA9IFtrZXljaGFpbi5lbmNyeXB0ZWRQcnYsIC4uLihrZXljaGFpbi53ZWJhdXRobkRldmljZXMgPz8gW10pLm1hcCgoZCkgPT4gZC5lbmNyeXB0ZWRQcnYpXS5maWx0ZXIobm90RW1wdHkpO1xuICBmb3IgKGNvbnN0IHBydiBvZiBwcnZzKSB7XG4gICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgbWF5YmVEZWNyeXB0QXN5bmMoYml0Z28sIHBydiwgcGFzc3dvcmQpO1xuICAgIGlmIChkZWNyeXB0ZWQpIHtcbiAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -1,23 +1,57 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { EncryptionVersion, IRequestTracer } from '../../api';
|
|
2
|
+
import { KeychainsTriplet, KeyPair } from '../baseCoin';
|
|
3
|
+
import { BitgoPubKeyType } from '../utils/tss/baseTypes';
|
|
4
|
+
import { IWallet } from '../wallet';
|
|
5
5
|
import { BitGoKeyFromOvcShares, OvcToBitGoJSON } from './ovcJsonCodec';
|
|
6
|
-
export
|
|
6
|
+
export type KeyType = 'tss' | 'independent' | 'blsdkg';
|
|
7
|
+
export interface WebauthnInfo {
|
|
8
|
+
prfSalt: string;
|
|
9
|
+
otpDeviceId: string;
|
|
10
|
+
encryptedPrv: string;
|
|
11
|
+
/** Required by POST /key to validate the PRF salt; not needed on the PUT /key/:id update path. */
|
|
12
|
+
enterpriseId?: string;
|
|
13
|
+
}
|
|
14
|
+
import type { WebauthnKeyEncryptionInfo } from '../wallet/iWallets';
|
|
15
|
+
export type { WebauthnKeyEncryptionInfo };
|
|
16
|
+
export type SourceType = 'bitgo' | 'backup' | 'user' | 'cold';
|
|
17
|
+
export type WebauthnFmt = 'none' | 'packed' | 'fido-u2f';
|
|
18
|
+
export interface WebauthnAuthenticatorInfo {
|
|
19
|
+
credID: string;
|
|
20
|
+
fmt: WebauthnFmt;
|
|
21
|
+
publicKey: string;
|
|
22
|
+
}
|
|
23
|
+
export interface KeychainWebauthnDevice {
|
|
24
|
+
otpDeviceId: string;
|
|
25
|
+
authenticatorInfo: WebauthnAuthenticatorInfo;
|
|
26
|
+
prfSalt: string;
|
|
27
|
+
encryptedPrv: string;
|
|
28
|
+
}
|
|
7
29
|
export interface Keychain {
|
|
8
30
|
id: string;
|
|
9
31
|
pub?: string;
|
|
10
32
|
prv?: string;
|
|
11
33
|
provider?: string;
|
|
12
34
|
encryptedPrv?: string;
|
|
35
|
+
reducedEncryptedPrv?: string;
|
|
13
36
|
derivationPath?: string;
|
|
14
37
|
derivedFromParentWithSeed?: string;
|
|
15
38
|
commonPub?: string;
|
|
16
39
|
commonKeychain?: string;
|
|
17
40
|
keyShares?: ApiKeyShare[];
|
|
18
41
|
walletHSMGPGPublicKeySigs?: string;
|
|
42
|
+
hsmType?: BitgoPubKeyType;
|
|
19
43
|
type: KeyType;
|
|
44
|
+
source?: SourceType;
|
|
45
|
+
coinSpecific?: {
|
|
46
|
+
[coinName: string]: unknown;
|
|
47
|
+
};
|
|
48
|
+
webauthnDevices?: KeychainWebauthnDevice[];
|
|
49
|
+
ethAddress?: string;
|
|
20
50
|
}
|
|
51
|
+
export type OptionalKeychainEncryptedKey = Pick<Keychain, 'encryptedPrv' | 'webauthnDevices'>;
|
|
52
|
+
export type KeychainWithEncryptedPrv = Omit<Keychain, 'encryptedPrv'> & {
|
|
53
|
+
encryptedPrv: string;
|
|
54
|
+
};
|
|
21
55
|
export interface ChangedKeychains {
|
|
22
56
|
[pubkey: string]: string;
|
|
23
57
|
}
|
|
@@ -44,6 +78,23 @@ export interface UpdateSingleKeychainPasswordOptions {
|
|
|
44
78
|
oldPassword?: string;
|
|
45
79
|
newPassword?: string;
|
|
46
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Parameters for the rotateKeychain method for ofc multi-user-key
|
|
83
|
+
* @property {string} id - the public id of the keychain
|
|
84
|
+
* @property {string} password - the user password use to encrypt/decrypt the private key
|
|
85
|
+
* @property {IRequestTracer} reqId - optional reqId
|
|
86
|
+
*/
|
|
87
|
+
export type RotateKeychainOptions = {
|
|
88
|
+
id: string;
|
|
89
|
+
password: string;
|
|
90
|
+
reqId?: IRequestTracer;
|
|
91
|
+
encryptionVersion?: EncryptionVersion;
|
|
92
|
+
} | {
|
|
93
|
+
id: string;
|
|
94
|
+
pub: string;
|
|
95
|
+
encryptedPrv: string;
|
|
96
|
+
reqId?: IRequestTracer;
|
|
97
|
+
};
|
|
47
98
|
export interface AddKeychainOptions {
|
|
48
99
|
pub?: string;
|
|
49
100
|
commonPub?: string;
|
|
@@ -64,6 +115,17 @@ export interface AddKeychainOptions {
|
|
|
64
115
|
backupGPGPublicKey?: string;
|
|
65
116
|
algoUsed?: string;
|
|
66
117
|
isDistributedCustody?: boolean;
|
|
118
|
+
isMPCv2?: boolean;
|
|
119
|
+
coinSpecific?: {
|
|
120
|
+
[coinName: string]: unknown;
|
|
121
|
+
};
|
|
122
|
+
/** WebAuthn devices that have an additional encrypted copy of the private key, keyed by PRF-derived passphrases.
|
|
123
|
+
* @deprecated Use {@link webauthnInfo} instead — the backend reads `webauthnInfo` (single object), not `webauthnDevices`. */
|
|
124
|
+
webauthnDevices?: WebauthnInfo[];
|
|
125
|
+
/** Single webauthn device to atomically attach during key creation.
|
|
126
|
+
* Sent as `webauthnInfo` in the POST /key body so the backend can link
|
|
127
|
+
* the passkey to the keychain in the same request. */
|
|
128
|
+
webauthnInfo?: WebauthnInfo;
|
|
67
129
|
}
|
|
68
130
|
export interface ApiKeyShare {
|
|
69
131
|
from: 'user' | 'backup' | 'bitgo';
|
|
@@ -87,6 +149,8 @@ export interface CreateBackupOptions {
|
|
|
87
149
|
commonKeychain?: string;
|
|
88
150
|
prv?: string;
|
|
89
151
|
encryptedPrv?: string;
|
|
152
|
+
passphrase?: string;
|
|
153
|
+
encryptionVersion?: EncryptionVersion;
|
|
90
154
|
}
|
|
91
155
|
export interface CreateBitGoOptions {
|
|
92
156
|
source?: 'bitgo';
|
|
@@ -95,12 +159,31 @@ export interface CreateBitGoOptions {
|
|
|
95
159
|
keyType?: KeyType;
|
|
96
160
|
isDistributedCustody?: boolean;
|
|
97
161
|
}
|
|
162
|
+
export type DecryptedRetrofitPayload = {
|
|
163
|
+
decryptedUserKey: string;
|
|
164
|
+
decryptedBackupKey: string;
|
|
165
|
+
walletId: string;
|
|
166
|
+
};
|
|
98
167
|
export interface CreateMpcOptions {
|
|
99
|
-
multisigType: 'onchain' | 'tss'
|
|
168
|
+
multisigType: 'onchain' | 'tss';
|
|
100
169
|
passphrase?: string;
|
|
101
170
|
originalPasscodeEncryptionCode?: string;
|
|
102
171
|
enterprise?: string;
|
|
103
|
-
|
|
172
|
+
retrofit?: DecryptedRetrofitPayload;
|
|
173
|
+
webauthnInfo?: WebauthnKeyEncryptionInfo;
|
|
174
|
+
encryptionVersion?: EncryptionVersion;
|
|
175
|
+
}
|
|
176
|
+
export interface RecreateMpcOptions extends Omit<CreateMpcOptions, 'retrofit' | 'multisigType'> {
|
|
177
|
+
coin: string;
|
|
178
|
+
walletId: string;
|
|
179
|
+
passphrase: string;
|
|
180
|
+
otp: string;
|
|
181
|
+
enterprise: string;
|
|
182
|
+
encryptedMaterial: {
|
|
183
|
+
encryptedUserKey: string;
|
|
184
|
+
encryptedBackupKey: string;
|
|
185
|
+
encryptedWalletPassphrase: string;
|
|
186
|
+
};
|
|
104
187
|
}
|
|
105
188
|
export interface GetKeysForSigningOptions {
|
|
106
189
|
reqId?: IRequestTracer;
|
|
@@ -128,14 +211,19 @@ export interface IKeychains {
|
|
|
128
211
|
list(params?: ListKeychainOptions): Promise<ListKeychainsResult>;
|
|
129
212
|
updatePassword(params: UpdatePasswordOptions): Promise<ChangedKeychains>;
|
|
130
213
|
updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Keychain;
|
|
214
|
+
updateSingleKeychainPasswordAsync(params?: UpdateSingleKeychainPasswordOptions): Promise<Keychain>;
|
|
131
215
|
create(params?: {
|
|
132
216
|
seed?: Buffer;
|
|
217
|
+
isRootKey?: boolean;
|
|
133
218
|
}): KeyPair;
|
|
134
219
|
add(params?: AddKeychainOptions): Promise<Keychain>;
|
|
135
220
|
createBitGo(params?: CreateBitGoOptions): Promise<Keychain>;
|
|
136
221
|
createBackup(params?: CreateBackupOptions): Promise<Keychain>;
|
|
137
222
|
getKeysForSigning(params?: GetKeysForSigningOptions): Promise<Keychain[]>;
|
|
138
223
|
createMpc(params: CreateMpcOptions): Promise<KeychainsTriplet>;
|
|
139
|
-
|
|
224
|
+
recreateMpc(params: RecreateMpcOptions): Promise<KeychainsTriplet>;
|
|
225
|
+
createTssBitGoKeyFromOvcShares(ovcOutput: OvcToBitGoJSON, enterprise?: string): Promise<BitGoKeyFromOvcShares>;
|
|
226
|
+
createUserKeychain(userPassword: string, encryptionVersion?: EncryptionVersion): Promise<Keychain>;
|
|
227
|
+
rotateKeychain(params: RotateKeychainOptions): Promise<Keychain>;
|
|
140
228
|
}
|
|
141
229
|
//# sourceMappingURL=iKeychains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iKeychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/iKeychains.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"iKeychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/iKeychains.ts"],"names":[],"mappings":"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"}
|