Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(464)

Side by Side Diff: openssl/tools/c_rehash

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/tools/Makefile ('k') | openssl/tools/c_rehash.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/perl 1 #!/usr/bin/perl
2 2
3 3
4 # Perl c_rehash script, scan all files in a directory 4 # Perl c_rehash script, scan all files in a directory
5 # and add symbolic links to their hash values. 5 # and add symbolic links to their hash values.
6 6
7 my $openssl; 7 my $openssl;
8 8
9 my $dir = "/usr/local/ssl"; 9 my $dir = "/usr/local/ssl";
10 my $prefix = "/usr/local/ssl"; 10 my $prefix = "/usr/local/ssl";
11 11
12 if(defined $ENV{OPENSSL}) { 12 if(defined $ENV{OPENSSL}) {
13 $openssl = $ENV{OPENSSL}; 13 $openssl = $ENV{OPENSSL};
14 } else { 14 } else {
15 $openssl = "openssl"; 15 $openssl = "openssl";
16 $ENV{OPENSSL} = $openssl; 16 $ENV{OPENSSL} = $openssl;
17 } 17 }
18 18
19 $ENV{PATH} .= ":$dir/bin"; 19 my $pwd;
20 eval "require Cwd";
21 if (defined(&Cwd::getcwd)) {
22 » $pwd=Cwd::getcwd();
23 } else {
24 » $pwd=`pwd`; chomp($pwd);
25 }
26 my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':'; # DOS/Win32 or Unix delimite r?
27
28 $ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : ""); # pre fix our path
20 29
21 if(! -x $openssl) { 30 if(! -x $openssl) {
22 my $found = 0; 31 my $found = 0;
23 » foreach (split /:/, $ENV{PATH}) { 32 » foreach (split /$path_delim/, $ENV{PATH}) {
24 if(-x "$_/$openssl") { 33 if(-x "$_/$openssl") {
25 $found = 1; 34 $found = 1;
35 $openssl = "$_/$openssl";
26 last; 36 last;
27 } 37 }
28 } 38 }
29 if($found == 0) { 39 if($found == 0) {
30 print STDERR "c_rehash: rehashing skipped ('openssl' program not available)\n"; 40 print STDERR "c_rehash: rehashing skipped ('openssl' program not available)\n";
31 exit 0; 41 exit 0;
32 } 42 }
33 } 43 }
34 44
35 if(@ARGV) { 45 if(@ARGV) {
36 @dirlist = @ARGV; 46 @dirlist = @ARGV;
37 } elsif($ENV{SSL_CERT_DIR}) { 47 } elsif($ENV{SSL_CERT_DIR}) {
38 » @dirlist = split /:/, $ENV{SSL_CERT_DIR}; 48 » @dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
39 } else { 49 } else {
40 $dirlist[0] = "$dir/certs"; 50 $dirlist[0] = "$dir/certs";
41 } 51 }
42 52
53 if (-d $dirlist[0]) {
54 chdir $dirlist[0];
55 $openssl="$pwd/$openssl" if (!-x $openssl);
56 chdir $pwd;
57 }
43 58
44 foreach (@dirlist) { 59 foreach (@dirlist) {
45 if(-d $_ and -w $_) { 60 if(-d $_ and -w $_) {
46 hash_dir($_); 61 hash_dir($_);
47 } 62 }
48 } 63 }
49 64
50 sub hash_dir { 65 sub hash_dir {
51 my %hashlist; 66 my %hashlist;
52 print "Doing $_[0]\n"; 67 print "Doing $_[0]\n";
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 110
96 # Link a certificate to its subject name hash value, each hash is of 111 # Link a certificate to its subject name hash value, each hash is of
97 # the form <hash>.<n> where n is an integer. If the hash value already exists 112 # the form <hash>.<n> where n is an integer. If the hash value already exists
98 # then we need to up the value of n, unless its a duplicate in which 113 # then we need to up the value of n, unless its a duplicate in which
99 # case we skip the link. We check for duplicates by comparing the 114 # case we skip the link. We check for duplicates by comparing the
100 # certificate fingerprints 115 # certificate fingerprints
101 116
102 sub link_hash_cert { 117 sub link_hash_cert {
103 my $fname = $_[0]; 118 my $fname = $_[0];
104 $fname =~ s/'/'\\''/g; 119 $fname =~ s/'/'\\''/g;
105 » » my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`; 120 » » my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`;
106 chomp $hash; 121 chomp $hash;
107 chomp $fprint; 122 chomp $fprint;
108 $fprint =~ s/^.*=//; 123 $fprint =~ s/^.*=//;
109 $fprint =~ tr/://d; 124 $fprint =~ tr/://d;
110 my $suffix = 0; 125 my $suffix = 0;
111 # Search for an unused hash filename 126 # Search for an unused hash filename
112 while(exists $hashlist{"$hash.$suffix"}) { 127 while(exists $hashlist{"$hash.$suffix"}) {
113 # Hash matches: if fingerprint matches its a duplicate c ert 128 # Hash matches: if fingerprint matches its a duplicate c ert
114 if($hashlist{"$hash.$suffix"} eq $fprint) { 129 if($hashlist{"$hash.$suffix"} eq $fprint) {
115 print STDERR "WARNING: Skipping duplicate certif icate $fname\n"; 130 print STDERR "WARNING: Skipping duplicate certif icate $fname\n";
116 return; 131 return;
117 } 132 }
118 $suffix++; 133 $suffix++;
119 } 134 }
120 $hash .= ".$suffix"; 135 $hash .= ".$suffix";
121 print "$fname => $hash\n"; 136 print "$fname => $hash\n";
122 $symlink_exists=eval {symlink("",""); 1}; 137 $symlink_exists=eval {symlink("",""); 1};
123 if ($symlink_exists) { 138 if ($symlink_exists) {
124 symlink $fname, $hash; 139 symlink $fname, $hash;
125 } else { 140 } else {
126 » » » system ("cp", $fname, $hash); 141 » » » open IN,"<$fname" or die "can't open $fname for read";
142 » » » open OUT,">$hash" or die "can't open $hash for write";
143 » » » print OUT <IN>;»# does the job for small text files
144 » » » close OUT;
145 » » » close IN;
127 } 146 }
128 $hashlist{$hash} = $fprint; 147 $hashlist{$hash} = $fprint;
129 } 148 }
130 149
131 # Same as above except for a CRL. CRL links are of the form <hash>.r<n> 150 # Same as above except for a CRL. CRL links are of the form <hash>.r<n>
132 151
133 sub link_hash_crl { 152 sub link_hash_crl {
134 my $fname = $_[0]; 153 my $fname = $_[0];
135 $fname =~ s/'/'\\''/g; 154 $fname =~ s/'/'\\''/g;
136 my ($hash, $fprint) = `"$openssl" crl -hash -fingerprint -noout -in '$fname'`; 155 my ($hash, $fprint) = `"$openssl" crl -hash -fingerprint -noout -in '$fname'`;
(...skipping 15 matching lines...) Expand all
152 print "$fname => $hash\n"; 171 print "$fname => $hash\n";
153 $symlink_exists=eval {symlink("",""); 1}; 172 $symlink_exists=eval {symlink("",""); 1};
154 if ($symlink_exists) { 173 if ($symlink_exists) {
155 symlink $fname, $hash; 174 symlink $fname, $hash;
156 } else { 175 } else {
157 system ("cp", $fname, $hash); 176 system ("cp", $fname, $hash);
158 } 177 }
159 $hashlist{$hash} = $fprint; 178 $hashlist{$hash} = $fprint;
160 } 179 }
161 180
OLDNEW
« no previous file with comments | « openssl/tools/Makefile ('k') | openssl/tools/c_rehash.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698