7e33471af152d4327b261d7ea2895fa276712501
[monkeysphere.git] / howler / howler
1 #!/bin/sh
2
3 # howler: server gpg key generator/publisher
4 #
5 # Written by
6 # Jameson Rollins <jrollins@fifthhorseman.net>
7 #
8 # Copyright 2008, released under the GPL, version 3 or later
9
10 CMD=$(basename $0)
11
12 ########################################################################
13 # FUNCTIONS
14 ########################################################################
15
16 failure() {
17     echo "$1" >&2
18     exit ${2:-'1'}
19 }
20
21 ########################################################################
22 # MAIN
23 ########################################################################
24
25 MS_HOME=${MS_HOME:-/etc/monkeysphere}
26
27 . "$MS_HOME"/monkeysphere.conf
28
29 export GNUPGHOME
30
31 KEY_TYPE=${KEY_TYPE:-RSA}
32 KEY_LENGTH=${KEY_LENGTH:-2048}
33 KEY_USAGE=${KEY_USAGE:-encrypt,auth}
34 SERVICE=${SERVICE:-ssh}
35 HOSTNAME=${HOSTNAME:-$(hostname -f)}
36
37 USERID=${USERID:-"$SERVICE"://"$HOSTNAME"}
38
39 echo "key parameters:"
40 cat <<EOF
41 Key-Type: $KEY_TYPE
42 Key-Length: $KEY_LENGTH
43 Key-Usage: $KEY_USAGE
44 Name-Real: $USERID
45 EOF
46
47 read -p "generate key? [Y|n]: " OK; OK=${OK:=Y}
48 if [ ${OK/y/Y} != 'Y' ] ; then
49     failure "aborting."
50 fi
51
52 if gpg --list-key ="$USERID" > /dev/null 2>&1 ; then
53     failure "key for '$USERID' already exists"
54 fi
55
56 echo "generating server key..."
57 gpg --batch --gen-key <<EOF
58 Key-Type: $KEY_TYPE
59 Key-Length: $KEY_LENGTH
60 Key-Usage: $KEY_USAGE
61 Name-Real: $USERID
62 %commit
63 EOF
64
65 read -p "publish key to $KEY_SERVER? [Y|n]: " OK; OK=${OK:=Y}
66 if [ ${OK/y/Y} != 'Y' ] ; then
67     failure "aborting."
68 fi
69
70 echo "sending key to keyserver '$KEYSERVER'..."
71 keyID=$(gpg --list-key --with-colons ="$USERID" 2> /dev/null | grep '^pub:' | cut -d: -f5)
72
73 # dummy command so as not to publish fakes keys during testing
74 # eventually:
75 #gpg --send-keys --keyserver "$KEYSERVER" "$keyID"
76 echo "gpg --send-keys --keyserver $KEYSERVER $keyID"
77
78 echo "done."