From dba577f39c489b9db29960f2bf5cc78ac4f29d7b Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sun, 4 Oct 2026 14:42:16 +0200 Subject: Move OMEMO, OpenPGP and RTP plugins into main/libdino --- main/src/plugins/openpgp/plugin.vala | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 main/src/plugins/openpgp/plugin.vala (limited to 'main/src/plugins/openpgp/plugin.vala') diff --git a/main/src/plugins/openpgp/plugin.vala b/main/src/plugins/openpgp/plugin.vala new file mode 100644 index 00000000..67b94455 --- /dev/null +++ b/main/src/plugins/openpgp/plugin.vala @@ -0,0 +1,47 @@ +using Gee; + +using Dino.Entities; + +namespace Dino.Plugins.OpenPgp { + +public class Plugin : Plugins.RootInterface, Object { + public Dino.Application app; + public Database db; + public HashMap modules = new HashMap(Account.hash_func, Account.equals_func); + + private EncryptionListEntry list_entry; + private ContactDetailsProvider contact_details_provider; + + public void registered(Dino.Application app) { + this.app = app; + this.db = new Database(Path.build_filename(Application.get_storage_dir(), "pgp.db")); + this.list_entry = new EncryptionListEntry(app.stream_interactor, db); + this.contact_details_provider = new ContactDetailsProvider(app.stream_interactor); + + app.plugin_registry.register_encryption_list_entry(list_entry); + app.plugin_registry.register_encryption_preferences_entry(new PgpPreferencesEntry(this)); + app.plugin_registry.register_contact_details_entry(contact_details_provider); + app.stream_interactor.module_manager.initialize_account_modules.connect(on_initialize_account_modules); + + Manager.start(app.stream_interactor, db); + app.stream_interactor.get_module(FileManager.IDENTITY).add_file_encryptor(new PgpFileEncryptor(app.stream_interactor)); + app.stream_interactor.get_module(FileManager.IDENTITY).add_file_decryptor(new PgpFileDecryptor()); + JingleFileHelperRegistry.instance.add_encryption_helper(Encryption.PGP, new JingleFileEncryptionHelperTransferOnly()); + } + + public void shutdown() { } + + private void on_initialize_account_modules(Account account, ArrayList modules) { + string signed_data = ""; + string? sig = db.get_account_signature(account, signed_data); + bool sig_was_unknown = sig == null; + Module module = new Module(db.get_account_key(account), ref signed_data, ref sig); + if (sig_was_unknown && sig != null) { + db.set_account_signature(account, signed_data, sig); + } + this.modules[account] = module; + modules.add(module); + } +} + +} -- cgit v1.3