From 6914246209da21068bd5a9ab7ac5f473e4398369 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Sun, 24 May 2020 20:35:38 +0000 Subject: [PATCH 01/15] Add make install target, shared library and soname support --- Makefile | 60 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index 601e4fb..a93fe9b 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,9 @@ MKDIR = mkdir MKDIR_P = mkdir -p CMAKE ?= cmake CMAKE_FLAGS = -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-fPIC +ARCH := $(shell gcc -print-multiarch) +VER_MAJ = 0 +VERSION = 0.3.2 PKG_CONFIG ?= pkg-config GLIB_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags glib-2.0) @@ -14,6 +17,9 @@ GLIB_LDFLAGS ?= $(shell $(PKG_CONFIG) --libs glib-2.0) SQLITE3_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags sqlite3) SQLITE3_LDFLAGS ?= $(shell $(PKG_CONFIG) --libs sqlite3) +SIGNAL_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags libsignal-protocol-c) +SIGNAL_LDFLAGS ?= $(shell $(PKG_CONFIG) --libs libsignal-protocol-c) + LIBGCRYPT_CONFIG ?= libgcrypt-config LIBGCRYPT_LDFLAGS ?= $(shell $(LIBGCRYPT_CONFIG) --libs) @@ -24,34 +30,33 @@ TDIR = test TFN = test_all CDIR = coverage -AX_DIR=./lib/libsignal-protocol-c -AX_BDIR=$(AX_DIR)/build/src -AX_PATH=$(AX_BDIR)/libsignal-protocol-c.a - PKGCFG_C=$(GLIB_CFLAGS) \ $(SQLITE3_CFLAGS) \ - $(LIBGCRYPT_CFLAGS) + $(LIBGCRYPT_CFLAGS) \ + $(SIGNAL_CFLAGS) PKGCFG_L=$(GLIB_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ - $(LIBGCRYPT_LDFLAGS) + $(LIBGCRYPT_LDFLAGS) \ + $(SIGNAL_LDFLAGS) -HEADERS=-I$(AX_DIR)/src -CFLAGS += $(HEADERS) $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ +CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ - -fno-builtin-memset + -fno-builtin-memset -fstack-protector-strong -Wformat -Werror=format-security CPPFLAGS += -D_XOPEN_SOURCE=700 -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE -TESTFLAGS=$(HEADERS) $(PKGCFG_C) -g -O0 --coverage +TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security PICFLAGS=-fPIC $(CFLAGS) -LDFLAGS += -pthread -ldl $(PKGCFG_L) $(AX_PATH) -lm +LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm LDFLAGS_T= -lcmocka $(LDFLAGS) -all: $(BDIR)/libaxc.a + + +all: $(BDIR)/libaxc.a shared $(BDIR): $(MKDIR_P) $@ -client: $(SDIR)/message_client.c $(BDIR)/axc_store.o $(BDIR)/axc_crypto.o $(BDIR)/axc.o $(AX_PATH) +client: $(SDIR)/message_client.c $(BDIR)/axc_store.o $(BDIR)/axc_crypto.o $(BDIR)/axc.o $(MKDIR_P) $@ $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@/$@.o $(LDFLAGS) @@ -73,15 +78,26 @@ $(BDIR)/libaxc.a: $(BDIR)/axc.o $(BDIR)/axc_crypto.o $(BDIR)/axc_store.o $(BDIR)/libaxc-nt.a: $(BDIR)/axc-nt.o $(BDIR)/axc_crypto.o $(BDIR)/axc_store.o $(AR) rcs $@ $^ -$(AX_PATH): - cd $(AX_DIR) && \ - $(MKDIR_P) build && \ - cd build && \ - $(CMAKE) $(CMAKE_FLAGS) .. && \ - $(MAKE) +$(BDIR)/libaxc.so: $(BDIR) + $(CC) -shared -Wl,-soname,libaxc.so.$(VER_MAJ) -o $@ $(PICFLAGS) $(SDIR)/axc.c $(SDIR)/axc_crypto.c $(SDIR)/axc_store.c $(LDFLAGS) $(CPPFLAGS) + +shared: $(BDIR)/libaxc.so + +ifeq ($(PREFIX),) +PREFIX := /usr/local +endif + +install: $(BDIR) + install -d $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ + install -m 644 $(BDIR)/libaxc.so $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/libaxc.so.$(VERSION) + install -m 644 $(SDIR)/libaxc.pc $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ + install -d $(DESTDIR)/$(PREFIX)/include/axc/ + install -m 644 $(SDIR)/axc.h $(DESTDIR)/$(PREFIX)/include/axc/ + install -m 644 $(SDIR)/axc_crypto.h $(DESTDIR)/$(PREFIX)/include/axc/ + install -m 644 $(SDIR)/axc_store.h $(DESTDIR)/$(PREFIX)/include/axc/ .PHONY: test -test: $(AX_PATH) test_store test_client +test: test_store test_client .PHONY: test_store test_store: $(SDIR)/axc_store.c $(SDIR)/axc_crypto.c $(TDIR)/test_store.c @@ -91,7 +107,7 @@ test_store: $(SDIR)/axc_store.c $(SDIR)/axc_crypto.c $(TDIR)/test_store.c .PHONY: test_client test_client: $(SDIR)/axc.c $(SDIR)/axc_crypto.c $(SDIR)/axc_store.c $(TDIR)/test_client.c - $(CC) $(TESTFLAGS) -g $(HEADERS) -o $(TDIR)/$@.o $(SDIR)/axc_crypto.c $(TDIR)/test_client.c $(LDFLAGS_T) + $(CC) $(TESTFLAGS) -o $(TDIR)/$@.o $(SDIR)/axc_crypto.c $(TDIR)/test_client.c $(LDFLAGS_T) -$(TDIR)/$@.o mv *.g* $(TDIR) @@ -109,6 +125,6 @@ clean: .PHONY: clean-all clean-all: clean - rm -rf client $(BDIR) $(CDIR) $(AX_DIR)/build + rm -rf client $(BDIR) $(CDIR) From 88b66ac78f78da4869cf5c35f68b5177a4490bef Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Sun, 24 May 2020 20:37:33 +0000 Subject: [PATCH 02/15] added pkgconfig suport --- src/libaxc.pc | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/libaxc.pc diff --git a/src/libaxc.pc b/src/libaxc.pc new file mode 100644 index 0000000..2c67ed6 --- /dev/null +++ b/src/libaxc.pc @@ -0,0 +1,11 @@ +prefix=/usr +includedir=${prefix}/include +libdir=${prefix}/lib/${ARCH} + +Name: libaxc +Version: ${version} +Description: client library for libsignal-protocol-c +Requires.private: glib-2.0 +Cflags: -I${includedir}/axc +Libs: -L${libdir} -llibaxc + From 5c2fef581fcd46426a2b8b6fafa2f89b087568b5 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Sun, 24 May 2020 20:38:12 +0000 Subject: [PATCH 03/15] no longer statically build against libsignal-protocol-c --- .gitmodules | 3 --- lib/libsignal-protocol-c | 1 - src/axc.c | 17 ++++++++--------- src/axc.h | 2 +- src/axc_crypto.c | 2 +- src/axc_crypto.h | 2 +- src/axc_store.c | 4 ++-- src/axc_store.h | 4 ++-- 8 files changed, 15 insertions(+), 20 deletions(-) delete mode 160000 lib/libsignal-protocol-c diff --git a/.gitmodules b/.gitmodules index 006008c..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "lib/libsignal-protocol-c"] - path = lib/libsignal-protocol-c - url = https://github.com/WhisperSystems/libsignal-protocol-c.git diff --git a/lib/libsignal-protocol-c b/lib/libsignal-protocol-c deleted file mode 160000 index 4a137ea..0000000 --- a/lib/libsignal-protocol-c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4a137eaf4eb4421949e2e1dde9f11ec7bc07b88f diff --git a/src/axc.c b/src/axc.c index 78d9c72..61c73f7 100644 --- a/src/axc.c +++ b/src/axc.c @@ -10,13 +10,12 @@ #include -#include "signal_protocol.h" -#include "key_helper.h" -#include "protocol.h" -#include "session_builder.h" -#include "session_builder_internal.h" -#include "session_cipher.h" -#include "session_state.h" +#include +#include +#include +#include +#include +#include #include "axc.h" #include "axc_store.h" @@ -1123,11 +1122,11 @@ int axc_pre_key_message_process(axc_buf * pre_key_msg_serialized_p, axc_address - ret_val = session_builder_process_pre_key_signal_message(session_builder_p, session_record_p, pre_key_msg_p, &pre_key_id); + /* ret_val = session_builder_process_pre_key_signal_message(session_builder_p, session_record_p, pre_key_msg_p, &pre_key_id); if (ret_val < 0) { err_msg = "failed to process pre key message"; goto cleanup; - } + } */ ret_val = session_cipher_create(&session_cipher_p, ctx_p->axolotl_store_context_p, remote_address_p, ctx_p->axolotl_global_context_p); diff --git a/src/axc.h b/src/axc.h index c3db1e2..4816773 100644 --- a/src/axc.h +++ b/src/axc.h @@ -2,7 +2,7 @@ #include -#include "signal_protocol.h" +#include typedef struct axc_context axc_context; typedef struct axc_bundle axc_bundle; diff --git a/src/axc_crypto.c b/src/axc_crypto.c index 693eed7..35adafd 100644 --- a/src/axc_crypto.c +++ b/src/axc_crypto.c @@ -4,7 +4,7 @@ #include -#include "signal_protocol.h" +#include #include "axc.h" diff --git a/src/axc_crypto.h b/src/axc_crypto.h index d72d596..cffb3d9 100644 --- a/src/axc_crypto.h +++ b/src/axc_crypto.h @@ -2,7 +2,7 @@ #include -#include "signal_protocol.h" +#include void axc_crypto_init(void); void axc_crypto_teardown(void); diff --git a/src/axc_store.c b/src/axc_store.c index b69c3a2..56f91b7 100644 --- a/src/axc_store.c +++ b/src/axc_store.c @@ -3,8 +3,8 @@ #include // exit #include // strlen -#include "signal_protocol.h" -#include "key_helper.h" +#include +#include #include diff --git a/src/axc_store.h b/src/axc_store.h index 03e1b34..a858782 100644 --- a/src/axc_store.h +++ b/src/axc_store.h @@ -1,7 +1,7 @@ #pragma once -#include "signal_protocol.h" -#include "key_helper.h" +#include +#include #include "axc.h" From b7db1bdafc52556f0fd873b8f5f706f39d823f62 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Mon, 25 May 2020 19:52:12 +0000 Subject: [PATCH 04/15] Autogenerate PKGCONFIG file through Makefile --- Makefile | 17 +++++++++++++++-- src/libaxc.pc | 11 ----------- 2 files changed, 15 insertions(+), 13 deletions(-) delete mode 100644 src/libaxc.pc diff --git a/Makefile b/Makefile index a93fe9b..e93c95c 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,20 @@ $(BDIR)/libaxc-nt.a: $(BDIR)/axc-nt.o $(BDIR)/axc_crypto.o $(BDIR)/axc_store.o $(BDIR)/libaxc.so: $(BDIR) $(CC) -shared -Wl,-soname,libaxc.so.$(VER_MAJ) -o $@ $(PICFLAGS) $(SDIR)/axc.c $(SDIR)/axc_crypto.c $(SDIR)/axc_store.c $(LDFLAGS) $(CPPFLAGS) -shared: $(BDIR)/libaxc.so +$(BDIR)/libaxc.pc: $(BDIR) + echo 'prefix='$(PREFIX) > $@ + echo 'exec_prefix=$${prefix}' >> $@ + echo 'libdir=$${prefix}/lib/$(ARCH)' >> $@ + echo 'includedir=$${prefix}/include' >> $@ + echo 'Name: libaxc' >> $@ + echo 'Version: ${VERSION}' >> $@ + echo 'Description: client library for libsignal-protocol-c' >> $@ + echo 'Requires: glib-2.0, sqlite3, libsignal-protocol-c' >> $@ + echo 'Cflags: -I$${includedir}/axc' >> $@ + echo 'Libs: -L$${libdir} -laxc' >> $@ + + +shared: $(BDIR)/libaxc.so $(BDIR)/libaxc.pc ifeq ($(PREFIX),) PREFIX := /usr/local @@ -90,7 +103,7 @@ endif install: $(BDIR) install -d $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ install -m 644 $(BDIR)/libaxc.so $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/libaxc.so.$(VERSION) - install -m 644 $(SDIR)/libaxc.pc $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ + install -m 644 $(BDIR)/libaxc.pc $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ install -d $(DESTDIR)/$(PREFIX)/include/axc/ install -m 644 $(SDIR)/axc.h $(DESTDIR)/$(PREFIX)/include/axc/ install -m 644 $(SDIR)/axc_crypto.h $(DESTDIR)/$(PREFIX)/include/axc/ diff --git a/src/libaxc.pc b/src/libaxc.pc deleted file mode 100644 index 2c67ed6..0000000 --- a/src/libaxc.pc +++ /dev/null @@ -1,11 +0,0 @@ -prefix=/usr -includedir=${prefix}/include -libdir=${prefix}/lib/${ARCH} - -Name: libaxc -Version: ${version} -Description: client library for libsignal-protocol-c -Requires.private: glib-2.0 -Cflags: -I${includedir}/axc -Libs: -L${libdir} -llibaxc - From cdcc60645c8ca5ce9f2b78f9ee9b6508151232d0 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Tue, 26 May 2020 19:55:45 +0000 Subject: [PATCH 05/15] pkgconfig file generation with correct Requires field --- Makefile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index e93c95c..db57300 100644 --- a/Makefile +++ b/Makefile @@ -49,6 +49,9 @@ PICFLAGS=-fPIC $(CFLAGS) LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm LDFLAGS_T= -lcmocka $(LDFLAGS) +ifeq ($(PREFIX),) +PREFIX := /usr/local +endif all: $(BDIR)/libaxc.a shared @@ -89,19 +92,17 @@ $(BDIR)/libaxc.pc: $(BDIR) echo 'Name: libaxc' >> $@ echo 'Version: ${VERSION}' >> $@ echo 'Description: client library for libsignal-protocol-c' >> $@ - echo 'Requires: glib-2.0, sqlite3, libsignal-protocol-c' >> $@ + echo 'Requires: libsignal-protocol-c' >> $@ echo 'Cflags: -I$${includedir}/axc' >> $@ echo 'Libs: -L$${libdir} -laxc' >> $@ shared: $(BDIR)/libaxc.so $(BDIR)/libaxc.pc -ifeq ($(PREFIX),) -PREFIX := /usr/local -endif install: $(BDIR) install -d $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ + install -m 644 $(BDIR)/libaxc.a $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/libaxc.a install -m 644 $(BDIR)/libaxc.so $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/libaxc.so.$(VERSION) install -m 644 $(BDIR)/libaxc.pc $(DESTDIR)/$(PREFIX)/lib/$(ARCH)/pkgconfig/ install -d $(DESTDIR)/$(PREFIX)/include/axc/ From 35a8f6148b0c9b9f9550d870fa1392dd4cc81d97 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Thu, 23 Jul 2020 20:08:18 +0000 Subject: [PATCH 06/15] make linking options OS dependant --- Makefile | 52 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index db57300..6a8bd32 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,10 @@ ARCH := $(shell gcc -print-multiarch) VER_MAJ = 0 VERSION = 0.3.2 +AX_DIR=./lib/libsignal-protocol-c +AX_BDIR=$(AX_DIR)/build/src +AX_PATH=$(AX_BDIR)/libsignal-protocol-c.a + PKG_CONFIG ?= pkg-config GLIB_CFLAGS ?= $(shell $(PKG_CONFIG) --cflags glib-2.0) GLIB_LDFLAGS ?= $(shell $(PKG_CONFIG) --libs glib-2.0) @@ -23,6 +27,7 @@ SIGNAL_LDFLAGS ?= $(shell $(PKG_CONFIG) --libs libsignal-protocol-c) LIBGCRYPT_CONFIG ?= libgcrypt-config LIBGCRYPT_LDFLAGS ?= $(shell $(LIBGCRYPT_CONFIG) --libs) + SDIR = src LDIR = lib BDIR = build @@ -32,34 +37,46 @@ CDIR = coverage PKGCFG_C=$(GLIB_CFLAGS) \ $(SQLITE3_CFLAGS) \ - $(LIBGCRYPT_CFLAGS) \ - $(SIGNAL_CFLAGS) + $(LIBGCRYPT_CFLAGS) PKGCFG_L=$(GLIB_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ - $(LIBGCRYPT_LDFLAGS) \ - $(SIGNAL_LDFLAGS) + $(LIBGCRYPT_LDFLAGS) -CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ - -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ - -fno-builtin-memset -fstack-protector-strong -Wformat -Werror=format-security CPPFLAGS += -D_XOPEN_SOURCE=700 -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE -TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security PICFLAGS=-fPIC $(CFLAGS) -LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm -LDFLAGS_T= -lcmocka $(LDFLAGS) -ifeq ($(PREFIX),) -PREFIX := /usr/local +ifeq ($(OS),Windows_NT) + HEADERS=-I$(AX_DIR)/src + CFLAGS += $(HEADERS) $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ + -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ + -fno-builtin-memset + TESTFLAGS=$(HEADERS) $(PKGCFG_C) -g -O0 --coverage + LDFLAGS += -pthread -ldl $(PKGCFG_L) $(AX_PATH) -lm + LDFLAGS_T= -lcmocka $(LDFLAGS) +else + PKGCFG_C += $(SIGNAL_CFLAGS) + PKGCFG_L += $(SIGNAL_LDFLAGS) + CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ + -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ + -fno-builtin-memset -fstack-protector-strong -Wformat -Werror=format-security + TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security + LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm + LDFLAGS_T= -lcmocka $(LDFLAGS) + + ifeq ($(PREFIX),) + PREFIX := /usr/local + endif endif + all: $(BDIR)/libaxc.a shared $(BDIR): $(MKDIR_P) $@ -client: $(SDIR)/message_client.c $(BDIR)/axc_store.o $(BDIR)/axc_crypto.o $(BDIR)/axc.o +client: $(SDIR)/message_client.c $(BDIR)/axc_store.o $(BDIR)/axc_crypto.o $(BDIR)/axc.o $(AX_PATH) $(MKDIR_P) $@ $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@/$@.o $(LDFLAGS) @@ -96,6 +113,13 @@ $(BDIR)/libaxc.pc: $(BDIR) echo 'Cflags: -I$${includedir}/axc' >> $@ echo 'Libs: -L$${libdir} -laxc' >> $@ +$(AX_PATH): + cd $(AX_DIR) && \ + $(MKDIR_P) build && \ + cd build && \ + $(CMAKE) $(CMAKE_FLAGS) .. && \ + $(MAKE) + shared: $(BDIR)/libaxc.so $(BDIR)/libaxc.pc @@ -139,6 +163,6 @@ clean: .PHONY: clean-all clean-all: clean - rm -rf client $(BDIR) $(CDIR) + rm -rf client $(BDIR) $(CDIR) $(AX_DIR)/build From 42d83be08bc8e16225f95560845fcbf65484615f Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Thu, 23 Jul 2020 20:29:45 +0000 Subject: [PATCH 07/15] remove unused variable + cleanups --- .gitmodules | 3 +++ src/axc.c | 2 +- src/axc.h | 2 +- src/axc_crypto.c | 2 +- src/axc_crypto.h | 2 +- src/axc_store.c | 4 ++-- src/axc_store.h | 4 ++-- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.gitmodules b/.gitmodules index e69de29..006008c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/libsignal-protocol-c"] + path = lib/libsignal-protocol-c + url = https://github.com/WhisperSystems/libsignal-protocol-c.git diff --git a/src/axc.c b/src/axc.c index 3c34076..19f4723 100644 --- a/src/axc.c +++ b/src/axc.c @@ -1072,7 +1072,7 @@ int axc_pre_key_message_process(axc_buf * pre_key_msg_serialized_p, axc_address pre_key_signal_message * pre_key_msg_p = (void *) 0; uint32_t new_id = 0; - uint32_t pre_key_id = 0; + // uint32_t pre_key_id = 0; session_cipher * session_cipher_p = (void *) 0; axc_buf * plaintext_p = (void *) 0; signal_protocol_key_helper_pre_key_list_node * key_l_p = (void *) 0; diff --git a/src/axc.h b/src/axc.h index 3cfa8d4..dad2b75 100644 --- a/src/axc.h +++ b/src/axc.h @@ -9,7 +9,7 @@ #include -#include +#include "signal_protocol.h" typedef struct axc_context axc_context; typedef struct axc_bundle axc_bundle; diff --git a/src/axc_crypto.c b/src/axc_crypto.c index 35d1cb6..4e02923 100644 --- a/src/axc_crypto.c +++ b/src/axc_crypto.c @@ -11,7 +11,7 @@ #include -#include +#include "signal_protocol.h" #include "axc.h" diff --git a/src/axc_crypto.h b/src/axc_crypto.h index 68a5079..22a9de8 100644 --- a/src/axc_crypto.h +++ b/src/axc_crypto.h @@ -9,7 +9,7 @@ #include -#include +#include "signal_protocol.h" void axc_crypto_init(void); void axc_crypto_teardown(void); diff --git a/src/axc_store.c b/src/axc_store.c index e3a44e9..1cdf84d 100644 --- a/src/axc_store.c +++ b/src/axc_store.c @@ -10,8 +10,8 @@ #include // exit #include // strlen -#include -#include +#include "signal_protocol.h" +#include "key_helper.h" #include diff --git a/src/axc_store.h b/src/axc_store.h index 0e11cb5..927e812 100644 --- a/src/axc_store.h +++ b/src/axc_store.h @@ -7,8 +7,8 @@ #pragma once -#include -#include +#include "signal_protocol.h" +#include "key_helper.h" #include "axc.h" From 7f9844caee2629806b652a6f337a12b28d742eb6 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Thu, 23 Jul 2020 21:02:42 +0000 Subject: [PATCH 08/15] update version to reflect current master --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6a8bd32..dc3eb10 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ CMAKE ?= cmake CMAKE_FLAGS = -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-fPIC ARCH := $(shell gcc -print-multiarch) VER_MAJ = 0 -VERSION = 0.3.2 +VERSION = 0.3.3 AX_DIR=./lib/libsignal-protocol-c AX_BDIR=$(AX_DIR)/build/src From 7f726f7bc17a8c7d7d8064ca7f11c86a05735ae0 Mon Sep 17 00:00:00 2001 From: henry-nicolas <62202143+henry-nicolas@users.noreply.github.com> Date: Fri, 4 Dec 2020 22:29:47 +0100 Subject: [PATCH 09/15] cleanup axc.c following gkdr review --- src/axc.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/axc.c b/src/axc.c index 19f4723..43a251a 100644 --- a/src/axc.c +++ b/src/axc.c @@ -1112,13 +1112,6 @@ int axc_pre_key_message_process(axc_buf * pre_key_msg_serialized_p, axc_address } while (signal_protocol_pre_key_contains_key(ctx_p->axolotl_store_context_p, session_pre_key_get_id(signal_protocol_key_helper_key_list_element(key_l_p)))); - /* ret_val = session_builder_process_pre_key_signal_message(session_builder_p, session_record_p, pre_key_msg_p, &pre_key_id); - if (ret_val < 0) { - err_msg = "failed to process pre key message"; - goto cleanup; - } */ - - ret_val = session_cipher_create(&session_cipher_p, ctx_p->axolotl_store_context_p, remote_address_p, ctx_p->axolotl_global_context_p); if (ret_val) { err_msg = "failed to create session cipher"; From 648849e725a68deee9382e5153432586e43131a0 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Sun, 6 Dec 2020 09:18:00 +0000 Subject: [PATCH 10/15] align platform flags in Makefile --- Makefile | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index dc3eb10..e813fcf 100644 --- a/Makefile +++ b/Makefile @@ -43,26 +43,17 @@ PKGCFG_L=$(GLIB_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ $(LIBGCRYPT_LDFLAGS) -CPPFLAGS += -D_XOPEN_SOURCE=700 -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE -PICFLAGS=-fPIC $(CFLAGS) + ifeq ($(OS),Windows_NT) HEADERS=-I$(AX_DIR)/src - CFLAGS += $(HEADERS) $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ - -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ - -fno-builtin-memset - TESTFLAGS=$(HEADERS) $(PKGCFG_C) -g -O0 --coverage - LDFLAGS += -pthread -ldl $(PKGCFG_L) $(AX_PATH) -lm - LDFLAGS_T= -lcmocka $(LDFLAGS) + PKGCFG_C=$(HEADERS) \ + $(PKGCFG_C) + PKGCFG_L=$(PKGCFG_L) \ + $(AX_PATH) else PKGCFG_C += $(SIGNAL_CFLAGS) PKGCFG_L += $(SIGNAL_LDFLAGS) - CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ - -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ - -fno-builtin-memset -fstack-protector-strong -Wformat -Werror=format-security - TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security - LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm - LDFLAGS_T= -lcmocka $(LDFLAGS) ifeq ($(PREFIX),) PREFIX := /usr/local @@ -70,6 +61,15 @@ else endif +PICFLAGS=-fPIC $(CFLAGS) +CPPFLAGS += -D_XOPEN_SOURCE=700 -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE +CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ + -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ + -fno-builtin-memset -fstack-protector-strong -Wformat -Werror=format-security +TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security +LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm +LDFLAGS_T= -lcmocka $(LDFLAGS) + all: $(BDIR)/libaxc.a shared From ab5efd01986dda9b791742fd0c65e76bf793a27a Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Sun, 6 Dec 2020 10:13:38 +0000 Subject: [PATCH 11/15] gkdr feedback on unused variable --- src/axc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axc.c b/src/axc.c index 43a251a..226b8cc 100644 --- a/src/axc.c +++ b/src/axc.c @@ -1072,7 +1072,7 @@ int axc_pre_key_message_process(axc_buf * pre_key_msg_serialized_p, axc_address pre_key_signal_message * pre_key_msg_p = (void *) 0; uint32_t new_id = 0; - // uint32_t pre_key_id = 0; + uint32_t pre_key_id = 0; session_cipher * session_cipher_p = (void *) 0; axc_buf * plaintext_p = (void *) 0; signal_protocol_key_helper_pre_key_list_node * key_l_p = (void *) 0; From a9ed2e5d5ccb740e6fadbb97f61cf69d39f86504 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Wed, 9 Dec 2020 09:05:32 +0000 Subject: [PATCH 12/15] merge branch unused-var --- src/axc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/axc.c b/src/axc.c index 226b8cc..16fa597 100644 --- a/src/axc.c +++ b/src/axc.c @@ -1072,7 +1072,6 @@ int axc_pre_key_message_process(axc_buf * pre_key_msg_serialized_p, axc_address pre_key_signal_message * pre_key_msg_p = (void *) 0; uint32_t new_id = 0; - uint32_t pre_key_id = 0; session_cipher * session_cipher_p = (void *) 0; axc_buf * plaintext_p = (void *) 0; signal_protocol_key_helper_pre_key_list_node * key_l_p = (void *) 0; From 1ffd38419aa2c468ed2aa019eb51c39e0db6fb05 Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Thu, 10 Dec 2020 07:43:24 +0000 Subject: [PATCH 13/15] conditional use of git sub-module --- Makefile | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index e813fcf..92a355e 100644 --- a/Makefile +++ b/Makefile @@ -43,25 +43,21 @@ PKGCFG_L=$(GLIB_LDFLAGS) \ $(SQLITE3_LDFLAGS) \ $(LIBGCRYPT_LDFLAGS) - - -ifeq ($(OS),Windows_NT) - HEADERS=-I$(AX_DIR)/src - PKGCFG_C=$(HEADERS) \ - $(PKGCFG_C) - PKGCFG_L=$(PKGCFG_L) \ - $(AX_PATH) -else +REQPKG=libsignal-protocol-c +REQPKG:=$(shell pkg-config --exists $(REQPKG) && echo '$(REQPKG)') +ifneq ($(REQPKG),) PKGCFG_C += $(SIGNAL_CFLAGS) PKGCFG_L += $(SIGNAL_LDFLAGS) - - ifeq ($(PREFIX),) - PREFIX := /usr/local - endif +else + HEADERS=-I$(AX_DIR)/src + PKGCFG_C +=$(HEADERS) + PKGCFG_L +=$(AX_PATH) endif +ifeq ($(PREFIX),) + PREFIX := /usr/local +endif -PICFLAGS=-fPIC $(CFLAGS) CPPFLAGS += -D_XOPEN_SOURCE=700 -D_BSD_SOURCE -D_POSIX_SOURCE -D_GNU_SOURCE -D_DEFAULT_SOURCE CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ -Wstrict-overflow -fno-strict-aliasing -funsigned-char \ @@ -69,6 +65,7 @@ CFLAGS += $(PKGCFG_C) -std=c11 -g -Wall -Wextra -Wpedantic \ TESTFLAGS=$(PKGCFG_C) -g -O0 --coverage -fstack-protector-strong -Wformat -Werror=format-security LDFLAGS += -pthread -ldl $(PKGCFG_L) -lm LDFLAGS_T= -lcmocka $(LDFLAGS) +PICFLAGS=-fPIC $(CFLAGS) all: $(BDIR)/libaxc.a shared From eb05259b2148bfa990af20e6214ae5a10c602b5c Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Wed, 6 Jan 2021 21:04:17 +0100 Subject: [PATCH 14/15] Re-add the git-submodule for libsignal --- lib/libsignal-protocol-c | 1 + 1 file changed, 1 insertion(+) create mode 160000 lib/libsignal-protocol-c diff --git a/lib/libsignal-protocol-c b/lib/libsignal-protocol-c new file mode 160000 index 0000000..3a83a4f --- /dev/null +++ b/lib/libsignal-protocol-c @@ -0,0 +1 @@ +Subproject commit 3a83a4f4ed2302ff6e68ab569c88793b50c22d28 From 594f0a2a76b46f44ea14ad1db9d1585f5fe1ad8e Mon Sep 17 00:00:00 2001 From: Henry-Nicolas Tourneur Date: Thu, 7 Jan 2021 11:50:01 +0100 Subject: [PATCH 15/15] support test target with both git submodule and linked shared lib --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 92a355e..545e2ae 100644 --- a/Makefile +++ b/Makefile @@ -131,8 +131,14 @@ install: $(BDIR) install -m 644 $(SDIR)/axc_crypto.h $(DESTDIR)/$(PREFIX)/include/axc/ install -m 644 $(SDIR)/axc_store.h $(DESTDIR)/$(PREFIX)/include/axc/ + +ifneq ($(REQPKG),) .PHONY: test test: test_store test_client +else +.PHONY: test +test: $(AX_PATH) test_store test_client +endif .PHONY: test_store test_store: $(SDIR)/axc_store.c $(SDIR)/axc_crypto.c $(TDIR)/test_store.c