EDDSAPrivateKey.fromBytes constructor
EDDSAPrivateKey.fromBytes({})
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),
);
}