1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
From: Martin Dosch <martin@mdosch.de>
Date: Sat, 21 Mar 2026 12:58:27 +0100
Subject: Use libomemo.
---
meson.build | 14 ++++++++++----
meson_options.txt | 7 +++++++
src/omemo/crypto.c | 5 +++++
src/omemo/crypto.h | 5 +++++
src/omemo/omemo.c | 9 +++++++++
src/omemo/store.c | 3 +--
src/omemo/store.h | 4 ++++
7 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/meson.build b/meson.build
index 42dda2e..199ffdf 100644
--- a/meson.build
+++ b/meson.build
@@ -145,7 +145,7 @@ dl_dep = disabler()
gpgme_dep = disabler()
libotr_dep = disabler()
gdk_pixbuf_dep = disabler()
-libsignal_dep = disabler()
+omemo_dep = disabler()
gcrypt_dep = disabler()
qrencode_dep = disabler()
@@ -235,7 +235,13 @@ endif
# OMEMO support
if get_option('omemo').enabled()
- libsignal_dep = dependency('libsignal-protocol-c', version: '>= 2.3.2', required: true)
+ omemo_backend = get_option('omemo-backend')
+ if omemo_backend == 'libsignal'
+ omemo_dep = dependency('libsignal-protocol-c', version: '>= 2.3.2', required: true)
+ elif omemo_backend == 'libomemo-c'
+ omemo_dep = dependency('libomemo-c', version: '>= 0.5.1', required: true)
+ conf_data.set('HAVE_LIBOMEMO_C', 1)
+ endif
gcrypt_dep = dependency('libgcrypt', version: '>= 1.7.0', required: true)
build_omemo = true
conf_data.set('HAVE_OMEMO', 1)
@@ -321,8 +327,8 @@ if gdk_pixbuf_dep.found()
profanity_deps += gdk_pixbuf_dep
endif
-if libsignal_dep.found()
- profanity_deps += libsignal_dep
+if omemo_dep.found()
+ profanity_deps += omemo_dep
endif
if gcrypt_dep.found()
diff --git a/meson_options.txt b/meson_options.txt
index 11ba0d2..363c636 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -35,6 +35,13 @@ option('omemo',
description: 'Enable OMEMO encryption'
)
+option('omemo-backend',
+ type: 'combo',
+ choices: ['libsignal', 'libomemo-c'],
+ value: 'libsignal',
+ description: 'Select OMEMO backend library'
+)
+
option('xscreensaver',
type: 'feature',
value: 'disabled',
diff --git a/src/omemo/crypto.c b/src/omemo/crypto.c
index f63f340..f2b8516 100644
--- a/src/omemo/crypto.c
+++ b/src/omemo/crypto.c
@@ -35,8 +35,13 @@
#include "config.h"
#include <assert.h>
+#ifdef HAVE_LIBOMEMO_C
+#include <omemo/signal_protocol.h>
+#include <omemo/signal_protocol_types.h>
+#else
#include <signal/signal_protocol.h>
#include <signal/signal_protocol_types.h>
+#endif
#include "log.h"
#include "omemo/omemo.h"
diff --git a/src/omemo/crypto.h b/src/omemo/crypto.h
index 4d51099..3a53a02 100644
--- a/src/omemo/crypto.h
+++ b/src/omemo/crypto.h
@@ -34,9 +34,14 @@
*/
#include <stdio.h>
#include <stdbool.h>
+#ifdef HAVE_LIBOMEMO_C
+#include <omemo/signal_protocol_types.h>
+#else
#include <signal/signal_protocol_types.h>
+#endif
#include <gcrypt.h>
+
#define AES128_GCM_KEY_LENGTH 16
#define AES128_GCM_IV_LENGTH 12
#define AES128_GCM_TAG_LENGTH 16
diff --git a/src/omemo/omemo.c b/src/omemo/omemo.c
index 7e8b3a9..0a6a1cb 100644
--- a/src/omemo/omemo.c
+++ b/src/omemo/omemo.c
@@ -42,11 +42,20 @@
#include <errno.h>
#include <glib.h>
#include <pthread.h>
+
+#ifdef HAVE_LIBOMEMO_C
+#include <omemo/key_helper.h>
+#include <omemo/protocol.h>
+#include <omemo/signal_protocol.h>
+#include <omemo/session_builder.h>
+#include <omemo/session_cipher.h>
+#else
#include <signal/key_helper.h>
#include <signal/protocol.h>
#include <signal/signal_protocol.h>
#include <signal/session_builder.h>
#include <signal/session_cipher.h>
+#endif
#include "config/account.h"
#include "config/files.h"
diff --git a/src/omemo/store.c b/src/omemo/store.c
index fd085a5..465e9d5 100644
--- a/src/omemo/store.c
+++ b/src/omemo/store.c
@@ -33,8 +33,7 @@
*
*/
#include <glib.h>
-#include <signal/signal_protocol.h>
-
+#include <omemo/signal_protocol.h>
#include "config.h"
#include "log.h"
#include "omemo/omemo.h"
diff --git a/src/omemo/store.h b/src/omemo/store.h
index 742ac2a..710762c 100644
--- a/src/omemo/store.h
+++ b/src/omemo/store.h
@@ -32,7 +32,11 @@
* source files in the program, then also delete it here.
*
*/
+#ifdef HAVE_LIBOMEMO_C
+#include <omemo/signal_protocol.h>
+#else
#include <signal/signal_protocol.h>
+#endif
#include "config.h"
|