diff --git a/example/omemo_dart_example.dart b/example/omemo_dart_example.dart
index 34a6f7f..9c705d3 100644
--- a/example/omemo_dart_example.dart
+++ b/example/omemo_dart_example.dart
@@ -53,7 +53,7 @@ void main() async {
''';
-
+
// Since Alice has no open session with Bob, we need to tell the session manager to build
// it when sending the message.
final message = await aliceSession.encryptToJid(
@@ -123,7 +123,7 @@ void main() async {
DateTime.now().millisecondsSinceEpoch,
);
- // All Bob has to do now is replace the OMEMO wrapper element
+ // All Bob has to do now is replace the OMEMO wrapper element
// ) with the content of the element
// of the envelope we just decrypted.
diff --git a/lib/omemo_dart.dart b/lib/omemo_dart.dart
index 6863f2e..f0f9677 100644
--- a/lib/omemo_dart.dart
+++ b/lib/omemo_dart.dart
@@ -12,7 +12,6 @@ export 'src/omemo/events.dart';
export 'src/omemo/fingerprint.dart';
export 'src/omemo/omemomanager.dart';
export 'src/omemo/ratchet_map_key.dart';
-export 'src/omemo/sessionmanager.dart';
export 'src/omemo/stanza.dart';
export 'src/trust/base.dart';
export 'src/trust/btbv.dart';
diff --git a/lib/protobuf/schema.pb.dart b/lib/protobuf/schema.pb.dart
index 9352087..900872e 100644
--- a/lib/protobuf/schema.pb.dart
+++ b/lib/protobuf/schema.pb.dart
@@ -10,12 +10,35 @@ import 'dart:core' as $core;
import 'package:protobuf/protobuf.dart' as $pb;
class OMEMOMessage extends $pb.GeneratedMessage {
- static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'OMEMOMessage', createEmptyInstance: create)
- ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'n', $pb.PbFieldType.QU3)
- ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'pn', $pb.PbFieldType.QU3)
- ..a<$core.List<$core.int>>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'dhPub', $pb.PbFieldType.QY)
- ..a<$core.List<$core.int>>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'ciphertext', $pb.PbFieldType.OY)
- ;
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(
+ const $core.bool.fromEnvironment('protobuf.omit_message_names')
+ ? ''
+ : 'OMEMOMessage',
+ createEmptyInstance: create)
+ ..a<$core.int>(
+ 1,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'n',
+ $pb.PbFieldType.QU3)
+ ..a<$core.int>(
+ 2,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'pn',
+ $pb.PbFieldType.QU3)
+ ..a<$core.List<$core.int>>(
+ 3,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'dhPub',
+ $pb.PbFieldType.QY)
+ ..a<$core.List<$core.int>>(
+ 4,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'ciphertext',
+ $pb.PbFieldType.OY);
OMEMOMessage._() : super();
factory OMEMOMessage({
@@ -39,31 +62,40 @@ class OMEMOMessage extends $pb.GeneratedMessage {
}
return _result;
}
- factory OMEMOMessage.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
- factory OMEMOMessage.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
- 'Will be removed in next major version')
+ factory OMEMOMessage.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory OMEMOMessage.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
OMEMOMessage clone() => OMEMOMessage()..mergeFromMessage(this);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
- 'Will be removed in next major version')
- OMEMOMessage copyWith(void Function(OMEMOMessage) updates) => super.copyWith((message) => updates(message as OMEMOMessage)) as OMEMOMessage; // ignore: deprecated_member_use
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ OMEMOMessage copyWith(void Function(OMEMOMessage) updates) =>
+ super.copyWith((message) => updates(message as OMEMOMessage))
+ as OMEMOMessage; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static OMEMOMessage create() => OMEMOMessage._();
OMEMOMessage createEmptyInstance() => create();
- static $pb.PbList createRepeated() => $pb.PbList();
+ static $pb.PbList createRepeated() =>
+ $pb.PbList();
@$core.pragma('dart2js:noInline')
- static OMEMOMessage getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static OMEMOMessage getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor(create);
static OMEMOMessage? _defaultInstance;
@$pb.TagNumber(1)
$core.int get n => $_getIZ(0);
@$pb.TagNumber(1)
- set n($core.int v) { $_setUnsignedInt32(0, v); }
+ set n($core.int v) {
+ $_setUnsignedInt32(0, v);
+ }
+
@$pb.TagNumber(1)
$core.bool hasN() => $_has(0);
@$pb.TagNumber(1)
@@ -72,7 +104,10 @@ class OMEMOMessage extends $pb.GeneratedMessage {
@$pb.TagNumber(2)
$core.int get pn => $_getIZ(1);
@$pb.TagNumber(2)
- set pn($core.int v) { $_setUnsignedInt32(1, v); }
+ set pn($core.int v) {
+ $_setUnsignedInt32(1, v);
+ }
+
@$pb.TagNumber(2)
$core.bool hasPn() => $_has(1);
@$pb.TagNumber(2)
@@ -81,7 +116,10 @@ class OMEMOMessage extends $pb.GeneratedMessage {
@$pb.TagNumber(3)
$core.List<$core.int> get dhPub => $_getN(2);
@$pb.TagNumber(3)
- set dhPub($core.List<$core.int> v) { $_setBytes(2, v); }
+ set dhPub($core.List<$core.int> v) {
+ $_setBytes(2, v);
+ }
+
@$pb.TagNumber(3)
$core.bool hasDhPub() => $_has(2);
@$pb.TagNumber(3)
@@ -90,7 +128,10 @@ class OMEMOMessage extends $pb.GeneratedMessage {
@$pb.TagNumber(4)
$core.List<$core.int> get ciphertext => $_getN(3);
@$pb.TagNumber(4)
- set ciphertext($core.List<$core.int> v) { $_setBytes(3, v); }
+ set ciphertext($core.List<$core.int> v) {
+ $_setBytes(3, v);
+ }
+
@$pb.TagNumber(4)
$core.bool hasCiphertext() => $_has(3);
@$pb.TagNumber(4)
@@ -98,10 +139,23 @@ class OMEMOMessage extends $pb.GeneratedMessage {
}
class OMEMOAuthenticatedMessage extends $pb.GeneratedMessage {
- static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'OMEMOAuthenticatedMessage', createEmptyInstance: create)
- ..a<$core.List<$core.int>>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'mac', $pb.PbFieldType.QY)
- ..a<$core.List<$core.int>>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message', $pb.PbFieldType.QY)
- ;
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(
+ const $core.bool.fromEnvironment('protobuf.omit_message_names')
+ ? ''
+ : 'OMEMOAuthenticatedMessage',
+ createEmptyInstance: create)
+ ..a<$core.List<$core.int>>(
+ 1,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'mac',
+ $pb.PbFieldType.QY)
+ ..a<$core.List<$core.int>>(
+ 2,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'message',
+ $pb.PbFieldType.QY);
OMEMOAuthenticatedMessage._() : super();
factory OMEMOAuthenticatedMessage({
@@ -117,31 +171,42 @@ class OMEMOAuthenticatedMessage extends $pb.GeneratedMessage {
}
return _result;
}
- factory OMEMOAuthenticatedMessage.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
- factory OMEMOAuthenticatedMessage.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
- 'Will be removed in next major version')
- OMEMOAuthenticatedMessage clone() => OMEMOAuthenticatedMessage()..mergeFromMessage(this);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
- 'Will be removed in next major version')
- OMEMOAuthenticatedMessage copyWith(void Function(OMEMOAuthenticatedMessage) updates) => super.copyWith((message) => updates(message as OMEMOAuthenticatedMessage)) as OMEMOAuthenticatedMessage; // ignore: deprecated_member_use
+ factory OMEMOAuthenticatedMessage.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory OMEMOAuthenticatedMessage.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
+ OMEMOAuthenticatedMessage clone() =>
+ OMEMOAuthenticatedMessage()..mergeFromMessage(this);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ OMEMOAuthenticatedMessage copyWith(
+ void Function(OMEMOAuthenticatedMessage) updates) =>
+ super.copyWith((message) => updates(message as OMEMOAuthenticatedMessage))
+ as OMEMOAuthenticatedMessage; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static OMEMOAuthenticatedMessage create() => OMEMOAuthenticatedMessage._();
OMEMOAuthenticatedMessage createEmptyInstance() => create();
- static $pb.PbList createRepeated() => $pb.PbList();
+ static $pb.PbList createRepeated() =>
+ $pb.PbList();
@$core.pragma('dart2js:noInline')
- static OMEMOAuthenticatedMessage getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static OMEMOAuthenticatedMessage getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor(create);
static OMEMOAuthenticatedMessage? _defaultInstance;
@$pb.TagNumber(1)
$core.List<$core.int> get mac => $_getN(0);
@$pb.TagNumber(1)
- set mac($core.List<$core.int> v) { $_setBytes(0, v); }
+ set mac($core.List<$core.int> v) {
+ $_setBytes(0, v);
+ }
+
@$pb.TagNumber(1)
$core.bool hasMac() => $_has(0);
@$pb.TagNumber(1)
@@ -150,7 +215,10 @@ class OMEMOAuthenticatedMessage extends $pb.GeneratedMessage {
@$pb.TagNumber(2)
$core.List<$core.int> get message => $_getN(1);
@$pb.TagNumber(2)
- set message($core.List<$core.int> v) { $_setBytes(1, v); }
+ set message($core.List<$core.int> v) {
+ $_setBytes(1, v);
+ }
+
@$pb.TagNumber(2)
$core.bool hasMessage() => $_has(1);
@$pb.TagNumber(2)
@@ -158,13 +226,41 @@ class OMEMOAuthenticatedMessage extends $pb.GeneratedMessage {
}
class OMEMOKeyExchange extends $pb.GeneratedMessage {
- static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'OMEMOKeyExchange', createEmptyInstance: create)
- ..a<$core.int>(1, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'pkId', $pb.PbFieldType.QU3)
- ..a<$core.int>(2, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'spkId', $pb.PbFieldType.QU3)
- ..a<$core.List<$core.int>>(3, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'ik', $pb.PbFieldType.QY)
- ..a<$core.List<$core.int>>(4, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'ek', $pb.PbFieldType.QY)
- ..aQM(5, const $core.bool.fromEnvironment('protobuf.omit_field_names') ? '' : 'message', subBuilder: OMEMOAuthenticatedMessage.create)
- ;
+ static final $pb.BuilderInfo _i = $pb.BuilderInfo(
+ const $core.bool.fromEnvironment('protobuf.omit_message_names')
+ ? ''
+ : 'OMEMOKeyExchange',
+ createEmptyInstance: create)
+ ..a<$core.int>(
+ 1,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'pkId',
+ $pb.PbFieldType.QU3)
+ ..a<$core.int>(
+ 2,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'spkId',
+ $pb.PbFieldType.QU3)
+ ..a<$core.List<$core.int>>(
+ 3,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'ik',
+ $pb.PbFieldType.QY)
+ ..a<$core.List<$core.int>>(
+ 4,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'ek',
+ $pb.PbFieldType.QY)
+ ..aQM(
+ 5,
+ const $core.bool.fromEnvironment('protobuf.omit_field_names')
+ ? ''
+ : 'message',
+ subBuilder: OMEMOAuthenticatedMessage.create);
OMEMOKeyExchange._() : super();
factory OMEMOKeyExchange({
@@ -192,31 +288,40 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
}
return _result;
}
- factory OMEMOKeyExchange.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r);
- factory OMEMOKeyExchange.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
- 'Will be removed in next major version')
+ factory OMEMOKeyExchange.fromBuffer($core.List<$core.int> i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromBuffer(i, r);
+ factory OMEMOKeyExchange.fromJson($core.String i,
+ [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
+ create()..mergeFromJson(i, r);
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
+ 'Will be removed in next major version')
OMEMOKeyExchange clone() => OMEMOKeyExchange()..mergeFromMessage(this);
- @$core.Deprecated(
- 'Using this can add significant overhead to your binary. '
- 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
- 'Will be removed in next major version')
- OMEMOKeyExchange copyWith(void Function(OMEMOKeyExchange) updates) => super.copyWith((message) => updates(message as OMEMOKeyExchange)) as OMEMOKeyExchange; // ignore: deprecated_member_use
+ @$core.Deprecated('Using this can add significant overhead to your binary. '
+ 'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
+ 'Will be removed in next major version')
+ OMEMOKeyExchange copyWith(void Function(OMEMOKeyExchange) updates) =>
+ super.copyWith((message) => updates(message as OMEMOKeyExchange))
+ as OMEMOKeyExchange; // ignore: deprecated_member_use
$pb.BuilderInfo get info_ => _i;
@$core.pragma('dart2js:noInline')
static OMEMOKeyExchange create() => OMEMOKeyExchange._();
OMEMOKeyExchange createEmptyInstance() => create();
- static $pb.PbList createRepeated() => $pb.PbList();
+ static $pb.PbList createRepeated() =>
+ $pb.PbList();
@$core.pragma('dart2js:noInline')
- static OMEMOKeyExchange getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create);
+ static OMEMOKeyExchange getDefault() => _defaultInstance ??=
+ $pb.GeneratedMessage.$_defaultFor(create);
static OMEMOKeyExchange? _defaultInstance;
@$pb.TagNumber(1)
$core.int get pkId => $_getIZ(0);
@$pb.TagNumber(1)
- set pkId($core.int v) { $_setUnsignedInt32(0, v); }
+ set pkId($core.int v) {
+ $_setUnsignedInt32(0, v);
+ }
+
@$pb.TagNumber(1)
$core.bool hasPkId() => $_has(0);
@$pb.TagNumber(1)
@@ -225,7 +330,10 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
@$pb.TagNumber(2)
$core.int get spkId => $_getIZ(1);
@$pb.TagNumber(2)
- set spkId($core.int v) { $_setUnsignedInt32(1, v); }
+ set spkId($core.int v) {
+ $_setUnsignedInt32(1, v);
+ }
+
@$pb.TagNumber(2)
$core.bool hasSpkId() => $_has(1);
@$pb.TagNumber(2)
@@ -234,7 +342,10 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
@$pb.TagNumber(3)
$core.List<$core.int> get ik => $_getN(2);
@$pb.TagNumber(3)
- set ik($core.List<$core.int> v) { $_setBytes(2, v); }
+ set ik($core.List<$core.int> v) {
+ $_setBytes(2, v);
+ }
+
@$pb.TagNumber(3)
$core.bool hasIk() => $_has(2);
@$pb.TagNumber(3)
@@ -243,7 +354,10 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
@$pb.TagNumber(4)
$core.List<$core.int> get ek => $_getN(3);
@$pb.TagNumber(4)
- set ek($core.List<$core.int> v) { $_setBytes(3, v); }
+ set ek($core.List<$core.int> v) {
+ $_setBytes(3, v);
+ }
+
@$pb.TagNumber(4)
$core.bool hasEk() => $_has(3);
@$pb.TagNumber(4)
@@ -252,7 +366,10 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
@$pb.TagNumber(5)
OMEMOAuthenticatedMessage get message => $_getN(4);
@$pb.TagNumber(5)
- set message(OMEMOAuthenticatedMessage v) { setField(5, v); }
+ set message(OMEMOAuthenticatedMessage v) {
+ setField(5, v);
+ }
+
@$pb.TagNumber(5)
$core.bool hasMessage() => $_has(4);
@$pb.TagNumber(5)
@@ -260,4 +377,3 @@ class OMEMOKeyExchange extends $pb.GeneratedMessage {
@$pb.TagNumber(5)
OMEMOAuthenticatedMessage ensureMessage() => $_ensure(4);
}
-
diff --git a/lib/protobuf/schema.pbenum.dart b/lib/protobuf/schema.pbenum.dart
index 6898f3b..48990ff 100644
--- a/lib/protobuf/schema.pbenum.dart
+++ b/lib/protobuf/schema.pbenum.dart
@@ -4,4 +4,3 @@
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
-
diff --git a/lib/protobuf/schema.pbjson.dart b/lib/protobuf/schema.pbjson.dart
index e0370d9..95cebf6 100644
--- a/lib/protobuf/schema.pbjson.dart
+++ b/lib/protobuf/schema.pbjson.dart
@@ -8,41 +8,53 @@
import 'dart:core' as $core;
import 'dart:convert' as $convert;
import 'dart:typed_data' as $typed_data;
+
@$core.Deprecated('Use oMEMOMessageDescriptor instead')
-const OMEMOMessage$json = const {
+const OMEMOMessage$json = {
'1': 'OMEMOMessage',
- '2': const [
- const {'1': 'n', '3': 1, '4': 2, '5': 13, '10': 'n'},
- const {'1': 'pn', '3': 2, '4': 2, '5': 13, '10': 'pn'},
- const {'1': 'dh_pub', '3': 3, '4': 2, '5': 12, '10': 'dhPub'},
- const {'1': 'ciphertext', '3': 4, '4': 1, '5': 12, '10': 'ciphertext'},
+ '2': [
+ {'1': 'n', '3': 1, '4': 2, '5': 13, '10': 'n'},
+ {'1': 'pn', '3': 2, '4': 2, '5': 13, '10': 'pn'},
+ {'1': 'dh_pub', '3': 3, '4': 2, '5': 12, '10': 'dhPub'},
+ {'1': 'ciphertext', '3': 4, '4': 1, '5': 12, '10': 'ciphertext'},
],
};
/// Descriptor for `OMEMOMessage`. Decode as a `google.protobuf.DescriptorProto`.
-final $typed_data.Uint8List oMEMOMessageDescriptor = $convert.base64Decode('CgxPTUVNT01lc3NhZ2USDAoBbhgBIAIoDVIBbhIOCgJwbhgCIAIoDVICcG4SFQoGZGhfcHViGAMgAigMUgVkaFB1YhIeCgpjaXBoZXJ0ZXh0GAQgASgMUgpjaXBoZXJ0ZXh0');
+final $typed_data.Uint8List oMEMOMessageDescriptor = $convert.base64Decode(
+ 'CgxPTUVNT01lc3NhZ2USDAoBbhgBIAIoDVIBbhIOCgJwbhgCIAIoDVICcG4SFQoGZGhfcHViGAMgAigMUgVkaFB1YhIeCgpjaXBoZXJ0ZXh0GAQgASgMUgpjaXBoZXJ0ZXh0');
@$core.Deprecated('Use oMEMOAuthenticatedMessageDescriptor instead')
-const OMEMOAuthenticatedMessage$json = const {
+const OMEMOAuthenticatedMessage$json = {
'1': 'OMEMOAuthenticatedMessage',
- '2': const [
- const {'1': 'mac', '3': 1, '4': 2, '5': 12, '10': 'mac'},
- const {'1': 'message', '3': 2, '4': 2, '5': 12, '10': 'message'},
+ '2': [
+ {'1': 'mac', '3': 1, '4': 2, '5': 12, '10': 'mac'},
+ {'1': 'message', '3': 2, '4': 2, '5': 12, '10': 'message'},
],
};
/// Descriptor for `OMEMOAuthenticatedMessage`. Decode as a `google.protobuf.DescriptorProto`.
-final $typed_data.Uint8List oMEMOAuthenticatedMessageDescriptor = $convert.base64Decode('ChlPTUVNT0F1dGhlbnRpY2F0ZWRNZXNzYWdlEhAKA21hYxgBIAIoDFIDbWFjEhgKB21lc3NhZ2UYAiACKAxSB21lc3NhZ2U=');
+final $typed_data.Uint8List oMEMOAuthenticatedMessageDescriptor =
+ $convert.base64Decode(
+ 'ChlPTUVNT0F1dGhlbnRpY2F0ZWRNZXNzYWdlEhAKA21hYxgBIAIoDFIDbWFjEhgKB21lc3NhZ2UYAiACKAxSB21lc3NhZ2U=');
@$core.Deprecated('Use oMEMOKeyExchangeDescriptor instead')
-const OMEMOKeyExchange$json = const {
+const OMEMOKeyExchange$json = {
'1': 'OMEMOKeyExchange',
- '2': const [
- const {'1': 'pk_id', '3': 1, '4': 2, '5': 13, '10': 'pkId'},
- const {'1': 'spk_id', '3': 2, '4': 2, '5': 13, '10': 'spkId'},
- const {'1': 'ik', '3': 3, '4': 2, '5': 12, '10': 'ik'},
- const {'1': 'ek', '3': 4, '4': 2, '5': 12, '10': 'ek'},
- const {'1': 'message', '3': 5, '4': 2, '5': 11, '6': '.OMEMOAuthenticatedMessage', '10': 'message'},
+ '2': [
+ {'1': 'pk_id', '3': 1, '4': 2, '5': 13, '10': 'pkId'},
+ {'1': 'spk_id', '3': 2, '4': 2, '5': 13, '10': 'spkId'},
+ {'1': 'ik', '3': 3, '4': 2, '5': 12, '10': 'ik'},
+ {'1': 'ek', '3': 4, '4': 2, '5': 12, '10': 'ek'},
+ {
+ '1': 'message',
+ '3': 5,
+ '4': 2,
+ '5': 11,
+ '6': '.OMEMOAuthenticatedMessage',
+ '10': 'message'
+ },
],
};
/// Descriptor for `OMEMOKeyExchange`. Decode as a `google.protobuf.DescriptorProto`.
-final $typed_data.Uint8List oMEMOKeyExchangeDescriptor = $convert.base64Decode('ChBPTUVNT0tleUV4Y2hhbmdlEhMKBXBrX2lkGAEgAigNUgRwa0lkEhUKBnNwa19pZBgCIAIoDVIFc3BrSWQSDgoCaWsYAyACKAxSAmlrEg4KAmVrGAQgAigMUgJlaxI0CgdtZXNzYWdlGAUgAigLMhouT01FTU9BdXRoZW50aWNhdGVkTWVzc2FnZVIHbWVzc2FnZQ==');
+final $typed_data.Uint8List oMEMOKeyExchangeDescriptor = $convert.base64Decode(
+ 'ChBPTUVNT0tleUV4Y2hhbmdlEhMKBXBrX2lkGAEgAigNUgRwa0lkEhUKBnNwa19pZBgCIAIoDVIFc3BrSWQSDgoCaWsYAyACKAxSAmlrEg4KAmVrGAQgAigMUgJlaxI0CgdtZXNzYWdlGAUgAigLMhouT01FTU9BdXRoZW50aWNhdGVkTWVzc2FnZVIHbWVzc2FnZQ==');
diff --git a/lib/protobuf/schema.pbserver.dart b/lib/protobuf/schema.pbserver.dart
index 7906b07..a6a03d4 100644
--- a/lib/protobuf/schema.pbserver.dart
+++ b/lib/protobuf/schema.pbserver.dart
@@ -6,4 +6,3 @@
// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
export 'schema.pb.dart';
-
diff --git a/lib/src/crypto.dart b/lib/src/crypto.dart
index 7666faa..f0a7d66 100644
--- a/lib/src/crypto.dart
+++ b/lib/src/crypto.dart
@@ -6,7 +6,8 @@ import 'package:omemo_dart/src/keys.dart';
/// it indicates which of [kp] ([identityKey] == 1) or [pk] ([identityKey] == 2)
/// is the identity key. This is needed since the identity key pair/public key is
/// an Ed25519 key, but we need them as X25519 keys for DH.
-Future> omemoDH(OmemoKeyPair kp, OmemoPublicKey pk, int identityKey) async {
+Future> omemoDH(
+ OmemoKeyPair kp, OmemoPublicKey pk, int identityKey,) async {
var ckp = kp;
var cpk = pk;
@@ -17,15 +18,14 @@ Future> omemoDH(OmemoKeyPair kp, OmemoPublicKey pk, int identityKey) a
}
final shared = await Cryptography.instance.x25519().sharedSecretKey(
- keyPair: await ckp.asKeyPair(),
- remotePublicKey: cpk.asPublicKey(),
- );
+ keyPair: await ckp.asKeyPair(),
+ remotePublicKey: cpk.asPublicKey(),
+ );
return shared.extractBytes();
}
class HkdfKeyResult {
-
const HkdfKeyResult(this.encryptionKey, this.authenticationKey, this.iv);
final List encryptionKey;
final List authenticationKey;
@@ -35,7 +35,8 @@ class HkdfKeyResult {
/// cryptography _really_ wants to check the MAC output from AES-256-CBC. Since
/// we don't have it, we need the MAC check to always "pass".
class NoMacSecretBox extends SecretBox {
- NoMacSecretBox(super.cipherText, { required super.nonce }) : super(mac: Mac.empty);
+ NoMacSecretBox(super.cipherText, {required super.nonce})
+ : super(mac: Mac.empty);
@override
Future checkMac({
@@ -59,13 +60,15 @@ Future deriveEncryptionKeys(List input, String info) async {
info: utf8.encode(info),
);
final bytes = await result.extractBytes();
-
- return HkdfKeyResult(bytes.sublist(0, 32), bytes.sublist(32, 64), bytes.sublist(64, 80));
+
+ return HkdfKeyResult(
+ bytes.sublist(0, 32), bytes.sublist(32, 64), bytes.sublist(64, 80),);
}
/// A small helper function to make AES-256-CBC easier. Encrypt [plaintext] using [key] as
/// the encryption key and [iv] as the IV. Returns the ciphertext.
-Future> aes256CbcEncrypt(List plaintext, List key, List iv) async {
+Future> aes256CbcEncrypt(
+ List plaintext, List key, List iv,) async {
final algorithm = AesCbc.with256bits(
macAlgorithm: MacAlgorithm.empty,
);
@@ -80,7 +83,8 @@ Future> aes256CbcEncrypt(List plaintext, List key, List
/// A small helper function to make AES-256-CBC easier. Decrypt [ciphertext] using [key] as
/// the encryption key and [iv] as the IV. Returns the ciphertext.
-Future> aes256CbcDecrypt(List ciphertext, List key, List iv) async {
+Future> aes256CbcDecrypt(
+ List ciphertext, List key, List iv,) async {
final algorithm = AesCbc.with256bits(
macAlgorithm: MacAlgorithm.empty,
);
diff --git a/lib/src/double_ratchet/crypto.dart b/lib/src/double_ratchet/crypto.dart
index 8c5b3bf..9ec990c 100644
--- a/lib/src/double_ratchet/crypto.dart
+++ b/lib/src/double_ratchet/crypto.dart
@@ -10,13 +10,16 @@ const encryptHkdfInfoString = 'OMEMO Message Key Material';
/// Signals ENCRYPT function as specified by OMEMO 0.8.3.
/// Encrypt [plaintext] using the message key [mk], given associated_data [associatedData]
/// and the AD output from the X3DH [sessionAd].
-Future> encrypt(List mk, List plaintext, List associatedData, List sessionAd) async {
+Future> encrypt(List mk, List plaintext,
+ List associatedData, List sessionAd,) async {
// Generate encryption, authentication key and IV
final keys = await deriveEncryptionKeys(mk, encryptHkdfInfoString);
- final ciphertext = await aes256CbcEncrypt(plaintext, keys.encryptionKey, keys.iv);
-
- final header = OmemoMessage.fromBuffer(associatedData.sublist(sessionAd.length))
- ..ciphertext = ciphertext;
+ final ciphertext =
+ await aes256CbcEncrypt(plaintext, keys.encryptionKey, keys.iv);
+
+ final header =
+ OmemoMessage.fromBuffer(associatedData.sublist(sessionAd.length))
+ ..ciphertext = ciphertext;
final headerBytes = header.writeToBuffer();
final hmacInput = concat([sessionAd, headerBytes]);
final hmacResult = await truncatedHmac(hmacInput, keys.authenticationKey);
@@ -29,10 +32,11 @@ Future> encrypt(List mk, List plaintext, List associate
/// Signals DECRYPT function as specified by OMEMO 0.8.3.
/// Decrypt [ciphertext] with the message key [mk], given the associated_data [associatedData]
/// and the AD output from the X3DH.
-Future> decrypt(List mk, List ciphertext, List associatedData, List sessionAd) async {
+Future> decrypt(List mk, List ciphertext,
+ List associatedData, List sessionAd,) async {
// Generate encryption, authentication key and IV
final keys = await deriveEncryptionKeys(mk, encryptHkdfInfoString);
-
+
// Assumption ciphertext is a OMEMOAuthenticatedMessage
final message = OmemoAuthenticatedMessage.fromBuffer(ciphertext);
final header = OmemoMessage.fromBuffer(message.message!);
diff --git a/lib/src/double_ratchet/double_ratchet.dart b/lib/src/double_ratchet/double_ratchet.dart
index cc6996f..902080a 100644
--- a/lib/src/double_ratchet/double_ratchet.dart
+++ b/lib/src/double_ratchet/double_ratchet.dart
@@ -42,7 +42,7 @@ class SkippedKey {
'n': n,
};
}
-
+
@override
bool operator ==(Object other) {
return other is SkippedKey && other.dh == dh && other.n == n;
@@ -56,12 +56,12 @@ class OmemoDoubleRatchet {
OmemoDoubleRatchet(
this.dhs, // DHs
this.dhr, // DHr
- this.rk, // RK
+ this.rk, // RK
this.cks, // CKs
this.ckr, // CKr
- this.ns, // Ns
- this.nr, // Nr
- this.pn, // Pn
+ this.ns, // Ns
+ this.nr, // Nr
+ this.pn, // Pn
this.ik,
this.sessionAd,
this.mkSkipped, // MKSKIPPED
@@ -69,7 +69,7 @@ class OmemoDoubleRatchet {
this.kexTimestamp,
this.kex,
);
-
+
factory OmemoDoubleRatchet.fromJson(Map data) {
/*
{
@@ -99,7 +99,8 @@ class OmemoDoubleRatchet {
// NOTE: Dart has some issues with just casting a List to List