blob: f9a55077e409d7cc096df611abae67233d276b3a (
plain)
- # -*-shell-script-*-
- # This should be sourced by bash (though we welcome changes to make it POSIX sh compliant)
- # Monkeysphere host set-expire subcommand
- #
- # This is a function to set the expiration date of the monkeysphere
- # host key.
- #
- # The monkeysphere scripts are written by:
- # Jameson Rollins <jrollins@finestructure.net>
- # Jamie McClelland <jm@mayfirst.org>
- # Daniel Kahn Gillmor <dkg@fifthhorseman.net>
- #
- # They are Copyright 2008-2010, and are all released under the GPL,
- # version 3 or later.
- set_expire() {
- local extendBy
- local keyID
- local formatMsg='
- The possibilities are:
- 0 = key does not expire
- <n> = key expires in n days
- <n>w = key expires in n weeks
- <n>m = key expires in n months
- <n>y = key expires in n years'
- if [ -z "$1" ] ; then
- failure "Must specify expiration.$formatMsg"
- fi
- extendBy="$1"
- shift
- if ! <<<"$extendBy" egrep -q '^[[:digit:]]+[wmy]?$' ; then
- failure "'$extendBy' is not a valid expiration date.$formatMsg"
- fi
- keyID=$(check_key_input "$@")
- if [ "$PROMPT" != "false" ] ; then
- printf "Are you sure you want to change the expiration on key '$keyID' by '%s'? (Y/n) " "$extendBy" >&2
- read OK; OK=${OK:-Y}
- if [ "${OK/y/Y}" != 'Y' ] ; then
- failure "expiration not set."
- fi
- else
- log debug "extending without prompting."
- fi
- log info "setting key expiration to ${extendBy}."
- log debug "executing key expire script..."
- gpg_host_edit "0x${keyID}!" expire <<EOF
- $extendBy
- save
- EOF
- update_pgp_pub_file
- if [ 0 == "$extendBy" ] ; then
- log info "Key ${keyID} no longer expires."
- else
- if expiry=$(gpg_host_list_keys "${keyID}" | grep ^pub: | head -n1 | cut -f7 -d: ) ; then
- log info "Key ${keyID} now expires at $(date '+%F %T' --date "1970-01-01 0:00 UTC + ${expiry} seconds")"
- else
- log error "Failed to retrieve new expiration date for key ${keyID}"
- fi
- fi
- log info <<EOF
- NOTE: Key expiration date adjusted, but not yet published.
- Run '$PGRM publish-key' to publish the new expiration date.
- EOF
- }
|