1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#!/usr/local/bin/perl
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# fixes bug in floating point emulation on sparc64 when
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# this script produces off-by-one output on sparc64
5221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromuse integer;
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectsub obj_cmp
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local(@a,@b,$_,$r);
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$A=$obj_len{$obj{$nid{$a}}};
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$B=$obj_len{$obj{$nid{$b}}};
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$r=($A-$B);
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return($r) if $r != 0;
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$A=$obj_der{$obj{$nid{$a}}};
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$B=$obj_der{$obj{$nid{$b}}};
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return($A cmp $B);
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectsub expand_obj
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local(*v)=@_;
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local($k,$d);
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local($i);
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	do	{
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$i=0;
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		foreach $k (keys %v)
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (($v{$k} =~ s/(OBJ_[^,]+),/$v{$1},/))
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{ $i++; }
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} while($i);
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	foreach $k (keys %v)
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		@a=split(/,/,$v{$k});
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$objn{$k}=$#a+1;
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(%objn);
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectopen (IN,"$ARGV[0]") || die "Can't open input file $ARGV[0]";
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectopen (OUT,">$ARGV[1]") || die "Can't open output file $ARGV[1]";
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectwhile (<IN>)
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	next unless /^\#define\s+(\S+)\s+(.*)$/;
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$v=$1;
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$d=$2;
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$d =~ s/^\"//;
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$d =~ s/\"$//;
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ($v =~ /^SN_(.*)$/)
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(defined $snames{$d})
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print "WARNING: Duplicate short name \"$d\"\n";
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{ $snames{$d} = "X"; }
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$sn{$1}=$d;
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	elsif ($v =~ /^LN_(.*)$/)
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if(defined $lnames{$d})
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			print "WARNING: Duplicate long name \"$d\"\n";
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{ $lnames{$d} = "X"; }
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$ln{$1}=$d;
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	elsif ($v =~ /^NID_(.*)$/)
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{ $nid{$d}=$1; }
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	elsif ($v =~ /^OBJ_(.*)$/)
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$obj{$1}=$v;
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$objd{$v}=$d;
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectclose IN;
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project%ob=&expand_obj(*objd);
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@a=sort { $a <=> $b } keys %nid;
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$n=$a[$#a]+1;
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@lvalues=();
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project$lvalues=0;
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectfor ($i=0; $i<$n; $i++)
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (!defined($nid{$i}))
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		push(@out,"{NULL,NULL,NID_undef,0,NULL,0},\n");
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$sn=defined($sn{$nid{$i}})?"$sn{$nid{$i}}":"NULL";
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$ln=defined($ln{$nid{$i}})?"$ln{$nid{$i}}":"NULL";
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ($sn eq "NULL") {
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$sn=$ln;
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$sn{$nid{$i}} = $ln;
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if ($ln eq "NULL") {
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$ln=$sn;
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$ln{$nid{$i}} = $sn;
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out ="{";
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out.="\"$sn\"";
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out.=","."\"$ln\"";
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out.=",NID_$nid{$i},";
118c64f6fe2be99cb3fa8e491b5bede9a217de87a4cKenny Root		if (defined($obj{$nid{$i}}) && $objd{$obj{$nid{$i}}} =~ /,/)
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$v=$objd{$obj{$nid{$i}}};
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$v =~ s/L//g;
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$v =~ s/,/ /g;
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$r=&der_it($v);
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$z="";
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$length=0;
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			foreach (unpack("C*",$r))
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				$z.=sprintf("0x%02X,",$_);
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				$length++;
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$obj_der{$obj{$nid{$i}}}=$z;
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$obj_len{$obj{$nid{$i}}}=$length;
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			push(@lvalues,sprintf("%-45s/* [%3d] %s */\n",
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				$z,$lvalues,$obj{$nid{$i}}));
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$out.="$length,&(lvalues[$lvalues]),0";
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$lvalues+=$length;
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		else
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$out.="0,NULL,0";
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out.="},\n";
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		push(@out,$out);
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@a=grep(defined($sn{$nid{$_}}),0 .. $n);
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectforeach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a)
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
151221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	push(@sn,sprintf("%2d,\t/* \"$sn{$nid{$_}}\" */\n",$_));
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@a=grep(defined($ln{$nid{$_}}),0 .. $n);
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectforeach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a)
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
157221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	push(@ln,sprintf("%2d,\t/* \"$ln{$nid{$_}}\" */\n",$_));
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@a=grep(defined($obj{$nid{$_}}),0 .. $n);
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectforeach (sort obj_cmp @a)
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$m=$obj{$nid{$_}};
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$v=$objd{$m};
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$v =~ s/L//g;
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$v =~ s/,/ /g;
167221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstrom	push(@ob,sprintf("%2d,\t/* %-32s %s */\n",$_,$m,$v));
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint OUT <<'EOF';
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/objects/obj_dat.h */
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* THIS FILE IS GENERATED FROM objects.h by obj_dat.pl via the
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * following command:
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * perl obj_dat.pl obj_mac.h obj_dat.h
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectEOF
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf OUT "#define NUM_NID %d\n",$n;
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf OUT "#define NUM_SN %d\n",$#sn+1;
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf OUT "#define NUM_LN %d\n",$#ln+1;
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprintf OUT "#define NUM_OBJ %d\n\n",$#ob+1;
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
242221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromprintf OUT "static const unsigned char lvalues[%d]={\n",$lvalues+1;
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint OUT @lvalues;
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint OUT "};\n\n";
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
246221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromprintf OUT "static const ASN1_OBJECT nid_objs[NUM_NID]={\n";
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectforeach (@out)
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (length($_) > 75)
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$out="";
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		foreach (split(/,/))
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$t=$out.$_.",";
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (length($t) > 70)
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				{
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				print OUT "$out\n";
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				$t="\t$_,";
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				}
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$out=$t;
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		chop $out;
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		print OUT "$out";
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{ print OUT $_; }
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT "};\n\n";
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
270221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromprintf OUT "static const unsigned int sn_objs[NUM_SN]={\n";
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT @sn;
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT "};\n\n";
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
274221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromprintf OUT "static const unsigned int ln_objs[NUM_LN]={\n";
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT @ln;
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT "};\n\n";
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
278221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromprintf OUT "static const unsigned int obj_objs[NUM_OBJ]={\n";
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT @ob;
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectprint  OUT "};\n\n";
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectclose OUT;
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectsub der_it
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local($v)=@_;
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	local(@a,$i,$ret,@r);
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	@a=split(/\s+/,$v);
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	$ret.=pack("C*",$a[0]*40+$a[1]);
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	shift @a;
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	shift @a;
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	foreach (@a)
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		@r=();
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$t=0;
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		while ($_ >= 128)
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$x=$_%128;
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			$_/=128;
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			push(@r,((($t++)?0x80:0)|$x));
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		push(@r,((($t++)?0x80:0)|$_));
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		$ret.=pack("C*",reverse(@r));
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return($ret);
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
308