/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to mandos-keygen

Merge new wireless network hook.  Fix bridge network hook to use
hardware addresses instead of interface names.  Implement and document
new "CONNECT" environment variable for network hooks.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
3
3
# Mandos key generator - create a new OpenPGP key for a Mandos client
4
4
5
 
# Copyright © 2008-2010 Teddy Hogeborn
6
 
# Copyright © 2008-2010 Björn Påhlsson
 
5
# Copyright © 2008-2011 Teddy Hogeborn
 
6
# Copyright © 2008-2011 Björn Påhlsson
7
7
8
8
# This program is free software: you can redistribute it and/or modify
9
9
# it under the terms of the GNU General Public License as published by
18
18
# You should have received a copy of the GNU General Public License
19
19
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
20
21
 
# Contact the authors at <mandos@fukt.bsnet.se>.
 
21
# Contact the authors at <mandos@recompile.se>.
22
22
23
23
 
24
 
VERSION="1.2.3"
 
24
VERSION="1.4.1"
25
25
 
26
26
KEYDIR="/etc/keys/mandos"
27
27
KEYTYPE=DSA
192
192
shred --remove \"$RINGDIR\"/sec*;
193
193
test -n \"$BATCHFILE\" && rm --force \"$BATCHFILE\"; \
194
194
rm --recursive --force \"$RINGDIR\";
195
 
stty echo; \
 
195
tty --quiet && stty echo; \
196
196
" EXIT
197
197
 
198
198
set -e
289
289
    
290
290
    FILECOMMENT="Encrypted password for a Mandos client"
291
291
    
292
 
    if [ -n "$PASSFILE" ]; then
293
 
        cat "$PASSFILE"
294
 
    else
295
 
        stty -echo
296
 
        echo -n "Enter passphrase: " >&2
297
 
        first="$(head --lines=1 | tr --delete '\n')"
298
 
        echo >&2
299
 
        echo -n "Repeat passphrase: " >&2
300
 
        second="$(head --lines=1 | tr --delete '\n')"
301
 
        echo >&2
302
 
        stty echo
303
 
        if [ "$first" != "$second" ]; then
304
 
            echo "Passphrase mismatch" >&2
305
 
            touch "$RINGDIR"/mismatch
 
292
    while [ ! -s "$SECFILE" ]; do
 
293
        if [ -n "$PASSFILE" ]; then
 
294
            cat "$PASSFILE"
306
295
        else
307
 
            echo -n "$first"
 
296
            tty --quiet && stty -echo
 
297
            read -p "Enter passphrase: " first
 
298
            tty --quiet && echo >&2
 
299
            read -p "Repeat passphrase: " second
 
300
            if tty --quiet; then
 
301
                echo >&2
 
302
                stty echo
 
303
            fi
 
304
            if [ "$first" != "$second" ]; then
 
305
                echo "Passphrase mismatch" >&2
 
306
                touch "$RINGDIR"/mismatch
 
307
            else
 
308
                echo -n "$first"
 
309
            fi
 
310
        fi | gpg --quiet --batch --no-tty --no-options --enable-dsa2 \
 
311
            --homedir "$RINGDIR" --trust-model always --armor \
 
312
            --encrypt --sign --recipient "$FINGERPRINT" --comment \
 
313
            "$FILECOMMENT" > "$SECFILE"
 
314
        if [ -e "$RINGDIR"/mismatch ]; then
 
315
            rm --force "$RINGDIR"/mismatch
 
316
            if tty --quiet; then
 
317
                > "$SECFILE"
 
318
            else
 
319
                exit 1
 
320
            fi
308
321
        fi
309
 
    fi | gpg --quiet --batch --no-tty --no-options --enable-dsa2 \
310
 
        --homedir "$RINGDIR" --trust-model always --armor --encrypt \
311
 
        --sign --recipient "$FINGERPRINT" --comment "$FILECOMMENT" \
312
 
        > "$SECFILE"
313
 
    if [ -e "$RINGDIR"/mismatch ]; then
314
 
        rm --force "$RINGDIR"/mismatch
315
 
        exit 1
316
 
    fi
 
322
    done
317
323
    
318
324
    cat <<-EOF
319
325
        [$KEYNAME]