[WinOF] Windows 7 support
[mirror/winof/.git] / WinOF / WIX / win7 / signDrivers.bat
1 @echo off\r
2 setlocal\r
3 \r
4 rem Sign device drivers for architectures specified\r
5 \r
6 rem usage:\r
7 rem   signDrivers CrossCertFilename CertStoreName path-2-drivers {noTimeStamp}\r
8 rem             CrossCertFilename - fully qualified path\filename of cross cert.\r
9 rem             CertStoreName - name of certificate in 'MY' Cert store (certmgr).\r
10 \r
11 rem example: signDrivers %CD%\cross-cert My bin\hca\r
12 \r
13 rem cmd.exe /V:on (delayed environment variable expansion) is required!\r
14 set F=on\r
15 set F=off\r
16 if not "!F!" == "off" (\r
17    echo Err: cmd.exe /V:on [delayed environment variable expansion] Required!\r
18    exit /B 1\r
19 )\r
20 \r
21 set OE=Win7\r
22 set DU=/du http://www.openfabrics.org\r
23 \r
24 set Usage='usage: signDrivers CrossCertFilename CertStoreName path-2-drivers {noTimeStamp}'\r
25 \r
26 if "%1" == "" (\r
27     echo %0 - missing CertFileName?\r
28     echo %0 - %Usage%\r
29     exit /B 1\r
30 )\r
31 \r
32 if not EXIST %1 (\r
33     echo %0 - Cert file missing?\r
34     echo %0 - %Usage%\r
35     exit /B 1\r
36 )\r
37 \r
38 rem %2 is already quoted.\r
39 if %2 == "" (\r
40     echo %0 - missing Cert Subject Name?\r
41     echo %0 - %Usage%\r
42     exit /B 1\r
43 )\r
44 \r
45 if "%3" == "" (\r
46     echo %0 - missing path-2-driver files?\r
47     echo %0 - %Usage%\r
48     exit /B 1\r
49 )\r
50 \r
51 rem Timestamp the signed file unless instructed not to.\r
52 if "%4" == "" (\r
53     set TS=/t http://timestamp.verisign.com/scripts/timstamp.dll\r
54 ) else (\r
55     set TS=\r
56 )\r
57 \r
58 rem make sure signtool is accessible in our path\r
59 path > jnk.txt\r
60 findstr /c:"SelfSign" jnk.txt > jnk1.txt\r
61 if %errorlevel% EQU 1 (\r
62     path "%PATH%;C:\WinDDK\6001.18001\bin\SelfSign"\r
63 )\r
64 if exist jnk1.txt  del /Q /F jnk1.txt\r
65 if exist jnk.txt  del /Q /F jnk.txt\r
66 \r
67 rem move to drivers folder\r
68 cd %3\r
69 if ERRORLEVEL 1 (\r
70     echo %0 - missing relative path %3\r
71     exit /B 1\r
72 )\r
73 echo cwd %CD%\r
74 \r
75 rem sign drivers for all architectures found\r
76 \r
77 for %%d in (amd64 x86 ia64) do (\r
78 \r
79     if not exist %%d (\r
80        echo %0 - skipping arch folder %%d\r
81     ) else (\r
82         pushd  %%d\r
83         echo %0 - Delete existing %%d .cat files\r
84         for %%f in ( *.cat ) do (\r
85             if exist %%f del /F /Q %%f\r
86         )\r
87 \r
88                 rem set OS type for inf2cat\r
89                 if "%%d" == "x86"   set OEA=7_X86\r
90                 if "%%d" == "amd64" set OEA=7_X64,Server2008R2_X64\r
91                 if "%%d" == "ia64"  set OEA=Server2008R2_IA64\r
92 \r
93         echo %0 - Generating %%d .cat files for !OEA!\r
94         inf2cat /driver:!CD! /os:!OEA!\r
95         if ERRORLEVEL 1 (\r
96             echo %CD% inf2cat failed\r
97             exit /B 1\r
98         )\r
99         echo %0 - Signing %%d .cat files\r
100         for %%f in ( *.cat ) do (\r
101             echo %0 - Signing %%d\%%f\r
102             signtool sign /ac %1 /n %2 %TS% %DU% %%f\r
103             if ERRORLEVEL 1 (\r
104                 echo %0 signtool sign %%f failed?\r
105                 echo %0    file %CD%\%%f\r
106                 exit /B 1\r
107             )\r
108             signtool verify /kp %%f\r
109             if ERRORLEVEL 1 (\r
110                 echo %0 signtool verify %%f failed?\r
111                 echo %0    file %CD%\%%f\r
112                 exit /B 1\r
113             )\r
114                         echo +\r
115         )\r
116 \r
117         echo %0 - Signing %%d .sys files\r
118         for %%f in ( *.sys ) do (\r
119             echo %0 - Signing %%d\%%f\r
120             signtool sign /ac %1 /n %2 %TS% %DU% %%f\r
121             if ERRORLEVEL 1 (\r
122                 echo %0 signtool sign %%f failed?\r
123                 echo %0    file %CD%\%%f\r
124                 exit /B 1\r
125             )\r
126             signtool verify /kp %%f\r
127             if ERRORLEVEL 1 (\r
128                 echo %0 signtool verify %%f failed?\r
129                 echo %0    file %CD%\%%f\r
130                 exit /B 1\r
131             )\r
132                         echo +\r
133         )\r
134 \r
135         echo %0 - Verify %%d .cat + .sys files\r
136         for %%f in ( *.sys ) do (\r
137                         set D=%%f\r
138                         set C=!D:sys=cat!\r
139                         if exist !C! (\r
140                                 echo %0 - Verify %%d\!C! %%d\%%f\r
141                                 signtool verify /q /kp /c !C! %%f\r
142                                 if ERRORLEVEL 1 (\r
143                                         echo %0 signtool verify /kp /c !C! %%f failed?\r
144                                         exit /B 1\r
145                                 )\r
146                                 signtool verify /pa /c !C! %%f\r
147                                 if ERRORLEVEL 1 (\r
148                                         echo %0 signtool verify /pa /c !C! %%f failed?\r
149                                         exit /B 1\r
150                                 )\r
151                                 echo +\r
152             )\r
153         )\r
154         popd\r
155     )\r
156 )\r
157 \r
158 endlocal\r
159 echo %0 - Finished: %0 %1 %2 %OE% \r