X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=test%2Frecipes%2F40-test_rehash.t;h=1204f1f77fe651768ebcf6d3ecf355240333b1bd;hp=dd7f4acbf1698ffd236c1dbe77057ed3098e152d;hb=97ea1e7f42eea97b117af08b3c1d29f6443850ab;hpb=b6453a68bbb34c901a2eaf24012d0a3afcbf52ff diff --git a/test/recipes/40-test_rehash.t b/test/recipes/40-test_rehash.t index dd7f4acbf1..1204f1f77f 100644 --- a/test/recipes/40-test_rehash.t +++ b/test/recipes/40-test_rehash.t @@ -1,4 +1,11 @@ -#! /usr/bin/perl +#! /usr/bin/env perl +# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the OpenSSL license (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + use strict; use warnings; @@ -6,7 +13,8 @@ use warnings; use File::Spec::Functions; use File::Copy; use File::Basename; -use OpenSSL::Test qw/:DEFAULT bldtop_file/; +use OpenSSL::Glob; +use OpenSSL::Test qw/:DEFAULT srctop_file/; setup("test_rehash"); @@ -50,16 +58,39 @@ indir "rehash.$$" => sub { }, create => 1, cleanup => 1; sub prepare { - my @sourcefiles = - sort map { glob(bldtop_file('certs', 'demo', "*.$_")) } ('pem', - 'crt', - 'cer', - 'crl'); + my @pemsourcefiles = sort glob(srctop_file('test', "*.pem")); my @destfiles = (); - foreach (@sourcefiles) { - copy($_, curdir()); - push @destfiles, catfile(curdir(), basename($_)); + + die "There are no source files\n" if scalar @pemsourcefiles == 0; + + my $cnt = 0; + foreach (@pemsourcefiles) { + my $basename = basename($_, ".pem"); + my $writing = 0; + + open PEM, $_ or die "Can't read $_: $!\n"; + while (my $line = ) { + if ($line =~ m{^-----BEGIN (?:CERTIFICATE|X509 CRL)-----}) { + die "New start in a PEM blob?\n" if $writing; + $cnt++; + my $destfile = + catfile(curdir(), + $basename . sprintf("-%02d", $cnt) . ".pem"); + push @destfiles, $destfile; + open OUT, '>', $destfile + or die "Can't write $destfile\n"; + $writing = 1; + } + print OUT $line if $writing; + if ($line =~ m|^-----END |) { + close OUT if $writing; + $writing = 0; + } + } + die "No end marker in $basename\n" if $writing; } + die "No test PEM files produced\n" if $cnt == 0; + foreach (@_) { die "Internal error, argument is not CODE" unless (ref($_) eq 'CODE');