message: refactor(core): use secp256k1 for wallet sharing ECDH
  This method is not as reliant on `utxolib.ECPair` internals and works
  with the `bip32` library.
  See previous commits for tests.
  Issue:
diff: import * as superagent from 'superagent';
  import * as bitcoin from '@bitgo/utxo-lib';
  import { makeRandomKey, hdPath } from './bitcoin';
  +import * as secp256k1 from 'secp256k1';
  import bitcoinMessage = require('bitcoinjs-message');
  import { BaseCoin } from './v2/baseCoin';
  const PendingApprovals = require('./pendingapprovals');
  @@ -16,7 +17,6 @@ import bs58 = require('bs58');
  import * as common from './common';
  import { EnvironmentName, AliasEnvironments } from './v2/environments';
  import { NodeCallback, RequestTracer as IRequestTracer, V1Network } from './v2/types';
  -import { Util } from './v2/internal/util';
  import * as Bluebird from 'bluebird';
  import co = Bluebird.coroutine;
  import pjson = require('../package.json');
  @@ -950,10 +950,16 @@ export class BitGo {
  throw new Error('eckey object required');
  }
  - const otherKeyPub = bitcoin.ECPair.fromPublicKeyBuffer(Buffer.from(otherPubKeyHex, 'hex'));
  - const secretPoint = otherKeyPub.Q.multiply((eckey as bitcoin.ECPair).d);
  - const secret = Util.bnToByteArrayUnsigned(secretPoint.affineX);
  - return Buffer.from(secret).toString('hex');
  + const otherKeyPub = Buffer.from(otherPubKeyHex, 'hex');
  + const secretPoint = (eckey as bitcoin.ECPair).d.toBuffer(32);
  + return Buffer.from(
  + // FIXME(BG-34386): we should use `secp256k1.ecdh()` in the future
  + // see discussion here https://github.com/bitcoin-core/secp256k1/issues/352
  + secp256k1.publicKeyTweakMul(otherKeyPub, secretPoint)
  + )
  + // this implementation does not include the parity byte
  + .slice(1)
  + .toString('hex');
  }
  /**
  