SignalMessage constructor

SignalMessage(
  1. int messageVersion,
  2. Uint8List macKey,
  3. ECPublicKey senderRatchetKey,
  4. int counter,
  5. int previousCounter,
  6. Uint8List ciphertext,
  7. IdentityKey senderIdentityKey,
  8. IdentityKey? receiverIdentityKey,
)

Implementation

SignalMessage(
    int messageVersion,
    Uint8List macKey,
    ECPublicKey senderRatchetKey,
    int counter,
    int previousCounter,
    Uint8List ciphertext,
    IdentityKey senderIdentityKey,
    IdentityKey? receiverIdentityKey) {
  final version = Uint8List.fromList([
    ByteUtil.intsToByteHighAndLow(
        messageVersion, CiphertextMessage.currentVersion)
  ]);

  final m = signal_protos.SignalMessage.create()
    ..ratchetKey = senderRatchetKey.serialize()
    ..counter = counter
    ..previousCounter = previousCounter
    ..ciphertext = ciphertext;
  final message = m.writeToBuffer();

  final mac = _getMac(senderIdentityKey, receiverIdentityKey!, macKey,
      ByteUtil.combine([version, message]));

  _serialized = ByteUtil.combine([version, message, mac]);
  _senderRatchetKey = senderRatchetKey;
  _counter = counter;
  _previousCounter = previousCounter;
  _ciphertext = ciphertext;
  _messageVersion = messageVersion;
}