/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 at bsnet
  • Date: 2011-12-25 00:40:09 UTC
  • Revision ID: teddy@fukt.bsnet.se-20111225004009-n5uimmac6h8djtv8
* plugin-runner.c (add_to_char_array): Added "nonnull" attribute.
  (add_argument): Added "nonnull" attribute on the "arg" argument.
  (add_environment): Added "nonnull" attribute on the "def" argument.
  (print_out_password, free_plugin): Added "nonnull" attribute.
  (main/parse_opt): Added "nonnull" attribute on the "state" argument.
* plugins.d/mandos-client.c (perror_plus): Bug fix; restore errno
                                           after fprintf().
* plugins.d/password-prompt.c (fprintf_plus): New.
 (conflict_detection/is_plymouth, main/parse_opt): Added "nonnull"
                                                   attribute.
 (conflict_detection/is_plymouth, conflict_detection, main): Bug fix;
                                                             Call
                                                             error_plus()
                                                             instead
                                                             of
                                                             error().
  (main/parse_opt): Added "nonnull" attribute on the "state" argument.
* plugins.d/plymouth.c (exec_and_wait): Added "nonnull" attribute on
                                        the "path" and "argv"
                                        arguments.
  (is_plymouth): Added "nonnull" attribute.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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.3.0"
 
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]