#!/bin/sh # Based on apt-key from apt-0.6.25 # Licensed under GPL Version 2 set -e usage() { echo "Usage: opkg-key [options] command [arguments]" echo echo "Manage opkg's list of trusted keys" echo echo "Commands and arguments:" echo " add - Add the key contained in ('-' for stdin)" echo " del - Remove the key " echo " list - List keys" echo " fingerprint - List keys with fingerprints" echo " reset - Remove all keys, resetting the keyring" echo " populate - Import keys from /usr/share/opkg/keyrings" echo " help - Print this usage message and exit" echo echo "Options:" echo " -o - Use as the offline root directory" echo } if [ "$1" = "-o" ]; then ROOT=$2 shift 2 echo "Note: using \"$ROOT\" as root path" else ROOT="" fi command="$1" if [ -z "$command" ]; then usage exit 1 fi shift if [ "$command" != "help" ] && ! which gpg >/dev/null 2>&1; then echo >&2 "Warning: gnupg does not seem to be installed." echo >&2 "Warning: opkg-key requires gnupg for most operations." echo >&2 fi # We don't use a secret keyring, of course, but gpg panics and # implodes if there isn't one available GPG="gpg --no-options --no-default-keyring --keyring $ROOT/etc/opkg/trusted.gpg --secret-keyring $ROOT/etc/opkg/secring.gpg --trustdb-name $ROOT/etc/opkg/trustdb.gpg" case "$command" in add) $GPG --quiet --batch --import "$1" echo "OK" ;; del|rm|remove) $GPG --quiet --batch --delete-key --yes "$1" echo "OK" ;; list) $GPG --batch --list-keys ;; finger*) $GPG --batch --fingerprint ;; adv*) echo "Executing: $GPG $*" $GPG $* ;; reset) rm -f $ROOT/etc/opkg/trusted.gpg $ROOT/etc/opkg/trusted.gpg~ rm -f $ROOT/etc/opkg/secring.gpg $ROOT/etc/opkg/secring.gpg~ rm -f $ROOT/etc/opkg/trustdb.gpg $ROOT/etc/opkg/trustdb.gpg~ echo "OK" ;; populate) for f in $ROOT/usr/share/opkg/keyrings/*.gpg; do echo "Importing keys from '`basename $f`'..." $GPG --quiet --batch --import "$f" done echo "OK" ;; help) usage ;; *) usage exit 1 ;; esac