From 8c17a79797d01f9d37a8979f5c8b11a9f5dfb6d5 Mon Sep 17 00:00:00 2001 From: Norbert Pocs Date: Tue, 4 Oct 2022 16:54:24 +0200 Subject: [PATCH] Fix libsofthsm.so path detection libsofthsm detection is broken in i686 architecture. The approach is to export the path found by cmake to `tests_config.h` and the script setup-softhsm-tokens.sh gets that value through cli parameters. Signed-off-by: Norbert Pocs Reviewed-by: Jakub Jelen (cherry picked from commit 50713d8ab1420a8267dffc342b00a355c3a74c54) --- tests/pkcs11/setup-softhsm-tokens.sh | 7 ++++--- tests/tests_config.h.cmake | 1 + tests/torture.c | 8 ++++++-- tests/torture.h | 2 ++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/pkcs11/setup-softhsm-tokens.sh b/tests/pkcs11/setup-softhsm-tokens.sh index 8ad8b4e6..5cef2527 100755 --- a/tests/pkcs11/setup-softhsm-tokens.sh +++ b/tests/pkcs11/setup-softhsm-tokens.sh @@ -6,7 +6,8 @@ TESTDIR=$1 PRIVKEY=$2 OBJNAME=$3 LOADPUBLIC=$4 -shift 4 +LIBSOFTHSM_PATH=$5 +shift 5 PUBKEY="$PRIVKEY.pub" @@ -42,7 +43,7 @@ if [ $ret -ne 0 ]; then fi #load private key -cmd='p11tool --provider /usr/lib64/pkcs11/libsofthsm2.so --write --load-privkey "$PRIVKEY" --label "$OBJNAME" --login --set-pin=1234 "pkcs11:token="$OBJNAME""' +cmd='p11tool --provider $LIBSOFTHSM_PATH --write --load-privkey "$PRIVKEY" --label "$OBJNAME" --login --set-pin=1234 "pkcs11:token="$OBJNAME""' eval echo "$cmd" out=$(eval $cmd) ret=$? @@ -58,7 +59,7 @@ ls -l $TESTDIR if [ $LOADPUBLIC -ne 0 ]; then #load public key - cmd='p11tool --provider /usr/lib64/pkcs11/libsofthsm2.so --write --load-pubkey "$PUBKEY" --label "$OBJNAME" --login --set-pin=1234 "pkcs11:token="$OBJNAME""' + cmd='p11tool --provider $LIBSOFTHSM_PATH --write --load-pubkey "$PUBKEY" --label "$OBJNAME" --login --set-pin=1234 "pkcs11:token="$OBJNAME""' eval echo "$cmd" out=$(eval $cmd) ret=$? diff --git a/tests/tests_config.h.cmake b/tests/tests_config.h.cmake index b162db75..a8147c44 100644 --- a/tests/tests_config.h.cmake +++ b/tests/tests_config.h.cmake @@ -69,3 +69,4 @@ #cmakedefine SSH_EXECUTABLE "${SSH_EXECUTABLE}" #cmakedefine WITH_TIMEOUT ${WITH_TIMEOUT} #cmakedefine TIMEOUT_EXECUTABLE "${TIMEOUT_EXECUTABLE}" +#cmakedefine SOFTHSM2_LIBRARY "${SOFTHSM2_LIBRARY}" diff --git a/tests/torture.c b/tests/torture.c index f5a6bcc7..6b2d5b7b 100644 --- a/tests/torture.c +++ b/tests/torture.c @@ -1231,6 +1231,7 @@ void torture_teardown_sshd_server(void **state) } #endif /* SSHD_EXECUTABLE */ +#ifdef WITH_PKCS11_URI void torture_setup_tokens(const char *temp_dir, const char *filename, const char object_name[], @@ -1240,15 +1241,18 @@ void torture_setup_tokens(const char *temp_dir, int rc; snprintf(token_setup_start_cmd, sizeof(token_setup_start_cmd), - "%s/tests/pkcs11/setup-softhsm-tokens.sh %s %s %s %s", + "%s/tests/pkcs11/setup-softhsm-tokens.sh %s %s %s %s %s", BINARYDIR, temp_dir, filename, - object_name, load_public); + object_name, + load_public, + SOFTHSM2_LIBRARY); rc = system(token_setup_start_cmd); assert_return_code(rc, errno); } +#endif /* WITH_PKCS11_URI */ char *torture_make_temp_dir(const char *template) { diff --git a/tests/torture.h b/tests/torture.h index 67c249a3..498acf60 100644 --- a/tests/torture.h +++ b/tests/torture.h @@ -130,10 +130,12 @@ void torture_teardown_sshd_server(void **state); int torture_update_sshd_config(void **state, const char *config); #endif /* SSHD_EXECUTABLE */ +#ifdef WITH_PKCS11_URI void torture_setup_tokens(const char *temp_dir, const char *filename, const char object_name[], const char *load_public); +#endif /* WITH_PKCS11_URI */ void torture_reset_config(ssh_session session);