168651Skris#!/usr/local/bin/perl 268651Skris 368651Skrisopen (NUMIN,"$ARGV[1]") || die "Can't open number file $ARGV[1]"; 468651Skris$max_nid=0; 568651Skris$o=0; 668651Skriswhile(<NUMIN>) 768651Skris { 868651Skris chop; 968651Skris $o++; 1068651Skris s/#.*$//; 1168651Skris next if /^\s*$/; 12109998Smarkm $_ = 'X'.$_; 1368651Skris ($Cname,$mynum) = split; 14109998Smarkm $Cname =~ s/^X//; 1568651Skris if (defined($nidn{$mynum})) 1668651Skris { die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; } 17238405Sjkim if (defined($nid{$Cname})) 18238405Sjkim { die "$ARGV[1]:$o:There's already an object with name ",$Cname," on line ",$order{$nid{$Cname}},"\n"; } 1968651Skris $nid{$Cname} = $mynum; 2068651Skris $nidn{$mynum} = $Cname; 2168651Skris $order{$mynum} = $o; 2268651Skris $max_nid = $mynum if $mynum > $max_nid; 2368651Skris } 2468651Skrisclose NUMIN; 2568651Skris 2668651Skrisopen (IN,"$ARGV[0]") || die "Can't open input file $ARGV[0]"; 2768651Skris$Cname=""; 2868651Skris$o=0; 2968651Skriswhile (<IN>) 3068651Skris { 3168651Skris chop; 3268651Skris $o++; 3368651Skris if (/^!module\s+(.*)$/) 3468651Skris { 3568651Skris $module = $1."-"; 3668651Skris $module =~ s/\./_/g; 3768651Skris $module =~ s/-/_/g; 3868651Skris } 3968651Skris if (/^!global$/) 4068651Skris { $module = ""; } 4168651Skris if (/^!Cname\s+(.*)$/) 4268651Skris { $Cname = $1; } 4368651Skris if (/^!Alias\s+(.+?)\s+(.*)$/) 4468651Skris { 4568651Skris $Cname = $module.$1; 4668651Skris $myoid = $2; 4768651Skris $myoid = &process_oid($myoid); 4868651Skris $Cname =~ s/-/_/g; 4968651Skris $ordern{$o} = $Cname; 5068651Skris $order{$Cname} = $o; 5168651Skris $obj{$Cname} = $myoid; 5268651Skris $_ = ""; 5368651Skris $Cname = ""; 5468651Skris } 5568651Skris s/!.*$//; 5668651Skris s/#.*$//; 5768651Skris next if /^\s*$/; 5868651Skris ($myoid,$mysn,$myln) = split ':'; 5968651Skris $mysn =~ s/^\s*//; 6068651Skris $mysn =~ s/\s*$//; 6168651Skris $myln =~ s/^\s*//; 6268651Skris $myln =~ s/\s*$//; 6368651Skris $myoid =~ s/^\s*//; 6468651Skris $myoid =~ s/\s*$//; 6568651Skris if ($myoid ne "") 6668651Skris { 6768651Skris $myoid = &process_oid($myoid); 6868651Skris } 6968651Skris 7068651Skris if ($Cname eq "" && !($myln =~ / /)) 7168651Skris { 7268651Skris $Cname = $myln; 7368651Skris $Cname =~ s/\./_/g; 7468651Skris $Cname =~ s/-/_/g; 7568651Skris if ($Cname ne "" && defined($ln{$module.$Cname})) 7668651Skris { die "objects.txt:$o:There's already an object with long name ",$ln{$module.$Cname}," on line ",$order{$module.$Cname},"\n"; } 7768651Skris } 7868651Skris if ($Cname eq "") 7968651Skris { 8068651Skris $Cname = $mysn; 8168651Skris $Cname =~ s/-/_/g; 8268651Skris if ($Cname ne "" && defined($sn{$module.$Cname})) 8368651Skris { die "objects.txt:$o:There's already an object with short name ",$sn{$module.$Cname}," on line ",$order{$module.$Cname},"\n"; } 8468651Skris } 8568651Skris if ($Cname eq "") 8668651Skris { 8768651Skris $Cname = $myln; 8868651Skris $Cname =~ s/-/_/g; 8968651Skris $Cname =~ s/\./_/g; 9068651Skris $Cname =~ s/ /_/g; 9168651Skris if ($Cname ne "" && defined($ln{$module.$Cname})) 9268651Skris { die "objects.txt:$o:There's already an object with long name ",$ln{$module.$Cname}," on line ",$order{$module.$Cname},"\n"; } 9368651Skris } 9468651Skris $Cname =~ s/\./_/g; 9568651Skris $Cname =~ s/-/_/g; 9668651Skris $Cname = $module.$Cname; 9768651Skris $ordern{$o} = $Cname; 9868651Skris $order{$Cname} = $o; 9968651Skris $sn{$Cname} = $mysn; 10068651Skris $ln{$Cname} = $myln; 10168651Skris $obj{$Cname} = $myoid; 10268651Skris if (!defined($nid{$Cname})) 10368651Skris { 10468651Skris $max_nid++; 10568651Skris $nid{$Cname} = $max_nid; 10668651Skris $nidn{$max_nid} = $Cname; 107238405Sjkimprint STDERR "Added OID $Cname\n"; 10868651Skris } 10968651Skris $Cname=""; 11068651Skris } 11168651Skrisclose IN; 11268651Skris 11368651Skrisopen (NUMOUT,">$ARGV[1]") || die "Can't open output file $ARGV[1]"; 11468651Skrisforeach (sort { $a <=> $b } keys %nidn) 11568651Skris { 11668651Skris print NUMOUT $nidn{$_},"\t\t",$_,"\n"; 11768651Skris } 11868651Skrisclose NUMOUT; 11968651Skris 12068651Skrisopen (OUT,">$ARGV[2]") || die "Can't open output file $ARGV[2]"; 12168651Skrisprint OUT <<'EOF'; 12289837Skris/* crypto/objects/obj_mac.h */ 12389837Skris 12489837Skris/* THIS FILE IS GENERATED FROM objects.txt by objects.pl via the 12589837Skris * following command: 12689837Skris * perl objects.pl objects.txt obj_mac.num obj_mac.h 12789837Skris */ 12889837Skris 12968651Skris/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) 13068651Skris * All rights reserved. 13168651Skris * 13268651Skris * This package is an SSL implementation written 13368651Skris * by Eric Young (eay@cryptsoft.com). 13468651Skris * The implementation was written so as to conform with Netscapes SSL. 13568651Skris * 13668651Skris * This library is free for commercial and non-commercial use as long as 13768651Skris * the following conditions are aheared to. The following conditions 13868651Skris * apply to all code found in this distribution, be it the RC4, RSA, 13968651Skris * lhash, DES, etc., code; not just the SSL code. The SSL documentation 14068651Skris * included with this distribution is covered by the same copyright terms 14168651Skris * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14268651Skris * 14368651Skris * Copyright remains Eric Young's, and as such any Copyright notices in 14468651Skris * the code are not to be removed. 14568651Skris * If this package is used in a product, Eric Young should be given attribution 14668651Skris * as the author of the parts of the library used. 14768651Skris * This can be in the form of a textual message at program startup or 14868651Skris * in documentation (online or textual) provided with the package. 14968651Skris * 15068651Skris * Redistribution and use in source and binary forms, with or without 15168651Skris * modification, are permitted provided that the following conditions 15268651Skris * are met: 15368651Skris * 1. Redistributions of source code must retain the copyright 15468651Skris * notice, this list of conditions and the following disclaimer. 15568651Skris * 2. Redistributions in binary form must reproduce the above copyright 15668651Skris * notice, this list of conditions and the following disclaimer in the 15768651Skris * documentation and/or other materials provided with the distribution. 15868651Skris * 3. All advertising materials mentioning features or use of this software 15968651Skris * must display the following acknowledgement: 16068651Skris * "This product includes cryptographic software written by 16168651Skris * Eric Young (eay@cryptsoft.com)" 16268651Skris * The word 'cryptographic' can be left out if the rouines from the library 16368651Skris * being used are not cryptographic related :-). 16468651Skris * 4. If you include any Windows specific code (or a derivative thereof) from 16568651Skris * the apps directory (application code) you must include an acknowledgement: 16668651Skris * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 16768651Skris * 16868651Skris * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 16968651Skris * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17068651Skris * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17168651Skris * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17268651Skris * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17368651Skris * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 17468651Skris * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 17568651Skris * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 17668651Skris * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 17768651Skris * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 17868651Skris * SUCH DAMAGE. 17968651Skris * 18068651Skris * The licence and distribution terms for any publically available version or 18168651Skris * derivative of this code cannot be changed. i.e. this code cannot simply be 18268651Skris * copied and put under another distribution licence 18368651Skris * [including the GNU Public Licence.] 18468651Skris */ 18568651Skris 18668651Skris#define SN_undef "UNDEF" 18768651Skris#define LN_undef "undefined" 18868651Skris#define NID_undef 0 18968651Skris#define OBJ_undef 0L 19068651Skris 19168651SkrisEOF 19268651Skris 19368651Skrisforeach (sort { $a <=> $b } keys %ordern) 19468651Skris { 19568651Skris $Cname=$ordern{$_}; 19668651Skris print OUT "#define SN_",$Cname,"\t\t\"",$sn{$Cname},"\"\n" if $sn{$Cname} ne ""; 19768651Skris print OUT "#define LN_",$Cname,"\t\t\"",$ln{$Cname},"\"\n" if $ln{$Cname} ne ""; 19868651Skris print OUT "#define NID_",$Cname,"\t\t",$nid{$Cname},"\n" if $nid{$Cname} ne ""; 19968651Skris print OUT "#define OBJ_",$Cname,"\t\t",$obj{$Cname},"\n" if $obj{$Cname} ne ""; 20068651Skris print OUT "\n"; 20168651Skris } 20268651Skris 20368651Skrisclose OUT; 20468651Skris 20568651Skrissub process_oid 20668651Skris { 20768651Skris local($oid)=@_; 20868651Skris local(@a,$oid_pref); 20968651Skris 21068651Skris @a = split(/\s+/,$myoid); 21168651Skris $pref_oid = ""; 21268651Skris $pref_sep = ""; 21368651Skris if (!($a[0] =~ /^[0-9]+$/)) 21468651Skris { 21568651Skris $a[0] =~ s/-/_/g; 216100928Snectar if (!defined($obj{$a[0]})) 217100928Snectar { die "$ARGV[0]:$o:Undefined identifier ",$a[0],"\n"; } 21868651Skris $pref_oid = "OBJ_" . $a[0]; 21968651Skris $pref_sep = ","; 22068651Skris shift @a; 22168651Skris } 22268651Skris $oids = join('L,',@a) . "L"; 22368651Skris if ($oids ne "L") 22468651Skris { 22568651Skris $oids = $pref_oid . $pref_sep . $oids; 22668651Skris } 22768651Skris else 22868651Skris { 22968651Skris $oids = $pref_oid; 23068651Skris } 23168651Skris return($oids); 23268651Skris } 233