deriveMessageKeys function
Implementation
Map<String, Uint8List> deriveMessageKeys(
Uint8List conversationKey, Uint8List nonce) {
if (conversationKey.length != 32) {
throw FormatException('Invalid conversation key length');
}
if (nonce.length != 32) {
throw FormatException('Invalid nonce length');
}
final hkdfOutput = hkdfExpand(
prk: conversationKey,
info: nonce,
length: 76,
);
return {
'chachaKey': hkdfOutput.sublist(0, 32),
'chachaNonce': hkdfOutput.sublist(32, 44), // Should be 12 bytes
'hmacKey': hkdfOutput.sublist(44, 76),
};
}