summaryrefslogtreecommitdiff
path: root/add-apt-key
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2008-03-20 10:41:15 +0000
committerJonas Smedegaard <dr@jones.dk>2008-03-20 10:41:15 +0000
commit8c9ecea6139667e5d9fc8c9c5a2b1720a1f9d9cb (patch)
tree04d7f1b626c45880846a78a475acd00eab1fe136 /add-apt-key
parent2d946b51b50a3b0b29439c009b1440804dad4372 (diff)
New script to add keys to APT.
Diffstat (limited to 'add-apt-key')
-rwxr-xr-xadd-apt-key78
1 files changed, 78 insertions, 0 deletions
diff --git a/add-apt-key b/add-apt-key
new file mode 100755
index 0000000..7a523a0
--- /dev/null
+++ b/add-apt-key
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Author: Tom Marble <tom.marble@sun.com>
+# License: GPLv2
+# Origin: https://add-apt-key.dev.java.net/
+
+PROGRAM=add-apt-key
+# KEYSERVER=pgp.mit.edu
+KEYSERVER=subkeys.pgp.net
+verbose=""
+
+error () {
+ local err="$1"
+ shift
+ echo "$*"
+ exit $err
+}
+
+usage () {
+ rv=$1
+ cat >&2 <<EOF
+usage: $PROGRAM [-h|--help] [-v|--verbose] [-k|--keyserver name] key-id
+EOF
+ exit $rv
+}
+
+vecho () {
+ [ -z "$verbose" ] || echo >&2 "$@"
+}
+
+vcmd () {
+ vecho $*
+ $*
+}
+
+if [ -x /usr/bin/id ] && [ `id -u` -ne 0 ]; then
+ error 1 "$PROGRAM can only run as root"
+fi
+
+if [ -e /etc/default/add-apt-key ]; then
+ . /etc/default/add-apt-key
+fi
+
+keyid=""
+while [ "$#" -gt 0 ]; do
+ case "$1" in
+ -v|--verbose)
+ verbose=yes;;
+ -h|--help)
+ usage 0;;
+ -k|--keyserver)
+ [ "$#" -gt 1 ] || usage 1
+ KEYSERVER=$2
+ shift;;
+ -*)
+ usage 1;;
+ *)
+ [ -z "$keyid" ] || usage 1
+ keyid="$1"
+ ;;
+ esac
+ shift
+done
+
+[ "$#" -eq 0 ] || usage 1
+[ -n "$keyid" ] || usage 1
+
+vecho "requesting key $keyid from $KEYSERVER ..."
+vcmd gpg --keyserver $KEYSERVER --recv-keys $keyid
+[ "$?" -eq 0 ] || error 3 "key $keyid not found"
+
+vecho "adding $keyid to APT key ring ..."
+vcmd gpg --armor --export $keyid | apt-key add -
+[ "$?" -eq 0 ] || error 4 "unable to add key $keyid to apt-key ring"
+
+vecho "done"
+
+exit 0