40 lines
928 B
Dart
40 lines
928 B
Dart
import 'package:omemo_dart/src/helpers.dart';
|
|
import 'package:omemo_dart/src/protobuf/protobuf.dart';
|
|
|
|
class OmemoAuthenticatedMessage {
|
|
|
|
OmemoAuthenticatedMessage();
|
|
|
|
factory OmemoAuthenticatedMessage.fromBuffer(List<int> data) {
|
|
var i = 0;
|
|
|
|
// required bytes mac = 1;
|
|
if (data[0] != fieldId(1, fieldTypeByteArray)) {
|
|
throw Exception();
|
|
}
|
|
final mac = data.sublist(2, i + 2 + data[1]);
|
|
i += data[1] + 2;
|
|
|
|
if (data[i] != fieldId(2, fieldTypeByteArray)) {
|
|
throw Exception();
|
|
}
|
|
final message = data.sublist(i + 2, i + 2 + data[i + 1]);
|
|
|
|
return OmemoAuthenticatedMessage()
|
|
..mac = mac
|
|
..message = message;
|
|
}
|
|
|
|
List<int>? mac;
|
|
List<int>? message;
|
|
|
|
List<int> writeToBuffer() {
|
|
return concat([
|
|
[fieldId(1, fieldTypeByteArray), mac!.length],
|
|
mac!,
|
|
[fieldId(2, fieldTypeByteArray), message!.length],
|
|
message!,
|
|
]);
|
|
}
|
|
}
|