deriveInternal method
Implementation
SaplingDiversifiableFullViewingKey deriveInternal() {
final generator = SaplingKeyUtils.proofGenerationKeyGeneratorNative;
final i = QuickCrypto.blake2b256Hash(
fvk.toBytes(),
extraBlocks: [dk.toBytes()],
personalization: SaplingKeyUtils.saplingInternalPersonalization.codeUnits,
);
final iNsk = JubJubNativeFr.fromBytes64(
PrfExpand.saplingZip32InternalNsk.apply(i),
);
final r = PrfExpand.saplingZip32InternalDkOvk.apply(i);
final nkInternal = generator * iNsk + fvk.vk.nk.inner;
final dkInternal = r.sublist(0, 32);
final ovkInternal = r.sublist(32);
return SaplingDiversifiableFullViewingKey(
fvk: SaplingFullViewingKey(
ovk: SaplingOutgoingViewingKey(ovkInternal),
vk: SaplingViewingKey(
ak: fvk.vk.ak,
nk: SaplingNullifierDerivingKey(nkInternal),
),
),
dk: SaplingDiversifierKey(dkInternal),
);
}