$oaevers = "1.0";
open(SORT, "|sort") || die "Couldn't open pipe to sort for output: $!\n";
open(OAE, "$ENV{'TOP'}/install/admin/ovsec_adm_export|") ||
die "Couldn't get oae: $!\n";
$header = <OAE>;
die "Not ovsec_adm_export output\n"
if ($header !~ /^OpenV\*Secure V(\d+\.\d+)/);
$stdinvers = $1;
die "Expected oae version $oaevers, got $stdinvers instead.\n"
if $stdinvers ne $oaevers;
while(<OAE>) {
if (/^End of Database/) {
last;
} elsif (/^policy/) {
print SORT;
} elsif (/^princ/) {
split(/\t/);
$_[2] = "\"\"" if !$_[2];
$_[3] = hex("0x".$_[3]);
$princ{$_[1]} = sprintf("%s\t0x%04x",@_[2,3]);
}
}
$ddbvers = "2.0";
open(DDB, "$ENV{'TOP'}/install/admin/kdb5_edit -r SECURE-TEST.OV.COM -R ddb|") ||
die "Couldn't get ddb: $!\n";
$header = <DDB>;
die "Not a kdb5_edit ddb\n"
if ($header !~ /^kdb5_edit load_dump version (\d+\.\d+)/);
$stdinvers = $1;
die "Expected ddb version $ddbvers, got $stdinvers instead.\n"
if $stdinvers ne $ddbvers;
while(<DDB>) {
split;
print SORT join("\t","princ",(@_)[6,9,19,10,13,14],
sprintf("0x%04x",$_[21]),
$princ{$_[6]}),"\n";
}
close(DDB);
for $keytab (@ARGV) {
open(KLIST, "$ENV{'TOP'}/install/bin/klist -k -t -K FILE:$keytab|") ||
die "Couldn't list $keytab: $!\n";
$dummy = <KLIST>;
$dummy = <KLIST>;
$dummy = <KLIST>;
while(<KLIST>) {
s/^\s+//;
split;
printf(SORT "keytab:FILE:%s\t%s-%s\t%s\t%s,%s\n",$keytab,
@_[3,0,4,1,2]);
}
}
close(SORT);