#!/bin/bash
# vim: set tabstop=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80:
#
# Copyright (c) 2016 Red Hat, Inc.
# Author: Nathaniel McCallum <npmccallum@redhat.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

check() {
    require_binaries clevis-decrypt-tpm2 || return 1

    if command -v clevis-pin-tpm2 >/dev/null;
    then
        require_binaries clevis-pin-tpm2 || return 1
    else
        require_binaries tpm2_createprimary tpm2_flushcontext \
                           tpm2_load tpm2_unseal tpm2_getcap || return 1
        require_any_binary tpm2_pcrread tpm2_pcrlist || return 1
    fi
    return 0
}

depends() {
    echo clevis
    return 0
}

install_tpm2_tools() {
    inst_multiple tpm2_createprimary tpm2_flushcontext \
        tpm2_load tpm2_unseal tpm2_getcap
    inst_multiple -o tpm2_pcrread tpm2_pcrlist
}

install() {
    inst_multiple clevis-decrypt-tpm2
    inst_libdir_file "libtss2-tcti-device.so*"
    if command -v clevis-pin-tpm2 >/dev/null;
    then
        inst_multiple clevis-pin-tpm2
    else
        install_tpm2_tools
    fi
}

installkernel() {
    hostonly='' instmods =drivers/char/tpm
}
