From 246a4a98fb0966c75f4cb246741219126b70e3c2 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Tue, 23 May 2017 09:12:24 +0200 Subject: [PATCH] zeromq: added zmq-keygen as a new tool --- packaging/rpm/villas-node.spec | 1 + tools/Makefile.inc | 6 ++++ tools/zmq-keygen.c | 52 ++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 tools/zmq-keygen.c diff --git a/packaging/rpm/villas-node.spec b/packaging/rpm/villas-node.spec index c8879e636..58ec70c3d 100644 --- a/packaging/rpm/villas-node.spec +++ b/packaging/rpm/villas-node.spec @@ -57,6 +57,7 @@ rm -rf %{?buildroot} /usr/bin/villas /usr/bin/villas-* /usr/bin/conf2json +/usr/bin/zmq-keygen /usr/lib/libvillas.so /usr/lib/libvillas.so.* diff --git a/tools/Makefile.inc b/tools/Makefile.inc index 534d34c6e..6f2392176 100644 --- a/tools/Makefile.inc +++ b/tools/Makefile.inc @@ -26,6 +26,12 @@ TOOLS_CFLAGS = $(CFLAGS) TOOLS_LDLIBS = -lconfig -ljansson -lvillas TOOLS_LDFLAGS = $(LDFLAGS) -Wl,-rpath,'$$ORIGIN' +ifeq ($(shell $(PKGCONFIG) libzmq; echo $$?),0) + TOOLS += $(BUILDDIR)/zmq-keygen + TOOLS_CFLAGS += $(shell $(PKGCONFIG) --cflags libzmq) + TOOLS_LDLIBS += $(shell $(PKGCONFIG) --libs libzmq) +endif + # Compile executable objects $(BUILDDIR)/tools/%.o: tools/%.c $(BUILDDIR)/defines | $$(dir $$@) $(CC) $(TOOLS_CFLAGS) -c $< -o $@ diff --git a/tools/zmq-keygen.c b/tools/zmq-keygen.c new file mode 100644 index 000000000..0984abb54 --- /dev/null +++ b/tools/zmq-keygen.c @@ -0,0 +1,52 @@ +/* + Copyright (c) 2007-2016 Contributors as noted in the AUTHORS file + + This file is part of libzmq, the ZeroMQ core engine in C++. + + libzmq is free software; you can redistribute it and/or modify it under + the terms of the GNU Lesser General Public License (LGPL) as published + by the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + As a special exception, the Contributors give you permission to link + this library with independent modules to produce an executable, + regardless of the license terms of these independent modules, and to + copy and distribute the resulting executable under terms of your choice, + provided that you also meet, for each linked independent module, the + terms and conditions of the license of that module. An independent + module is a module which is not derived from or based on this library. + If you modify this library, you must extend this exception to your + version of the library. + + libzmq is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program. If not, see . +*/ + +#include +#include +#include + +int main (int argc, char *argv[]) +{ + char public_key [41]; + char secret_key [41]; + if (zmq_curve_keypair(public_key, secret_key)) { + if (zmq_errno() == ENOTSUP) + printf("To use %s, please install libsodium and then rebuild libzmq.", argv[0]); + + exit (EXIT_FAILURE); + } + + printf("# Copy these lines to your 'zeromq' node-configuration\n"); + printf("curve = {\n"); + printf("\tpublic_key = \"%s\";\n", public_key); + printf("\tsecret_key = \"%s\";\n", secret_key); + printf("}\n"); + + exit (0); +} \ No newline at end of file