/mandos/trunk

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

« back to all changes in this revision

Viewing changes to mandos-keygen

  • Committer: Teddy Hogeborn
  • Date: 2008-12-10 01:26:02 UTC
  • mfrom: (237.1.2 mandos)
  • Revision ID: teddy@fukt.bsnet.se-20081210012602-vhz3h75xkj24t340
First version of a somewhat complete D-Bus server interface.  Also
change user/group name to "_mandos".

* debian/mandos.postinst: Rename old "mandos" user and group to
                          "_mandos"; create "_mandos" user and group
                          if none exist.
* debian/mandos-client.postinst: - '' -

* initramfs-tools-hook: Try "_mandos" before "mandos" as user and
                        group name.

* mandos (_datetime_to_dbus_struct): New; was previously local.
  (Client.started): Renamed to "last_started".  All users changed.
  (Client.started): New; boolean.
  (Client.dbus_object_path): New.
  (Client.check_command): Renamed to "checker_command".  All users
                          changed.
  (Client.__init__): Set and use "self.dbus_object_path".  Set
                     "self.started".
  (Client.start): Update "self.started".  Emit "self.PropertyChanged"
                  signals for both "started" and "last_started".
  (Client.stop): Update "self.started".  Emit "self.PropertyChanged"
                 signal for "started".
  (Client.checker_callback): Take additional "command" argument.  All
                             callers changed. Emit
                             "self.PropertyChanged" signal.
  (Client.bump_timeout): Emit "self.PropertyChanged" signal for
                         "last_checked_ok".
  (Client.start_checker): Emit "self.PropertyChanged" signal for
                          "checker_running".
  (Client.stop_checker): Emit "self.PropertyChanged" signal for
                         "checker_running".
  (Client.still_valid): Bug fix: use "getattr(self, started, False)"
                        instead of "self.started" in case this client
                        object is so new that the "started" attribute
                        has not been created yet.
  (Client.IntervalChanged, Client.CheckerIsRunning, Client.GetChecker,
  Client.GetCreated, Client.GetFingerprint, Client.GetHost,
  Client.GetInterval, Client.GetName, Client.GetStarted,
  Client.GetTimeout, Client.StateChanged, Client.TimeoutChanged):
  Removed; all callers changed.
  (Client.CheckerCompleted): Add "condition" and "command" arguments.
                             All callers changed.
  (Client.GetAllProperties, Client.PropertyChanged): New.
  (Client.StillValid): Renamed to "IsStillValid".
  (Client.StartChecker): Changed to its own function to avoid the
                         return value from "Client.start_checker()".
  (Client.Stop): Changed to its own function to avoid the return value
                 from "Client.stop()".
  (main): Try "_mandos" before "mandos" as user and group name.
          Removed inner function "remove_from_clients".  New inner
          class "MandosServer".

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,2009 Teddy Hogeborn
6
 
# Copyright © 2008,2009 Björn Påhlsson
 
5
# Copyright © 2008 Teddy Hogeborn
 
6
# Copyright © 2008 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
21
21
# Contact the authors at <mandos@fukt.bsnet.se>.
22
22
23
23
 
24
 
VERSION="1.0.14"
 
24
VERSION="1.0.2"
25
25
 
26
26
KEYDIR="/etc/keys/mandos"
27
27
KEYTYPE=DSA
147
147
        echo "Invalid key length" >&2
148
148
        exit 1
149
149
    fi
150
 
    
 
150
 
151
151
    if [ -z "$KEYEXPIRE" ]; then
152
152
        echo "Empty key expiration" >&2
153
153
        exit 1
172
172
    if [ -n "$KEYEMAIL" ]; then
173
173
        KEYEMAILLINE="Name-Email: $KEYEMAIL"
174
174
    fi
175
 
    
 
175
 
176
176
    # Create temporary gpg batch file
177
177
    BATCHFILE="`mktemp -t mandos-keygen-batch.XXXXXXXXXX`"
178
178
fi
217
217
        %commit
218
218
        EOF
219
219
    
220
 
    if tty --quiet; then
221
 
        cat <<-EOF
222
 
        Note: Due to entropy requirements, key generation could take
223
 
        anything from a few minutes to SEVERAL HOURS.  Please be
224
 
        patient and/or supply the system with more entropy if needed.
225
 
        EOF
226
 
        echo -n "Started: "
227
 
        date
228
 
    fi
229
 
    
230
220
    # Generate a new key in the key rings
231
221
    gpg --quiet --batch --no-tty --no-options --enable-dsa2 \
232
222
        --homedir "$RINGDIR" --trust-model always \
233
223
        --gen-key "$BATCHFILE"
234
224
    rm --force "$BATCHFILE"
235
225
    
236
 
    if tty --quiet; then
237
 
        echo -n "Finished: "
238
 
        date
239
 
    fi
240
 
    
241
226
    # Backup any old key files
242
227
    if cp --backup=numbered --force "$SECKEYFILE" "$SECKEYFILE" \
243
228
        2>/dev/null; then
278
263
    
279
264
    # Get fingerprint of key
280
265
    FINGERPRINT="`gpg --quiet --batch --no-tty --no-options \
281
 
        --enable-dsa2 --homedir '"'$RINGDIR'"' --trust-model always \
 
266
        --enable-dsa2 --homedir \"$RINGDIR\" --trust-model always \
282
267
        --fingerprint --with-colons \
283
268
        | sed --quiet \
284
269
        --expression='/^fpr:/{s/^fpr:.*:\\([0-9A-Z]*\\):\$/\\1/p;q}'`"
299
284
        stty echo
300
285
        if [ "$first" != "$second" ]; then
301
286
            echo -e "Passphrase mismatch" >&2
302
 
            touch "$RINGDIR"/mismatch
 
287
            false
303
288
        else
304
289
            echo -n "$first"
305
290
        fi
307
292
        --homedir "$RINGDIR" --trust-model always --armor --encrypt \
308
293
        --sign --recipient "$FINGERPRINT" --comment "$FILECOMMENT" \
309
294
        > "$SECFILE"
310
 
    if [ -e "$RINGDIR"/mismatch ]; then
311
 
        rm --force "$RINGDIR"/mismatch
312
 
        exit 1
 
295
    status="${PIPESTATUS[0]}"
 
296
    if [ "$status" -ne 0 ]; then
 
297
        exit "$status"
313
298
    fi
314
299
    
315
300
    cat <<-EOF