ec/ecp_nistz256.c: further harmonization with latest rules.
[oweals/openssl.git] / crypto / objects / objxref.pl
index 0dd360b5b0cda7e9bb1da8153284c228ff9efc61..833f4ab8829037ab2305935a4f9bd00cffbcfea1 100644 (file)
@@ -1,6 +1,13 @@
 #!/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.
 
@@ -12,7 +19,7 @@ while (<IN>)
        }
 close IN;
 
-open IN, "obj_xref.txt";
+open(IN, $xref_file) || die "Can't open $xref_file";
 
 my $ln = 1;
 
@@ -32,7 +39,8 @@ my @xrkeys = keys %xref_tbl;
 
 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;
        }
@@ -47,11 +55,20 @@ my @srt2 = sort
 
        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[] =
        {
@@ -74,7 +91,10 @@ EOF
 
 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";
        }