EDDSAPrivateKey.fromBytes constructor

EDDSAPrivateKey.fromBytes({
  1. required EDPoint generator,
  2. required List<int> secretKey,
  3. required HashFunc<HashState> hashMethod,
})

Creates an EdDSA private key from a random value using a provided hash method.

Parameters:

  • generator: The Edwards curve generator point.
  • privateKey: The private key bytes.
  • hashMethod: A serializable hash function for key generation.

Implementation

factory EDDSAPrivateKey.fromBytes({
  required EDPoint generator,
  required List<int> secretKey,
  required HashFunc hashMethod,
}) {
  // final baselen = (generator.curve.baselen + 1 + 7) ~/ 8;
  final int baselen = generator.curve.baselen;
  if (secretKey.length != generator.curve.baselen) {
    throw ArgumentException.invalidOperationArguments(
      "EDDSAPrivateKey",
      reason: "Invalid secret key bytes length.",
    );
  }
  final extendedKey = hashMethod().update(secretKey).digest();
  final a = extendedKey.sublist(0, baselen);
  final prunedKey = _keyPrune(a, generator);
  final secret = BigintUtils.fromBytes(prunedKey, byteOrder: Endian.little);
  return EDDSAPrivateKey._(
    generator: generator,
    privateKey: secretKey,
    secret: secret,
    extendedKey: extendedKey.sublist(baselen),
  );
}