Bip44Base<BIP44 extends Bip44Base<BIP44>>.fromPublicKey constructor

Bip44Base<BIP44 extends Bip44Base<BIP44>>.fromPublicKey(
  1. List<int> pubkeyBytes,
  2. BaseBipCoinConfig<BaseCoinConfig> coin, {
  3. Bip32KeyData? keyData,
})

Constructor for creating a Bip44Base object from a public key and coin.

Implementation

Bip44Base.fromPublicKey(
  List<int> pubkeyBytes,
  BaseBipCoinConfig coin, {
  Bip32KeyData? keyData,
}) {
  Bip32Base bip;
  switch (coin.type) {
    case EllipticCurveTypes.secp256k1:
      bip = Bip32Slip10Secp256k1.fromPublicKey(
        pubkeyBytes,
        keyData: keyData,
        keyNetVer: coin.keyNetVer,
      );
      break;
    case EllipticCurveTypes.ed25519:
      bip = Bip32Slip10Ed25519.fromPublicKey(
        pubkeyBytes,
        keyData: keyData,
        keyNetVer: coin.keyNetVer,
      );
      break;
    case EllipticCurveTypes.ed25519Blake2b:
      bip = Bip32Slip10Ed25519Blake2b.fromPublicKey(
        pubkeyBytes,
        keyData: keyData,
        keyNetVer: coin.keyNetVer,
      );
      break;
    case EllipticCurveTypes.ed25519Kholaw:
      if (coin.defaultHdKeyDerivator == DefaultHdKeyDerivator.icarus) {
        bip = CardanoIcarusBip32.fromPublicKey(
          pubkeyBytes,
          keyData: keyData,
          keyNetVer: coin.keyNetVer,
        );
        break;
      }
      bip = Bip32KholawEd25519.fromPublicKey(
        pubkeyBytes,
        keyData: keyData,
        keyNetVer: coin.keyNetVer,
      );
      break;
    case EllipticCurveTypes.nist256p1:
      bip = Bip32Slip10Nist256p1.fromPublicKey(
        pubkeyBytes,
        keyData: keyData,
        keyNetVer: coin.keyNetVer,
      );
      break;
    default:
      throw ArgumentException.invalidOperationArguments(
        "Bip44",
        name: "coin",
        reason: "Unsupported coin key algorithm",
        details: {"algorithm": coin.type.name},
      );
  }
  final validate = _validate(bip, coin);
  bip32 = validate.$1;
  coinConf = validate.$2;
}