summaryrefslogtreecommitdiff
path: root/add-apt-key
blob: 7a523a0c7ae1f9f2b50976706d2a12ff6da652ed (plain)
  1. #!/bin/sh
  2. # Author: Tom Marble <tom.marble@sun.com>
  3. # License: GPLv2
  4. # Origin: https://add-apt-key.dev.java.net/
  5. PROGRAM=add-apt-key
  6. # KEYSERVER=pgp.mit.edu
  7. KEYSERVER=subkeys.pgp.net
  8. verbose=""
  9. error () {
  10. local err="$1"
  11. shift
  12. echo "$*"
  13. exit $err
  14. }
  15. usage () {
  16. rv=$1
  17. cat >&2 <<EOF
  18. usage: $PROGRAM [-h|--help] [-v|--verbose] [-k|--keyserver name] key-id
  19. EOF
  20. exit $rv
  21. }
  22. vecho () {
  23. [ -z "$verbose" ] || echo >&2 "$@"
  24. }
  25. vcmd () {
  26. vecho $*
  27. $*
  28. }
  29. if [ -x /usr/bin/id ] && [ `id -u` -ne 0 ]; then
  30. error 1 "$PROGRAM can only run as root"
  31. fi
  32. if [ -e /etc/default/add-apt-key ]; then
  33. . /etc/default/add-apt-key
  34. fi
  35. keyid=""
  36. while [ "$#" -gt 0 ]; do
  37. case "$1" in
  38. -v|--verbose)
  39. verbose=yes;;
  40. -h|--help)
  41. usage 0;;
  42. -k|--keyserver)
  43. [ "$#" -gt 1 ] || usage 1
  44. KEYSERVER=$2
  45. shift;;
  46. -*)
  47. usage 1;;
  48. *)
  49. [ -z "$keyid" ] || usage 1
  50. keyid="$1"
  51. ;;
  52. esac
  53. shift
  54. done
  55. [ "$#" -eq 0 ] || usage 1
  56. [ -n "$keyid" ] || usage 1
  57. vecho "requesting key $keyid from $KEYSERVER ..."
  58. vcmd gpg --keyserver $KEYSERVER --recv-keys $keyid
  59. [ "$?" -eq 0 ] || error 3 "key $keyid not found"
  60. vecho "adding $keyid to APT key ring ..."
  61. vcmd gpg --armor --export $keyid | apt-key add -
  62. [ "$?" -eq 0 ] || error 4 "unable to add key $keyid to apt-key ring"
  63. vecho "done"
  64. exit 0