Skip to content

Commit f4fd5e6

Browse files
committed
Report a failing PKCS#11 example instead of always exiting 0
1 parent ecee5f6 commit f4fd5e6

2 files changed

Lines changed: 94 additions & 23 deletions

File tree

pkcs11/softhsm2-init.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
cd "$(dirname "$0")"
6+
7+
./mksofthsm2_conf.sh
8+
SOFTHSM2_CONF="$PWD/softhsm2.conf"
9+
export SOFTHSM2_CONF
10+
11+
out=$(softhsm2-util --init-token --slot 0 --label SoftToken \
12+
--so-pin cryptoki --pin cryptoki)
13+
echo "$out"
14+
15+
# SoftHSM reassigns the token to a random slot, so the id cannot be hardcoded
16+
slotid=$(echo "$out" | sed -n 's/.*reassigned to slot \([0-9][0-9]*\).*/\1/p')
17+
if [ -z "$slotid" ]
18+
then
19+
echo "could not read the reassigned slot id from softhsm2-util" >&2
20+
exit 1
21+
fi
22+
23+
exec ./softhsm2.sh "$slotid" "$@"

pkcs11/softhsm2.sh

Lines changed: 71 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,79 @@
33
if [ $# -gt 0 ]
44
then
55
SOFTHSM2_SLOTID=$1
6+
shift
67
fi
78

9+
# the README builds SoftHSM from source into /usr/local, but a distro package
10+
# lands in /usr/lib; SOFTHSM2_LIB overrides both
11+
if [ -z "$SOFTHSM2_LIB" ]
12+
then
13+
for lib in /usr/local/lib/softhsm/libsofthsm2.so \
14+
/usr/lib/softhsm/libsofthsm2.so \
15+
/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so \
16+
/opt/homebrew/lib/softhsm/libsofthsm2.so
17+
do
18+
if [ -f "$lib" ]
19+
then
20+
SOFTHSM2_LIB=$lib
21+
break
22+
fi
23+
done
24+
fi
25+
26+
if [ ! -f "$SOFTHSM2_LIB" ]
27+
then
28+
echo "libsofthsm2.so not found, set SOFTHSM2_LIB to its path" >&2
29+
exit 1
30+
fi
31+
32+
if [ -z "$SOFTHSM2_SLOTID" ]
33+
then
34+
echo "no slot id, pass it as \$1 or set SOFTHSM2_SLOTID" >&2
35+
exit 1
36+
fi
37+
38+
rc=0
39+
40+
run_example()
41+
{
42+
name=$1
43+
shift
44+
echo
45+
echo "# $name"
46+
if ! "$@" "$SOFTHSM2_LIB" "$SOFTHSM2_SLOTID" SoftToken cryptoki
47+
then
48+
echo "# FAILED: $name"
49+
rc=1
50+
fi
51+
}
52+
853
echo "# Using slot ID: $SOFTHSM2_SLOTID"
54+
echo "# Using library: $SOFTHSM2_LIB"
55+
56+
if [ $# -gt 0 ]
57+
then
58+
for example in "$@"
59+
do
60+
run_example "$example" "./$example"
61+
done
62+
else
63+
run_example "RSA example" ./pkcs11_rsa
64+
run_example "ECC example" ./pkcs11_ecc
65+
run_example "Generate ECC example" ./pkcs11_genecc
66+
run_example "AES-GCM example" ./pkcs11_aesgcm
67+
run_example "AES-CBC example" ./pkcs11_aescbc
68+
run_example "HMAC example" ./pkcs11_hmac
69+
run_example "Random Number Generation example" ./pkcs11_rand
70+
run_example "PKCS#11 test" ./pkcs11_test
71+
fi
72+
973
echo
10-
echo "# RSA example"
11-
./pkcs11_rsa /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
12-
echo
13-
echo "# ECC example"
14-
./pkcs11_ecc /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
15-
echo
16-
echo "# Generate ECC example"
17-
./pkcs11_genecc /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
18-
echo
19-
echo "# AES-GCM example"
20-
./pkcs11_aesgcm /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
21-
echo
22-
echo "# AES-CBC example"
23-
./pkcs11_aescbc /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
24-
echo
25-
echo "# HMAC example"
26-
./pkcs11_hmac /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
27-
echo
28-
echo "# Random Number Generation example"
29-
./pkcs11_rand /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
30-
echo
31-
echo "# PKCS#11 test"
32-
./pkcs11_test /usr/local/lib/softhsm/libsofthsm2.so $SOFTHSM2_SLOTID SoftToken cryptoki
74+
if [ $rc -eq 0 ]
75+
then
76+
echo "# All PKCS#11 examples passed"
77+
else
78+
echo "# One or more PKCS#11 examples FAILED"
79+
fi
3380

81+
exit $rc

0 commit comments

Comments
 (0)