setMessageKeys method

void setMessageKeys(
  1. ECPublicKey senderEphemeral,
  2. MessageKeys messageKeys
)

Implementation

void setMessageKeys(ECPublicKey senderEphemeral, MessageKeys messageKeys) {
  final chainAndIndex = _getReceiverChain(senderEphemeral);
  if (chainAndIndex == null) {
    return;
  }
  final chain = chainAndIndex.$1;
  final messageKeyStructure = SessionStructureChainMessageKey.create()
    ..cipherKey = Uint8List.fromList(messageKeys.getCipherKey())
    ..macKey = Uint8List.fromList(messageKeys.getMacKey())
    ..index = messageKeys.getCounter()
    ..iv = Uint8List.fromList(messageKeys.getIv());

  chain.messageKeys.add(messageKeyStructure);

  if (chain.messageKeys.length > maxMessageKeys) {
    chain.messageKeys.removeAt(0);
  }

  _sessionStructure.receiverChains
      .setAll(chainAndIndex.$2, <SessionStructureChain>[chain]);
}