EDDSAPrivateKey.fromBytes constructor
EDDSAPrivateKey.fromBytes({})
Creates an EdDSA private key from a random value using a provided hash method.
The private key is generated from the provided hash method and the provided random value. It prunes the key for improved security.
Parameters:
- generator: The Edwards curve generator point.
- privateKey: The private key bytes.
- hashMethod: A serializable hash function for key generation.
Throws:
- CryptoException: If the private key size is invalid.
Implementation
factory EDDSAPrivateKey.fromBytes(
{required EDPoint generator,
required List<int> privateKey,
required HashFunc hashMethod}) {
// final baselen = (generator.curve.baselen + 1 + 7) ~/ 8;
final int baselen = generator.curve.baselen;
if (privateKey.length != generator.curve.baselen) {
throw CryptoException(
'Incorrect size of private key, expected: $baselen bytes');
}
final extendedKey = hashMethod().update(privateKey).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: privateKey,
secret: secret,
extendedKey: extendedKey.sublist(baselen));
}