From f866ab77f8fd0790f4d6628f54dcdf0bd66fccb6 Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Fri, 10 Jul 2020 21:25:44 +1000 Subject: Change the DetectSHA2Support element to WindowsFeatureSearch. This will make it easier to add support for other Windows features in the future. --- src/be/utilsearch.cpp | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/be/utilsearch.cpp') diff --git a/src/be/utilsearch.cpp b/src/be/utilsearch.cpp index 4e9d86a1..7cd2ea09 100644 --- a/src/be/utilsearch.cpp +++ b/src/be/utilsearch.cpp @@ -13,9 +13,10 @@ STDMETHODIMP UtilSearchParseFromXml( IXMLDOMNode* pixnNode = NULL; DWORD cNodes = 0; BSTR bstrNodeName = NULL; + LPWSTR scz = NULL; // Select Util search nodes. - hr = XmlSelectNodes(pixnBundleExtension, L"WixDetectSHA2Support", &pixnNodes); + hr = XmlSelectNodes(pixnBundleExtension, L"WixWindowsFeatureSearch", &pixnNodes); ExitOnFailure(hr, "Failed to select Util search nodes."); // Get Util search node count. @@ -46,9 +47,23 @@ STDMETHODIMP UtilSearchParseFromXml( ExitOnFailure(hr, "Failed to get @Id."); // Read type specific attributes. - if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"WixDetectSHA2Support", -1)) + if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, bstrNodeName, -1, L"WixWindowsFeatureSearch", -1)) { - pSearch->Type = UTIL_SEARCH_TYPE_DETECT_SHA2_SUPPORT; + pSearch->Type = UTIL_SEARCH_TYPE_WINDOWS_FEATURE_SEARCH; + + // @Type + hr = XmlGetAttributeEx(pixnNode, L"Type", &scz); + ExitOnFailure(hr, "Failed to get @Type."); + + if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"sha2CodeSigning", -1)) + { + pSearch->WindowsFeatureSearch.type = UTIL_WINDOWS_FEATURE_SEARCH_TYPE_SHA2_CODE_SIGNING; + } + else + { + hr = E_INVALIDARG; + ExitOnFailure(hr, "Invalid value for @Type: %ls", scz); + } } else { @@ -62,6 +77,7 @@ STDMETHODIMP UtilSearchParseFromXml( } LExit: + ReleaseStr(scz); ReleaseBSTR(bstrNodeName); ReleaseObject(pixnNode); ReleaseObject(pixnNodes); @@ -100,8 +116,15 @@ STDMETHODIMP UtilSearchExecute( switch (pSearch->Type) { - case UTIL_SEARCH_TYPE_DETECT_SHA2_SUPPORT: - hr = UtilPerformDetectSHA2Support(wzVariable, pSearch, pEngine); + case UTIL_SEARCH_TYPE_WINDOWS_FEATURE_SEARCH: + switch (pSearch->WindowsFeatureSearch.type) + { + case UTIL_WINDOWS_FEATURE_SEARCH_TYPE_SHA2_CODE_SIGNING: + hr = UtilPerformDetectSHA2CodeSigning(wzVariable, pSearch, pEngine); + break; + default: + hr = E_UNEXPECTED; + } break; default: hr = E_UNEXPECTED; -- cgit v1.2.3-55-g6feb