[WinOF] Windows 7 support
[mirror/winof/.git] / WinOF / WIX / wlh / 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=Server2008\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         if "%%d" == "amd64" set OEA=%OE%_X64,Vista_X64\r
89         if "%%d" == "x86"   set OEA=%OE%_X86,Vista_X86\r
90                 if "%%d" == "ia64"  set OEA=%OE%_IA64\r
91 \r
92         echo %0 - Generating %%d .cat files for !OEA!\r
93         inf2cat /driver:!CD! /os:!OEA!\r
94         if ERRORLEVEL 1 (\r
95             echo %CD% inf2cat failed\r
96             exit /B 1\r
97         )\r
98         echo %0 - Signing %%d .cat files\r
99         for %%f in ( *.cat ) do (\r
100             echo %0 - Signing %%d\%%f\r
101             signtool sign /ac %1 /n %2 %TS% %DU% %%f\r
102             if ERRORLEVEL 1 (\r
103                 echo %0 signtool sign %%f failed?\r
104                 echo %0    file %CD%\%%f\r
105                 exit /B 1\r
106             )\r
107             signtool verify /kp %%f\r
108             if ERRORLEVEL 1 (\r
109                 echo %0 signtool verify %%f failed?\r
110                 echo %0    file %CD%\%%f\r
111                 exit /B 1\r
112             )\r
113                         echo +\r
114         )\r
115 \r
116         echo %0 - Signing %%d .sys files\r
117         for %%f in ( *.sys ) do (\r
118             echo %0 - Signing %%d\%%f\r
119             signtool sign /ac %1 /n %2 %TS% %DU% %%f\r
120             if ERRORLEVEL 1 (\r
121                 echo %0 signtool sign %%f failed?\r
122                 echo %0    file %CD%\%%f\r
123                 exit /B 1\r
124             )\r
125             signtool verify /kp %%f\r
126             if ERRORLEVEL 1 (\r
127                 echo %0 signtool verify %%f failed?\r
128                 echo %0    file %CD%\%%f\r
129                 exit /B 1\r
130             )\r
131                         echo +\r
132         )\r
133 \r
134         echo %0 - Verify %%d .cat + .sys files\r
135         for %%f in ( *.sys ) do (\r
136                         set D=%%f\r
137                         set C=!D:sys=cat!\r
138                         if exist !C! (\r
139                                 echo %0 - Verify %%d\!C! %%d\%%f\r
140                                 signtool verify /q /kp /c !C! %%f\r
141                                 if ERRORLEVEL 1 (\r
142                                         echo %0 signtool verify /kp /c !C! %%f failed?\r
143                                         exit /B 1\r
144                                 )\r
145                                 signtool verify /pa /c !C! %%f\r
146                                 if ERRORLEVEL 1 (\r
147                                         echo %0 signtool verify /pa /c !C! %%f failed?\r
148                                         exit /B 1\r
149                                 )\r
150                                 echo +\r
151             )\r
152         )\r
153         popd\r
154     )\r
155 )\r
156 \r
157 endlocal\r
158 echo %0 - Finished: %0 %1 %2 %OE% \r