Add some more checks to gen-subkey
authorJameson Graef Rollins <jrollins@phys.columbia.edu>
Sat, 21 Jun 2008 20:26:35 +0000 (16:26 -0400)
committerJameson Graef Rollins <jrollins@phys.columbia.edu>
Sat, 21 Jun 2008 20:26:35 +0000 (16:26 -0400)
src/monkeysphere

index 58f0fdc632edaeb8f7aa679b24dbfa6e6c81809c..e111d8e2cf5a9305d207560b02f295ff14137693 100755 (executable)
@@ -54,11 +54,27 @@ gen_subkey(){
     gpgOut=$(gpg --quiet --fixed-list-mode --list-keys --with-colons \
        "$keyID" 2> /dev/null)
 
-    # return 1 if there only "tru" lines are output from gpg
+    # fail if there only "tru" lines are output from gpg, which
+    # indicates the key was not found.
     if [ -z "$(echo "$gpgOut" | grep -v '^tru:')" ] ; then
        failure "Key ID '$keyID' not found."
     fi
 
+    # fail if multiple pub lines are returned, which means the id given
+    # is not unique
+    if [ $(echo "$gpgOut" | grep '^pub:' | wc -l) -gt '1' ] ; then
+       failure "Key ID '$keyID' is not unique."
+    fi
+
+    # prompt if an authentication subkey already exists
+    if echo "$gpgOut" | egrep "^(pub|sub):" | cut -d: -f 12 | grep -q a ; then
+       echo "An authentication subkey already exists for key '$keyID'."
+       read -p "Are you sure you would like to generate another one? [y|N]: " OK; OK=${OK:N}
+       if [ "${OK/y/Y}" != 'Y' ] ; then
+           failure "aborting."
+       fi
+    fi
+
     # set subkey defaults
     SUBKEY_TYPE=${SUBKEY_TYPE:-"RSA"}
     #SUBKEY_LENGTH=${SUBKEY_LENGTH:-"2048"}