#!/usr/bin/env bash

export REGDB_PRIVKEY="rapna.key.priv.pem"
export REGDB_PUBKEY="rapna.key.pub.pem"
export REGDB_PUBCERT="rapna.x509.pem"
export REGDB_AUTHOR="rapna"

post_src_prepare() {
    if [ -f "/etc/wireless-regdb/$REGDB_PRIVKEY" ]; then
        einfo "Found private distro key"
        cp "/etc/wireless-regdb/$REGDB_PRIVKEY" .

        if [ -f "/etc/wireless-regdb/certs/$REGDB_PUBCERT" ]; then
            einfo "Found distro certificate"
            cp "/etc/wireless-regdb/certs/$REGDB_PUBCERT" .
        fi
    fi
}

post_src_compile() {
    if [ -f $REGDB_PRIVKEY ]; then
        einfo "Using private host key for signing"
    else
        einfo "Generate private host key for signing"
        make $REGDB_PRIVKEY
    fi

    if [ -f $REGDB_PUBCERT ]; then
        einfo "Using distro certificate for signing"
    else
        einfo "Generate distro certficiate host key for signing"
        openssl req -new -key "$REGDB_PRIVKEY" -days 36500 -utf8 -nodes -batch \
            -x509 -outform PEM -out "$REGDB_PUBCERT" \
            -config <(cat <<-EOF
                [ req ]
                distinguished_name = req_distinguished_name
                string_mask = utf8only
                prompt = no
                [ req_distinguished_name ]
                commonName = $REGDB_AUTHOR
EOF
            )
    fi

    make sha1sum.txt
    make regulatory.bin
    make regulatory.db
    make regulatory.db.p7s
}

post_src_install() {
    if [ -f $REGDB_PUBKEY ]; then
        einfo "Install public key for signed regulatory.bin"
        insinto /etc/wireless-regdb/pubkeys
        doins $REGDB_PUBKEY
    fi

    if [ -f $REGDB_PRIVKEY ]; then
        einfo "Install private distro key"
        insinto "/etc/wireless-regdb"
        doins $REGDB_PRIVKEY
    fi

    if [ -f $REGDB_PUBCERT ]; then
        einfo "Install distro certificate"
        insinto "/etc/wireless-regdb/certs"
        doins $REGDB_PUBCERT
    fi
}
