--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cryptomgmtlibs/securitytestfw/test/autotesting/checklocationofcertificates.pl Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,129 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of the License "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+# This script was written as part the solution for DEF116697: Remove Security Test Certificates from CBR
+# The purpose of the defect was to stop the export of all test certificates that may not be Symbian owned.
+# To accomplish this the certificates were all moved to a new location which does not get put in the CBR.
+# This script is run in the ONB so that no new certificates are added to any directory that appears in the CBR.
+# (Note that the certificates in rootcerts are Symbian owned and so can be exported.)
+
+
+# This script takes 2 arguments
+# - directory to search for certificates (defaults to \common\generic\security)
+# - output file for result of test (defaults to $ENV{EPOCROOT}epoc32\\winscw\\c\\CheckLocationOfCertificatesLog.txt)
+# The script searches through the specified directory for any certificate files (files ending in .cer, .der and .crt).
+# It will print out the names of any files found.
+
+
+use File::Find;
+
+# array holding the list of full path names to all the certificates found.
+@Certificates;
+
+
+sub FindCerts
+{
+ # Check for certificates which are not in valid locations
+ if (($File::Find::dir !~ m/\/testframework\/testcertificates/) && ($File::Find::dir !~ m/\/os\/security\/cryptoservices\/rootcertificates/))
+ {
+ if ($File::Find::name =~ m/\.cer$/i)
+ {
+ push @Certificates, $File::Find::name;
+ }
+ if ($File::Find::name =~ m/\.crt$/i)
+ {
+ push @Certificates, $File::Find::name;
+ }
+ if ($File::Find::name =~ m/\.der$/i)
+ {
+ push @Certificates, $File::Find::name;
+ }
+ if ($File::Find::name =~ m/\.pem$/i)
+ {
+ push @Certificates, $File::Find::name;
+ }
+ }
+
+}
+
+
+
+# Determine directory to search
+my $dirToSearch;
+if (@ARGV[0])
+ {
+ $dirToSearch = $ARGV[0];
+ }
+else
+ {
+ $dirToSearch = "$ENV{'SECURITYSOURCEDIR'}";
+ }
+
+# Determine where to put the logs. This file will be parsed by the overnight build system.
+my $outputFile;
+if (@ARGV[1])
+ {
+ $outputFile = $ARGV[1];
+ }
+else
+ {
+ die "EPOCROOT not defined, must specify directory" if !defined ($ENV{EPOCROOT});
+ my $emulatorLogDirectory = "$ENV{EPOCROOT}logs\\winscw\\c";
+
+ if ( ! -d $emulatorLogDirectory )
+ {
+ system("md $ENV{EPOCROOT}logs\\winscw\\c");
+ }
+ $outputFile = "$ENV{EPOCROOT}epoc32\\winscw\\c\\checklocationofcertificateslog.txt";
+ }
+
+unlink $outputFile;
+die "\nUnable to open log $outputFile\n" if( not open( SCANLOG, ">$outputFile" ) );
+
+
+print SCANLOG "\nScanning $dirToSearch for incorrectly located certificate files.\n\n";
+
+
+# Search for certificate files
+find { wanted => \&FindCerts, no_chdir => 1 }, $dirToSearch;
+
+my $count = scalar(@Certificates);
+
+if ($count eq 0)
+{
+ print (SCANLOG "No certificates found in $dirToSearch. Test PASSED.\n\n");
+ print (SCANLOG "\nTests completed OK");
+ print (SCANLOG "\nRun: 1");
+ print (SCANLOG "\nPassed: 1");
+ print (SCANLOG "\n0 tests failed out of 1");
+}
+else
+ {
+ foreach $certificatefile (@Certificates)
+ {
+ $certificatefile =~ s/\//\\/g;
+ print (SCANLOG "Certificate: $certificatefile is in an invalid location. Should be moved to ......\\security\\testframework\\testcertificates\\...\n");
+ print (SCANLOG "Test for $certificatefile FAILED.\n\n");
+ }
+ print (SCANLOG "\nTests completed OK");
+ print (SCANLOG "\nRun: 1");
+ print (SCANLOG "\nPassed: 0");
+ print (SCANLOG "\n1 tests failed out of 1");
+ }
+
+close(SCANLOG);
+
+
+