@joebigelow / wix-1 / commits / bf5c60ff

Remove Burn Authenticode

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

Bob Arnson committed Jan 31, 2021 at 19:33 UTC bf5c60ffc7488fc9eb12b7104ba7d567f11cc85e
2 files changed +91 -12
src/WixToolset.Converters/WixConverter.cs
+31 -11
@@ -44,6 +44,7 @@ namespace WixToolset.Converters
44 private static readonly XName BootstrapperApplicationDllElementName = WixNamespace + "BootstrapperApplicationDll";
45 private static readonly XName BootstrapperApplicationRefElementName = WixNamespace + "BootstrapperApplicationRef";
46 private static readonly XName EmbeddedChainerElementName = WixNamespace + "EmbeddedChainer";
47 + private static readonly XName CatalogElementName = WixNamespace + "Catalog";
48 private static readonly XName ColumnElementName = WixNamespace + "Column";
49 private static readonly XName ComponentElementName = WixNamespace + "Component";
50 private static readonly XName ControlElementName = WixNamespace + "Control";
@@ -71,6 +72,7 @@ namespace WixToolset.Converters
72 private static readonly XName ProgressTextElementName = WixNamespace + "ProgressText";
73 private static readonly XName PublishElementName = WixNamespace + "Publish";
74 private static readonly XName MultiStringValueElementName = WixNamespace + "MultiStringValue";
75 + private static readonly XName RemotePayloadElementName = WixNamespace + "RemotePayload";
76 private static readonly XName RequiredPrivilegeElementName = WixNamespace + "RequiredPrivilege";
77 private static readonly XName ServiceArgumentElementName = WixNamespace + "ServiceArgument";
78 private static readonly XName SetDirectoryElementName = WixNamespace + "SetDirectory";
@@ -149,6 +151,7 @@ namespace WixToolset.Converters
151 { WixConverter.InstallExecuteSequenceElementName, this.ConvertSequenceElement },
152 { WixConverter.BootstrapperApplicationElementName, this.ConvertBootstrapperApplicationElement },
153 { WixConverter.BootstrapperApplicationRefElementName, this.ConvertBootstrapperApplicationRefElement },
154 + { WixConverter.CatalogElementName, this.ConvertCatalogElement },
155 { WixConverter.ColumnElementName, this.ConvertColumnElement },
156 { WixConverter.CustomTableElementName, this.ConvertCustomTableElement },
157 { WixConverter.ControlElementName, this.ConvertControlElement },
@@ -172,6 +175,7 @@ namespace WixToolset.Converters
175 { WixConverter.ProgressTextElementName, this.ConvertProgressTextElement },
176 { WixConverter.PublishElementName, this.ConvertPublishElement },
177 { WixConverter.MultiStringValueElementName, this.ConvertMultiStringValueElement },
178 + { WixConverter.RemotePayloadElementName, this.ConvertRemotePayloadElement },
179 { WixConverter.RequiredPrivilegeElementName, this.ConvertRequiredPrivilegeElement },
180 { WixConverter.CustomActionElementName, this.ConvertCustomActionElement },
181 { WixConverter.ServiceArgumentElementName, this.ConvertServiceArgumentElement },
@@ -642,6 +646,14 @@ namespace WixToolset.Converters
646 }
647 }
648
649 + private void ConvertCatalogElement(XElement element)
650 + {
651 + if (this.OnError(ConverterTestType.BundleSignatureValidationObsolete, element, "The Catalog element is obsolete. Signature validation is no longer supported. The elkement will be removed."))
652 + {
653 + element.Remove();
654 + }
655 + }
656 +
657 private void ConvertColumnElement(XElement element)
658 {
659 var category = element.Attribute("Category");
@@ -1044,6 +1056,21 @@ namespace WixToolset.Converters
1056
1057 private void ConvertMultiStringValueElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Value");
1058
1059 + private void ConvertRemotePayloadElement(XElement element)
1060 + {
1061 + RemoveIfPresent(element.Attribute("CertificatePublicKey"));
1062 + RemoveIfPresent(element.Attribute("CertificateThumbprint"));
1063 +
1064 + void RemoveIfPresent(XAttribute xAttribute)
1065 + {
1066 + if (null != xAttribute
1067 + && this.OnError(ConverterTestType.BundleSignatureValidationObsolete, element, "The chain package element contains obsolete '{0}' attribute. Signature validation is no longer supported. The attribute will be removed.", xAttribute.Name))
1068 + {
1069 + xAttribute.Remove();
1070 + }
1071 + }
1072 + }
1073 +
1074 private void ConvertRequiredPrivilegeElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Name");
1075
1076 private void ConvertRowElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Value");
@@ -1070,16 +1097,9 @@ namespace WixToolset.Converters
1097 {
1098 var suppressSignatureValidation = element.Attribute("SuppressSignatureValidation");
1099
1073 - if (null != suppressSignatureValidation)
1100 + if (null != suppressSignatureValidation
1101 + && this.OnError(ConverterTestType.BundleSignatureValidationObsolete, element, "The chain package element contains obsolete '{0}' attribute. Signature validation is no longer supported. The attribute will be removed.", suppressSignatureValidation.Name))
1102 {
1075 - if (this.OnError(ConverterTestType.SuppressSignatureValidationDeprecated, element, "The chain package element contains deprecated '{0}' attribute. Use the 'EnableSignatureValidation' attribute instead.", suppressSignatureValidation.Name))
1076 - {
1077 - if ("no" == suppressSignatureValidation.Value)
1078 - {
1079 - element.Add(new XAttribute("EnableSignatureValidation", "yes"));
1080 - }
1081 - }
1082 -
1103 suppressSignatureValidation.Remove();
1104 }
1105 }
@@ -1579,9 +1599,9 @@ namespace WixToolset.Converters
1599 AssignAnonymousFileId,
1600
1601 /// <summary>
1582 - /// SuppressSignatureValidation attribute is deprecated and replaced with EnableSignatureValidation.
1602 + /// SuppressSignatureValidation attribute is obsolete and corresponding functionality removed.
1603 /// </summary>
1584 - SuppressSignatureValidationDeprecated,
1604 + BundleSignatureValidationObsolete,
1605
1606 /// <summary>
1607 /// WixCA Binary/@Id has been renamed to UtilCA.
src/test/WixToolsetTest.Converters/ConverterFixture.cs
+60 -1
@@ -304,6 +304,65 @@ namespace WixToolsetTest.Converters
304 Assert.Equal(expected, actual);
305 }
306
307 + [Fact]
308 + public void CanConvertCatalogElement()
309 + {
310 + var parse = String.Join(Environment.NewLine,
311 + "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
312 + " <Catalog Id='idCatalog' SourceFile='path\\to\\catalog.cat' />",
313 + "</Wix>");
314 +
315 + var expected = String.Join(Environment.NewLine,
316 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
317 + " ",
318 + "</Wix>");
319 +
320 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
321 +
322 + var messaging = new MockMessaging();
323 + var converter = new WixConverter(messaging, 2, null, null);
324 +
325 + var errors = converter.ConvertDocument(document);
326 +
327 + var actual = UnformattedDocumentString(document);
328 +
329 + Assert.Equal(1, errors);
330 + Assert.Equal(expected, actual);
331 + }
332 +
333 + [Fact]
334 + public void CanConvertRemotePayloadElement()
335 + {
336 + var parse = String.Join(Environment.NewLine,
337 + "<Wix xmlns='http://wixtoolset.org/schemas/v4/wxs'>",
338 + " <RemotePayload",
339 + " Description='Microsoft ASP.NET Core 3.1.8 - Shared Framework'",
340 + " Hash='61DC9EAA0C8968E48E13C5913ED202A2F8F94DBA'",
341 + " CertificatePublicKey='3756E9BBF4461DCD0AA68E0D1FCFFA9CEA47AC18'",
342 + " CertificateThumbprint='2485A7AFA98E178CB8F30C9838346B514AEA4769'",
343 + " ProductName='Microsoft ASP.NET Core 3.1.8 - Shared Framework'",
344 + " Size='7841880'",
345 + " Version='3.1.8.20421' />",
346 + "</Wix>");
347 +
348 + var expected = String.Join(Environment.NewLine,
349 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
350 + " <RemotePayload Description=\"Microsoft ASP.NET Core 3.1.8 - Shared Framework\" Hash=\"61DC9EAA0C8968E48E13C5913ED202A2F8F94DBA\" ProductName=\"Microsoft ASP.NET Core 3.1.8 - Shared Framework\" Size=\"7841880\" Version=\"3.1.8.20421\" />",
351 + "</Wix>");
352 +
353 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
354 +
355 + var messaging = new MockMessaging();
356 + var converter = new WixConverter(messaging, 2, null, null);
357 +
358 + var errors = converter.ConvertDocument(document);
359 +
360 + var actual = UnformattedDocumentString(document);
361 +
362 + Assert.Equal(2, errors);
363 + Assert.Equal(expected, actual);
364 + }
365 +
366 [Fact]
367 public void CanConvertSuppressSignatureValidationNo()
368 {
@@ -314,7 +373,7 @@ namespace WixToolsetTest.Converters
373
374 var expected = String.Join(Environment.NewLine,
375 "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">",
317 - " <MsiPackage EnableSignatureValidation=\"yes\" />",
376 + " <MsiPackage />",
377 "</Wix>");
378
379 var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);