mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
zkey: Add library versioning for libekmfweb and zkey-ekmfweb
Closes: https://github.com/ibm-s390-tools/s390-tools/issues/93 Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com> Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
committed by
Jan Höppner
parent
f2cc871b02
commit
8a58389e2f
+15
-7
@@ -1,5 +1,8 @@
|
||||
include ../../common.mak
|
||||
|
||||
VERSION = 1.0
|
||||
VERM = $(shell echo $(VERSION) | cut -d '.' -f 1)
|
||||
|
||||
all: zkey-ekmfweb.so
|
||||
|
||||
libs = $(rootdir)/libutil/libutil.a
|
||||
@@ -8,7 +11,7 @@ export LIBRARY_PATH = $(rootdir)/libekmfweb:$LIBRARY_PATH
|
||||
|
||||
zkey-ekmfweb.o: zkey-ekmfweb.c zkey-ekmfweb.h ../kms-plugin.h \
|
||||
../cca.h ../utils.h ../pkey.h ../properties.h \
|
||||
$(rootdir)include/ekmfweb/ekmfweb.h $(rootdir)/libekmfweb/libekmfweb.so
|
||||
$(rootdir)include/ekmfweb/ekmfweb.h libekmfweb.dep
|
||||
|
||||
properties.o: ../properties.c ../properties.h
|
||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -fPIC -c $< -o $@
|
||||
@@ -26,9 +29,9 @@ utils.o: ../utils.c ../utils.h ../pkey.h ../cca.h ../ep11.h
|
||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -fPIC -c $< -o $@
|
||||
|
||||
zkey-ekmfweb.so: ALL_CFLAGS += -fPIC
|
||||
zkey-ekmfweb.so: LDLIBS = -lekmfweb -ldl -lcrypto -shared
|
||||
zkey-ekmfweb.so: LDFLAGS = -shared -Wl,--version-script=zkey-ekmfweb.map \
|
||||
-Wl,-z,defs,-Bsymbolic
|
||||
zkey-ekmfweb.so: LDLIBS = -lekmfweb -ldl -lcrypto
|
||||
zkey-ekmfweb.so: ALL_LDFLAGS += -shared -Wl,--version-script=zkey-ekmfweb.map \
|
||||
-Wl,-z,defs,-Bsymbolic -Wl,-soname,zkey-ekmfweb.so.$(VERM)
|
||||
zkey-ekmfweb.so: zkey-ekmfweb.o properties.o pkey.o cca.o ep11.o utils.o $(libs)
|
||||
$(LINK) $(ALL_LDFLAGS) $^ $(LDLIBS) -o $@
|
||||
|
||||
@@ -36,13 +39,18 @@ install-libekmfweb.dep:
|
||||
$(MAKE) -C $(rootdir)/libekmfweb/ TOPDIR=$(TOPDIR) ARCH=$(ARCH) install
|
||||
touch install-libekmfweb.dep
|
||||
|
||||
libekmfweb.dep:
|
||||
$(MAKE) -C $(rootdir)/libekmfweb/ TOPDIR=$(TOPDIR) ARCH=$(ARCH) all
|
||||
touch libekmfweb.dep
|
||||
|
||||
install: all install-libekmfweb.dep zkey-ekmfweb.so
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(MANDIR)/man1
|
||||
$(INSTALL) -m 644 -c zkey-ekmfweb.1 $(DESTDIR)$(MANDIR)/man1
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(LIB64DIR)
|
||||
$(INSTALL) -g $(GROUP) -o $(OWNER) -m 755 -T zkey-ekmfweb.so $(DESTDIR)$(LIB64DIR)/zkey-ekmfweb.so
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(USRLIB64DIR)
|
||||
$(INSTALL) -d -m 755 $(DESTDIR)$(USRLIB64DIR)/zkey
|
||||
$(INSTALL) -g $(GROUP) -o $(OWNER) -m 755 -T zkey-ekmfweb.so $(DESTDIR)$(USRLIB64DIR)/zkey/zkey-ekmfweb.so
|
||||
|
||||
clean:
|
||||
rm -f *.o zkey-ekmfweb.so install-libekmfweb.dep
|
||||
rm -f *.o zkey-ekmfweb.so install-libekmfweb.dep libekmfweb.dep
|
||||
|
||||
.PHONY: all install clean
|
||||
+23
-10
@@ -40,6 +40,7 @@
|
||||
|
||||
#define ENVVAR_ZKEY_KMS_PLUGINS "ZKEY_KMS_PLUGINS"
|
||||
#define DEFAULT_KMS_PLUGINS "/etc/zkey/kms-plugins.conf"
|
||||
#define KMS_PLUGIN_LOCATION "/usr/lib64/zkey"
|
||||
|
||||
#define KMS_CONFIG_FILE "kms.conf"
|
||||
#define KMS_CONFIG_PROP_KMS "kms"
|
||||
@@ -209,6 +210,7 @@ static int load_kms_plugin(const char *plugin,
|
||||
void **plugin_lib, char **plugin_name, bool verbose)
|
||||
{
|
||||
kms_get_functions_t _kms_get_functions;
|
||||
char load_so_name[PATH_MAX];
|
||||
char *so_name = NULL;
|
||||
FILE *fp = NULL;
|
||||
char line[4096];
|
||||
@@ -258,15 +260,26 @@ static int load_kms_plugin(const char *plugin,
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Try to load via LD_LIBRARY_PATH first */
|
||||
snprintf(load_so_name, sizeof(load_so_name), "%s", so_name);
|
||||
pr_verbose(verbose, "Loading KMS plugin '%s': '%s'", *plugin_name,
|
||||
so_name);
|
||||
*plugin_lib = dlopen(so_name, RTLD_GLOBAL | RTLD_NOW);
|
||||
load_so_name);
|
||||
*plugin_lib = dlopen(load_so_name, RTLD_GLOBAL | RTLD_NOW);
|
||||
if (*plugin_lib == NULL) {
|
||||
pr_verbose(verbose, "%s", dlerror());
|
||||
warnx("Failed to load KMS plugin '%s': '%s'", *plugin_name,
|
||||
so_name);
|
||||
rc = -ELIBACC;
|
||||
goto out;
|
||||
/* Try to load from default plugin location */
|
||||
snprintf(load_so_name, sizeof(load_so_name), "%s/%s",
|
||||
KMS_PLUGIN_LOCATION, so_name);
|
||||
pr_verbose(verbose, "Loading KMS plugin '%s': '%s'",
|
||||
*plugin_name, load_so_name);
|
||||
|
||||
*plugin_lib = dlopen(load_so_name, RTLD_GLOBAL | RTLD_NOW);
|
||||
if (*plugin_lib == NULL) {
|
||||
pr_verbose(verbose, "%s", dlerror());
|
||||
warnx("Failed to load KMS plugin '%s': '%s'",
|
||||
*plugin_name, load_so_name);
|
||||
rc = -ELIBACC;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
_kms_get_functions = (kms_get_functions_t)dlsym(*plugin_lib,
|
||||
@@ -274,7 +287,7 @@ static int load_kms_plugin(const char *plugin,
|
||||
if (_kms_get_functions == NULL) {
|
||||
pr_verbose(verbose, "%s", dlerror());
|
||||
warnx("Failed to load KMS plugin '%s': '%s'", *plugin_name,
|
||||
so_name);
|
||||
load_so_name);
|
||||
rc = -ELIBACC;
|
||||
goto out;
|
||||
}
|
||||
@@ -283,13 +296,13 @@ static int load_kms_plugin(const char *plugin,
|
||||
if (*kms_functions == NULL) {
|
||||
pr_verbose(verbose, "kms_get_functions() reutned NULL");
|
||||
warnx("Failed to load KMS plugin '%s': '%s'", *plugin_name,
|
||||
so_name);
|
||||
load_so_name);
|
||||
rc = -ELIBACC;
|
||||
goto out;
|
||||
}
|
||||
|
||||
pr_verbose(verbose, "Successfully loaded KMS plugin '%s': '%s' (API "
|
||||
"version: %u)", *plugin_name, so_name,
|
||||
"version: %u)", *plugin_name, load_so_name,
|
||||
(*kms_functions)->api_version);
|
||||
|
||||
out:
|
||||
|
||||
Reference in New Issue
Block a user