OpenWrt – Rev 4

Subversion Repositories:
Rev:
#!/bin/sh

usage() {
        cat <<EOF
Usage: $0 <command> <arguments...>
Commands:
  add <file>:                   Add keyfile <file> to opkg trusted keys
  remove <file>:                Remove keyfile matching <file> from opkg trusted keys
  verify <sigfile> <list>:      Check list file <list> against signature file <sigfile>

EOF
        exit 1
}

opkg_key_verify() {
        local sigfile="$1"
        local msgfile="$2"

        (
                zcat "$msgfile" 2>/dev/null ||
                cat "$msgfile" 2>/dev/null
        ) | usign -V -P /etc/opkg/keys -q -x "$sigfile" -m -
}

opkg_key_add() {
        local key="$1"
        [ -n "$key" ] || usage
        [ -f "$key" ] || echo "Cannot open file $1"
        local fingerprint="$(usign -F -p "$key")"
        mkdir -p "/etc/opkg/keys"
        cp "$key" "/etc/opkg/keys/$fingerprint"
}

opkg_key_remove() {
        local key="$1"
        [ -n "$key" ] || usage
        [ -f "$key" ] || echo "Cannot open file $1"
        local fingerprint="$(usign -F -p "$key")"
        rm -f "/etc/opkg/keys/$fingerprint"
}

case "$1" in
        add)
                shift
                opkg_key_add "$@"
                ;;
        remove)
                shift
                opkg_key_remove "$@"
                ;;
        verify)
                shift
                opkg_key_verify "$@"
                ;;
        *) usage ;;
esac