| #!/bin/sh |
| set -u -e |
| |
| TOKEN_DIR=softhsm2.d |
| |
| if [ -e library/aes.c ]; then |
| TOPDIR="$PWD" |
| elif [ -e ../library/aes.c ]; then |
| TOPDIR="${PWD%/*}" |
| elif [ -e ../../library/aes.c ]; then |
| TOPDIR="${PWD%/*/*}" |
| elif [ -e ../../../library/aes.c ]; then |
| TOPDIR="${PWD%/*/*/*}" |
| else |
| unset TOPDIR |
| fi |
| if [ -n "${TOPDIR+1}" ] && |
| make -C "$TOPDIR/programs" util/syslog2stderr.so >/dev/null 2>&1 |
| then |
| case $(uname) in |
| Darwin) |
| export DYLD_PRELOAD="${DYLD_PRELOAD-}:$TOPDIR/programs/util/syslog2stderr.so";; |
| *) |
| export LD_PRELOAD="${LD_PRELOAD-}:$TOPDIR/programs/util/syslog2stderr.so";; |
| esac |
| fi |
| |
| # softhsm2_find_token LABEL |
| softhsm2_find_token () { |
| softhsm2-util --show-slots | awk -v label="$1" ' |
| $1 == "Slot" && $2 ~ /^[0-9]+$/ {slot = $2} |
| $1 == "Label:" && $2 == label {print slot; found=1; exit} |
| END {exit(!found)} |
| ' |
| } |
| |
| # softhsm2_create_token LABEL |
| softhsm2_create_token () { |
| softhsm2_find_token "$1" || { |
| softhsm2-util --init-token --free --so-pin 0000 --pin 0000 --label "$1" && |
| softhsm2_find_token "$1" |
| } |
| } |
| |
| softhsm2_init () { |
| test -d "$TOKEN_DIR" || mkdir "$TOKEN_DIR" |
| scratch_token=$(softhsm2_create_token "scratch") |
| } |
| |
| case $1 in |
| find_slot) softhsm2_find_token "$2";; |
| init) softhsm2_init;; |
| *) echo >&2 "$0: Unknown command: $1"; exit 120;; |
| esac |