summaryrefslogtreecommitdiff
path: root/src/share/mh/import_key
diff options
context:
space:
mode:
authorMatt Goins <mjgoins@openflows.com>2009-02-17 22:31:17 -0500
committerMatt Goins <mjgoins@openflows.com>2009-02-17 22:31:17 -0500
commit8e3de9de8bc67b3e9e2c490a7e3142fde7742044 (patch)
treed0cb80bf0d37da795721167ecbf42423a570f578 /src/share/mh/import_key
parent3b81cd012e8224490a3836cccbd7d082a061658e (diff)
parent25e870d1d7109f9e37460c26de4a05a05adfc760 (diff)
Merge commit 'jrollins/master'
Diffstat (limited to 'src/share/mh/import_key')
-rw-r--r--src/share/mh/import_key45
1 files changed, 31 insertions, 14 deletions
diff --git a/src/share/mh/import_key b/src/share/mh/import_key
index 99511a8..d14fc13 100644
--- a/src/share/mh/import_key
+++ b/src/share/mh/import_key
@@ -14,31 +14,48 @@
import_key() {
local hostName
+local domain
local userID
-# check for presense of a key
-[ "$HOST_FINGERPRINT" ] && \
- failure "An OpenPGP host key already exists."
-
-hostName=${1:-$(hostname -f)}
+hostName="$1"
+
+# use the default hostname if not specified
+if [ -z "$hostName" ] ; then
+ hostName=$(hostname -f)
+ # test that the domain is not obviously illegitimate
+ domain=${foo##*.}
+ case $domain in
+ 'local'|'localdomain')
+ failure "Host domain '$domain' is not legitimate. Aborting key import."
+ ;;
+ esac
+ # test that there are at least two parts
+ if (( $(echo "$hostName" | tr . ' ' | wc -w) < 2 )) ; then
+ failure "Host name '$hostName' is not legitimate. Aborting key import."
+ fi
+fi
userID="ssh://${hostName}"
# create host home
-mkdir -p "$GNUPGHOME_HOST"
-chmod 700 "$GNUPGHOME_HOST"
+mkdir -p "${MHDATADIR}"
+mkdir -p "${MHTMPDIR}"
+mkdir -p "${GNUPGHOME_HOST}"
+chmod 700 "${GNUPGHOME_HOST}"
log verbose "importing ssh key..."
# translate ssh key to a private key
-PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "$userID" | \
- gpg_host --import
+PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "$userID" \
+ | gpg_host --import
-# find the key fingerprint of the newly converted key
-HOST_FINGERPRINT=$(get_host_fingerprint)
-export HOST_FINGERPRINT
+# load the new host fpr into the fpr variable. this is so we can
+# create the gpg pub key file. we have to do this from the secret key
+# ring since we obviously don't have the gpg pub key file yet, since
+# that's what we're trying to produce (see below).
+load_fingerprint_secret
-# export public key to file
-gpg_host_export_to_ssh_file
+# export to gpg public key to file
+update_gpg_pub_file
# show info about new key
show_key