fix: Migrate to custom protobuf

This commit is contained in:
2022-08-05 12:59:10 +02:00
parent 5c3cc424de
commit 9ed94c8f3a
6 changed files with 93 additions and 83 deletions

View File

@@ -3,7 +3,7 @@ import 'package:omemo_dart/src/protobuf/protobuf.dart';
class OmemoAuthenticatedMessage {
const OmemoAuthenticatedMessage(this.mac, this.message);
OmemoAuthenticatedMessage();
factory OmemoAuthenticatedMessage.fromBuffer(List<int> data) {
var i = 0;
@@ -20,18 +20,20 @@ class OmemoAuthenticatedMessage {
}
final message = data.sublist(i + 2, i + 2 + data[i + 1]);
return OmemoAuthenticatedMessage(mac, message);
return OmemoAuthenticatedMessage()
..mac = mac
..message = message;
}
final List<int> mac;
final List<int> message;
List<int>? mac;
List<int>? message;
List<int> writeToBuffer() {
return concat([
[fieldId(1, fieldTypeByteArray), mac.length],
mac,
[fieldId(2, fieldTypeByteArray), message.length],
message,
[fieldId(1, fieldTypeByteArray), mac!.length],
mac!,
[fieldId(2, fieldTypeByteArray), message!.length],
message!,
]);
}
}

View File

@@ -4,7 +4,7 @@ import 'package:omemo_dart/src/protobuf/protobuf.dart';
class OmemoKeyExchange {
const OmemoKeyExchange(this.pkId, this.spkId, this.ik, this.ek, this.message);
OmemoKeyExchange();
factory OmemoKeyExchange.fromBuffer(List<int> data) {
var i = 0;
@@ -40,26 +40,31 @@ class OmemoKeyExchange {
}
final message = OmemoAuthenticatedMessage.fromBuffer(data.sublist(i + 2));
return OmemoKeyExchange(pkId, spkId, ik, ek, message);
return OmemoKeyExchange()
..pkId = pkId
..spkId = spkId
..ik = ik
..ek = ek
..message = message;
}
final int pkId;
final int spkId;
final List<int> ik;
final List<int> ek;
final OmemoAuthenticatedMessage message;
int? pkId;
int? spkId;
List<int>? ik;
List<int>? ek;
OmemoAuthenticatedMessage? message;
List<int> writeToBuffer() {
final msg = message.writeToBuffer();
final msg = message!.writeToBuffer();
return concat([
[fieldId(1, fieldTypeUint32)],
encodeVarint(pkId),
encodeVarint(pkId!),
[fieldId(2, fieldTypeUint32)],
encodeVarint(spkId),
[fieldId(3, fieldTypeByteArray), ik.length],
ik,
[fieldId(4, fieldTypeByteArray), ek.length],
ek,
encodeVarint(spkId!),
[fieldId(3, fieldTypeByteArray), ik!.length],
ik!,
[fieldId(4, fieldTypeByteArray), ek!.length],
ek!,
[fieldId(5, fieldTypeByteArray), msg.length],
msg,
]);

View File

@@ -3,7 +3,7 @@ import 'package:omemo_dart/src/protobuf/protobuf.dart';
class OmemoMessage {
const OmemoMessage(this.n, this.pn, this.dhPub, this.ciphertext);
OmemoMessage();
factory OmemoMessage.fromBuffer(List<int> data) {
var i = 0;
@@ -41,28 +41,32 @@ class OmemoMessage {
ciphertext = data.sublist(i + 2, i + 2 + data[i + 1]);
}
return OmemoMessage(n, pn, dhPub, ciphertext);
return OmemoMessage()
..n = n
..pn = pn
..dhPub = dhPub
..ciphertext = ciphertext;
}
final int n;
final int pn;
final List<int> dhPub;
final List<int>? ciphertext;
int? n;
int? pn;
List<int>? dhPub;
List<int>? ciphertext;
List<int> writeToBuffer() {
final data = concat([
[8],
encodeVarint(n),
[16],
encodeVarint(pn),
[((3 << 3) | 2), dhPub.length],
dhPub,
[fieldId(1, fieldTypeUint32)],
encodeVarint(n!),
[fieldId(2, fieldTypeUint32)],
encodeVarint(pn!),
[fieldId(3, fieldTypeByteArray), dhPub!.length],
dhPub!,
]);
if (ciphertext != null) {
return concat([
data,
[((4 << 3) | 2), ciphertext!.length],
[fieldId(4, fieldTypeByteArray), ciphertext!.length],
ciphertext!,
]);
}