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