deriveExtendedKey method
(OrchardExtendedSpendingKey, OrchardFullViewingKey)
deriveExtendedKey({
- required OrchardExtendedSpendingKey parent,
- required OrchardExtendedFullViewKey parentFvk,
- required Bip32KeyIndex index,
- required ZCryptoContext context,
Implementation
(OrchardExtendedSpendingKey, OrchardFullViewingKey) deriveExtendedKey({
required OrchardExtendedSpendingKey parent,
required OrchardExtendedFullViewKey parentFvk,
required Bip32KeyIndex index,
required ZCryptoContext context,
}) {
final child = deriveFromSecret(parent: parent, index: index);
final fp = Bip32FingerPrint(
deriveFingerPrint(
parentFvk.fvk,
).sublist(0, Bip32FingerPrint.fixedLength()),
);
final key = OrchardSpendingKey(child.key);
OrchardSpendAuthorizingKey.fromSpendingKey(key);
final fvk = OrchardFullViewingKey.fromSpendKey(key);
OrchardKeyAgreementPrivateKey.deriveInner(fvk: fvk, context: context);
OrchardKeyAgreementPrivateKey.deriveInner(
fvk: fvk.deriveInternal(),
context: context,
);
return (
OrchardExtendedSpendingKey(
sk: key,
keyData: Bip32KeyData(
depth: parent.keyData.depth.increase(),
chainCode: child.chainCode,
index: index,
fingerPrint: fp,
),
),
fvk,
);
}