summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2017-12-03 10:49:12 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2017-12-03 20:32:15 +0100
commitff8d2195228bbd9556e050124ce1ad32337bc772 (patch)
tree0a9db601c755fb93f3ccb6869462b90e62fc8091
parent752a21f88e2bea8e4bfaf2690fabf3868c4a6d52 (diff)
downloadgnutls-ff8d2195228bbd9556e050124ce1ad32337bc772.tar.gz
tests: p11-kit-load.sh: verify that all modules are loaded after a private key operation
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rwxr-xr-xtests/destructive/p11-kit-load.sh16
-rw-r--r--tests/pkcs11/list-tokens.c10
2 files changed, 23 insertions, 3 deletions
diff --git a/tests/destructive/p11-kit-load.sh b/tests/destructive/p11-kit-load.sh
index 92e9045c2c..d961aa55be 100755
--- a/tests/destructive/p11-kit-load.sh
+++ b/tests/destructive/p11-kit-load.sh
@@ -38,7 +38,7 @@ for lib in ${libdir} ${libdir}/pkcs11 /usr/lib64/pkcs11/ /usr/lib/pkcs11/ /usr/l
fi
done
-for lib in ${libdir} ${libdir}/pkcs11 /usr/lib64/pkcs11/ /usr/lib/pkcs11/ /usr/lib/x86_64-linux-gnu/pkcs11/;do
+for lib in ${libdir} ${libdir}/pkcs11 /usr/lib64/pkcs11/ /usr/lib/pkcs11/ /usr/lib/x86_64-linux-gnu/pkcs11/ /usr/lib/softhsm/;do
if test -f "${lib}/libsofthsm2.so"; then
SOFTHSM_MODULE="${lib}/libsofthsm2.so"
echo "located ${MODULE}"
@@ -66,6 +66,10 @@ fi
# Create pkcs11.conf with two modules, a trusted (p11-kit-trust)
# and softhsm (not trusted)
DIR=$(${PKGCONFIG} --var=p11_system_config_modules p11-kit-1)
+if test $? != 0 || test -z ${DIR} || test ${DIR} = '/';then
+ echo "Cannot determine p11-kit module config directory"
+ exit 1
+fi
mkdir -p ${TMPDIR}
cp ${DIR}/* ${TMPDIR}
@@ -167,7 +171,15 @@ fi
nr=$(${builddir}/pkcs11/list-tokens -v -d|${FILTERTOKEN}|sort -u|wc -l)
if test "$nr" != 2;then
echo "Error in test 6: did not find all modules"
- ${builddir}/pkcs11/list-tokens -v
+ ${builddir}/pkcs11/list-tokens -v -d
+ exit 1
+fi
+
+# Check whether all modules are listed after a private key operation.
+nr=$(${builddir}/pkcs11/list-tokens -p|${FILTERTOKEN}|sort -u|wc -l)
+if test "$nr" != 2;then
+ echo "Error in test 7: did not find all modules"
+ ${builddir}/pkcs11/list-tokens -p
exit 1
fi
diff --git a/tests/pkcs11/list-tokens.c b/tests/pkcs11/list-tokens.c
index 6929b2381b..cc4326d901 100644
--- a/tests/pkcs11/list-tokens.c
+++ b/tests/pkcs11/list-tokens.c
@@ -58,7 +58,9 @@ int main(int argc, char **argv)
char *url;
gnutls_x509_trust_list_t tl;
gnutls_x509_crt_t crt;
+ gnutls_pkcs11_privkey_t key;
unsigned flag = 1;
+ unsigned private = 0;
unsigned int status;
ret = gnutls_global_init();
@@ -70,7 +72,7 @@ int main(int argc, char **argv)
gnutls_global_set_log_function(tls_log_func);
//gnutls_global_set_log_level(4711);
- while((opt = getopt(argc, argv, "mvatd")) != -1) {
+ while((opt = getopt(argc, argv, "mvatdp")) != -1) {
switch(opt) {
case 'm':
/* initialize manually - i.e., do no module loading */
@@ -85,6 +87,12 @@ int main(int argc, char **argv)
* if none done */
flag = 0;
break;
+ case 'p':
+ /* do private key operations */
+ assert(gnutls_pkcs11_privkey_init(&key) >= 0);
+ gnutls_pkcs11_privkey_import_url(key, "pkcs11:", 0);
+ gnutls_pkcs11_privkey_deinit(key);
+ break;
case 'a':
/* initialize auto - i.e., do module loading */
ret = gnutls_pkcs11_init(GNUTLS_PKCS11_FLAG_AUTO, NULL);