From bfd87e4bb20101e0ea4507d0e070a0f4afbb9508 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 21 Mar 2023 18:20:05 +0100 Subject: [PATCH] [msbuild] Verify Mac Catalyst apps like we verify macOS apps. Fixes #17829. (#17835) * For Mac Catalyst apps we must verify the code signature like we do it for macOS apps. Fixes #17829. * Enable nullability and fix code accordingly. * Merge the CodesignVerify and CodesignVerifyTaskBase classes to simplify the code. Submission test is added as well: * https://github.com/xamarin/maccore/pull/2656 * https://github.com/xamarin/SubmissionSamples/pull/51 Fixes https://github.com/xamarin/xamarin-macios/issues/17829. --- .../Tasks/CodesignVerify.cs | 21 ------------------ .../Tasks/CodesignVerifyTaskBase.cs | 22 +++++++++++++++---- msbuild/Xamarin.Shared/Xamarin.Shared.targets | 2 +- 3 files changed, 19 insertions(+), 26 deletions(-) delete mode 100644 msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerify.cs diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerify.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerify.cs deleted file mode 100644 index e14e91a80c..0000000000 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerify.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Xamarin.Messaging.Build.Client; - -namespace Xamarin.MacDev.Tasks { - public class CodesignVerify : CodesignVerifyTaskBase { - public override bool Execute () - { - if (ShouldExecuteRemotely ()) - return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result; - - return base.Execute (); - } - - public override void Cancel () - { - if (ShouldExecuteRemotely ()) - BuildConnection.CancelAsync (BuildEngine4).Wait (); - - base.Cancel (); - } - } -} diff --git a/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerifyTaskBase.cs b/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerifyTaskBase.cs index ff0d3ac8e4..eb2fd67343 100644 --- a/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerifyTaskBase.cs +++ b/msbuild/Xamarin.MacDev.Tasks/Tasks/CodesignVerifyTaskBase.cs @@ -4,17 +4,20 @@ using System.IO; using Microsoft.Build.Framework; using Xamarin.Localization.MSBuild; +using Xamarin.Messaging.Build.Client; using Xamarin.Utils; +#nullable enable + namespace Xamarin.MacDev.Tasks { - public abstract class CodesignVerifyTaskBase : XamarinToolTask { + public class CodesignVerify : XamarinToolTask { #region Inputs [Required] - public string CodesignAllocate { get; set; } + public string CodesignAllocate { get; set; } = string.Empty; [Required] - public string Resource { get; set; } + public string Resource { get; set; } = string.Empty; #endregion @@ -43,9 +46,9 @@ namespace Xamarin.MacDev.Tasks { case ApplePlatform.iOS: case ApplePlatform.TVOS: case ApplePlatform.WatchOS: - case ApplePlatform.MacCatalyst: args.AddQuoted ("-R=anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and (certificate leaf[field.1.2.840.113635.100.6.1.2] exists or certificate leaf[field.1.2.840.113635.100.6.1.4] exists)"); break; + case ApplePlatform.MacCatalyst: case ApplePlatform.MacOSX: args.Add ("--deep"); break; @@ -66,11 +69,22 @@ namespace Xamarin.MacDev.Tasks { public override bool Execute () { + if (ShouldExecuteRemotely ()) + return new TaskRunner (SessionId, BuildEngine4).RunAsync (this).Result; + EnvironmentVariables = new string [] { "CODESIGN_ALLOCATE=" + CodesignAllocate }; return base.Execute (); } + + public override void Cancel () + { + if (ShouldExecuteRemotely ()) + BuildConnection.CancelAsync (BuildEngine4).Wait (); + + base.Cancel (); + } } } diff --git a/msbuild/Xamarin.Shared/Xamarin.Shared.targets b/msbuild/Xamarin.Shared/Xamarin.Shared.targets index 7bd7003300..1726a8f196 100644 --- a/msbuild/Xamarin.Shared/Xamarin.Shared.targets +++ b/msbuild/Xamarin.Shared/Xamarin.Shared.targets @@ -1959,7 +1959,7 @@ Copyright (C) 2018 Microsoft. All rights reserved. -->