tests/basic now tests for adding and revoking hostnames.
[monkeysphere.git] / src / share / mh / import_key
index d14fc13dbf0d485d5ebe47f4c683078d2d1d72a3..f7c69c3eaeb007becc0f59fc5d4fa74ec6f5c3e6 100644 (file)
 
 import_key() {
 
+local sshKeyFile
 local hostName
 local domain
 local userID
 
-hostName="$1"
+sshKeyFile="$1"
+hostName="$2"
 
-# use the default hostname if not specified
+# check that key file specified
+if [ -z "$sshKeyFile" ] ; then
+    failure "Must specify ssh key file to import, or specify '-' for stdin."
+fi
+
+# fail if hostname 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
+    failure "You must specify a fully-qualified domain name for use in the host certificate user ID."
 fi
 
 userID="ssh://${hostName}"
 
 # create host home
 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
+# import ssh key to a private key
+if [ "$sshKeyFile" = '-' ] ; then
+    log verbose "importing ssh key from stdin..."
+    PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "$userID" \
+       | gpg_host --import
+else
+    log verbose "importing ssh key from file '$sshKeyFile'..."
+    PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "$userID" \
+       <"$sshKeyFile" \
+       | gpg_host --import
+fi
 
 # 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
@@ -57,6 +59,8 @@ load_fingerprint_secret
 # export to gpg public key to file
 update_gpg_pub_file
 
+log info "host key imported:"
+
 # show info about new key
 show_key