feat: Guard against invalid X3DH signatures

This commit is contained in:
2023-06-15 16:07:23 +02:00
parent c7ded4c824
commit af33ed51d1
5 changed files with 27 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
import 'dart:convert';
import 'dart:math';
import 'package:cryptography/cryptography.dart';
import 'package:omemo_dart/src/common/result.dart';
import 'package:omemo_dart/src/crypto.dart';
import 'package:omemo_dart/src/errors.dart';
import 'package:omemo_dart/src/helpers.dart';
@@ -70,7 +71,7 @@ Future<List<int>> kdf(List<int> km) async {
/// Alice builds a session with Bob using his bundle [bundle] and Alice's identity key
/// pair [ik].
Future<X3DHAliceResult> x3dhFromBundle(
Future<Result<InvalidKeyExchangeSignatureError, X3DHAliceResult>> x3dhFromBundle(
OmemoBundle bundle,
OmemoKeyPair ik,
) async {
@@ -84,7 +85,7 @@ Future<X3DHAliceResult> x3dhFromBundle(
);
if (!signatureValue) {
throw InvalidSignatureException();
return Result(InvalidKeyExchangeSignatureError());
}
// Generate EK
@@ -106,7 +107,7 @@ Future<X3DHAliceResult> x3dhFromBundle(
await bundle.ik.getBytes(),
]);
return X3DHAliceResult(ek, sk, opkId, ad);
return Result(X3DHAliceResult(ek, sk, opkId, ad));
}
/// Bob builds the X3DH shared secret from the inital message [msg], the SPK [spk], the