#!/bin/sh

HOMEDIR="~/.gnupg"
STATUS_FD=""

while [ $# -gt 2 ]; do
    case "$1" in
        --homedir)
            HOMEDIR="$2"
            shift 2
            ;;
        --keyring)
            KEYRING="$2"
            shift 2
            ;;
        --status-fd)
            STATUS_FD="$2"
            shift 2
            ;;
        *)
            shift
            ;;
    esac
done

FPR=$(/usr/bin/sqv --keyring "$KEYRING" $@)
if [ $? -eq 0 ]; then
    if [ -n "$STATUS_FD" ]; then
        # Retrieve KeyID and Username from keyring
        # Start by splitting the keyring, creating one file per public key, which contains at least:
        #    Public-Key Packet, old CTB, 525 bytes
        #        Version: 4
        #        Creation time: 2014-12-02 16:01:02 UTC
        #        Pk algo: RSA (Encrypt or Sign)
        #        Pk size: 4096 bits
        #        Fingerprint: ECC62BB26DA73EE2DDA9B85FF5022C4EEB5691FC
        #        KeyID: F5022C4EEB5691FC
        #
        #    User ID Packet, old CTB, 67 bytes
        #        Value: Apertis Archive Automatic Signing Key <packagers@lists.apertis.org>
        sq packet dump "$KEYRING" | csplit --quiet --elide-empty-files --prefix="$HOMEDIR/keyring." - "/^Public-Key Packet/" '{*}'
        KEYFILE="$(grep -l "$FPR" "$HOMEDIR"/keyring.*)"
        KEYID="$(grep KeyID "$KEYFILE" | sed 's/^ *KeyID: //')"
        USERNAME="$(grep Value "$KEYFILE" | sed 's/^ *Value: //')"

        echo "[GNUPG:] GOODSIG $KEYID $USERNAME" >&${STATUS_FD}
        echo "[GNUPG:] VALIDSIG $FPR 1970-01-01 0 0 4 0 1 10 00 $FPR" >&${STATUS_FD}
    fi
    exit 0
fi

exit 1