diff options
| author | Marvin W <git@larma.de> | 2026-10-23 16:46:01 +0200 |
|---|---|---|
| committer | Marvin W <git@larma.de> | 2026-10-23 17:01:44 +0200 |
| commit | 5bf8b829b7f7f2fb6e2b920eed8eace6a801157c (patch) | |
| tree | b6a4ce6ca29c9ce96dd4547b825436f20e83a793 /libdino/src/crypto/omemo/simple_iks.vala | |
| parent | 2eb311938665f92ef48e2cfa030720fc68ca7cc9 (diff) | |
omemo: Hand direct database access to libomemo
Previously used an in-memory map to represent the database content and kept those in sync
Diffstat (limited to 'libdino/src/crypto/omemo/simple_iks.vala')
| -rw-r--r-- | libdino/src/crypto/omemo/simple_iks.vala | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/libdino/src/crypto/omemo/simple_iks.vala b/libdino/src/crypto/omemo/simple_iks.vala index b5d0f321..1c9c8a1d 100644 --- a/libdino/src/crypto/omemo/simple_iks.vala +++ b/libdino/src/crypto/omemo/simple_iks.vala @@ -4,10 +4,13 @@ using Omemo; namespace Dino.Crypto.Omemo { public class SimpleIdentityKeyStore : IdentityKeyStore { + public signal void trusted_identity_added(TrustedIdentity id); + public signal void trusted_identity_updated(TrustedIdentity id); + public override Bytes identity_key_private { get; set; } public override Bytes identity_key_public { get; set; } public override uint32 local_registration_id { get; set; } - private Map<string, Map<int, IdentityKeyStore.TrustedIdentity>> trusted_identities = new HashMap<string, Map<int, IdentityKeyStore.TrustedIdentity>>(); + private Map<string, Map<int, TrustedIdentity>> trusted_identities = new HashMap<string, Map<int, TrustedIdentity>>(); public override void save_identity(Address address, uint8[] key) throws Error { string name = address.name; @@ -20,7 +23,7 @@ public class SimpleIdentityKeyStore : IdentityKeyStore { trusted_identity_added(trusted_identities[name][address.device_id]); } } else { - trusted_identities[name] = new HashMap<int, IdentityKeyStore.TrustedIdentity>(); + trusted_identities[name] = new HashMap<int, TrustedIdentity>(); trusted_identities[name][address.device_id] = new TrustedIdentity.by_address(address, key); trusted_identity_added(trusted_identities[name][address.device_id]); } @@ -36,6 +39,22 @@ public class SimpleIdentityKeyStore : IdentityKeyStore { } return true; } + + public class TrustedIdentity { + public uint8[] key { get; set; } + public string name { get; private set; } + public int device_id { get; private set; } + + public TrustedIdentity(string name, int device_id, uint8[] key) { + this.key = key; + this.name = name; + this.device_id = device_id; + } + + public TrustedIdentity.by_address(Address address, uint8[] key) { + this(address.name, address.device_id, key); + } + } } } |
