You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.0 KiB
56 lines
1.0 KiB
#!/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
|
|
|