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