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);