#!/usr/local/bin/perl
-open IN, "obj_mac.num";
+use strict;
+
+my %xref_tbl;
+my %oid_tbl;
+
+my ($mac_file, $xref_file) = @ARGV;
+
+open(IN, $mac_file) || die "Can't open $mac_file";
# Read in OID nid values for a lookup table.
}
close IN;
-open IN, "obj_xref.txt";
+open(IN, $xref_file) || die "Can't open $xref_file";
my $ln = 1;
my @srt1 = sort { $oid_tbl{$a} <=> $oid_tbl{$b}} @xrkeys;
-for(my $i = 0; $i <= $#srt1; $i++)
+my $i;
+for($i = 0; $i <= $#srt1; $i++)
{
$xref_tbl{$srt1[$i]}[2] = $i;
}
return $ap2 - $bp2;
} @xrkeys;
-
+
+my $pname = $0;
+
+$pname =~ s|^.[^/]/||;
print <<EOF;
+/* AUTOGENERATED BY $pname, DO NOT EDIT */
-typedef int nid_triple[3];
+typedef struct
+ {
+ int sign_id;
+ int hash_id;
+ int pkey_id;
+ } nid_triple;
static const nid_triple sigoid_srt[] =
{
foreach (@srt2)
{
- my $x = $xref_tbl{$_}[2];
+ my ($p1, $p2, $x) = @{$xref_tbl{$_}};
+ # If digest or signature algorithm is "undef" then the algorithm
+ # needs special handling and is excluded from the cross reference table.
+ next if $p1 eq "undef" || $p2 eq "undef";
print "\t\&sigoid_srt\[$x\],\n";
}