@joebigelow / wix / commits / 0878f2e1

Remove Burn Authenticode

Fixes https://github.com/wixtoolset/issues/issues/6301

Bob Arnson committed Jan 31, 2021 at 19:23 UTC 0878f2e11bafb2f1e6f992fff6c49d859a4e569f
9 files changed +5 -385
src/WixToolset.Core.Burn/Bind/BindBundleCommand.cs
+1 -10
@@ -340,15 +340,6 @@ namespace WixToolset.Core.Burn
340 command.Execute();
341 }
342
343 - // If catalog files exist, non-embedded payloads should validate with the catalogs.
344 - var catalogs = section.Symbols.OfType<WixBundleCatalogSymbol>().ToList();
345 -
346 - if (catalogs.Count > 0)
347 - {
348 - var command = new VerifyPayloadsWithCatalogCommand(this.Messaging, catalogs, payloadSymbols.Values);
349 - command.Execute();
350 - }
351 -
343 if (this.Messaging.EncounteredError)
344 {
345 return;
@@ -456,7 +447,7 @@ namespace WixToolset.Core.Burn
447 {
448 var executableName = Path.GetFileName(this.OutputPath);
449
459 - var command = new CreateBurnManifestCommand(this.Messaging, this.BackendExtensions, executableName, section, bundleSymbol, containers, chainSymbol, orderedFacades, boundaries, uxPayloads, payloadSymbols, orderedSearches, catalogs, this.IntermediateFolder);
450 + var command = new CreateBurnManifestCommand(this.Messaging, this.BackendExtensions, executableName, section, bundleSymbol, containers, chainSymbol, orderedFacades, boundaries, uxPayloads, payloadSymbols, orderedSearches, this.IntermediateFolder);
451 command.Execute();
452
453 manifestPath = command.OutputPath;
src/WixToolset.Core.Burn/Bind/GenerateManifestDataFromIRCommand.cs
-1
@@ -63,7 +63,6 @@ namespace WixToolset.Core.Burn.Bind
63 case SymbolDefinitionType.WixBootstrapperApplication:
64 case SymbolDefinitionType.WixBootstrapperApplicationDll:
65 case SymbolDefinitionType.WixBundle:
66 - case SymbolDefinitionType.WixBundleCatalog:
66 case SymbolDefinitionType.WixBundleContainer:
67 case SymbolDefinitionType.WixBundleCustomDataAttribute:
68 case SymbolDefinitionType.WixBundleExePackage:
src/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
+1 -31
@@ -18,7 +18,7 @@ namespace WixToolset.Core.Burn.Bundles
18
19 internal class CreateBurnManifestCommand
20 {
21 - public CreateBurnManifestCommand(IMessaging messaging, IEnumerable<IBurnBackendExtension> backendExtensions, string executableName, IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable<WixBundleContainerSymbol> containers, WixChainSymbol chainSymbol, IEnumerable<PackageFacade> orderedPackages, IEnumerable<WixBundleRollbackBoundarySymbol> boundaries, IEnumerable<WixBundlePayloadSymbol> uxPayloads, Dictionary<string, WixBundlePayloadSymbol> allPayloadsById, IEnumerable<ISearchFacade> orderedSearches, IEnumerable<WixBundleCatalogSymbol> catalogs, string intermediateFolder)
21 + public CreateBurnManifestCommand(IMessaging messaging, IEnumerable<IBurnBackendExtension> backendExtensions, string executableName, IntermediateSection section, WixBundleSymbol bundleSymbol, IEnumerable<WixBundleContainerSymbol> containers, WixChainSymbol chainSymbol, IEnumerable<PackageFacade> orderedPackages, IEnumerable<WixBundleRollbackBoundarySymbol> boundaries, IEnumerable<WixBundlePayloadSymbol> uxPayloads, Dictionary<string, WixBundlePayloadSymbol> allPayloadsById, IEnumerable<ISearchFacade> orderedSearches, string intermediateFolder)
22 {
23 this.Messaging = messaging;
24 this.BackendExtensions = backendExtensions;
@@ -32,7 +32,6 @@ namespace WixToolset.Core.Burn.Bundles
32 this.UXContainerPayloads = uxPayloads;
33 this.Payloads = allPayloadsById;
34 this.OrderedSearches = orderedSearches;
35 - this.Catalogs = catalogs;
35 this.IntermediateFolder = intermediateFolder;
36 }
37
@@ -62,8 +61,6 @@ namespace WixToolset.Core.Burn.Bundles
61
62 private IEnumerable<WixBundlePayloadSymbol> UXContainerPayloads { get; }
63
65 - private IEnumerable<WixBundleCatalogSymbol> Catalogs { get; }
66 -
64 private string IntermediateFolder { get; }
65
66 public void Execute()
@@ -179,18 +176,6 @@ namespace WixToolset.Core.Burn.Bundles
176
177 writer.WriteEndElement(); // </UX>
178
182 - // write the catalog elements
183 - if (this.Catalogs.Any())
184 - {
185 - foreach (var catalog in this.Catalogs)
186 - {
187 - writer.WriteStartElement("Catalog");
188 - writer.WriteAttributeString("Id", catalog.Id.Id);
189 - writer.WriteAttributeString("Payload", catalog.PayloadRef);
190 - writer.WriteEndElement();
191 - }
192 - }
193 -
179 foreach (var container in this.Containers)
180 {
181 if (!String.IsNullOrEmpty(container.WorkingPath) && BurnConstants.BurnUXContainerName != container.Id.Id)
@@ -698,16 +683,6 @@ namespace WixToolset.Core.Burn.Bundles
683 writer.WriteAttributeString("LayoutOnly", "yes");
684 }
685
701 - if (!String.IsNullOrEmpty(payload.PublicKey))
702 - {
703 - writer.WriteAttributeString("CertificateRootPublicKeyIdentifier", payload.PublicKey);
704 - }
705 -
706 - if (!String.IsNullOrEmpty(payload.Thumbprint))
707 - {
708 - writer.WriteAttributeString("CertificateRootThumbprint", payload.Thumbprint);
709 - }
710 -
686 switch (payload.Packaging)
687 {
688 case PackagingType.Embedded: // this means it's in a container.
@@ -742,11 +717,6 @@ namespace WixToolset.Core.Burn.Bundles
717 writer.WriteAttributeString("SourcePath", payload.Name);
718 break;
719 }
745 -
746 - if (!String.IsNullOrEmpty(payload.CatalogRef))
747 - {
748 - writer.WriteAttributeString("Catalog", payload.CatalogRef);
749 - }
720 }
721
722 private string ResolveUrl(string url, string fallbackUrl, string packageId, string payloadId, string fileName)
src/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
-2
@@ -406,7 +406,6 @@ namespace WixToolset.Core.Burn.Bundles
406 PackageRef = packagePayload.PackageRef,
407 ContainerRef = packagePayload.ContainerRef,
408 ContentFile = true,
409 - EnableSignatureValidation = packagePayload.EnableSignatureValidation,
409 Packaging = packagePayload.Packaging,
410 ParentPackagePayloadRef = packagePayload.Id.Id,
411 });
@@ -484,7 +483,6 @@ namespace WixToolset.Core.Burn.Bundles
483 PackageRef = packagePayload.PackageRef,
484 ContainerRef = packagePayload.ContainerRef,
485 ContentFile = true,
487 - EnableSignatureValidation = packagePayload.EnableSignatureValidation,
486 Packaging = packagePayload.Packaging,
487 ParentPackagePayloadRef = packagePayload.Id.Id,
488 });
src/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
-34
@@ -6,9 +6,6 @@ namespace WixToolset.Core.Burn.Bundles
6 using System.Collections.Generic;
7 using System.Diagnostics;
8 using System.IO;
9 - using System.Security.Cryptography;
10 - using System.Security.Cryptography.X509Certificates;
11 - using System.Text;
9 using WixToolset.Data;
10 using WixToolset.Data.Burn;
11 using WixToolset.Data.Symbols;
@@ -123,37 +120,6 @@ namespace WixToolset.Core.Burn.Bundles
120 payload.FileSize = (int)fileInfo.Length;
121
122 payload.Hash = BundleHashAlgorithm.Hash(fileInfo);
126 -
127 - // Try to get the certificate if the payload is a signed file and we're not suppressing signature validation.
128 - if (payload.EnableSignatureValidation)
129 - {
130 - X509Certificate2 certificate = null;
131 - try
132 - {
133 - certificate = new X509Certificate2(fileInfo.FullName);
134 - }
135 - catch (CryptographicException) // we don't care about non-signed files.
136 - {
137 - }
138 -
139 - // If there is a certificate, remember its hashed public key identifier and thumbprint.
140 - if (null != certificate)
141 - {
142 - byte[] publicKeyIdentifierHash = new byte[128];
143 - uint publicKeyIdentifierHashSize = (uint)publicKeyIdentifierHash.Length;
144 -
145 - Native.NativeMethods.HashPublicKeyInfo(certificate.Handle, publicKeyIdentifierHash, ref publicKeyIdentifierHashSize);
146 -
147 - var sb = new StringBuilder(((int)publicKeyIdentifierHashSize + 1) * 2);
148 - for (var i = 0; i < publicKeyIdentifierHashSize; ++i)
149 - {
150 - sb.AppendFormat("{0:X2}", publicKeyIdentifierHash[i]);
151 - }
152 -
153 - payload.PublicKey = sb.ToString();
154 - payload.Thumbprint = certificate.Thumbprint;
155 - }
156 - }
123 }
124 else
125 {
src/WixToolset.Core.Burn/Bundles/VerifyPayloadsWithCatalogCommand.cs deleted
-158
@@ -1,158 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset.Core.Burn.Bundles
4 -{
5 - using System;
6 - using System.Collections.Generic;
7 - using System.IO;
8 - using System.Linq;
9 - using System.Runtime.InteropServices;
10 - using System.Text;
11 - using WixToolset.Data;
12 - using WixToolset.Data.Symbols;
13 - using WixToolset.Extensibility.Services;
14 -
15 - internal class VerifyPayloadsWithCatalogCommand
16 - {
17 - public VerifyPayloadsWithCatalogCommand(IMessaging messaging, IEnumerable<WixBundleCatalogSymbol> catalogs, IEnumerable<WixBundlePayloadSymbol> payloads)
18 - {
19 - this.Messaging = messaging;
20 - this.Catalogs = catalogs;
21 - this.Payloads = payloads;
22 - }
23 -
24 - private IMessaging Messaging { get; }
25 -
26 - private IEnumerable<WixBundleCatalogSymbol> Catalogs { get; }
27 -
28 - private IEnumerable<WixBundlePayloadSymbol> Payloads { get; }
29 -
30 - public void Execute()
31 - {
32 - var catalogIdsWithPaths = this.Catalogs
33 - .Join(this.Payloads,
34 - catalog => catalog.PayloadRef,
35 - payload => payload.Id.Id,
36 - (catalog, payload) => new CatalogIdWithPath() { Id = catalog.Id.Id, FullPath = Path.GetFullPath(payload.SourceFile.Path) })
37 - .ToList();
38 -
39 - foreach (var payloadInfo in this.Payloads)
40 - {
41 - // Payloads that are not embedded should be verfied.
42 - if (String.IsNullOrEmpty(payloadInfo.EmbeddedId))
43 - {
44 - var sourceFile = payloadInfo.SourceFile.Path;
45 - var validated = false;
46 -
47 - foreach (var catalog in catalogIdsWithPaths)
48 - {
49 - if (!validated)
50 - {
51 - // Get the file hash
52 - uint cryptHashSize = 20;
53 - byte[] cryptHashBytes = new byte[cryptHashSize];
54 - int error;
55 - using (var payloadStream = File.OpenRead(sourceFile))
56 - {
57 - // Get the file handle
58 - var fileHandle = payloadStream.SafeFileHandle.DangerousGetHandle();
59 -
60 - // 20 bytes is usually the hash size. Future hashes may be bigger
61 - if (!VerifyInterop.CryptCATAdminCalcHashFromFileHandle(fileHandle, ref cryptHashSize, cryptHashBytes, 0))
62 - {
63 - error = Marshal.GetLastWin32Error();
64 -
65 - if (VerifyInterop.ErrorInsufficientBuffer == error)
66 - {
67 - error = 0;
68 - cryptHashBytes = new byte[cryptHashSize];
69 - if (!VerifyInterop.CryptCATAdminCalcHashFromFileHandle(fileHandle, ref cryptHashSize, cryptHashBytes, 0))
70 - {
71 - error = Marshal.GetLastWin32Error();
72 - }
73 - }
74 -
75 - if (0 != error)
76 - {
77 - this.Messaging.Write(ErrorMessages.CatalogFileHashFailed(sourceFile, error));
78 - }
79 - }
80 - }
81 -
82 - VerifyInterop.WinTrustCatalogInfo catalogData = new VerifyInterop.WinTrustCatalogInfo();
83 - VerifyInterop.WinTrustData trustData = new VerifyInterop.WinTrustData();
84 - try
85 - {
86 - // Create WINTRUST_CATALOG_INFO structure
87 - catalogData.cbStruct = (uint)Marshal.SizeOf(catalogData);
88 - catalogData.cbCalculatedFileHash = cryptHashSize;
89 - catalogData.pbCalculatedFileHash = Marshal.AllocCoTaskMem((int)cryptHashSize);
90 - Marshal.Copy(cryptHashBytes, 0, catalogData.pbCalculatedFileHash, (int)cryptHashSize);
91 -
92 - var hashString = new StringBuilder();
93 - foreach (var hashByte in cryptHashBytes)
94 - {
95 - hashString.Append(hashByte.ToString("X2"));
96 - }
97 - catalogData.pcwszMemberTag = hashString.ToString();
98 -
99 - // The file names need to be lower case for older OSes
100 - catalogData.pcwszMemberFilePath = sourceFile.ToLowerInvariant();
101 - catalogData.pcwszCatalogFilePath = catalog.FullPath.ToLowerInvariant();
102 -
103 - // Create WINTRUST_DATA structure
104 - trustData.cbStruct = (uint)Marshal.SizeOf(trustData);
105 - trustData.dwUIChoice = VerifyInterop.WTD_UI_NONE;
106 - trustData.fdwRevocationChecks = VerifyInterop.WTD_REVOKE_NONE;
107 - trustData.dwUnionChoice = VerifyInterop.WTD_CHOICE_CATALOG;
108 - trustData.dwStateAction = VerifyInterop.WTD_STATEACTION_VERIFY;
109 - trustData.dwProvFlags = VerifyInterop.WTD_REVOCATION_CHECK_NONE;
110 -
111 - // Create the structure pointers for unmanaged
112 - trustData.pCatalog = Marshal.AllocCoTaskMem(Marshal.SizeOf(catalogData));
113 - Marshal.StructureToPtr(catalogData, trustData.pCatalog, false);
114 -
115 - // Call WinTrustVerify to validate the file with the catalog
116 - IntPtr noWindow = new IntPtr(-1);
117 - Guid verifyGuid = new Guid(VerifyInterop.GenericVerify2);
118 - long verifyResult = VerifyInterop.WinVerifyTrust(noWindow, ref verifyGuid, ref trustData);
119 - if (0 == verifyResult)
120 - {
121 - payloadInfo.CatalogRef = catalog.Id;
122 - validated = true;
123 - break;
124 - }
125 - }
126 - finally
127 - {
128 - // Free the structure memory
129 - if (IntPtr.Zero != trustData.pCatalog)
130 - {
131 - Marshal.FreeCoTaskMem(trustData.pCatalog);
132 - }
133 -
134 - if (IntPtr.Zero != catalogData.pbCalculatedFileHash)
135 - {
136 - Marshal.FreeCoTaskMem(catalogData.pbCalculatedFileHash);
137 - }
138 - }
139 - }
140 - }
141 -
142 - // Error message if the file was not validated by one of the catalogs
143 - if (!validated)
144 - {
145 - this.Messaging.Write(ErrorMessages.CatalogVerificationFailed(sourceFile));
146 - }
147 - }
148 - }
149 - }
150 -
151 - private class CatalogIdWithPath
152 - {
153 - public string Id { get; set; }
154 -
155 - public string FullPath { get; set; }
156 - }
157 - }
158 -}
src/WixToolset.Core.Burn/VerifyInterop.cs deleted
-66
@@ -1,66 +0,0 @@
1 -// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 -
3 -namespace WixToolset
4 -{
5 - using System;
6 - using System.Runtime.InteropServices;
7 -
8 - internal class VerifyInterop
9 - {
10 - internal const string GenericVerify2 = "00AAC56B-CD44-11d0-8CC2-00C04FC295EE";
11 - internal const uint WTD_UI_NONE = 2;
12 - internal const uint WTD_REVOKE_NONE = 0;
13 - internal const uint WTD_CHOICE_CATALOG = 2;
14 - internal const uint WTD_STATEACTION_VERIFY = 1;
15 - internal const uint WTD_REVOCATION_CHECK_NONE = 0x10;
16 - internal const int ErrorInsufficientBuffer = 122;
17 -
18 - [StructLayout(LayoutKind.Sequential)]
19 - internal struct WinTrustData
20 - {
21 - internal uint cbStruct;
22 - internal IntPtr pPolicyCallbackData;
23 - internal IntPtr pSIPClientData;
24 - internal uint dwUIChoice;
25 - internal uint fdwRevocationChecks;
26 - internal uint dwUnionChoice;
27 - internal IntPtr pCatalog;
28 - internal uint dwStateAction;
29 - internal IntPtr hWVTStateData;
30 - [MarshalAs(UnmanagedType.LPWStr)]
31 - internal string pwszURLReference;
32 - internal uint dwProvFlags;
33 - internal uint dwUIContext;
34 - }
35 -
36 - [StructLayout(LayoutKind.Sequential)]
37 - internal struct WinTrustCatalogInfo
38 - {
39 - internal uint cbStruct;
40 - internal uint dwCatalogVersion;
41 - [MarshalAs(UnmanagedType.LPWStr)]
42 - internal string pcwszCatalogFilePath;
43 - [MarshalAs(UnmanagedType.LPWStr)]
44 - internal string pcwszMemberTag;
45 - [MarshalAs(UnmanagedType.LPWStr)]
46 - internal string pcwszMemberFilePath;
47 - internal IntPtr hMemberFile;
48 - internal IntPtr pbCalculatedFileHash;
49 - internal uint cbCalculatedFileHash;
50 - internal IntPtr pcCatalogContext;
51 - }
52 -
53 - [DllImport("wintrust.dll", SetLastError = true)]
54 - internal static extern long WinVerifyTrust(IntPtr windowHandle, ref Guid actionGuid, ref WinTrustData trustData);
55 -
56 - [DllImport("wintrust.dll", SetLastError = true)]
57 - [return: MarshalAs(UnmanagedType.Bool)]
58 - internal static extern bool CryptCATAdminCalcHashFromFileHandle(
59 - IntPtr fileHandle,
60 - [In, Out]
61 - ref uint hashSize,
62 - [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)]
63 - byte[] hashBytes,
64 - uint flags);
65 - }
66 -}
src/WixToolset.Core/Compiler_Bundle.cs
+3 -81
@@ -292,9 +292,6 @@ namespace WixToolset.Core
292 case "OptionalUpdateRegistration":
293 this.ParseOptionalUpdateRegistrationElement(child, manufacturer, parentName, name);
294 break;
295 - case "Catalog":
296 - this.ParseCatalogElement(child);
297 - break;
295 case "Chain":
296 if (chainSeen)
297 {
@@ -484,59 +481,6 @@ namespace WixToolset.Core
481 return YesNoType.Yes == disableLog ? null : String.Join(":", variable, logPrefix, logExtension);
482 }
483
487 - /// <summary>
488 - /// Parse a Catalog element.
489 - /// </summary>
490 - /// <param name="node">Element to parse</param>
491 - private void ParseCatalogElement(XElement node)
492 - {
493 - var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
494 - Identifier id = null;
495 - string sourceFile = null;
496 -
497 - foreach (var attrib in node.Attributes())
498 - {
499 - if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || CompilerCore.WixNamespace == attrib.Name.Namespace)
500 - {
501 - switch (attrib.Name.LocalName)
502 - {
503 - case "Id":
504 - id = this.Core.GetAttributeIdentifier(sourceLineNumbers, attrib);
505 - break;
506 - case "SourceFile":
507 - sourceFile = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
508 - break;
509 - default:
510 - this.Core.UnexpectedAttribute(node, attrib);
511 - break;
512 - }
513 - }
514 - }
515 -
516 - if (null == id)
517 - {
518 - this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
519 - }
520 -
521 - if (null == sourceFile)
522 - {
523 - this.Core.Write(ErrorMessages.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "SourceFile"));
524 - }
525 -
526 - this.Core.ParseForExtensionElements(node);
527 -
528 - // Create catalog row
529 - if (!this.Core.EncounteredError)
530 - {
531 - this.CreatePayloadRow(sourceLineNumbers, id, Path.GetFileName(sourceFile), sourceFile, null, ComplexReferenceParentType.Container, Compiler.BurnUXContainerId, ComplexReferenceChildType.Unknown, null, YesNoDefaultType.Yes, YesNoType.Yes, null, null, null);
532 -
533 - this.Core.AddSymbol(new WixBundleCatalogSymbol(sourceLineNumbers, id)
534 - {
535 - PayloadRef = id.Id,
536 - });
537 - }
538 - }
539 -
484 /// <summary>
485 /// Parse a Container element.
486 /// </summary>
@@ -1369,7 +1313,6 @@ namespace WixToolset.Core
1313
1314 var sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
1315 var compressed = YesNoDefaultType.Default;
1372 - var enableSignatureVerification = YesNoType.No;
1316 id = null;
1317 string name = null;
1318 string sourceFile = null;
@@ -1400,9 +1343,6 @@ namespace WixToolset.Core
1343 case "DownloadUrl":
1344 downloadUrl = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1345 break;
1403 - case "EnableSignatureVerification":
1404 - enableSignatureVerification = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
1405 - break;
1346 case "DpiAwareness":
1347 if (node.Name.LocalName != "BootstrapperApplicationDll")
1348 {
@@ -1457,7 +1397,7 @@ namespace WixToolset.Core
1397 return false;
1398 }
1399
1460 - this.CreatePayloadRow(sourceLineNumbers, id, name, sourceFile, downloadUrl, parentType, parentId, previousType, previousId, compressed, enableSignatureVerification, null, null, null);
1400 + this.CreatePayloadRow(sourceLineNumbers, id, name, sourceFile, downloadUrl, parentType, parentId, previousType, previousId, compressed, null, null, null);
1401
1402 return true;
1403 }
@@ -1473,12 +1413,6 @@ namespace WixToolset.Core
1413 {
1414 switch (attrib.Name.LocalName)
1415 {
1476 - case "CertificatePublicKey":
1477 - remotePayload.CertificatePublicKey = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1478 - break;
1479 - case "CertificateThumbprint":
1480 - remotePayload.CertificateThumbprint = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1481 - break;
1416 case "Description":
1417 remotePayload.Description = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
1418 break;
@@ -1546,13 +1480,12 @@ namespace WixToolset.Core
1480 /// <param name="previousType"></param>
1481 /// <param name="previousId"></param>
1482 /// <param name="compressed"></param>
1549 - /// <param name="enableSignatureVerification"></param>
1483 /// <param name="displayName"></param>
1484 /// <param name="description"></param>
1485 /// <param name="remotePayload"></param>
1486 /// <returns></returns>
1487 private WixBundlePayloadSymbol CreatePayloadRow(SourceLineNumber sourceLineNumbers, Identifier id, string name, string sourceFile, string downloadUrl, ComplexReferenceParentType parentType,
1555 - Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, YesNoDefaultType compressed, YesNoType enableSignatureVerification, string displayName, string description,
1488 + Identifier parentId, ComplexReferenceChildType previousType, Identifier previousId, YesNoDefaultType compressed, string displayName, string description,
1489 RemotePayload remotePayload)
1490 {
1491 WixBundlePayloadSymbol symbol = null;
@@ -1568,7 +1501,6 @@ namespace WixToolset.Core
1501 UnresolvedSourceFile = sourceFile, // duplicate of sourceFile but in a string column so it won't get resolved to a full path during binding.
1502 DisplayName = displayName,
1503 Description = description,
1571 - EnableSignatureValidation = (YesNoType.Yes == enableSignatureVerification)
1504 });
1505
1506 if (null != remotePayload)
@@ -1576,8 +1508,6 @@ namespace WixToolset.Core
1508 symbol.Description = remotePayload.Description;
1509 symbol.DisplayName = remotePayload.ProductName;
1510 symbol.Hash = remotePayload.Hash;
1579 - symbol.PublicKey = remotePayload.CertificatePublicKey;
1580 - symbol.Thumbprint = remotePayload.CertificateThumbprint;
1511 symbol.FileSize = remotePayload.Size;
1512 symbol.Version = remotePayload.Version;
1513 }
@@ -2120,7 +2050,6 @@ namespace WixToolset.Core
2050 string protocol = null;
2051 var installSize = CompilerConstants.IntegerNotSet;
2052 string msuKB = null;
2123 - var enableSignatureVerification = YesNoType.No;
2053 var compressed = YesNoDefaultType.Default;
2054 var enableFeatureSelection = YesNoType.NotSet;
2055 var forcePerMachine = YesNoType.NotSet;
@@ -2249,9 +2178,6 @@ namespace WixToolset.Core
2178 case "Compressed":
2179 compressed = this.Core.GetAttributeYesNoDefaultValue(sourceLineNumbers, attrib);
2180 break;
2252 - case "EnableSignatureVerification":
2253 - enableSignatureVerification = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
2254 - break;
2181 case "Slipstream":
2182 slipstream = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
2183 allowed = (packageType == WixBundlePackageType.Msp);
@@ -2480,7 +2406,7 @@ namespace WixToolset.Core
2406 {
2407 // We create the package contents as a payload with this package as the parent
2408 this.CreatePayloadRow(sourceLineNumbers, id, name, sourceFile, downloadUrl, ComplexReferenceParentType.Package, id,
2483 - ComplexReferenceChildType.Unknown, null, compressed, enableSignatureVerification, displayName, description, remotePayload);
2409 + ComplexReferenceChildType.Unknown, null, compressed, displayName, description, remotePayload);
2410
2411 this.Core.AddSymbol(new WixChainItemSymbol(sourceLineNumbers, id));
2412
@@ -3301,10 +3227,6 @@ namespace WixToolset.Core
3227
3228 private class RemotePayload
3229 {
3304 - public string CertificatePublicKey { get; set; }
3305 -
3306 - public string CertificateThumbprint { get; set; }
3307 -
3230 public string Description { get; set; }
3231
3232 public string Hash { get; set; }
src/test/WixToolsetTest.CoreIntegration/TestData/SingleExeBundle/SingleExeRemotePayload.wxs
-2
@@ -18,8 +18,6 @@
18 Compressed="no"
19 Name="NDP462-KB3151802-Web.exe">
20 <RemotePayload
21 - CertificatePublicKey="52868DFCA6E3AF2632389E6C1EE7D0468D3797D0"
22 - CertificateThumbprint="3BDA323E552DB1FDE5F4FBEE75D6D5B2B187EEDC"
21 Description="Microsoft .NET Framework 4.6.2 Setup"
22 Hash="C42E6ED280290648BBD59F664008852F4CFE4548"
23 ProductName="Microsoft .NET Framework 4.6.2"