[WINOF] optionally sign drivers only for a specific OS & processor architecture.
[mirror/winof/.git] / WinOF / WIX / sign-all-drivers.bat
1 @echo off\r
2 setlocal\r
3 rem\r
4 rem Digitally sign all drivers for all OSes & architectures.\r
5 rem\r
6 rem example - sign-all-drivers CertFilename CertSubjName {OS arch}\r
7 rem   CertFilename - full path to MSCV-VSClass3.cer file\r
8 rem                  example ...\trunk\winof\wix\MSCV-VSClass3.cer\r
9 rem   CertSubjName - "OpenFabricsAlliance" Your Company CertName in CertStore. \r
10 rem   OS - one of all,wxp,wlh,wnet,win7\r
11 rem   arch - all,amd64,x64,x86,ia64\r
12 rem see TS below.\r
13 rem\r
14 \r
15 if "%1" == "" (\r
16     echo %0 - Missing CertStore Filename?\r
17     exit /B 1\r
18 )\r
19 \r
20 if not EXIST %1 (\r
21     echo %0 - Missing Certificate file?\r
22     echo %0 -    %1\r
23     exit /B 1\r
24 )\r
25 \r
26 rem already quoted\r
27 if %2 == "" (\r
28     echo %0 - Missing Cert Subject name?\r
29     exit /B 1\r
30 )\r
31 \r
32 if "%3" == "" (\r
33 :all\r
34     set OS_names=win7 wlh wnet wxp\r
35     set Arch_names=amd64 x86 ia64\r
36 ) else (\r
37     if "%4" == "" (\r
38       echo %0: options OS arch must both be specified.\r
39       exit /B 1 \r
40     )\r
41 \r
42     if "%3" == "all" goto all\r
43     set OS_names=%3\r
44     if "%4" == "x64" (set Arch_names=amd64) else (set Arch_names=%4)\r
45 )\r
46 \r
47 rem XXX defeat TimeStamping until net access resolved.\r
48 rem set TS=noTimeStamp\r
49 \r
50 for %%p in ( %OS_names% ) do (\r
51     echo %0 - Signing %%p drivers\r
52     pushd %%p\r
53     if ERRORLEVEL 1 (\r
54         echo %0 - Error in pushd %%p folder ?\r
55         exit /B 1\r
56     )\r
57     rem Sign free HCA drivers\r
58     call signDrivers %1 %2 bin\HCA %TS%\r
59     if ERRORLEVEL 1 (\r
60         echo %0 - Error signing %%p\bin\HCA drivers?\r
61         exit /B 1\r
62     )\r
63     rem Sign checked HCA drivers\r
64     call signDrivers %1 %2 bin\Chk\HCA %TS%\r
65     if ERRORLEVEL 1 (\r
66         echo %0 - Error signing %%p\bin\Chk\HCA drivers?\r
67         exit /B 1\r
68     )\r
69         \r
70     rem Sign free: IPoIB & VNIC drivers\r
71     call signDrivers %1 %2 bin\net %TS%\r
72     if ERRORLEVEL 1 (\r
73         echo %0 - Error signing %%p\bin\net drivers?\r
74         exit /B 1\r
75     )\r
76     rem Sign checked: IPoIB & VNIC drivers\r
77     call signDrivers %1 %2 bin\Chk\net %TS%\r
78     if ERRORLEVEL 1 (\r
79         echo %0 - Error signing %%p\bin\Chk\net drivers?\r
80         exit /B 1\r
81     )\r
82         \r
83     rem Sign free SRP drivers\r
84     call signDrivers %1 %2 bin\storage %TS%\r
85     if ERRORLEVEL 1 (\r
86         echo %0 - Error signing %%p\bin\storage drivers?\r
87         exit /B 1\r
88     )\r
89     rem Sign checked SRP drivers\r
90     call signDrivers %1 %2 bin\Chk\storage %TS%\r
91     if ERRORLEVEL 1 (\r
92         echo %0 - Error signing %%p\bin\Chk\storage drivers?\r
93         exit /B 1\r
94     )\r
95         popd\r
96 )\r
97 \r
98 rem sign executables used in installation so Win7 doesn't complain\r
99 \r
100 set TISTMP=/t http://timestamp.verisign.com/scripts/timstamp.dll\r
101 set DU=/du http://www.openfabrics.org\r
102 \r
103 for %%p in ( %OS_names% ) do (\r
104         pushd %%p\r
105         echo.\r
106         echo Sign %%p Executables\r
107     for %%a in ( %Arch_names% ) do (\r
108                 for %%f in ( bin\net\%%a\ndinstall.exe bin\net\%%a\installsp.exe ) do (\r
109                         if exist %%f (\r
110                 signtool sign /ac %1 /n %2 %TISTMP% %DU% %%f\r
111                 if ERRORLEVEL 1 (\r
112                         echo %0 signtool sign %%a\%%f failed?\r
113                                         popd\r
114                         exit /B 1\r
115                 )\r
116                 signtool verify /pa %%f\r
117                 if ERRORLEVEL 1 (\r
118                         echo %0 signtool verify %%a\%%f failed?\r
119                                         popd\r
120                         exit /B 1\r
121                 )\r
122                         )\r
123                 )\r
124         )\r
125         popd\r
126 )\r
127 \r
128 rem Sign devman.exe for win7 device cleanup operation.\r
129 \r
130 for %%a in ( x64 x86 ia64 ) do (\r
131         signtool verify /q /pa %%a\devman.exe\r
132         if ERRORLEVEL 1 (\r
133                 signtool sign /ac %1 /n %2 %TISTMP% %DU% %%a\devman.exe\r
134                 if ERRORLEVEL 1 (\r
135                         echo %0 signtool sign %%a\devman.exe failed?\r
136                         exit /B 1\r
137                 )\r
138         )\r
139 )\r
140 \r
141 endlocal\r
142 echo Done %0 %1\r