create static method

WOTSWallet create(
  1. String name,
  2. Uint8List secret, [
  3. Uint8List? v3tag,
  4. void randomGenerator(
    1. Uint8List
    )?,
])

Implementation

static WOTSWallet create(String name, Uint8List secret,
    [Uint8List? v3tag, void Function(Uint8List)? randomGenerator]) {
  if (secret.length != 32) {
    throw ArgumentError('Invalid secret length');
  }

  Uint8List privateSeed = secret;
  Uint8List? sourcePK;
  final defaultTag = Uint8List(12)..fillRange(0, 12, 0x42); // Use 12-byte tag
  if (randomGenerator != null) {
    sourcePK =
        WOTS.generateRandomAddress(defaultTag, secret, randomGenerator);
  } else {
    final components = componentsGenerator(secret);
    privateSeed = components['private_seed']!;
    sourcePK =
        WOTS.generateAddress(defaultTag, privateSeed, componentsGenerator);
  }
  if (sourcePK.length != 2208) {
    throw StateError('Invalid sourcePK length');
  }
  Uint8List addrTag = v3tag ??
      WotsAddress.wotsAddressFromBytes(sourcePK.sublist(0, 2144)).getTag();
  if (addrTag.length != WotsAddress.ADDR_TAG_LEN) {
    throw StateError('Invalid tag');
  }
  return WOTSWallet(
      name: name, wots: sourcePK, addrTag: addrTag, secret: privateSeed);
}