blob: aaf7d942710d841ca8fe5b0847a1cedf5394513c [file] [log] [blame]
Andrzej Kurek753b86c2018-01-23 08:56:17 -05001#!/bin/sh
2set -u -e
3
4TOKEN_DIR=softhsm2.d
5
6if [ -e library/aes.c ]; then
7 TOPDIR="$PWD"
8elif [ -e ../library/aes.c ]; then
9 TOPDIR="${PWD%/*}"
10elif [ -e ../../library/aes.c ]; then
11 TOPDIR="${PWD%/*/*}"
12elif [ -e ../../../library/aes.c ]; then
13 TOPDIR="${PWD%/*/*/*}"
14else
15 unset TOPDIR
16fi
17if [ -n "${TOPDIR+1}" ] &&
18 make -C "$TOPDIR/programs" util/syslog2stderr.so >/dev/null 2>&1
19then
20 case $(uname) in
21 Darwin)
22 export DYLD_PRELOAD="${DYLD_PRELOAD-}:$TOPDIR/programs/util/syslog2stderr.so";;
23 *)
24 export LD_PRELOAD="${LD_PRELOAD-}:$TOPDIR/programs/util/syslog2stderr.so";;
25 esac
26fi
27
28# softhsm2_find_token LABEL
29softhsm2_find_token () {
30 softhsm2-util --show-slots | awk -v label="$1" '
31 $1 == "Slot" && $2 ~ /^[0-9]+$/ {slot = $2}
32 $1 == "Label:" && $2 == label {print slot; found=1; exit}
33 END {exit(!found)}
34 '
35}
36
37# softhsm2_create_token LABEL
38softhsm2_create_token () {
39 softhsm2_find_token "$1" || {
40 softhsm2-util --init-token --free --so-pin 0000 --pin 0000 --label "$1" &&
41 softhsm2_find_token "$1"
42 }
43}
44
45softhsm2_init () {
46 test -d "$TOKEN_DIR" || mkdir "$TOKEN_DIR"
47 scratch_token=$(softhsm2_create_token "scratch")
48}
49
50case $1 in
51 find_slot) softhsm2_find_token "$2";;
52 init) softhsm2_init;;
53 *) echo >&2 "$0: Unknown command: $1"; exit 120;;
54esac