#!/usr/local/bin/perl
# edit_key.cgi
# Display the details of a key, including the exported format
require './gnupg-lib.pl';
&ReadParse();
@keys = &list_keys();
if ($in{'key'}) {
($key) = grep { $_->{'key'} eq $in{'key'} } @keys;
$in{'idx'} = &indexof($key, @keys);
}
else {
$key = $keys[$in{'idx'}];
}
&ui_print_header(undef, $text{'key_title'}, "");
print "$text{'key_desc'}<p>\n";
print "<table border width=100%>\n";
print "<tr $tb> <td><b>$text{'key_header'}</b></td> </tr>\n";
print "<tr $cb> <td><table width=100%>\n";
print "<tr> <td><b>$text{'key_id'}</b></td>\n";
print "<td><tt>$key->{'key'}</tt></td>\n";
print "<td><b>$text{'key_date'}</b></td>\n";
print "<td>$key->{'date'}</tt></td> </tr>\n";
if ($key->{'secret'}) {
print "<form action=owner.cgi>\n";
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
}
print "<tr> <td valign=top><b>$text{'key_owner'}</b></td>\n";
print "<td valign=top colspan=3><table border=0>\n";
print "<tr> <td><b>$text{'key_oname'}</b></td> ",
"<td><b>$text{'key_oemail'}</b></td> </tr>\n";
for($i=0; $i<@{$key->{'name'}}; $i++) {
print "<tr>\n";
print "<td>",$key->{'name'}->[$i],"</td>\n";
print "<td>",$key->{'email'}->[$i] || "<br>","</td>\n";
if ($key->{'secret'}) {
print "<td><input type=submit name=$i value='$text{'delete'}'></td>\n";
}
print "</tr>\n";
}
if ($key->{'secret'}) {
print "</form>\n";
print "<form action=owner.cgi>\n";
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
print "<tr>\n";
print "<td><input name=name size=30></td>\n";
print "<td><input name=email size=30></td>\n";
print "<td><input name=add type=submit value='$text{'key_addowner'}'></td>\n";
print "</tr>\n";
}
print "</table>\n";
print "</form>\n" if ($key->{'secret'});
print "</td> </tr>\n";
print "<tr> <td><b>$text{'key_finger'}</b></td>\n";
print "<td colspan=3><tt>",&key_fingerprint($key),"</tt></td> </tr>\n";
#print "<tr> <td valign=top><b>$text{'key_ascii'}</b>",
# "<br>$text{'key_asciidesc'}</td>\n";
#print "<td colspan=3><pre>";
#open(GPG, "$gpgpath --armor --export \"$key->{'name'}->[0]\" |");
#while(<GPG>) {
# print &html_escape($_);
# }
#close(GPG);
#print "</pre></td> </tr>\n";
if ($key->{'secret'}) {
# Offer to change usermin's passphrase
$pass = &get_passphrase($key);
print "<form action=save_pass.cgi>\n";
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
print "<tr> <td valign=top><b>",defined($pass) ? $text{'key_changepass'}
: $text{'key_setpass'},"</b></td>\n";
print "<td colspan=3><input type=password name=pass size=20> ",
"<input type=submit value='$text{'save'}'><br>\n";
print defined($pass) ? $text{'key_passdesc2'} : $text{'key_passdesc'},"\n";
print "</td></tr></form>\n";
}
else {
# Offer to set trust level
$tr = &get_trust_level($key);
print "<form action=change_trust.cgi>\n";
print "<input type=hidden name=idx value='$in{'idx'}'>\n";
print "<tr> <td><b>$text{'key_trust'}</b></td>\n";
print "<td><select name=trust>\n";
foreach $t (0 .. 4) {
printf "<option value=%d %s>%s\n",
$t, $t eq $tr ? "selected" : "", $text{"key_trust_$t"};
}
print "</select>\n";
print "<input type=submit value='$text{'key_changetrust'}'>\n";
print "</td></tr></form>\n";
}
print "</table></td></tr></table>\n";
print "<table width=100%><tr>\n";
print "<form action=edit_export.cgi>\n";
print "<input type=hidden name=idx value='$key->{'index'}'>\n";
print "<td width=25%><input type=submit value='$text{'key_exportform'}'></td></form>\n";
print "<form action=send.cgi>\n";
print "<input type=hidden name=idx value='$key->{'index'}'>\n";
print "<td align=middle width=25%><input type=submit value='$text{'key_send'}'></td></form>\n";
print "<form action=signkey.cgi>\n";
print "<input type=hidden name=idx value='$key->{'index'}'>\n";
print "<td align=middle width=25%><input type=submit value='$text{'key_sign'}'></td></form>\n";
print "<form action=delkey.cgi>\n";
print "<input type=hidden name=idx value='$key->{'index'}'>\n";
print "<td align=right width=25%><input type=submit value='$text{'key_del'}'></td></form>\n";
print "</tr></table>\n";
&ui_print_footer("list_keys.cgi", $text{'keys_return'},
"", $text{'index_return'});
syntax highlighted by Code2HTML, v. 0.9.1