Andrzej Kurek | 753b86c | 2018-01-23 08:56:17 -0500 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | set -u -e |
| 3 | |
| 4 | TOKEN_DIR=softhsm2.d |
| 5 | |
| 6 | if [ -e library/aes.c ]; then |
| 7 | TOPDIR="$PWD" |
| 8 | elif [ -e ../library/aes.c ]; then |
| 9 | TOPDIR="${PWD%/*}" |
| 10 | elif [ -e ../../library/aes.c ]; then |
| 11 | TOPDIR="${PWD%/*/*}" |
| 12 | elif [ -e ../../../library/aes.c ]; then |
| 13 | TOPDIR="${PWD%/*/*/*}" |
| 14 | else |
| 15 | unset TOPDIR |
| 16 | fi |
| 17 | if [ -n "${TOPDIR+1}" ] && |
| 18 | make -C "$TOPDIR/programs" util/syslog2stderr.so >/dev/null 2>&1 |
| 19 | then |
| 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 |
| 26 | fi |
| 27 | |
| 28 | # softhsm2_find_token LABEL |
| 29 | softhsm2_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 |
| 38 | softhsm2_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 | |
| 45 | softhsm2_init () { |
| 46 | test -d "$TOKEN_DIR" || mkdir "$TOKEN_DIR" |
| 47 | scratch_token=$(softhsm2_create_token "scratch") |
| 48 | } |
| 49 | |
| 50 | case $1 in |
| 51 | find_slot) softhsm2_find_token "$2";; |
| 52 | init) softhsm2_init;; |
| 53 | *) echo >&2 "$0: Unknown command: $1"; exit 120;; |
| 54 | esac |