about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorPaul Fariello <paul@fariello.eu>2019-02-19 06:24:47 +0140
committerPaul Fariello <paul@fariello.eu>2019-04-08 11:50:12 +0200
commit4a5b672f95266990549ddc7eb2366a99cfddeefa (patch)
treee40106e6c58b82de1e5b23ab2b4a176a6f814026 /src
parent6b064cfde4456c25bd9dbcbfe0a79262ebcb3599 (diff)
downloadprofani-tty-4a5b672f95266990549ddc7eb2366a99cfddeefa.tar.gz
Link against libsignal-protocol-c
Diffstat (limited to 'src')
-rw-r--r--src/command/cmd_defs.c20
-rw-r--r--src/command/cmd_funcs.c23
-rw-r--r--src/command/cmd_funcs.h2
-rw-r--r--src/omemo/omemo.c10
4 files changed, 54 insertions, 1 deletions
diff --git a/src/command/cmd_defs.c b/src/command/cmd_defs.c
index 4447020b..23ab2ebf 100644
--- a/src/command/cmd_defs.c
+++ b/src/command/cmd_defs.c
@@ -2328,7 +2328,25 @@ static struct cmd_t command_defs[] =
         CMD_EXAMPLES(
             "/cmd list",
             "/cmd exec ping")
-    }
+    },
+
+    { "/omemo",
+        parse_args, 1, 3, NULL,
+        CMD_SUBFUNCS(
+            { "init", cmd_omemo_init })
+        CMD_NOMAINFUNC
+        CMD_TAGS(
+            CMD_TAG_CHAT,
+            CMD_TAG_UI)
+        CMD_SYN(
+            "/omemo init")
+        CMD_DESC(
+            "Omemo commands to manage keys, and perform encryption during chat sessions.")
+        CMD_ARGS(
+            { "init", "Initialize omemo" })
+        CMD_EXAMPLES(
+            "/omemo init")
+    },
 };
 
 static GHashTable *search_index;
diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c
index b2f0ee7f..97ce2025 100644
--- a/src/command/cmd_funcs.c
+++ b/src/command/cmd_funcs.c
@@ -85,6 +85,10 @@
 #include "pgp/gpg.h"
 #endif
 
+#ifdef HAVE_LIBSIGNAL_PROTOCOL
+#include "omemo/omemo.h"
+#endif
+
 #ifdef HAVE_GTK
 #include "ui/tray.h"
 #endif
@@ -7872,3 +7876,22 @@ _cmd_set_boolean_preference(gchar *arg, const char *const command,
     g_string_free(enabled, TRUE);
     g_string_free(disabled, TRUE);
 }
+
+gboolean
+cmd_omemo_init(ProfWin *window, const char *const command, gchar **args)
+{
+#ifdef HAVE_LIBSIGNAL_PROTOCOL
+    if (connection_get_status() != JABBER_CONNECTED) {
+        cons_show("You must be connected with an account to initialize omemo");
+        return TRUE;
+    }
+
+    ProfAccount *account = accounts_get_account(session_get_account_name());
+    omemo_init(account);
+    cons_show("Initialized omemo");
+    return TRUE;
+#else
+    cons_show("This version of Profanity has not been built with Omemo support enabled");
+    return TRUE;
+#endif
+}
diff --git a/src/command/cmd_funcs.h b/src/command/cmd_funcs.h
index 89166ba1..fb81721d 100644
--- a/src/command/cmd_funcs.h
+++ b/src/command/cmd_funcs.h
@@ -214,4 +214,6 @@ gboolean cmd_wins_swap(ProfWin *window, const char *const command, gchar **args)
 
 gboolean cmd_form_field(ProfWin *window, char *tag, gchar **args);
 
+gboolean cmd_omemo_init(ProfWin *window, const char *const command, gchar **args);
+
 #endif
diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c
new file mode 100644
index 00000000..a0da5639
--- /dev/null
+++ b/src/omemo/omemo.c
@@ -0,0 +1,10 @@
+#include <signal/signal_protocol.h>
+
+#include "config/account.h"
+
+void
+omemo_init(ProfAccount *account)
+{
+	signal_context *global_context;
+	signal_context_create(&global_context, NULL);
+}