hardDerive method
(SchnorrkelSecretKey, List<int> )
hardDerive(
- List<
int> chainCode, { - List<
int> ? message, - ExpansionMode mode = ExpansionMode.ed25519,
Derives a new Schnorrkel secret key and chain code from the current secret key, chain code, and an optional message.
Parameters:
chainCode: A chain code used in the derivation.message(optional): An optional byte array message used in the derivation. Default is an empty byte array.mode(optional): The expansion mode for converting the mini-secret key. Default is ExpansionMode.ed25519.
Implementation
(SchnorrkelSecretKey, List<int>) hardDerive(
List<int> chainCode, {
List<int>? message,
ExpansionMode mode = ExpansionMode.ed25519,
}) {
final script = MerlinTranscript("SchnorrRistrettoHDKD");
script.additionalData('sign-bytes'.codeUnits, message ?? List.empty());
script.additionalData("chain-code".codeUnits, chainCode);
script.additionalData("secret-key".codeUnits, key());
final newSecret = script.toBytes("HDKD-hard".codeUnits, 32);
final newChainCode = script.toBytes("HDKD-chaincode".codeUnits, 32);
return (
SchnorrkelMiniSecretKey.fromBytes(newSecret).toSecretKey(mode),
newChainCode,
);
}