apt-key 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/bin/sh
  2. set -e
  3. # We don't use a secret keyring, of course, but gpg panics and
  4. # implodes if there isn't one available
  5. GPG_CMD="gpg --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg"
  6. GPG="$GPG_CMD --keyring /etc/apt/trusted.gpg"
  7. ARCHIVE_KEYRING=/usr/share/keyrings/ubuntu-archive-keyring.gpg
  8. REMOVED_KEYS=/usr/share/keyrings/ubuntu-archive-removed-keys.gpg
  9. update() {
  10. if [ ! -f $ARCHIVE_KEYRING ]; then
  11. echo >&2 "ERROR: Can't find the archive-keyring"
  12. echo >&2 "Is the ubuntu-keyring package installed?"
  13. exit 1
  14. fi
  15. # add new keys
  16. $GPG_CMD --quiet --batch --keyring $ARCHIVE_KEYRING --export | $GPG --ignore-time-conflict --import
  17. # remove no-longer used keys
  18. keys=`$GPG_CMD --keyring $REMOVED_KEYS --with-colons --list-keys | grep ^pub | cut -d: -f5`
  19. for key in $keys; do
  20. if $GPG --list-keys --with-colons | grep ^pub | cut -d: -f5 | grep -q $key; then
  21. $GPG --quiet --batch --delete-key --yes ${key}
  22. fi
  23. done
  24. }
  25. usage() {
  26. echo "Usage: apt-key [command] [arguments]"
  27. echo
  28. echo "Manage apt's list of trusted keys"
  29. echo
  30. echo " apt-key add <file> - add the key contained in <file> ('-' for stdin)"
  31. echo " apt-key del <keyid> - remove the key <keyid>"
  32. echo " apt-key export <keyid> - output the key <keyid>"
  33. echo " apt-key exportall - output all trusted keys"
  34. echo " apt-key update - update keys using the keyring package"
  35. echo " apt-key list - list keys"
  36. echo
  37. }
  38. command="$1"
  39. if [ -z "$command" ]; then
  40. usage
  41. exit 1
  42. fi
  43. shift
  44. if [ "$command" != "help" ] && ! which gpg >/dev/null 2>&1; then
  45. echo >&2 "Warning: gnupg does not seem to be installed."
  46. echo >&2 "Warning: apt-key requires gnupg for most operations."
  47. echo >&2
  48. fi
  49. case "$command" in
  50. add)
  51. $GPG --quiet --batch --import "$1"
  52. echo "OK"
  53. ;;
  54. del|rm|remove)
  55. $GPG --quiet --batch --delete-key --yes "$1"
  56. echo "OK"
  57. ;;
  58. update)
  59. update
  60. ;;
  61. list)
  62. $GPG --batch --list-keys
  63. ;;
  64. finger*)
  65. $GPG --batch --fingerprint
  66. ;;
  67. export)
  68. $GPG --armor --export "$1"
  69. ;;
  70. exportall)
  71. $GPG --armor --export
  72. ;;
  73. adv*)
  74. echo "Executing: $GPG $*"
  75. $GPG $*
  76. ;;
  77. help)
  78. usage
  79. ;;
  80. *)
  81. usage
  82. exit 1
  83. ;;
  84. esac