@bitgo/sdk-core 1.0.2-rc.0 → 1.1.0-dev.0
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/baseKeyPair.d.ts +27 -0
- package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseKeyPair.js +3 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +71 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransaction.js +69 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +128 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +138 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +29 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +19 -0
- package/dist/src/account-lib/baseCoin/baseUtils.d.ts +45 -0
- package/dist/src/account-lib/baseCoin/baseUtils.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/baseUtils.js +3 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +75 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/blsKeyPair.js +179 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +50 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +145 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts +45 -0
- package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/enum.js +74 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts +59 -0
- package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/errors.js +105 -0
- package/dist/src/account-lib/baseCoin/iface.d.ts +155 -0
- package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/iface.js +38 -0
- package/dist/src/account-lib/baseCoin/index.d.ts +12 -0
- package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/index.js +31 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
- package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
- package/dist/src/account-lib/index.d.ts +5 -0
- package/dist/src/account-lib/index.d.ts.map +1 -0
- package/dist/src/account-lib/index.js +17 -0
- package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
- package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
- package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
- package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
- package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/curves/index.js +8 -0
- package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
- package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
- package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
- package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/hdTree.js +94 -0
- package/dist/src/account-lib/mpc/index.d.ts +8 -0
- package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/index.js +23 -0
- package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
- package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/shamir.js +86 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +121 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +40 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +276 -0
- package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
- package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
- package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
- package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
- package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/tss/index.js +35 -0
- package/dist/src/account-lib/mpc/util.d.ts +8 -0
- package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
- package/dist/src/account-lib/mpc/util.js +42 -0
- package/dist/src/account-lib/util/crypto.d.ts +106 -0
- package/dist/src/account-lib/util/crypto.d.ts.map +1 -0
- package/dist/src/account-lib/util/crypto.js +269 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +49 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -0
- package/dist/src/account-lib/util/ed25519KeyDeriver.js +87 -0
- package/dist/src/api/bip32path.d.ts +24 -0
- package/dist/src/api/bip32path.d.ts.map +1 -0
- package/dist/src/api/bip32path.js +45 -0
- package/dist/src/api/index.d.ts +3 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/{v2 → api}/index.js +2 -2
- package/dist/src/api/types.d.ts +20 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +3 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
- package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
- package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
- package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
- package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
- package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
- package/dist/src/bitgo/baseCoin/index.js +15 -0
- package/dist/src/bitgo/bip32util.d.ts +17 -0
- package/dist/src/bitgo/bip32util.d.ts.map +1 -0
- package/dist/src/bitgo/bip32util.js +59 -0
- package/dist/src/bitgo/bitcoin.d.ts +16 -0
- package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
- package/dist/src/bitgo/bitcoin.js +52 -0
- package/dist/src/bitgo/bitgoBase.d.ts +22 -0
- package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
- package/dist/src/bitgo/bitgoBase.js +3 -0
- package/dist/src/bitgo/coinFactory.d.ts +31 -0
- package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
- package/dist/src/bitgo/coinFactory.js +59 -0
- package/dist/src/bitgo/config.d.ts +8 -0
- package/dist/src/bitgo/config.d.ts.map +1 -0
- package/dist/src/bitgo/config.js +25 -0
- package/dist/src/bitgo/ecdh.d.ts +24 -0
- package/dist/src/bitgo/ecdh.d.ts.map +1 -0
- package/dist/src/bitgo/ecdh.js +80 -0
- package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
- package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
- package/dist/src/bitgo/enterprise/enterprise.js +120 -0
- package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
- package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
- package/dist/src/bitgo/enterprise/enterprises.js +70 -0
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
- package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
- package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
- package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
- package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
- package/dist/src/bitgo/enterprise/index.d.ts +5 -0
- package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
- package/dist/src/bitgo/enterprise/index.js +17 -0
- package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
- package/dist/src/bitgo/environments.d.ts.map +1 -0
- package/dist/src/bitgo/environments.js +142 -0
- package/dist/src/bitgo/errors.d.ts +83 -0
- package/dist/src/bitgo/errors.d.ts.map +1 -0
- package/dist/src/bitgo/errors.js +163 -0
- package/dist/src/bitgo/index.d.ts +26 -0
- package/dist/src/bitgo/index.d.ts.map +1 -0
- package/dist/src/bitgo/index.js +51 -0
- package/dist/src/bitgo/internal/index.d.ts +3 -0
- package/dist/src/bitgo/internal/index.d.ts.map +1 -0
- package/dist/src/bitgo/internal/index.js +15 -0
- package/dist/src/bitgo/internal/internal.d.ts +19 -0
- package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
- package/dist/src/bitgo/internal/internal.js +33 -0
- package/dist/src/bitgo/internal/keycard.d.ts +33 -0
- package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
- package/dist/src/bitgo/internal/keycard.js +304 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
- package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/iKeychains.js +10 -0
- package/dist/src/bitgo/keychain/index.d.ts +3 -0
- package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/index.js +15 -0
- package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
- package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
- package/dist/src/bitgo/keychain/keychains.js +280 -0
- package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
- package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
- package/dist/src/bitgo/market/iMarkets.js +3 -0
- package/dist/src/bitgo/market/index.d.ts +3 -0
- package/dist/src/bitgo/market/index.d.ts.map +1 -0
- package/dist/src/bitgo/market/index.js +15 -0
- package/dist/src/bitgo/market/markets.d.ts +29 -0
- package/dist/src/bitgo/market/markets.d.ts.map +1 -0
- package/dist/src/bitgo/market/markets.js +70 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
- package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
- package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
- package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
- package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
- package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
- package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
- package/dist/src/bitgo/pendingApproval/index.js +17 -0
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
- package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
- package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
- package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
- package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
- package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
- package/dist/src/bitgo/recovery/index.d.ts +2 -0
- package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
- package/dist/src/bitgo/recovery/index.js +14 -0
- package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
- package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
- package/dist/src/bitgo/recovery/initiate.js +119 -0
- package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
- package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
- package/dist/src/bitgo/trading/affirmation.js +53 -0
- package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
- package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
- package/dist/src/bitgo/trading/affirmations.js +45 -0
- package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
- package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iAffirmation.js +13 -0
- package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
- package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iAffirmations.js +3 -0
- package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
- package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iSettlement.js +17 -0
- package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
- package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iSettlements.js +3 -0
- package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
- package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
- package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
- package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
- package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
- package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
- package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
- package/dist/src/bitgo/trading/index.d.ts +18 -0
- package/dist/src/bitgo/trading/index.d.ts.map +1 -0
- package/dist/src/bitgo/trading/index.js +30 -0
- package/dist/src/bitgo/trading/lock.d.ts +16 -0
- package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
- package/dist/src/bitgo/trading/lock.js +12 -0
- package/dist/src/bitgo/trading/payload.d.ts +22 -0
- package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
- package/dist/src/bitgo/trading/payload.js +3 -0
- package/dist/src/bitgo/trading/settlement.d.ts +16 -0
- package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
- package/dist/src/bitgo/trading/settlement.js +21 -0
- package/dist/src/bitgo/trading/settlements.d.ts +32 -0
- package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
- package/dist/src/bitgo/trading/settlements.js +61 -0
- package/dist/src/bitgo/trading/trade.d.ts +29 -0
- package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
- package/dist/src/bitgo/trading/trade.js +11 -0
- package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
- package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
- package/dist/src/bitgo/trading/tradingAccount.js +127 -0
- package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
- package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
- package/dist/src/bitgo/trading/tradingPartner.js +31 -0
- package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
- package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
- package/dist/src/bitgo/trading/tradingPartners.js +32 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +35 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -0
- package/dist/src/bitgo/tss/ecdsa/ecdsa.js +95 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts +4 -0
- package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -0
- package/dist/src/bitgo/tss/ecdsa/index.js +26 -0
- package/dist/src/bitgo/tss/ecdsa/types.d.ts +30 -0
- package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -0
- package/dist/src/bitgo/tss/ecdsa/types.js +3 -0
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
- package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
- package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
- package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/index.js +37 -0
- package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
- package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
- package/dist/src/bitgo/tss/eddsa/types.js +3 -0
- package/dist/src/bitgo/tss/index.d.ts +6 -0
- package/dist/src/bitgo/tss/index.d.ts.map +1 -0
- package/dist/src/bitgo/tss/index.js +42 -0
- package/dist/src/bitgo/tss/types.d.ts +6 -0
- package/dist/src/bitgo/tss/types.d.ts.map +1 -0
- package/dist/src/bitgo/tss/types.js +10 -0
- package/dist/src/bitgo/types.d.ts +4 -0
- package/dist/src/bitgo/types.d.ts.map +1 -0
- package/dist/src/bitgo/types.js +3 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
- package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
- package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
- package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/blsUtils.js +166 -0
- package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
- package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
- package/dist/src/bitgo/utils/index.d.ts +12 -0
- package/dist/src/bitgo/utils/index.d.ts.map +1 -0
- package/dist/src/bitgo/utils/index.js +37 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
- package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/mpcUtils.js +55 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
- package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
- package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
- package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
- package/dist/src/bitgo/utils/promise-utils.js +12 -0
- package/dist/src/bitgo/utils/triple.d.ts +3 -0
- package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
- package/dist/src/bitgo/utils/triple.js +8 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +117 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +72 -0
- package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
- package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
- package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
- package/dist/src/bitgo/utils/tss/index.js +29 -0
- package/dist/src/bitgo/utils/util.d.ts +77 -0
- package/dist/src/bitgo/utils/util.d.ts.map +1 -0
- package/dist/src/bitgo/utils/util.js +198 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
- package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/iWallet.js +3 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
- package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/iWallets.js +3 -0
- package/dist/src/bitgo/wallet/index.d.ts +5 -0
- package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/index.js +17 -0
- package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
- package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/wallet.js +2039 -0
- package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
- package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
- package/dist/src/bitgo/wallet/wallets.js +605 -0
- package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
- package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
- package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
- package/dist/src/bitgo/webhook/index.d.ts +3 -0
- package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
- package/dist/src/bitgo/webhook/index.js +15 -0
- package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
- package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
- package/dist/src/bitgo/webhook/webhooks.js +102 -0
- package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
- package/dist/src/bitgojsError.d.ts.map +1 -0
- package/dist/src/bitgojsError.js +11 -0
- package/dist/src/common.d.ts +1 -1
- package/dist/src/common.d.ts.map +1 -1
- package/dist/src/common.js +3 -3
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -5
- package/dist/tsconfig.tsbuildinfo +3501 -150
- package/package.json +28 -4
- package/CHANGELOG.md +0 -8
- package/dist/src/bigojsError.d.ts.map +0 -1
- package/dist/src/bigojsError.js +0 -11
- package/dist/src/v2/environments.d.ts.map +0 -1
- package/dist/src/v2/environments.js +0 -142
- package/dist/src/v2/index.d.ts +0 -3
- package/dist/src/v2/index.d.ts.map +0 -1
- package/dist/src/v2/types.d.ts +0 -2
- package/dist/src/v2/types.d.ts.map +0 -1
- package/dist/src/v2/types.js +0 -3
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @hidden
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.drawKeycard = void 0;
|
|
7
|
+
/**
|
|
8
|
+
*/
|
|
9
|
+
const lodash_1 = require("lodash");
|
|
10
|
+
/**
|
|
11
|
+
* Return the list of questions that will appear on the second page of the keycard
|
|
12
|
+
* @param coin name of the coin
|
|
13
|
+
*/
|
|
14
|
+
const generateQuestions = (coin) => {
|
|
15
|
+
return [
|
|
16
|
+
{
|
|
17
|
+
q: 'What is the KeyCard?',
|
|
18
|
+
a: [
|
|
19
|
+
`The KeyCard contains important information which can be used to recover the ${coin} `,
|
|
20
|
+
'from your wallet in several situations. Each BitGo wallet' + ' has its own, unique KeyCard. ',
|
|
21
|
+
'If you have created multiple wallets, you should retain the KeyCard for each of them.',
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
q: 'What should I do with it?',
|
|
26
|
+
a: [
|
|
27
|
+
'You should print the KeyCard and/or save the PDF to an offline storage device. The print-out ',
|
|
28
|
+
"or USB stick should be kept in a safe place, such as a bank vault or home safe. It's a good idea ",
|
|
29
|
+
'to keep a second copy in a different location.',
|
|
30
|
+
'',
|
|
31
|
+
"Important: If you haven't provided an external backup key, then the original PDF should be ",
|
|
32
|
+
'deleted from any machine where the wallet will be regularly accessed to prevent malware from ',
|
|
33
|
+
'capturing both the KeyCard and your wallet passcode.',
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
q: 'What should I do if I lose it?',
|
|
38
|
+
a: [
|
|
39
|
+
`If you have lost or damaged all copies of your KeyCard, your ${coin} is still safe, but this `,
|
|
40
|
+
'wallet should be considered at risk for loss. As soon as is convenient, you should use BitGo ',
|
|
41
|
+
'to empty the wallet into a new wallet',
|
|
42
|
+
', and discontinue use of the old wallet.',
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
q: 'What if someone sees my KeyCard?',
|
|
47
|
+
a: [
|
|
48
|
+
"Don't panic! All sensitive information on the KeyCard is encrypted with your passcode, or with a",
|
|
49
|
+
'key which only BitGo has. But, in general, you should make best efforts to keep your ',
|
|
50
|
+
'KeyCard private. If your KeyCard does get exposed or copied in a way that makes you ',
|
|
51
|
+
'uncomfortable, the best course of action is to empty the corresponding wallet into another ',
|
|
52
|
+
'wallet and discontinue use of the old wallet.',
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
q: 'What if I forget or lose my wallet password?',
|
|
57
|
+
a: [
|
|
58
|
+
'BitGo can use the information in QR Code D to help you recover access to your wallet. ',
|
|
59
|
+
'Without the KeyCard, BitGo is not able to recover funds from a wallet with a lost password.',
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
q: 'What if BitGo becomes inaccessible for an extended period?',
|
|
64
|
+
a: [
|
|
65
|
+
'Your KeyCard and wallet passcode can be used together with BitGo’s published open ',
|
|
66
|
+
`source tools at https://github.com/bitgo to recover your ${coin}. Note: You should never enter `,
|
|
67
|
+
'information from your KeyCard into tools other than the tools BitGo has published, or your ',
|
|
68
|
+
'funds may be at risk for theft.',
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
q: 'Should I write my wallet password on my KeyCard?',
|
|
73
|
+
a: [
|
|
74
|
+
'No! BitGo’s multi-signature approach to security depends on there not being a single point ',
|
|
75
|
+
'of attack. But if your wallet password is on your KeyCard, then anyone who gains access to ',
|
|
76
|
+
`your KeyCard will be able to steal your ${coin}. We recommend keeping your wallet password `,
|
|
77
|
+
'safe in a secure password manager such as LastPass, 1Password or KeePass.',
|
|
78
|
+
],
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Collect all data which will go onto the keycard
|
|
84
|
+
* @param options
|
|
85
|
+
*/
|
|
86
|
+
function getKeyData(options) {
|
|
87
|
+
const { encrypt, userKeychain, bitgoKeychain, backupKeychain, coinShortName, passphrase, passcodeEncryptionCode, walletKeyID, backupKeyID, } = options;
|
|
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
|
+
}
|
|
104
|
+
// PDF QR Code data
|
|
105
|
+
const qrData = {
|
|
106
|
+
user: {
|
|
107
|
+
title: 'A: User Key',
|
|
108
|
+
desc: 'This is your private key, encrypted with your passcode.',
|
|
109
|
+
data: userKeychain.encryptedPrv,
|
|
110
|
+
},
|
|
111
|
+
backup: {
|
|
112
|
+
title: 'B: Backup Key',
|
|
113
|
+
desc: 'This is your backup private key, encrypted with your passcode.',
|
|
114
|
+
data: backupKeychain.encryptedPrv,
|
|
115
|
+
},
|
|
116
|
+
bitgo: {
|
|
117
|
+
title: 'C: BitGo Public Key',
|
|
118
|
+
desc: 'This is the public part of the key that BitGo will use to ' +
|
|
119
|
+
'co-sign transactions\r\nwith you on your wallet.',
|
|
120
|
+
data: bitgoKeychain.pub,
|
|
121
|
+
},
|
|
122
|
+
passcode: {
|
|
123
|
+
title: 'D: Encrypted Wallet Password',
|
|
124
|
+
desc: 'This is the wallet password, encrypted client-side ' + 'with a key held by\r\nBitGo.',
|
|
125
|
+
data: encryptedWalletPasscode,
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
if (walletKeyID) {
|
|
129
|
+
qrData.user.keyID = walletKeyID;
|
|
130
|
+
}
|
|
131
|
+
if (backupKeyID) {
|
|
132
|
+
qrData.backup.keyID = backupKeyID;
|
|
133
|
+
}
|
|
134
|
+
if (lodash_1.isUndefined(userKeychain.encryptedPrv)) {
|
|
135
|
+
// User provided their own key - this is a cold wallet
|
|
136
|
+
qrData.user.title = 'A: Provided User Key';
|
|
137
|
+
qrData.user.desc = 'This is the public key you provided for your wallet.';
|
|
138
|
+
qrData.user.data = userKeychain.pub;
|
|
139
|
+
// The user provided their own public key, we can remove box D
|
|
140
|
+
delete qrData.passcode;
|
|
141
|
+
}
|
|
142
|
+
else if (lodash_1.isUndefined(encryptedWalletPasscode)) {
|
|
143
|
+
delete qrData.passcode;
|
|
144
|
+
}
|
|
145
|
+
if (!lodash_1.isUndefined(backupKeychain.provider)) {
|
|
146
|
+
const backupKeyProviderName = backupKeychain.provider;
|
|
147
|
+
// Backup key held with KRS
|
|
148
|
+
qrData.backup = {
|
|
149
|
+
title: 'B: Backup Key',
|
|
150
|
+
desc: `This is the public key held at ${backupKeyProviderName}` +
|
|
151
|
+
`, an ${coinShortName} recovery service. If you lose\r\nyour key, ${backupKeyProviderName}` +
|
|
152
|
+
' will be able to sign transactions to recover funds.',
|
|
153
|
+
data: backupKeychain.pub,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else if (lodash_1.isUndefined(backupKeychain.encryptedPrv)) {
|
|
157
|
+
// User supplied the xpub
|
|
158
|
+
qrData.backup = {
|
|
159
|
+
title: 'B: Backup Key',
|
|
160
|
+
desc: 'This is the public portion of your backup key, which you provided.',
|
|
161
|
+
data: backupKeychain.pub,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
return qrData;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Draw a keycard into a new pdf document object
|
|
168
|
+
* @param options
|
|
169
|
+
*/
|
|
170
|
+
function drawKeycard(options) {
|
|
171
|
+
const { jsPDF, QRCode, coinShortName, activationCode, walletLabel, coinName } = options;
|
|
172
|
+
const margin = 30;
|
|
173
|
+
const font = {
|
|
174
|
+
header: 24,
|
|
175
|
+
subheader: 15,
|
|
176
|
+
body: 12,
|
|
177
|
+
};
|
|
178
|
+
const color = {
|
|
179
|
+
black: '#000000',
|
|
180
|
+
darkgray: '#4c4c4c',
|
|
181
|
+
gray: '#9b9b9b',
|
|
182
|
+
red: '#e21e1e',
|
|
183
|
+
};
|
|
184
|
+
// document details
|
|
185
|
+
const width = 8.5 * 72;
|
|
186
|
+
let y = 0;
|
|
187
|
+
// Helpers for data formatting / positioning on the paper
|
|
188
|
+
const left = (x) => margin + x;
|
|
189
|
+
const moveDown = (yDelta) => {
|
|
190
|
+
y += yDelta;
|
|
191
|
+
};
|
|
192
|
+
const doc = new jsPDF('portrait', 'pt', 'letter');
|
|
193
|
+
doc.setFont('helvetica');
|
|
194
|
+
// PDF Header Area - includes the logo and company name
|
|
195
|
+
// This is data for the BitGo logo in the top left of the PDF
|
|
196
|
+
moveDown(30);
|
|
197
|
+
// We don't currently add an image, since that path is dependent on BitGo frontend
|
|
198
|
+
// doc.addImage(coinUtility.getSelectedCoinObj().keyCardImage, left(0), y + 10);
|
|
199
|
+
// Activation Code
|
|
200
|
+
moveDown(8);
|
|
201
|
+
doc.setFontSize(font.body).setTextColor(color.gray);
|
|
202
|
+
doc.text('Activation Code', left(460), y);
|
|
203
|
+
doc.setFontSize(font.header).setTextColor(color.black);
|
|
204
|
+
moveDown(25);
|
|
205
|
+
doc.text('Your BitGo KeyCard', left(150), y);
|
|
206
|
+
doc.setFontSize(font.header).setTextColor(color.gray);
|
|
207
|
+
doc.text(activationCode.toString(), left(460), y);
|
|
208
|
+
// Subheader
|
|
209
|
+
// titles
|
|
210
|
+
moveDown(margin);
|
|
211
|
+
doc.setFontSize(font.body).setTextColor(color.gray);
|
|
212
|
+
doc.text(`Created on ${new Date().toDateString()} by ${window.location.hostname} for wallet named ${walletLabel}`, left(0), y);
|
|
213
|
+
// copy
|
|
214
|
+
moveDown(25);
|
|
215
|
+
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
216
|
+
doc.text(walletLabel, left(0), y);
|
|
217
|
+
// Red Bar
|
|
218
|
+
moveDown(20);
|
|
219
|
+
doc.setFillColor(255, 230, 230);
|
|
220
|
+
doc.rect(left(0), y, width - 2 * margin, 32, 'F');
|
|
221
|
+
// warning message
|
|
222
|
+
moveDown(20);
|
|
223
|
+
doc.setFontSize(font.body).setTextColor(color.red);
|
|
224
|
+
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
|
+
moveDown(35);
|
|
240
|
+
const qrSize = 130;
|
|
241
|
+
// Draw each Box with QR code and description
|
|
242
|
+
Object.keys(keyData).forEach(function (keyType) {
|
|
243
|
+
const key = keyData[keyType];
|
|
244
|
+
const topY = y;
|
|
245
|
+
// Don't indent if we're not producing QR codes
|
|
246
|
+
const textLeft = !!QRCode ? left(qrSize + 15) : left(15);
|
|
247
|
+
// Draw a QR code if library is available
|
|
248
|
+
if (QRCode) {
|
|
249
|
+
const dataURL = new QRCode({ value: key.data, size: qrSize }).toDataURL('image/jpeg');
|
|
250
|
+
doc.addImage(dataURL, left(0), y, qrSize, qrSize);
|
|
251
|
+
}
|
|
252
|
+
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
253
|
+
moveDown(10);
|
|
254
|
+
doc.text(key.title, textLeft, y);
|
|
255
|
+
moveDown(15);
|
|
256
|
+
doc.setFontSize(font.body).setTextColor(color.darkgray);
|
|
257
|
+
doc.text(key.desc, textLeft, y);
|
|
258
|
+
moveDown(30);
|
|
259
|
+
doc.setFontSize(font.body - 2);
|
|
260
|
+
doc.text('Data:', textLeft, y);
|
|
261
|
+
moveDown(15);
|
|
262
|
+
const innerWidth = 72 * 8.5 - textLeft - 30;
|
|
263
|
+
doc.setFont('courier').setFontSize(9).setTextColor(color.black);
|
|
264
|
+
const lines = doc.splitTextToSize(key.data, innerWidth);
|
|
265
|
+
doc.text(lines, textLeft, y);
|
|
266
|
+
// Add key ID (derivation string) if it exists
|
|
267
|
+
if (key.keyID) {
|
|
268
|
+
const text = 'Key Id: ' + key.keyID;
|
|
269
|
+
// Gray bar
|
|
270
|
+
moveDown(45);
|
|
271
|
+
doc.setFillColor(247, 249, 249); // Gray background
|
|
272
|
+
doc.setDrawColor(0, 0, 0); // Border
|
|
273
|
+
doc.rect(textLeft, y, width, 15, 'FD');
|
|
274
|
+
doc.text(text, textLeft + 5, y + 10);
|
|
275
|
+
}
|
|
276
|
+
doc.setFont('helvetica');
|
|
277
|
+
// Move down the size of the QR code minus accumulated height on the right side, plus buffer
|
|
278
|
+
moveDown(qrSize - (y - topY) + 15);
|
|
279
|
+
});
|
|
280
|
+
// Add a new page (Q + A page)
|
|
281
|
+
doc.addPage();
|
|
282
|
+
// 2nd page title
|
|
283
|
+
y = 0;
|
|
284
|
+
moveDown(55);
|
|
285
|
+
doc.setFontSize(font.header).setTextColor(color.black);
|
|
286
|
+
doc.text('BitGo KeyCard FAQ', left(0), y);
|
|
287
|
+
const questions = generateQuestions(coinName);
|
|
288
|
+
// Draw the Q + A data on the second page
|
|
289
|
+
moveDown(30);
|
|
290
|
+
questions.forEach(function (q) {
|
|
291
|
+
doc.setFontSize(font.subheader).setTextColor(color.black);
|
|
292
|
+
doc.text(q.q, left(0), y);
|
|
293
|
+
moveDown(20);
|
|
294
|
+
doc.setFontSize(font.body).setTextColor(color.darkgray);
|
|
295
|
+
q.a.forEach(function (line) {
|
|
296
|
+
doc.text(line, left(0), y);
|
|
297
|
+
moveDown(font.body + 3);
|
|
298
|
+
});
|
|
299
|
+
moveDown(22);
|
|
300
|
+
});
|
|
301
|
+
return doc;
|
|
302
|
+
}
|
|
303
|
+
exports.drawKeycard = drawKeycard;
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9pbnRlcm5hbC9rZXljYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBRUg7R0FDRztBQUNILG1DQUFxQztBQUdyQzs7O0dBR0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDekMsT0FBTztRQUNMO1lBQ0UsQ0FBQyxFQUFFLHNCQUFzQjtZQUN6QixDQUFDLEVBQUU7Z0JBQ0QsK0VBQStFLElBQUksR0FBRztnQkFDdEYsMkRBQTJELEdBQUcsZ0NBQWdDO2dCQUM5Rix1RkFBdUY7YUFDeEY7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxFQUFFLDJCQUEyQjtZQUM5QixDQUFDLEVBQUU7Z0JBQ0QsK0ZBQStGO2dCQUMvRixtR0FBbUc7Z0JBQ25HLGdEQUFnRDtnQkFDaEQsRUFBRTtnQkFDRiw2RkFBNkY7Z0JBQzdGLCtGQUErRjtnQkFDL0Ysc0RBQXNEO2FBQ3ZEO1NBQ0Y7UUFDRDtZQUNFLENBQUMsRUFBRSxnQ0FBZ0M7WUFDbkMsQ0FBQyxFQUFFO2dCQUNELGdFQUFnRSxJQUFJLDJCQUEyQjtnQkFDL0YsK0ZBQStGO2dCQUMvRix1Q0FBdUM7Z0JBQ3ZDLDBDQUEwQzthQUMzQztTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsa0NBQWtDO1lBQ3JDLENBQUMsRUFBRTtnQkFDRCxrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsOENBQThDO1lBQ2pELENBQUMsRUFBRTtnQkFDRCx3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxDQUFDLEVBQUUsNERBQTREO1lBQy9ELENBQUMsRUFBRTtnQkFDRCxvRkFBb0Y7Z0JBQ3BGLDREQUE0RCxJQUFJLGlDQUFp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LENBQUMsQ0FBQztRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNiLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBNUtELGtDQTRLQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGhpZGRlblxuICovXG5cbi8qKlxuICovXG5pbXBvcnQgeyBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJy4uL2tleWNoYWluJztcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxpc3Qgb2YgcXVlc3Rpb25zIHRoYXQgd2lsbCBhcHBlYXIgb24gdGhlIHNlY29uZCBwYWdlIG9mIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gY29pbiBuYW1lIG9mIHRoZSBjb2luXG4gKi9cbmNvbnN0IGdlbmVyYXRlUXVlc3Rpb25zID0gKGNvaW46IHN0cmluZykgPT4ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlzIHRoZSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2lufSBgLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0JyArICcgaGFzIGl0cyBvd24sIHVuaXF1ZSBLZXlDYXJkLiAnLFxuICAgICAgICAnSWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZSB3YWxsZXRzLCB5b3Ugc2hvdWxkIHJldGFpbiB0aGUgS2V5Q2FyZCBmb3IgZWFjaCBvZiB0aGVtLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICAnWW91IHNob3VsZCBwcmludCB0aGUgS2V5Q2FyZCBhbmQvb3Igc2F2ZSB0aGUgUERGIHRvIGFuIG9mZmxpbmUgc3RvcmFnZSBkZXZpY2UuIFRoZSBwcmludC1vdXQgJyxcbiAgICAgICAgXCJvciBVU0Igc3RpY2sgc2hvdWxkIGJlIGtlcHQgaW4gYSBzYWZlIHBsYWNlLCBzdWNoIGFzIGEgYmFuayB2YXVsdCBvciBob21lIHNhZmUuIEl0J3MgYSBnb29kIGlkZWEgXCIsXG4gICAgICAgICd0byBrZWVwIGEgc2Vjb25kIGNvcHkgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uJyxcbiAgICAgICAgJycsXG4gICAgICAgIFwiSW1wb3J0YW50OiBJZiB5b3UgaGF2ZW4ndCBwcm92aWRlZCBhbiBleHRlcm5hbCBiYWNrdXAga2V5LCB0aGVuIHRoZSBvcmlnaW5hbCBQREYgc2hvdWxkIGJlIFwiLFxuICAgICAgICAnZGVsZXRlZCBmcm9tIGFueSBtYWNoaW5lIHdoZXJlIHRoZSB3YWxsZXQgd2lsbCBiZSByZWd1bGFybHkgYWNjZXNzZWQgdG8gcHJldmVudCBtYWx3YXJlIGZyb20gJyxcbiAgICAgICAgJ2NhcHR1cmluZyBib3RoIHRoZSBLZXlDYXJkIGFuZCB5b3VyIHdhbGxldCBwYXNzY29kZS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IHNob3VsZCBJIGRvIGlmIEkgbG9zZSBpdD8nLFxuICAgICAgYTogW1xuICAgICAgICBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbn0gaXMgc3RpbGwgc2FmZSwgYnV0IHRoaXMgYCxcbiAgICAgICAgJ3dhbGxldCBzaG91bGQgYmUgY29uc2lkZXJlZCBhdCByaXNrIGZvciBsb3NzLiBBcyBzb29uIGFzIGlzIGNvbnZlbmllbnQsIHlvdSBzaG91bGQgdXNlIEJpdEdvICcsXG4gICAgICAgICd0byBlbXB0eSB0aGUgd2FsbGV0IGludG8gYSBuZXcgd2FsbGV0JyxcbiAgICAgICAgJywgYW5kIGRpc2NvbnRpbnVlIHVzZSBvZiB0aGUgb2xkIHdhbGxldC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhOiBbXG4gICAgICAgIFwiRG9uJ3QgcGFuaWMhIEFsbCBzZW5zaXRpdmUgaW5mb3JtYXRpb24gb24gdGhlIEtleUNhcmQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciBwYXNzY29kZSwgb3Igd2l0aCBhXCIsXG4gICAgICAgICdrZXkgd2hpY2ggb25seSBCaXRHbyBoYXMuIEJ1dCwgaW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGJlc3QgZWZmb3J0cyB0byBrZWVwIHlvdXIgJyxcbiAgICAgICAgJ0tleUNhcmQgcHJpdmF0ZS4gSWYgeW91ciBLZXlDYXJkIGRvZXMgZ2V0IGV4cG9zZWQgb3IgY29waWVkIGluIGEgd2F5IHRoYXQgbWFrZXMgeW91ICcsXG4gICAgICAgICd1bmNvbWZvcnRhYmxlLCB0aGUgYmVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGlzIHRvIGVtcHR5IHRoZSBjb3JyZXNwb25kaW5nIHdhbGxldCBpbnRvIGFub3RoZXIgJyxcbiAgICAgICAgJ3dhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcTogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ0JpdEdvIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIGluIFFSIENvZGUgRCB0byBoZWxwIHlvdSByZWNvdmVyIGFjY2VzcyB0byB5b3VyIHdhbGxldC4gJyxcbiAgICAgICAgJ1dpdGhvdXQgdGhlIEtleUNhcmQsIEJpdEdvIGlzIG5vdCBhYmxlIHRvIHJlY292ZXIgZnVuZHMgZnJvbSBhIHdhbGxldCB3aXRoIGEgbG9zdCBwYXNzd29yZC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGE6IFtcbiAgICAgICAgJ1lvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R2/igJlzIHB1Ymxpc2hlZCBvcGVuICcsXG4gICAgICAgIGBzb3VyY2UgdG9vbHMgYXQgaHR0cHM6Ly9naXRodWIuY29tL2JpdGdvIHRvIHJlY292ZXIgeW91ciAke2NvaW59LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGAsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHE6ICdTaG91bGQgSSB3cml0ZSBteSB3YWxsZXQgcGFzc3dvcmQgb24gbXkgS2V5Q2FyZD8nLFxuICAgICAgYTogW1xuICAgICAgICAnTm8hIEJpdEdv4oCZcyBtdWx0aS1zaWduYXR1cmUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgJyxcbiAgICAgICAgJ29mIGF0dGFjay4gQnV0IGlmIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGlzIG9uIHlvdXIgS2V5Q2FyZCwgdGhlbiBhbnlvbmUgd2hvIGdhaW5zIGFjY2VzcyB0byAnLFxuICAgICAgICBgeW91ciBLZXlDYXJkIHdpbGwgYmUgYWJsZSB0byBzdGVhbCB5b3VyICR7Y29pbn0uIFdlIHJlY29tbWVuZCBrZWVwaW5nIHlvdXIgd2FsbGV0IHBhc3N3b3JkIGAsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn07XG5cbmludGVyZmFjZSBHZXRLZXlEYXRhT3B0aW9ucyB7XG4gIGVuY3J5cHQ6IChwYXJhbXM6IHsgaW5wdXQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBzdHJpbmc7XG4gIHVzZXJLZXljaGFpbjogS2V5Y2hhaW47XG4gIGJpdGdvS2V5Y2hhaW46IEtleWNoYWluO1xuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIGNvaW5TaG9ydE5hbWU6IHN0cmluZztcbiAgcGFzc3BocmFzZT86IHN0cmluZztcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgd2FsbGV0S2V5SUQ/OiBzdHJpbmc7XG4gIGJhY2t1cEtleUlEPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbGxlY3QgYWxsIGRhdGEgd2hpY2ggd2lsbCBnbyBvbnRvIHRoZSBrZXljYXJkXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5mdW5jdGlvbiBnZXRLZXlEYXRhKG9wdGlvbnM6IEdldEtleURhdGFPcHRpb25zKTogYW55IHtcbiAgY29uc3Qge1xuICAgIGVuY3J5cHQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gICAgY29pblNob3J0TmFtZSxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIFdoZW4gdXNpbmcganVzdCAnZ2VuZXJhdGVXYWxsZXQnLCB3ZSBnZXQgYmFjayBhbiB1bmVuY3J5cHRlZCBwcnYgZm9yIHRoZSBiYWNrdXAga2V5Y2hhaW5cbiAgLy8gSWYgdGhlIHVzZXIgcGFzc2VzIGluIHRoZWlyIHBhc3NwaHJhc2UsIHdlIGNhbiBlbmNyeXB0IGl0XG4gIGlmIChiYWNrdXBLZXljaGFpbi5wcnYgJiYgcGFzc3BocmFzZSkge1xuICAgIGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydiA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IGJhY2t1cEtleWNoYWluLnBydixcbiAgICAgIHBhc3N3b3JkOiBwYXNzcGhyYXNlLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gSWYgd2UgaGF2ZSB0aGUgcGFzc2NvZGUgZW5jcnlwdGlvbiBjb2RlLCBjcmVhdGUgYSBib3ggRCB3aXRoIHRoZSBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZVxuICBsZXQgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGU7XG4gIGlmIChwYXNzcGhyYXNlICYmIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSA9IGVuY3J5cHQoe1xuICAgICAgaW5wdXQ6IHBhc3NwaHJhc2UsXG4gICAgICBwYXNzd29yZDogcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBERiBRUiBDb2RlIGRhdGFcbiAgY29uc3QgcXJEYXRhOiBhbnkgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgcGFzc2NvZGUuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIFB1YmxpYyBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgdGhhdCBCaXRHbyB3aWxsIHVzZSB0byAnICtcbiAgICAgICAgJ2NvLXNpZ24gdHJhbnNhY3Rpb25zXFxyXFxud2l0aCB5b3Ugb24geW91ciB3YWxsZXQuJyxcbiAgICAgIGRhdGE6IGJpdGdvS2V5Y2hhaW4ucHViLFxuICAgIH0sXG4gICAgcGFzc2NvZGU6IHtcbiAgICAgIHRpdGxlOiAnRDogRW5jcnlwdGVkIFdhbGxldCBQYXNzd29yZCcsXG4gICAgICBkZXNjOiAnVGhpcyBpcyB0aGUgd2FsbGV0ICBwYXNzd29yZCwgZW5jcnlwdGVkIGNsaWVudC1zaWRlICcgKyAnd2l0aCBhIGtleSBoZWxkIGJ5XFxyXFxuQml0R28uJyxcbiAgICAgIGRhdGE6IGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHdhbGxldEtleUlEKSB7XG4gICAgcXJEYXRhLnVzZXIua2V5SUQgPSB3YWxsZXRLZXlJRDtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlJRCkge1xuICAgIHFyRGF0YS5iYWNrdXAua2V5SUQgPSBiYWNrdXBLZXlJRDtcbiAgfVxuXG4gIGlmIChpc1VuZGVmaW5lZCh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIGtleSAtIHRoaXMgaXMgYSBjb2xkIHdhbGxldFxuICAgIHFyRGF0YS51c2VyLnRpdGxlID0gJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JztcbiAgICBxckRhdGEudXNlci5kZXNjID0gJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nO1xuICAgIHFyRGF0YS51c2VyLmRhdGEgPSB1c2VyS2V5Y2hhaW4ucHViO1xuXG4gICAgLy8gVGhlIHVzZXIgcHJvdmlkZWQgdGhlaXIgb3duIHB1YmxpYyBrZXksIHdlIGNhbiByZW1vdmUgYm94IERcbiAgICBkZWxldGUgcXJEYXRhLnBhc3Njb2RlO1xuICB9IGVsc2UgaWYgKGlzVW5kZWZpbmVkKGVuY3J5cHRlZFdhbGxldFBhc3Njb2RlKSkge1xuICAgIGRlbGV0ZSBxckRhdGEucGFzc2NvZGU7XG4gIH1cblxuICBpZiAoIWlzVW5kZWZpbmVkKGJhY2t1cEtleWNoYWluLnByb3ZpZGVyKSkge1xuICAgIGNvbnN0IGJhY2t1cEtleVByb3ZpZGVyTmFtZSA9IGJhY2t1cEtleWNoYWluLnByb3ZpZGVyO1xuICAgIC8vIEJhY2t1cCBrZXkgaGVsZCB3aXRoIEtSU1xuICAgIHFyRGF0YS5iYWNrdXAgPSB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzYzpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgYCwgYW4gJHtjb2luU2hvcnROYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyTmFtZX1gICtcbiAgICAgICAgJyB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH0gZWxzZSBpZiAoaXNVbmRlZmluZWQoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSkge1xuICAgIC8vIFVzZXIgc3VwcGxpZWQgdGhlIHhwdWJcbiAgICBxckRhdGEuYmFja3VwID0ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2M6ICdUaGlzIGlzIHRoZSBwdWJsaWMgcG9ydGlvbiBvZiB5b3VyIGJhY2t1cCBrZXksIHdoaWNoIHlvdSBwcm92aWRlZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4ucHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5pbnRlcmZhY2UgRHJhd0tleWNhcmRPcHRpb25zIGV4dGVuZHMgR2V0S2V5RGF0YU9wdGlvbnMge1xuICBqc1BERjogYW55O1xuICBRUkNvZGU6IGFueTtcbiAgY29pblNob3J0TmFtZTogc3RyaW5nO1xuICBhY3RpdmF0aW9uQ29kZTogc3RyaW5nO1xuICB3YWxsZXRMYWJlbDogc3RyaW5nO1xuICBjb2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERyYXcgYSBrZXljYXJkIGludG8gYSBuZXcgcGRmIGRvY3VtZW50IG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXdLZXljYXJkKG9wdGlvbnM6IERyYXdLZXljYXJkT3B0aW9ucyk6IGFueSB7XG4gIGNvbnN0IHsganNQREYsIFFSQ29kZSwgY29pblNob3J0TmFtZSwgYWN0aXZhdGlvbkNvZGUsIHdhbGxldExhYmVsLCBjb2luTmFtZSB9ID0gb3B0aW9ucztcblxuICBjb25zdCBtYXJnaW4gPSAzMDtcblxuICBjb25zdCBmb250ID0ge1xuICAgIGhlYWRlcjogMjQsXG4gICAgc3ViaGVhZGVyOiAxNSxcbiAgICBib2R5OiAxMixcbiAgfTtcblxuICBjb25zdCBjb2xvciA9IHtcbiAgICBibGFjazogJyMwMDAwMDAnLFxuICAgIGRhcmtncmF5OiAnIzRjNGM0YycsXG4gICAgZ3JheTogJyM5YjliOWInLFxuICAgIHJlZDogJyNlMjFlMWUnLFxuICB9O1xuXG4gIC8vIGRvY3VtZW50IGRldGFpbHNcbiAgY29uc3Qgd2lkdGggPSA4LjUgKiA3MjtcbiAgbGV0IHkgPSAwO1xuXG4gIC8vIEhlbHBlcnMgZm9yIGRhdGEgZm9ybWF0dGluZyAvIHBvc2l0aW9uaW5nIG9uIHRoZSBwYXBlclxuICBjb25zdCBsZWZ0ID0gKHgpID0+IG1hcmdpbiArIHg7XG4gIGNvbnN0IG1vdmVEb3duID0gKHlEZWx0YSkgPT4ge1xuICAgIHkgKz0geURlbHRhO1xuICB9O1xuXG4gIGNvbnN0IGRvYyA9IG5ldyBqc1BERigncG9ydHJhaXQnLCAncHQnLCAnbGV0dGVyJyk7XG4gIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnKTtcblxuICAvLyBQREYgSGVhZGVyIEFyZWEgLSBpbmNsdWRlcyB0aGUgbG9nbyBhbmQgY29tcGFueSBuYW1lXG4gIC8vIFRoaXMgaXMgZGF0YSBmb3IgdGhlIEJpdEdvIGxvZ28gaW4gdGhlIHRvcCBsZWZ0IG9mIHRoZSBQREZcbiAgbW92ZURvd24oMzApO1xuXG4gIC8vIFdlIGRvbid0IGN1cnJlbnRseSBhZGQgYW4gaW1hZ2UsIHNpbmNlIHRoYXQgcGF0aCBpcyBkZXBlbmRlbnQgb24gQml0R28gZnJvbnRlbmRcbiAgLy8gZG9jLmFkZEltYWdlKGNvaW5VdGlsaXR5LmdldFNlbGVjdGVkQ29pbk9iaigpLmtleUNhcmRJbWFnZSwgbGVmdCgwKSwgeSArIDEwKTtcblxuICAvLyBBY3RpdmF0aW9uIENvZGVcbiAgbW92ZURvd24oOCk7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoJ0FjdGl2YXRpb24gQ29kZScsIGxlZnQoNDYwKSwgeSk7XG5cbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICBtb3ZlRG93bigyNSk7XG4gIGRvYy50ZXh0KCdZb3VyIEJpdEdvIEtleUNhcmQnLCBsZWZ0KDE1MCksIHkpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoYWN0aXZhdGlvbkNvZGUudG9TdHJpbmcoKSwgbGVmdCg0NjApLCB5KTtcblxuICAvLyBTdWJoZWFkZXJcbiAgLy8gdGl0bGVzXG4gIG1vdmVEb3duKG1hcmdpbik7XG4gIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5ncmF5KTtcbiAgZG9jLnRleHQoXG4gICAgYENyZWF0ZWQgb24gJHtuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpfSBieSAke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0gZm9yIHdhbGxldCBuYW1lZCAke3dhbGxldExhYmVsfWAsXG4gICAgbGVmdCgwKSxcbiAgICB5XG4gICk7XG4gIC8vIGNvcHlcbiAgbW92ZURvd24oMjUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KHdhbGxldExhYmVsLCBsZWZ0KDApLCB5KTtcbiAgLy8gUmVkIEJhclxuICBtb3ZlRG93bigyMCk7XG4gIGRvYy5zZXRGaWxsQ29sb3IoMjU1LCAyMzAsIDIzMCk7XG4gIGRvYy5yZWN0KGxlZnQoMCksIHksIHdpZHRoIC0gMiAqIG1hcmdpbiwgMzIsICdGJyk7XG5cbiAgLy8gd2FybmluZyBtZXNzYWdlXG4gIG1vdmVEb3duKDIwKTtcbiAgZG9jLnNldEZvbnRTaXplKGZvbnQuYm9keSkuc2V0VGV4dENvbG9yKGNvbG9yLnJlZCk7XG4gIGRvYy50ZXh0KCdQcmludCB0aGlzIGRvY3VtZW50LCBvciBrZWVwIGl0IHNlY3VyZWx5IG9mZmxpbmUuIFNlZSBzZWNvbmQgcGFnZSBmb3IgRkFRLicsIGxlZnQoNzUpLCB5KTtcblxuICBjb25zdCB7XG4gICAgZW5jcnlwdCxcbiAgICBwYXNzcGhyYXNlLFxuICAgIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgd2FsbGV0S2V5SUQsXG4gICAgYmFja3VwS2V5SUQsXG4gICAgdXNlcktleWNoYWluLFxuICAgIGJpdGdvS2V5Y2hhaW4sXG4gICAgYmFja3VwS2V5Y2hhaW4sXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIEdldCB0aGUgZGF0YSBmb3IgdGhlIGZpcnN0IHBhZ2UgKHFyIGNvZGVzKVxuICBjb25zdCBrZXlEYXRhID0gZ2V0S2V5RGF0YSh7XG4gICAgZW5jcnlwdCxcbiAgICBjb2luU2hvcnROYW1lLFxuICAgIHBhc3NwaHJhc2UsXG4gICAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgICB3YWxsZXRLZXlJRCxcbiAgICBiYWNrdXBLZXlJRCxcbiAgICB1c2VyS2V5Y2hhaW4sXG4gICAgYml0Z29LZXljaGFpbixcbiAgICBiYWNrdXBLZXljaGFpbixcbiAgfSk7XG5cbiAgLy8gR2VuZXJhdGUgdGhlIGZpcnN0IHBhZ2UncyBkYXRhIGZvciB0aGUgYmFja3VwIFBERlxuICBtb3ZlRG93bigzNSk7XG4gIGNvbnN0IHFyU2l6ZSA9IDEzMDtcblxuICAvLyBEcmF3IGVhY2ggQm94IHdpdGggUVIgY29kZSBhbmQgZGVzY3JpcHRpb25cbiAgT2JqZWN0LmtleXMoa2V5RGF0YSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5VHlwZSkge1xuICAgIGNvbnN0IGtleSA9IGtleURhdGFba2V5VHlwZV07XG4gICAgY29uc3QgdG9wWSA9IHk7XG5cbiAgICAvLyBEb24ndCBpbmRlbnQgaWYgd2UncmUgbm90IHByb2R1Y2luZyBRUiBjb2Rlc1xuICAgIGNvbnN0IHRleHRMZWZ0ID0gISFRUkNvZGUgPyBsZWZ0KHFyU2l6ZSArIDE1KSA6IGxlZnQoMTUpO1xuXG4gICAgLy8gRHJhdyBhIFFSIGNvZGUgaWYgbGlicmFyeSBpcyBhdmFpbGFibGVcbiAgICBpZiAoUVJDb2RlKSB7XG4gICAgICBjb25zdCBkYXRhVVJMID0gbmV3IFFSQ29kZSh7IHZhbHVlOiBrZXkuZGF0YSwgc2l6ZTogcXJTaXplIH0pLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgZG9jLmFkZEltYWdlKGRhdGFVUkwsIGxlZnQoMCksIHksIHFyU2l6ZSwgcXJTaXplKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5zdWJoZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gICAgbW92ZURvd24oMTApO1xuICAgIGRvYy50ZXh0KGtleS50aXRsZSwgdGV4dExlZnQsIHkpO1xuICAgIG1vdmVEb3duKDE1KTtcbiAgICBkb2Muc2V0Rm9udFNpemUoZm9udC5ib2R5KS5zZXRUZXh0Q29sb3IoY29sb3IuZGFya2dyYXkpO1xuICAgIGRvYy50ZXh0KGtleS5kZXNjLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMzApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkgLSAyKTtcbiAgICBkb2MudGV4dCgnRGF0YTonLCB0ZXh0TGVmdCwgeSk7XG4gICAgbW92ZURvd24oMTUpO1xuICAgIGNvbnN0IGlubmVyV2lkdGggPSA3MiAqIDguNSAtIHRleHRMZWZ0IC0gMzA7XG4gICAgZG9jLnNldEZvbnQoJ2NvdXJpZXInKS5zZXRGb250U2l6ZSg5KS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGNvbnN0IGxpbmVzID0gZG9jLnNwbGl0VGV4dFRvU2l6ZShrZXkuZGF0YSwgaW5uZXJXaWR0aCk7XG4gICAgZG9jLnRleHQobGluZXMsIHRleHRMZWZ0LCB5KTtcblxuICAgIC8vIEFkZCBrZXkgSUQgKGRlcml2YXRpb24gc3RyaW5nKSBpZiBpdCBleGlzdHNcbiAgICBpZiAoa2V5LmtleUlEKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ0tleSBJZDogJyArIGtleS5rZXlJRDtcbiAgICAgIC8vIEdyYXkgYmFyXG4gICAgICBtb3ZlRG93big0NSk7XG4gICAgICBkb2Muc2V0RmlsbENvbG9yKDI0NywgMjQ5LCAyNDkpOyAvLyBHcmF5IGJhY2tncm91bmRcbiAgICAgIGRvYy5zZXREcmF3Q29sb3IoMCwgMCwgMCk7IC8vIEJvcmRlclxuICAgICAgZG9jLnJlY3QodGV4dExlZnQsIHksIHdpZHRoLCAxNSwgJ0ZEJyk7XG5cbiAgICAgIGRvYy50ZXh0KHRleHQsIHRleHRMZWZ0ICsgNSwgeSArIDEwKTtcbiAgICB9XG5cbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJyk7XG4gICAgLy8gTW92ZSBkb3duIHRoZSBzaXplIG9mIHRoZSBRUiBjb2RlIG1pbnVzIGFjY3VtdWxhdGVkIGhlaWdodCBvbiB0aGUgcmlnaHQgc2lkZSwgcGx1cyBidWZmZXJcbiAgICBtb3ZlRG93bihxclNpemUgLSAoeSAtIHRvcFkpICsgMTUpO1xuICB9KTtcblxuICAvLyBBZGQgYSBuZXcgcGFnZSAoUSArIEEgcGFnZSlcbiAgZG9jLmFkZFBhZ2UoKTtcblxuICAvLyAybmQgcGFnZSB0aXRsZVxuICB5ID0gMDtcbiAgbW92ZURvd24oNTUpO1xuICBkb2Muc2V0Rm9udFNpemUoZm9udC5oZWFkZXIpLnNldFRleHRDb2xvcihjb2xvci5ibGFjayk7XG4gIGRvYy50ZXh0KCdCaXRHbyBLZXlDYXJkIEZBUScsIGxlZnQoMCksIHkpO1xuXG4gIGNvbnN0IHF1ZXN0aW9ucyA9IGdlbmVyYXRlUXVlc3Rpb25zKGNvaW5OYW1lKTtcblxuICAvLyBEcmF3IHRoZSBRICsgQSBkYXRhIG9uIHRoZSBzZWNvbmQgcGFnZVxuICBtb3ZlRG93bigzMCk7XG4gIHF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChxKSB7XG4gICAgZG9jLnNldEZvbnRTaXplKGZvbnQuc3ViaGVhZGVyKS5zZXRUZXh0Q29sb3IoY29sb3IuYmxhY2spO1xuICAgIGRvYy50ZXh0KHEucSwgbGVmdCgwKSwgeSk7XG4gICAgbW92ZURvd24oMjApO1xuICAgIGRvYy5zZXRGb250U2l6ZShmb250LmJvZHkpLnNldFRleHRDb2xvcihjb2xvci5kYXJrZ3JheSk7XG4gICAgcS5hLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGRvYy50ZXh0KGxpbmUsIGxlZnQoMCksIHkpO1xuICAgICAgbW92ZURvd24oZm9udC5ib2R5ICsgMyk7XG4gICAgfSk7XG4gICAgbW92ZURvd24oMjIpO1xuICB9KTtcblxuICByZXR1cm4gZG9jO1xufVxuIl19
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IRequestTracer } from '../../api';
|
|
3
|
+
import { KeyPair, KeychainsTriplet } from '../baseCoin';
|
|
4
|
+
import { IWallet } from '../wallet';
|
|
5
|
+
export declare type KeyType = 'tss' | 'independent' | 'blsdkg';
|
|
6
|
+
export interface Keychain {
|
|
7
|
+
id: string;
|
|
8
|
+
pub: string;
|
|
9
|
+
prv?: string;
|
|
10
|
+
provider?: string;
|
|
11
|
+
encryptedPrv?: string;
|
|
12
|
+
derivationPath?: string;
|
|
13
|
+
derivedFromParentWithSeed?: string;
|
|
14
|
+
commonPub?: string;
|
|
15
|
+
commonKeychain?: string;
|
|
16
|
+
keyShares?: KeyShare[];
|
|
17
|
+
}
|
|
18
|
+
export interface ChangedKeychains {
|
|
19
|
+
[pubkey: string]: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ListKeychainsResult {
|
|
22
|
+
keys: Keychain[];
|
|
23
|
+
nextBatchPrevId?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface GetKeychainOptions {
|
|
26
|
+
id: string;
|
|
27
|
+
xpub?: string;
|
|
28
|
+
ethAddress?: string;
|
|
29
|
+
reqId?: IRequestTracer;
|
|
30
|
+
}
|
|
31
|
+
export interface ListKeychainOptions {
|
|
32
|
+
limit?: number;
|
|
33
|
+
prevId?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface UpdatePasswordOptions {
|
|
36
|
+
oldPassword: string;
|
|
37
|
+
newPassword: string;
|
|
38
|
+
}
|
|
39
|
+
export interface UpdateSingleKeychainPasswordOptions {
|
|
40
|
+
keychain?: Keychain;
|
|
41
|
+
oldPassword?: string;
|
|
42
|
+
newPassword?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface AddKeychainOptions {
|
|
45
|
+
pub?: string;
|
|
46
|
+
commonPub?: string;
|
|
47
|
+
commonKeychain?: string;
|
|
48
|
+
encryptedPrv?: string;
|
|
49
|
+
type?: string;
|
|
50
|
+
keyType?: KeyType;
|
|
51
|
+
source?: string;
|
|
52
|
+
originalPasscodeEncryptionCode?: string;
|
|
53
|
+
enterprise?: string;
|
|
54
|
+
derivedFromParentWithSeed?: any;
|
|
55
|
+
disableKRSEmail?: boolean;
|
|
56
|
+
provider?: string;
|
|
57
|
+
reqId?: IRequestTracer;
|
|
58
|
+
krsSpecific?: any;
|
|
59
|
+
keyShares?: KeyShare[];
|
|
60
|
+
userGPGPublicKey?: string;
|
|
61
|
+
backupGPGPublicKey?: string;
|
|
62
|
+
}
|
|
63
|
+
interface KeyShare {
|
|
64
|
+
from: string;
|
|
65
|
+
to: string;
|
|
66
|
+
publicShare: string;
|
|
67
|
+
privateShare: string;
|
|
68
|
+
}
|
|
69
|
+
export interface CreateBackupOptions {
|
|
70
|
+
provider?: string;
|
|
71
|
+
source?: string;
|
|
72
|
+
disableKRSEmail?: boolean;
|
|
73
|
+
krsSpecific?: any;
|
|
74
|
+
type?: string;
|
|
75
|
+
keyType?: KeyType;
|
|
76
|
+
reqId?: IRequestTracer;
|
|
77
|
+
commonPub?: string;
|
|
78
|
+
commonKeychain?: string;
|
|
79
|
+
prv?: string;
|
|
80
|
+
encryptedPrv?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface CreateBitGoOptions {
|
|
83
|
+
source?: 'bitgo';
|
|
84
|
+
enterprise?: string;
|
|
85
|
+
reqId?: IRequestTracer;
|
|
86
|
+
keyType?: KeyType;
|
|
87
|
+
}
|
|
88
|
+
export interface CreateMpcOptions {
|
|
89
|
+
multisigType: 'onchain' | 'tss' | 'blsdkg';
|
|
90
|
+
passphrase: string;
|
|
91
|
+
originalPasscodeEncryptionCode?: string;
|
|
92
|
+
enterprise?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface GetKeysForSigningOptions {
|
|
95
|
+
reqId?: IRequestTracer;
|
|
96
|
+
wallet?: IWallet;
|
|
97
|
+
}
|
|
98
|
+
export declare enum KeyIndices {
|
|
99
|
+
USER = 0,
|
|
100
|
+
BACKUP = 1,
|
|
101
|
+
BITGO = 2
|
|
102
|
+
}
|
|
103
|
+
export interface IKeychains {
|
|
104
|
+
get(params: GetKeychainOptions): Promise<Keychain>;
|
|
105
|
+
list(params?: ListKeychainOptions): Promise<ListKeychainsResult>;
|
|
106
|
+
updatePassword(params: UpdatePasswordOptions): Promise<ChangedKeychains>;
|
|
107
|
+
updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Keychain;
|
|
108
|
+
create(params?: {
|
|
109
|
+
seed?: Buffer;
|
|
110
|
+
}): KeyPair;
|
|
111
|
+
add(params?: AddKeychainOptions): Promise<Keychain>;
|
|
112
|
+
createBitGo(params?: CreateBitGoOptions): Promise<Keychain>;
|
|
113
|
+
createBackup(params?: CreateBackupOptions): Promise<Keychain>;
|
|
114
|
+
getKeysForSigning(params?: GetKeysForSigningOptions): Promise<Keychain[]>;
|
|
115
|
+
createMpc(params: CreateMpcOptions): Promise<KeychainsTriplet>;
|
|
116
|
+
}
|
|
117
|
+
export {};
|
|
118
|
+
//# sourceMappingURL=iKeychains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iKeychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/iKeychains.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeyIndices = void 0;
|
|
4
|
+
var KeyIndices;
|
|
5
|
+
(function (KeyIndices) {
|
|
6
|
+
KeyIndices[KeyIndices["USER"] = 0] = "USER";
|
|
7
|
+
KeyIndices[KeyIndices["BACKUP"] = 1] = "BACKUP";
|
|
8
|
+
KeyIndices[KeyIndices["BITGO"] = 2] = "BITGO";
|
|
9
|
+
})(KeyIndices = exports.KeyIndices || (exports.KeyIndices = {}));
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaUtleWNoYWlucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9rZXljaGFpbi9pS2V5Y2hhaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQStHQSxJQUFZLFVBSVg7QUFKRCxXQUFZLFVBQVU7SUFDcEIsMkNBQVEsQ0FBQTtJQUNSLCtDQUFVLENBQUE7SUFDViw2Q0FBUyxDQUFBO0FBQ1gsQ0FBQyxFQUpXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBSXJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlcXVlc3RUcmFjZXIgfSBmcm9tICcuLi8uLi9hcGknO1xuaW1wb3J0IHsgS2V5UGFpciwgS2V5Y2hhaW5zVHJpcGxldCB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IElXYWxsZXQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgdHlwZSBLZXlUeXBlID0gJ3RzcycgfCAnaW5kZXBlbmRlbnQnIHwgJ2Jsc2RrZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5Y2hhaW4ge1xuICBpZDogc3RyaW5nO1xuICBwdWI6IHN0cmluZztcbiAgcHJ2Pzogc3RyaW5nO1xuICBwcm92aWRlcj86IHN0cmluZztcbiAgZW5jcnlwdGVkUHJ2Pzogc3RyaW5nO1xuICBkZXJpdmF0aW9uUGF0aD86IHN0cmluZztcbiAgZGVyaXZlZEZyb21QYXJlbnRXaXRoU2VlZD86IHN0cmluZztcbiAgY29tbW9uUHViPzogc3RyaW5nO1xuICBjb21tb25LZXljaGFpbj86IHN0cmluZztcbiAga2V5U2hhcmVzPzogS2V5U2hhcmVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VkS2V5Y2hhaW5zIHtcbiAgW3B1YmtleTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RLZXljaGFpbnNSZXN1bHQge1xuICBrZXlzOiBLZXljaGFpbltdO1xuICBuZXh0QmF0Y2hQcmV2SWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0S2V5Y2hhaW5PcHRpb25zIHtcbiAgaWQ6IHN0cmluZztcbiAgeHB1Yj86IHN0cmluZztcbiAgZXRoQWRkcmVzcz86IHN0cmluZztcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0S2V5Y2hhaW5PcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHByZXZJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQYXNzd29yZE9wdGlvbnMge1xuICBvbGRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVNpbmdsZUtleWNoYWluUGFzc3dvcmRPcHRpb25zIHtcbiAga2V5Y2hhaW4/OiBLZXljaGFpbjtcbiAgb2xkUGFzc3dvcmQ/OiBzdHJpbmc7XG4gIG5ld1Bhc3N3b3JkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEtleWNoYWluT3B0aW9ucyB7XG4gIHB1Yj86IHN0cmluZztcbiAgY29tbW9uUHViPzogc3RyaW5nO1xuICBjb21tb25LZXljaGFpbj86IHN0cmluZztcbiAgZW5jcnlwdGVkUHJ2Pzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBrZXlUeXBlPzogS2V5VHlwZTtcbiAgc291cmNlPzogc3RyaW5nO1xuICBvcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGU/OiBzdHJpbmc7XG4gIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gIGRlcml2ZWRGcm9tUGFyZW50V2l0aFNlZWQ/OiBhbnk7XG4gIGRpc2FibGVLUlNFbWFpbD86IGJvb2xlYW47XG4gIHByb3ZpZGVyPzogc3RyaW5nO1xuICByZXFJZD86IElSZXF1ZXN0VHJhY2VyO1xuICBrcnNTcGVjaWZpYz86IGFueTtcbiAga2V5U2hhcmVzPzogS2V5U2hhcmVbXTtcbiAgdXNlckdQR1B1YmxpY0tleT86IHN0cmluZztcbiAgYmFja3VwR1BHUHVibGljS2V5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgS2V5U2hhcmUge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIHB1YmxpY1NoYXJlOiBzdHJpbmc7XG4gIHByaXZhdGVTaGFyZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUJhY2t1cE9wdGlvbnMge1xuICBwcm92aWRlcj86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xuICBkaXNhYmxlS1JTRW1haWw/OiBib29sZWFuO1xuICBrcnNTcGVjaWZpYz86IGFueTtcbiAgdHlwZT86IHN0cmluZztcbiAga2V5VHlwZT86IEtleVR5cGU7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG4gIGNvbW1vblB1Yj86IHN0cmluZztcbiAgY29tbW9uS2V5Y2hhaW4/OiBzdHJpbmc7XG4gIHBydj86IHN0cmluZztcbiAgZW5jcnlwdGVkUHJ2Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUJpdEdvT3B0aW9ucyB7XG4gIHNvdXJjZT86ICdiaXRnbyc7XG4gIGVudGVycHJpc2U/OiBzdHJpbmc7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG4gIGtleVR5cGU/OiBLZXlUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU1wY09wdGlvbnMge1xuICBtdWx0aXNpZ1R5cGU6ICdvbmNoYWluJyB8ICd0c3MnIHwgJ2Jsc2RrZyc7XG4gIHBhc3NwaHJhc2U6IHN0cmluZztcbiAgb3JpZ2luYWxQYXNzY29kZUVuY3J5cHRpb25Db2RlPzogc3RyaW5nO1xuICBlbnRlcnByaXNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEtleXNGb3JTaWduaW5nT3B0aW9ucyB7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG4gIHdhbGxldD86IElXYWxsZXQ7XG59XG5cbmV4cG9ydCBlbnVtIEtleUluZGljZXMge1xuICBVU0VSID0gMCxcbiAgQkFDS1VQID0gMSxcbiAgQklUR08gPSAyLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElLZXljaGFpbnMge1xuICBnZXQocGFyYW1zOiBHZXRLZXljaGFpbk9wdGlvbnMpOiBQcm9taXNlPEtleWNoYWluPjtcbiAgbGlzdChwYXJhbXM/OiBMaXN0S2V5Y2hhaW5PcHRpb25zKTogUHJvbWlzZTxMaXN0S2V5Y2hhaW5zUmVzdWx0PjtcbiAgdXBkYXRlUGFzc3dvcmQocGFyYW1zOiBVcGRhdGVQYXNzd29yZE9wdGlvbnMpOiBQcm9taXNlPENoYW5nZWRLZXljaGFpbnM+O1xuICB1cGRhdGVTaW5nbGVLZXljaGFpblBhc3N3b3JkKHBhcmFtcz86IFVwZGF0ZVNpbmdsZUtleWNoYWluUGFzc3dvcmRPcHRpb25zKTogS2V5Y2hhaW47XG4gIGNyZWF0ZShwYXJhbXM/OiB7IHNlZWQ/OiBCdWZmZXIgfSk6IEtleVBhaXI7XG4gIGFkZChwYXJhbXM/OiBBZGRLZXljaGFpbk9wdGlvbnMpOiBQcm9taXNlPEtleWNoYWluPjtcbiAgY3JlYXRlQml0R28ocGFyYW1zPzogQ3JlYXRlQml0R29PcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGNyZWF0ZUJhY2t1cChwYXJhbXM/OiBDcmVhdGVCYWNrdXBPcHRpb25zKTogUHJvbWlzZTxLZXljaGFpbj47XG4gIGdldEtleXNGb3JTaWduaW5nKHBhcmFtcz86IEdldEtleXNGb3JTaWduaW5nT3B0aW9ucyk6IFByb21pc2U8S2V5Y2hhaW5bXT47XG4gIGNyZWF0ZU1wYyhwYXJhbXM6IENyZWF0ZU1wY09wdGlvbnMpOiBQcm9taXNlPEtleWNoYWluc1RyaXBsZXQ+O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./iKeychains"), exports);
|
|
14
|
+
__exportStar(require("./keychains"), exports);
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28va2V5Y2hhaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLDhDQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaUtleWNoYWlucyc7XG5leHBvcnQgKiBmcm9tICcuL2tleWNoYWlucyc7XG4iXX0=
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { IBaseCoin, KeychainsTriplet, KeyPair } from '../baseCoin';
|
|
3
|
+
import { BitGoBase } from '../bitgoBase';
|
|
4
|
+
import { AddKeychainOptions, ChangedKeychains, CreateBackupOptions, CreateBitGoOptions, CreateMpcOptions, GetKeychainOptions, GetKeysForSigningOptions, IKeychains, Keychain, ListKeychainOptions, ListKeychainsResult, UpdatePasswordOptions, UpdateSingleKeychainPasswordOptions } from './iKeychains';
|
|
5
|
+
export declare class Keychains implements IKeychains {
|
|
6
|
+
private readonly bitgo;
|
|
7
|
+
private readonly baseCoin;
|
|
8
|
+
constructor(bitgo: BitGoBase, baseCoin: IBaseCoin);
|
|
9
|
+
/**
|
|
10
|
+
* Get a keychain by ID
|
|
11
|
+
* @param params
|
|
12
|
+
* @param params.id
|
|
13
|
+
* @param params.xpub (optional)
|
|
14
|
+
* @param params.ethAddress (optional)
|
|
15
|
+
* @param params.reqId (optional)
|
|
16
|
+
*/
|
|
17
|
+
get(params: GetKeychainOptions): Promise<Keychain>;
|
|
18
|
+
/**
|
|
19
|
+
* list the users keychains
|
|
20
|
+
* @param params
|
|
21
|
+
* @param params.limit - Max number of results in a single call.
|
|
22
|
+
* @param params.prevId - Continue iterating (provided by nextBatchPrevId in the previous list)
|
|
23
|
+
* @returns {*}
|
|
24
|
+
*/
|
|
25
|
+
list(params?: ListKeychainOptions): Promise<ListKeychainsResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Change the decryption password for all possible keychains associated with a user.
|
|
28
|
+
*
|
|
29
|
+
* This function iterates through all keys associated with the user, decrypts
|
|
30
|
+
* them with the old password and re-encrypts them with the new password.
|
|
31
|
+
*
|
|
32
|
+
* This should be called when a user changes their login password, and are expecting
|
|
33
|
+
* that their wallet passwords are changed to match the new login password.
|
|
34
|
+
*
|
|
35
|
+
* @param params
|
|
36
|
+
* @param params.oldPassword - The old password used for encrypting the key
|
|
37
|
+
* @param params.newPassword - The new password to be used for encrypting the key
|
|
38
|
+
* @returns changedKeys Object - e.g.:
|
|
39
|
+
* {
|
|
40
|
+
* xpub1: encryptedPrv,
|
|
41
|
+
* ...
|
|
42
|
+
* }
|
|
43
|
+
*/
|
|
44
|
+
updatePassword(params: UpdatePasswordOptions): Promise<ChangedKeychains>;
|
|
45
|
+
/**
|
|
46
|
+
* Update the password used to decrypt a single keychain
|
|
47
|
+
* @param params
|
|
48
|
+
* @param params.keychain - The keychain whose password should be updated
|
|
49
|
+
* @param params.oldPassword - The old password used for encrypting the key
|
|
50
|
+
* @param params.newPassword - The new password to be used for encrypting the key
|
|
51
|
+
* @returns {object}
|
|
52
|
+
*/
|
|
53
|
+
updateSingleKeychainPassword(params?: UpdateSingleKeychainPasswordOptions): Keychain;
|
|
54
|
+
/**
|
|
55
|
+
* Create a public/private key pair
|
|
56
|
+
* @param params.seed
|
|
57
|
+
*/
|
|
58
|
+
create(params?: {
|
|
59
|
+
seed?: Buffer;
|
|
60
|
+
}): KeyPair;
|
|
61
|
+
/**
|
|
62
|
+
* Add a keychain to BitGo's records
|
|
63
|
+
* @param params
|
|
64
|
+
*/
|
|
65
|
+
add(params?: AddKeychainOptions): Promise<Keychain>;
|
|
66
|
+
/**
|
|
67
|
+
* Create a BitGo key
|
|
68
|
+
* @param params (empty)
|
|
69
|
+
*/
|
|
70
|
+
createBitGo(params?: CreateBitGoOptions): Promise<Keychain>;
|
|
71
|
+
/**
|
|
72
|
+
* Create a backup key
|
|
73
|
+
* @param params
|
|
74
|
+
* @param params.provider (optional)
|
|
75
|
+
*/
|
|
76
|
+
createBackup(params?: CreateBackupOptions): Promise<Keychain>;
|
|
77
|
+
/**
|
|
78
|
+
* Gets keys for signing from a wallet
|
|
79
|
+
* @param params
|
|
80
|
+
* @returns {Promise<Keychain[]>}
|
|
81
|
+
*/
|
|
82
|
+
getKeysForSigning(params?: GetKeysForSigningOptions): Promise<Keychain[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Convenience function to create and store MPC keychains with BitGo.
|
|
85
|
+
* @param params passphrase used to encrypt secret materials
|
|
86
|
+
* @return {Promise<KeychainsTriplet>} newly created User, Backup, and BitGo keys
|
|
87
|
+
*/
|
|
88
|
+
createMpc(params: CreateMpcOptions): Promise<KeychainsTriplet>;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=keychains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keychains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/keychain/keychains.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mCAAmC,EACpC,MAAM,cAAc,CAAC;AAEtB,qBAAa,SAAU,YAAW,UAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;gBAEzB,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS;IAKjD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcxD;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAmB1E;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqC9E;;;;;;;OAOG;IACH,4BAA4B,CAAC,MAAM,GAAE,mCAAwC,GAAG,QAAQ;IAwBxF;;;OAGG;IACH,MAAM,CAAC,MAAM,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO;IAI/C;;;OAGG;IACG,GAAG,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiD7D;;;OAGG;IACG,WAAW,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAOrE;;;;OAIG;IACG,YAAY,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAevE;;;;OAIG;IACG,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAWnF;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAwBrE"}
|