#!/bin/sh set -e PREREQ="cryptroot" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # Hooks for loading smartcard reading software into the initramfs # Check whether cryptroot hook has installed decrypt_opensc script if [ ! -x ${DESTDIR}/keyscripts/decrypt_opensc ] ; then exit 0 fi # Install cryptroot key files into initramfs keys=$(sed 's/^\(.*,\|\)key=//; s/,.*//' ${DESTDIR}/conf/conf.d/cryptroot) if [ "${keys}" != "none" ]; then if [ -z "${keys}" ]; then echo $0: Missing key files in ${DESTDIR}/conf/conf.d/cryptroot >&2 cat ${DESTDIR}/conf/conf.d/cryptroot >&2 exit 1 fi for key in ${keys} ; do if [ ! -d ${DESTDIR}/$(dirname ${key}) ] ; then mkdir -p ${DESTDIR}/$(dirname ${key}) fi cp ${key} ${DESTDIR}/${key} done fi # Install directories needed by smartcard reading daemon, command, and # key-script for dir in etc/opensc usr/lib/pcsc var/run tmp ; do if [ ! -d ${DESTDIR}/${dir} ] ; then mkdir -p ${DESTDIR}/${dir} ; fi done # Install pcscd daemon, drivers, conf file, and include libgcc as well since # pcscd utilizes pthread_cancel copy_exec /usr/sbin/pcscd cp -r /usr/lib/pcsc ${DESTDIR}/usr/lib cp /etc/reader.conf ${DESTDIR}/etc # Install opensc commands and conf file copy_exec /usr/bin/opensc-tool copy_exec /usr/bin/pkcs15-crypt cp /etc/opensc/opensc.conf ${DESTDIR}/etc/opensc