Viewing file: secret.cgi (2.02 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl # setup.sh # Call gnupg to setup a key initially
require './gnupg-lib.pl'; &ReadParse(); $pfx = $in{'newkey'} ? 'secret' : 'setup'; &error_setup($text{$pfx.'_err'});
# Validate inputs $in{'name'} || &error($text{'setup_ename'}); length($in{'name'}) >= 5 || &error(&text('setup_enamelen', 5)); #$in{'email'} || &error($text{'setup_eemail'});
# Run gpg --list-keys to create the directory &list_keys(); &list_keys();
# Create .gnupg directory if missing if (!-d "$remote_user_info[7]/.gnupg") { mkdir("$remote_user_info[7]/.gnupg", 0700) || &error(&text('setup_emkdir', $!)); }
$pid = fork(); if (!$pid) { # Run the find command in a subprocess to generate some entropy untie(*STDOUT); untie(*STDERR); close(STDOUT); close(STDERR); exec("find / -type f"); exit(0); }
foreach $k (&list_secret_keys()) { $oldid{$k->{'key'}}++; }
# Run the gpg --gen-key command my $temp = &transname(); $in{'size'} ||= 2048; &open_tempfile(TEMP, ">$temp", 0, 1); &print_tempfile(TEMP, "Key-Type: default\n"); &print_tempfile(TEMP, "Key-Length: $in{'size'}\n"); &print_tempfile(TEMP, "Key-Usage: sign,encrypt,auth\n"); &print_tempfile(TEMP, "Name-Real: $in{'name'}\n"); &print_tempfile(TEMP, "Name-Email: $in{'email'}\n"); if ($in{'comment'}) { &print_tempfile(TEMP, "Name-Comment: $in{'comment'}\n"); } &print_tempfile(TEMP, "Expire-Date: 0\n"); if ($in{'pass'}) { &print_tempfile(TEMP, "Passphrase: $in{'pass'}\n"); } else { &print_tempfile(TEMP, "%no-protection\n"); } &print_tempfile(TEMP, "%commit\n"); &print_tempfile(TEMP, "%echo done\n"); &close_tempfile(TEMP); ($out, $timed_out) = &backquote_with_timeout( "$gpgpath --gen-key --batch $temp 2>&1 </dev/null", 90); $err = $?;
&ui_print_header(undef, $text{$pfx.'_title'}, "");
if ($err || $timed_out) { print "<p>",&text('setup_failed', "<pre>$out</pre>"),"<p>\n"; } else { print "<p>$text{$pfx.'_ok'}<p>\n"; @keys = &list_secret_keys(); ($key) = grep { !$oldid{$_->{'key'}} } @keys; &put_passphrase($in{'pass'}, $key); }
&ui_print_footer("", $text{'index_return'});
|