[WinOF] Digital certificate extraction and injection scripts to faciliate 1st time...
authorstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sat, 30 May 2009 00:46:21 +0000 (00:46 +0000)
committerstansmith <stansmith@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sat, 30 May 2009 00:46:21 +0000 (00:46 +0000)
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2222 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

WinOF/WIX/wlh/x64/cert-add.bat [new file with mode: 0644]
WinOF/WIX/wlh/x64/rem-cert-ADD.bat [new file with mode: 0644]
WinOF/WIX/wlh/x64/wof.wxs

diff --git a/WinOF/WIX/wlh/x64/cert-add.bat b/WinOF/WIX/wlh/x64/cert-add.bat
new file mode 100644 (file)
index 0000000..b438061
--- /dev/null
@@ -0,0 +1,127 @@
+@echo off\r
+setlocal\r
+\r
+rem clusrun execute the 'rem-cert-ADD.bat' script on specified nodes to install the OFA\r
+rem public cert in the remote node's TrustedPublisher Certificate Store.\r
+rem Sets the 'OpenFabric Alliance' as a Trusted 3rd party Software Publisher which then\r
+rem allows unattened WinOF installs to complete.\r
+rem Assumes the OFA cert is in the local Trusted Publisher certificate Store.\r
+\r
+if "%1" == "" (\r
+:usage\r
+    echo usage: %0 remote-node-visiable-share-path remote-node-hostnames\r
+    echo   Valid ONLY for Server 2008 HPC.\r
+    echo.\r
+    echo Will use OFA Cert file named 'OFA_TP.cer' if present.\r
+    echo Otherwise extract the OFA cert from the local Trusted Publisher store\r
+    echo  for injection into remote node certificate store.\r
+    echo.\r
+    echo example: %0 \\head-node\remShar cn1 cn2 cn3 cn4\r
+    exit /B 1\r
+)\r
+\r
+if "%2" == ""  goto usage\r
+\r
+where clusrun > Nul\r
+if ERRORLEVEL 1 (\r
+    echo %0 Must be run on server 2008 HPC [clusrun.exe] only?\r
+    exit /B 1\r
+)\r
+where certutil > Nul\r
+if ERRORLEVEL 1 (\r
+    echo %0 missing file Windows utility certutil.exe ?\r
+    exit /B 1\r
+)\r
+\r
+rem worker script file can be local or in the WinOF install folder.\r
+set CISF=rem-cert-ADD.bat\r
+if exist "%CISF%"  (\r
+    set CIS="%CD%\%CISF%"\r
+) else (\r
+    set CIS="%ProgramFiles(x86)%\WinOF\%CISF%"\r
+)\r
+\r
+if not exist %CIS% (\r
+    echo missing WinOF script %CIS% ?\r
+    exit /B 1\r
+)\r
+\r
+rem Certificate ID's (Serial Number) for the OFA WinOF driver signing cert\r
+\r
+set OfaWinOfCertID=71175fca6b85d5c2e0864df16349ad84\r
+\r
+set CERTNAME=OFA_TP.cer\r
+\r
+if exist "%CERTNAME%" (\r
+    echo Using OFA cert file %CERTNAME%\r
+    goto have_cert\r
+)\r
+\r
+rem extract OFA cert from local Trusted Publisher Cert Store.\r
+\r
+rem test for OFA cert in local TrustedPublisher cert store\r
+\r
+certutil -store TRUSTEDPUBLISHER %OfaWinOfCertID%  1> Nul\r
+IF %ERRORLEVEL% NEQ 0 (\r
+    echo 'OpenFabrics Alliance' Trusted SW Publisher certificate not in local Cert Store.\r
+    echo Install WinOF on head-node or Install OFA Cert from WinOF installer .msi file.\r
+    echo Install OFA Cert from .msi file:\r
+    echo Right-click .msi file, select Properties -\> Digital Signatures tab'\r
+    echo Highlight 'OpenFabrics Alliance', select 'Details' -\> View Certificate\r
+    echo select 'Install Certificate' -\> Next -\> Place Certificate in Trusted Publishers store -\> Browse\r
+    echo Next -\> Finish. rerun this script.\r
+    exit /B 1\r
+)\r
+\r
+rem Extract OFA cert to %CERTNAME% file.\r
+if EXIST "%CERTNAME%"  del /F/Q %CERTNAME%\r
+certutil -store TRUSTEDPUBLISHER %OfaWinOfCertID% %CERTNAME% 1> Nul\r
+IF %ERRORLEVEL% NEQ 0 (\r
+    echo Unable to extract OFA cert from local Trusted Publisher Store err %ERRORLEVEL%\r
+    exit /B 1\r
+)\r
+echo Extracted OFA cert to %CERTNAME%\r
+set EXTRACTED=1\r
+\r
+:have_cert\r
+\r
+if not EXIST "%1\%CERTNAME%" (\r
+    echo Copying %CERTNAME% to compute node visible shar %1\r
+    copy /B/Y %CERTNAME% %1\%CERTNAME%\r
+    if ERRORLEVEL 1 (\r
+        echo copy %CERTNAME% ERR %ERRORLEVEL% ?\r
+        del /F/Q %CERTNAME%\r
+        exit /B 1\r
+    )\r
+    set CPY_CERT=1\r
+)\r
+\r
+if not EXIST "%1\%CISF%" (\r
+    echo Copying %CISF% to compute node visible shar %1\r
+    copy /B/Y %CIS% %1\%CISF%\r
+    if ERRORLEVEL 1 (\r
+        echo copy %CIS% ERR %ERRORLEVEL% ?\r
+        del /F/Q %CERTNAME%\r
+        exit /B 1\r
+    )\r
+    set CPY_CISF=1\r
+)\r
+\r
+rem install OFA Trusted 3rd Party SW Publisher cert in remote nodes cert store using clusrun.\r
+\r
+:again\r
+\r
+if "%2" == "" goto xit\r
+rem  echo call clusrun /node:%1 %1\%CISF% %OfaWinOfCertID% %1\%CERTNAME%\r
+  clusrun /nodes:%2 %1\%CISF% %OfaWinOfCertID% %1\%CERTNAME%\r
+  shift /2\r
+  if not "%2" == "" timeout /T 5\r
+  goto again\r
+\r
+:xit\r
+\r
+if not "%CPY_CERT%" == ""   del /F/Q %1\%CERTNAME%\r
+if not "%CPY_CISF%" == ""   del /F/Q %1\%CISF%\r
+if not "%EXTRACTED%" == ""  del /F/Q %CERTNAME%\r
+\r
+endlocal\r
diff --git a/WinOF/WIX/wlh/x64/rem-cert-ADD.bat b/WinOF/WIX/wlh/x64/rem-cert-ADD.bat
new file mode 100644 (file)
index 0000000..0c441ea
--- /dev/null
@@ -0,0 +1,40 @@
+@echo off\r
+setlocal\r
+\r
+rem Remote Certificate add\r
+\r
+rem Install specified Digital Certificate in the local TrustedPublishers store.\r
+rem Intended to be called from clusrun in cert-add.bat script.\r
+\r
+where certutil > Nul\r
+if ERRORLEVEL 1 (\r
+    echo %0 Must be run on server 2008 HPC [clusrun.exe] ?\r
+    exit /B 1\r
+)\r
+\r
+if "%1" == "" (\r
+:usage\r
+    echo usage: %0 CertID TrustedPublisherCertFilename\r
+    echo designed to be called from cert-add.bat\r
+    exit /B 1\r
+)\r
+\r
+rem test for OFA cert in TrustedPublisher cert store\r
+certutil -store TRUSTEDPUBLISHER %1  1> Nul\r
+IF %ERRORLEVEL% NEQ 0 (\r
+rem    echo Installing %2 Cert on %computername%\r
+    echo.\r
+    certutil -addstore TRUSTEDPUBLISHER "%2" 1> Nul\r
+    IF ERRORLEVEL 0 (\r
+        echo %computername% SUCCESS: OFA TrustedPublisher cert installed\r
+    ) ELSE (\r
+        echo %computername% FAILURE: OFA TrustedPublisher cert failed to install err %ERRORLEVEL%\r
+    )\r
+    echo.\r
+) else (\r
+    echo.\r
+    echo %computername% OFA TrustedPublisher Cert already installed.\r
+    echo.\r
+)\r
+\r
+endlocal\r
index 5d735bb..5af2ef0 100644 (file)
           <?include ..\..\common\qlgc_vnic.inc ?>\r
           <?include ..\..\common\srp.inc ?>\r
 \r
+          <Component Id="cCertPush"\r
+                     Guid="8B3AEC30-CFED-4d90-A48E-AD2C8C55FEFD">\r
+            <File Id="cert_add.bat" Compressed="yes" DiskId="1"\r
+                     LongName="cert-add.bat" Name="cert-add.bat"\r
+                     Source="cert-add.bat" />\r
+            <File Id="rem_cert_add.bat" Compressed="yes" DiskId="1"\r
+                     LongName="rem-cert-add.bat" Name="remC-add.bat"\r
+                     Source="rem-cert-add.bat" />\r
+          </Component>\r
+\r
         </Directory>\r
       </Directory>\r
 \r
       <ComponentRef Id="OpenSMservice" />\r
       <ComponentRef Id="cQLVNIC_files" />\r
       <ComponentRef Id="cSRP_files" />\r
+      <ComponentRef Id="cCertPush" />\r
     </Feature>\r
 \r
     <Feature Id="fWV" Title="WinVerbs"\r