summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJameson Graef Rollins <jrollins@phys.columbia.edu>2008-06-11 14:08:29 -0400
committerJameson Graef Rollins <jrollins@phys.columbia.edu>2008-06-11 14:08:29 -0400
commit3250fce7979ada7e94782430801f5fb76fecbc90 (patch)
treef47a6143dbb63b96e4d3d93a29d83c519cb9946e /src
parentb489d119fc6c61e43c88efffb2ba4705ac4aeca8 (diff)
Updates to use the new openpgp2ssh program that dkg wrote.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/common55
-rwxr-xr-xsrc/monkeysphere-server4
2 files changed, 38 insertions, 21 deletions
diff --git a/src/common b/src/common
index ff6ba59..d7caefd 100755
--- a/src/common
+++ b/src/common
@@ -82,27 +82,36 @@ unescape() {
echo "$1" | sed 's/\\x3a/:/'
}
-# stand in until we get dkg's gpg2ssh program
-gpg2ssh_tmp() {
+# convert key from gpg to ssh known_hosts format
+gpg2known_hosts() {
local keyID
- local userID
local host
keyID="$1"
- userID="$2"
-
- if [ "$MODE" = 'authorized_keys' ] ; then
- gpgkey2ssh "$keyID" | sed -e "s/COMMENT/MonkeySphere userID: ${userID}/"
+ host=$(echo "$2" | sed -e "s|ssh://||")
# NOTE: it seems that ssh-keygen -R removes all comment fields from
# all lines in the known_hosts file. why?
# NOTE: just in case, the COMMENT can be matched with the
# following regexp:
# '^MonkeySphere[[:digit:]]{4}(-[[:digit:]]{2}){2}T[[:digit:]]{2}(:[[:digit:]]{2}){2}$'
- elif [ "$MODE" = 'known_hosts' ] ; then
- host=$(echo "$userID" | sed -e "s|ssh://||")
- echo -n "$host "; gpgkey2ssh "$keyID" | sed -e "s/COMMENT/MonkeySphere${DATE}/"
- fi
+ echo -n "$host "
+ gpg --export "$keyID" | \
+ openpgp2ssh "$keyID" | tr -d '\n'
+ echo "MonkeySphere${DATE}"
+}
+
+# convert key from gpg to ssh authorized_keys format
+gpg2authorized_keys() {
+ local keyID
+ local userID
+
+ keyID="$1"
+ userID="$2"
+
+ echo -n "MonkeySphere${DATE}:${userID}"
+ gpg --export "$keyID" | \
+ openpgp2ssh "$keyID"
}
# userid and key policy checking
@@ -235,15 +244,21 @@ process_user_id() {
for keyID in ${keyIDs[@]} ; do
loge " acceptable key/uid found."
- # export the key with gpg2ssh
- # FIXME: needs to apply extra options for authorized_keys
- # lines if specified
- gpg2ssh_tmp "$keyID" "$userID" >> "$cacheDir"/"$userIDHash"."$pubKeyID"
-
- # hash the cache file if specified
- if [ "$MODE" = 'known_hosts' -a "$HASH_KNOWN_HOSTS" ] ; then
- ssh-keygen -H -f "$cacheDir"/"$userIDHash"."$pubKeyID" > /dev/null 2>&1
- rm "$cacheDir"/"$userIDHash"."$pubKeyID".old
+ if [ "$MODE" = 'known_hosts' ] ; then
+ # export the key
+ gpg2known_hosts "$keyID" "$userID" >> \
+ "$cacheDir"/"$userIDHash"."$pubKeyID"
+ # hash the cache file if specified
+ if [ "$HASH_KNOWN_HOSTS" ] ; then
+ ssh-keygen -H -f "$cacheDir"/"$userIDHash"."$pubKeyID" > /dev/null 2>&1
+ rm "$cacheDir"/"$userIDHash"."$pubKeyID".old
+ fi
+ elif [ "$MODE" = 'authorized_keys' ] ; then
+ # export the key
+ # FIXME: needs to apply extra options for authorized_keys
+ # lines if specified
+ gpg2authorized_keys "$keyID" "$userID" >> \
+ "$cacheDir"/"$userIDHash"."$pubKeyID"
fi
done
fi
diff --git a/src/monkeysphere-server b/src/monkeysphere-server
index 6eeb702..34239b6 100755
--- a/src/monkeysphere-server
+++ b/src/monkeysphere-server
@@ -145,9 +145,10 @@ case $COMMAND in
fi
for uname in $unames ; do
+ MODE="authorized_keys"
+
log "----- user: $uname -----"
- MODE="authorized_keys"
AUTHORIZED_USER_IDS="$MS_HOME"/authorized_user_ids/"$uname"
cacheDir="$STAGING_AREA"/"$uname"/user_keys
msAuthorizedKeys="$STAGING_AREA"/"$uname"/authorized_keys
@@ -167,6 +168,7 @@ case $COMMAND in
# update authorized_keys
update_authorized_keys "$cacheDir" "$msAuthorizedKeys" "$userAuthorizedKeys"
done
+
log "----- done. -----"
;;