[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.
This commit is contained in:
Rolf Bjarne Kvinge 2023-03-21 18:20:05 +01:00 коммит произвёл GitHub
Родитель 6300a6aff7
Коммит bfd87e4bb2
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 19 добавлений и 26 удалений

Просмотреть файл

@ -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 ();
}
}
}

Просмотреть файл

@ -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 ();
}
}
}

Просмотреть файл

@ -1959,7 +1959,7 @@ Copyright (C) 2018 Microsoft. All rights reserved.
-->
<Target
Name="_CodesignVerify"
Condition="'$(_CodesignAppBundleCondition)' == 'true' And '$(_RequireCodeSigning)' == 'true'"
Condition="'$(_CodesignAppBundleCondition)' == 'true' And '$(_RequireCodeSigning)' == 'true' And '$(DisableCodesignVerification)' != 'true'"
DependsOnTargets="_CodesignAppBundle"
>
<CodesignVerify