SenderKeyMessage.fromSerialized constructor

SenderKeyMessage.fromSerialized(
  1. Uint8List serialized
)

Implementation

SenderKeyMessage.fromSerialized(Uint8List serialized) {
  final messageParts = ByteUtil.split(serialized, 1,
      serialized.length - 1 - signatureLength, signatureLength);
  final version = messageParts[0][0];
  final message = messageParts[1];
  // ignore: unused_local_variable
  final signature = messageParts[2];

  if (ByteUtil.highBitsToInt(version) < 3) {
    throw LegacyMessageException(
        'Legacy message: ${ByteUtil.highBitsToInt(version)}');
  }

  if (ByteUtil.highBitsToInt(version) > CiphertextMessage.currentVersion) {
    throw InvalidMessageException(
        'Unknown version: ${ByteUtil.highBitsToInt(version)}');
  }

  final senderKeyMessage = protocol.SenderKeyMessage.fromBuffer(message);

  if (!senderKeyMessage.hasId() ||
      !senderKeyMessage.hasIteration() ||
      !senderKeyMessage.hasCiphertext()) {
    throw InvalidMessageException('Incomplete message.');
  }

  _serialized = serialized;
  _messageVersion = ByteUtil.highBitsToInt(version);
  _keyId = senderKeyMessage.id;
  _iteration = senderKeyMessage.iteration;
  _ciphertext = Uint8List.fromList(senderKeyMessage.ciphertext);
}