diff --git a/lib/src/model/json/signal_identity.dart b/lib/src/model/json/signal_identity.dart index f2f7400..7b10c76 100644 --- a/lib/src/model/json/signal_identity.dart +++ b/lib/src/model/json/signal_identity.dart @@ -5,8 +5,10 @@ part 'signal_identity.g.dart'; @JsonSerializable() class SignalIdentity { - const SignalIdentity( - {required this.identityKeyPairU8List, required this.registrationId}); + const SignalIdentity({ + required this.identityKeyPairU8List, + required this.registrationId, + }); final int registrationId; diff --git a/lib/src/services/api.service.dart b/lib/src/services/api.service.dart index 648c853..fb5246f 100644 --- a/lib/src/services/api.service.dart +++ b/lib/src/services/api.service.dart @@ -356,10 +356,11 @@ class ApiService { final challenge = result.value.authchallenge; - final privKey = (await getSignalIdentityKeyPair())?.getPrivateKey(); + var privKey = (await getSignalIdentityKeyPair())?.getPrivateKey(); if (privKey == null) return; final random = getRandomUint8List(32); final signature = sign(privKey.serialize(), challenge, random); + privKey = null; final getAuthToken = Handshake_GetAuthToken() ..response = signature diff --git a/lib/src/services/signal/identity.signal.dart b/lib/src/services/signal/identity.signal.dart index 440fc88..1ad5080 100644 --- a/lib/src/services/signal/identity.signal.dart +++ b/lib/src/services/signal/identity.signal.dart @@ -72,12 +72,14 @@ Future> signalGetPreKeys() async { Future getSignalIdentity() async { try { final storage = FlutterSecureStorage(); - final signalIdentityJson = + var signalIdentityJson = await storage.read(key: SecureStorageKeys.signalIdentity); if (signalIdentityJson == null) { return null; } - return SignalIdentity.fromJson(jsonDecode(signalIdentityJson)); + final decoded = jsonDecode(signalIdentityJson); + signalIdentityJson = null; + return SignalIdentity.fromJson(decoded); } catch (e) { Log.error("could not load signal identity: $e"); return null; @@ -118,7 +120,7 @@ Future createIfNotExistsSignalIdentity() async { } Future _getNewSignalSignedPreKey() async { - final identityKeyPair = await getSignalIdentityKeyPair(); + var identityKeyPair = await getSignalIdentityKeyPair(); if (identityKeyPair == null) return null; final signalStore = await getSignalStore(); if (signalStore == null) return null; @@ -130,6 +132,8 @@ Future _getNewSignalSignedPreKey() async { signedPreKeyId, ); + identityKeyPair = null; + await signalStore.storeSignedPreKey(signedPreKeyId, signedPreKey); return signedPreKey;