From c1726f61d05d3ff46f28725802677463fd31bc8b Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 20 Mar 2025 14:45:13 +0100 Subject: [PATCH 1/3] [SecurityUI] Add this framework, introduced in Xcode 16.3. Update-to-date with Xcode 16.3 beta 3. --- src/Foundation/NSObject.mac.cs | 1 + src/build/dotnet/generator-frameworks.g.cs | 6 +++ src/frameworks.sources | 4 ++ src/rsp/dotnet/ios-defines-dotnet.rsp | 1 + src/rsp/dotnet/maccatalyst-defines-dotnet.rsp | 1 + src/rsp/dotnet/macos-defines-dotnet.rsp | 1 + src/rsp/dotnet/tvos-defines-dotnet.rsp | 1 + src/securityui.cs | 52 +++++++++++++++++++ .../Documentation.KnownFailures.txt | 10 ++++ .../MacCatalyst-SecurityUI.todo | 11 ---- .../iOS-SecurityUI.todo | 11 ---- .../macOS-SecurityUI.todo | 11 ---- .../tvOS-SecurityUI.todo | 11 ---- tools/common/Frameworks.cs | 5 ++ 14 files changed, 82 insertions(+), 44 deletions(-) create mode 100644 src/securityui.cs delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SecurityUI.todo delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/iOS-SecurityUI.todo delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-SecurityUI.todo delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/tvOS-SecurityUI.todo diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index 314f89727a5d..1e8040b45d9f 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -116,6 +116,7 @@ public partial class NSObject { static IntPtr be = Dlfcn.dlopen (Constants.BrowserEngineKitLibrary, 1); static IntPtr ce = Dlfcn.dlopen (Constants.CoreHapticsLibrary, 1); static IntPtr da = Dlfcn.dlopen (Constants.DataDetectionLibrary, 1); + static IntPtr su = Dlfcn.dlopen (Constants.SecurityUILibrary, 1); #if !NET [Obsolete ("Use PlatformAssembly for easier code sharing across platforms.")] diff --git a/src/build/dotnet/generator-frameworks.g.cs b/src/build/dotnet/generator-frameworks.g.cs index 5927869bade9..c7ffc3991991 100644 --- a/src/build/dotnet/generator-frameworks.g.cs +++ b/src/build/dotnet/generator-frameworks.g.cs @@ -121,6 +121,7 @@ partial class Frameworks { "SceneKit", "ScreenTime", "Security", + "SecurityUI", "SensitiveContentAnalysis", "SensorKit", "SharedWithYou", @@ -266,6 +267,7 @@ partial class Frameworks { "ScriptingBridge", "SearchKit", "Security", + "SecurityUI", "SensitiveContentAnalysis", "ServiceManagement", "SharedWithYou", @@ -360,6 +362,7 @@ partial class Frameworks { "ReplayKit", "SceneKit", "Security", + "SecurityUI", "SharedWithYou", "SharedWithYouCore", "ShazamKit", @@ -487,6 +490,7 @@ partial class Frameworks { "ScreenCaptureKit", "ScreenTime", "Security", + "SecurityUI", "SensitiveContentAnalysis", "SensorKit", "ServiceManagement", @@ -651,6 +655,7 @@ partial class Frameworks { bool? _ScriptingBridge; bool? _SearchKit; bool? _Security; + bool? _SecurityUI; bool? _SensitiveContentAnalysis; bool? _SensorKit; bool? _ServiceManagement; @@ -820,6 +825,7 @@ partial class Frameworks { public bool HaveScriptingBridge { get { if (!_ScriptingBridge.HasValue) _ScriptingBridge = GetValue ("ScriptingBridge"); return _ScriptingBridge.Value; } } public bool HaveSearchKit { get { if (!_SearchKit.HasValue) _SearchKit = GetValue ("SearchKit"); return _SearchKit.Value; } } public bool HaveSecurity { get { if (!_Security.HasValue) _Security = GetValue ("Security"); return _Security.Value; } } + public bool HaveSecurityUI { get { if (!_SecurityUI.HasValue) _SecurityUI = GetValue ("SecurityUI"); return _SecurityUI.Value; } } public bool HaveSensitiveContentAnalysis { get { if (!_SensitiveContentAnalysis.HasValue) _SensitiveContentAnalysis = GetValue ("SensitiveContentAnalysis"); return _SensitiveContentAnalysis.Value; } } public bool HaveSensorKit { get { if (!_SensorKit.HasValue) _SensorKit = GetValue ("SensorKit"); return _SensorKit.Value; } } public bool HaveServiceManagement { get { if (!_ServiceManagement.HasValue) _ServiceManagement = GetValue ("ServiceManagement"); return _ServiceManagement.Value; } } diff --git a/src/frameworks.sources b/src/frameworks.sources index 1c537b16ebcb..760f0c9af404 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -2142,6 +2142,7 @@ MACOS_FRAMEWORKS = \ SensitiveContentAnalysis \ ServiceManagement \ Security \ + SecurityUI \ SharedWithYou \ SharedWithYouCore \ Social \ @@ -2254,6 +2255,7 @@ IOS_FRAMEWORKS = \ SafetyKit \ ScreenTime \ Security \ + SecurityUI \ SensitiveContentAnalysis \ SensorKit \ SharedWithYou \ @@ -2324,6 +2326,7 @@ TVOS_FRAMEWORKS = \ PhotosUI \ ReplayKit \ Security \ + SecurityUI \ SharedWithYou \ SharedWithYouCore \ SystemConfiguration \ @@ -2423,6 +2426,7 @@ MACCATALYST_FRAMEWORKS = \ ScreenCaptureKit \ ScreenTime \ Security \ + SecurityUI \ SensitiveContentAnalysis \ SensorKit \ ServiceManagement \ diff --git a/src/rsp/dotnet/ios-defines-dotnet.rsp b/src/rsp/dotnet/ios-defines-dotnet.rsp index 56d1a1e0e3d3..a991537a5258 100644 --- a/src/rsp/dotnet/ios-defines-dotnet.rsp +++ b/src/rsp/dotnet/ios-defines-dotnet.rsp @@ -116,6 +116,7 @@ -d:HAS_SCENEKIT -d:HAS_SCREENTIME -d:HAS_SECURITY +-d:HAS_SECURITYUI -d:HAS_SENSITIVECONTENTANALYSIS -d:HAS_SENSORKIT -d:HAS_SHAREDWITHYOU diff --git a/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp b/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp index 73018a8c9c4e..8df65d1d4685 100644 --- a/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp +++ b/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp @@ -104,6 +104,7 @@ -d:HAS_SCREENCAPTUREKIT -d:HAS_SCREENTIME -d:HAS_SECURITY +-d:HAS_SECURITYUI -d:HAS_SENSITIVECONTENTANALYSIS -d:HAS_SENSORKIT -d:HAS_SERVICEMANAGEMENT diff --git a/src/rsp/dotnet/macos-defines-dotnet.rsp b/src/rsp/dotnet/macos-defines-dotnet.rsp index 09ffc4c39358..57eedbdc75c2 100644 --- a/src/rsp/dotnet/macos-defines-dotnet.rsp +++ b/src/rsp/dotnet/macos-defines-dotnet.rsp @@ -115,6 +115,7 @@ -d:HAS_SCRIPTINGBRIDGE -d:HAS_SEARCHKIT -d:HAS_SECURITY +-d:HAS_SECURITYUI -d:HAS_SENSITIVECONTENTANALYSIS -d:HAS_SERVICEMANAGEMENT -d:HAS_SHAREDWITHYOU diff --git a/src/rsp/dotnet/tvos-defines-dotnet.rsp b/src/rsp/dotnet/tvos-defines-dotnet.rsp index 61626c026e02..3c7b74107992 100644 --- a/src/rsp/dotnet/tvos-defines-dotnet.rsp +++ b/src/rsp/dotnet/tvos-defines-dotnet.rsp @@ -68,6 +68,7 @@ -d:HAS_REPLAYKIT -d:HAS_SCENEKIT -d:HAS_SECURITY +-d:HAS_SECURITYUI -d:HAS_SHAREDWITHYOU -d:HAS_SHAREDWITHYOUCORE -d:HAS_SHAZAMKIT diff --git a/src/securityui.cs b/src/securityui.cs new file mode 100644 index 000000000000..542d08598c41 --- /dev/null +++ b/src/securityui.cs @@ -0,0 +1,52 @@ +using System; + +#if HAS_APPKIT +using AppKit; +#endif + +using Foundation; +using ObjCRuntime; +using Security; + +#if HAS_UIKIT +using UIKit; +#endif + +namespace SecurityUI { + [TV (18, 4), MacCatalyst (18, 4), Mac (15,4), iOS (18,4)] + [BaseType (typeof(NSObject))] + [DisableDefaultCtor] + interface SFCertificatePresentation + { + [Export ("initWithTrust:")] + [DesignatedInitializer] + NativeHandle Constructor (SecTrust trust); + +#if __MACOS__ + [NoTV, NoiOS, NoMacCatalyst] + [Export ("presentSheetInWindow:dismissHandler:")] + void PresentSheet (NSWindow window, [NullAllowed] Action dismissHandler); +#endif + +#if !__MACOS__ + [NoMac] + [Export ("presentSheetInViewController:dismissHandler:")] + void PresentSheet (UIViewController viewController, [NullAllowed] Action dismissHandler); +#endif + + [Export ("dismissSheet")] + void DismissSheet (); + + [Export ("trust", ArgumentSemantic.Assign)] + SecTrust Trust { get; } + + [NullAllowed, Export ("title")] + string Title { get; set; } + + [NullAllowed, Export ("message")] + string Message { get; set; } + + [NullAllowed, Export ("helpURL", ArgumentSemantic.Copy)] + NSUrl HelpUrl { get; set; } + } +} diff --git a/tests/cecil-tests/Documentation.KnownFailures.txt b/tests/cecil-tests/Documentation.KnownFailures.txt index 125a1b01a831..67abfe492ff4 100644 --- a/tests/cecil-tests/Documentation.KnownFailures.txt +++ b/tests/cecil-tests/Documentation.KnownFailures.txt @@ -9279,6 +9279,7 @@ F:ObjCRuntime.Constants.ScriptingBridgeLibrary F:ObjCRuntime.Constants.SdkVersion F:ObjCRuntime.Constants.SearchKitLibrary F:ObjCRuntime.Constants.SecurityLibrary +F:ObjCRuntime.Constants.SecurityUILibrary F:ObjCRuntime.Constants.SensitiveContentAnalysisLibrary F:ObjCRuntime.Constants.SensorKitLibrary F:ObjCRuntime.Constants.ServiceManagementLibrary @@ -35583,6 +35584,10 @@ M:Security.SslContext.Write(System.Byte[],System.IntPtr@) M:Security.SslStreamConnection.#ctor(System.IO.Stream) M:Security.SslStreamConnection.Read(System.IntPtr,System.IntPtr@) M:Security.SslStreamConnection.Write(System.IntPtr,System.IntPtr@) +M:SecurityUI.SFCertificatePresentation.#ctor(Security.SecTrust) +M:SecurityUI.SFCertificatePresentation.DismissSheet +M:SecurityUI.SFCertificatePresentation.PresentSheet(AppKit.NSWindow,System.Action) +M:SecurityUI.SFCertificatePresentation.PresentSheet(UIKit.UIViewController,System.Action) M:SensitiveContentAnalysis.SCSensitivityAnalyzer.AnalyzeImageAsync(CoreGraphics.CGImage) M:SensitiveContentAnalysis.SCSensitivityAnalyzer.AnalyzeImageAsync(Foundation.NSUrl) M:SensitiveContentAnalysis.SCSensitivityAnalyzer.AnalyzeVideoAsync(Foundation.NSUrl,Foundation.NSProgress@) @@ -55902,6 +55907,10 @@ P:Security.SecTrustResultKey.OrganizationName P:Security.SecTrustResultKey.ResultValue P:Security.SecTrustResultKey.RevocationChecked P:Security.SecTrustResultKey.RevocationValidUntilDate +P:SecurityUI.SFCertificatePresentation.HelpUrl +P:SecurityUI.SFCertificatePresentation.Message +P:SecurityUI.SFCertificatePresentation.Title +P:SecurityUI.SFCertificatePresentation.Trust P:SensitiveContentAnalysis.SCSensitivityAnalysis.Sensitive P:SensorKit.SRSensorReader.Delegate P:SensorKit.SRSensorReader.Sensor @@ -66931,6 +66940,7 @@ T:Security.SslStreamConnection T:Security.TlsCipherSuite T:Security.TlsCipherSuiteGroup T:Security.TlsProtocolVersion +T:SecurityUI.SFCertificatePresentation T:SensitiveContentAnalysis.SCSensitivityAnalysisPolicy T:SensorKit.ISRSensorReaderDelegate T:SensorKit.SRAbsoluteTime diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SecurityUI.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SecurityUI.todo deleted file mode 100644 index 6d70b0d3bde4..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-SecurityUI.todo +++ /dev/null @@ -1,11 +0,0 @@ -!missing-selector! SFCertificatePresentation::dismissSheet not bound -!missing-selector! SFCertificatePresentation::helpURL not bound -!missing-selector! SFCertificatePresentation::initWithTrust: not bound -!missing-selector! SFCertificatePresentation::message not bound -!missing-selector! SFCertificatePresentation::presentSheetInViewController:dismissHandler: not bound -!missing-selector! SFCertificatePresentation::setHelpURL: not bound -!missing-selector! SFCertificatePresentation::setMessage: not bound -!missing-selector! SFCertificatePresentation::setTitle: not bound -!missing-selector! SFCertificatePresentation::title not bound -!missing-selector! SFCertificatePresentation::trust not bound -!missing-type! SFCertificatePresentation not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/iOS-SecurityUI.todo b/tests/xtro-sharpie/api-annotations-dotnet/iOS-SecurityUI.todo deleted file mode 100644 index 6d70b0d3bde4..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/iOS-SecurityUI.todo +++ /dev/null @@ -1,11 +0,0 @@ -!missing-selector! SFCertificatePresentation::dismissSheet not bound -!missing-selector! SFCertificatePresentation::helpURL not bound -!missing-selector! SFCertificatePresentation::initWithTrust: not bound -!missing-selector! SFCertificatePresentation::message not bound -!missing-selector! SFCertificatePresentation::presentSheetInViewController:dismissHandler: not bound -!missing-selector! SFCertificatePresentation::setHelpURL: not bound -!missing-selector! SFCertificatePresentation::setMessage: not bound -!missing-selector! SFCertificatePresentation::setTitle: not bound -!missing-selector! SFCertificatePresentation::title not bound -!missing-selector! SFCertificatePresentation::trust not bound -!missing-type! SFCertificatePresentation not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-SecurityUI.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-SecurityUI.todo deleted file mode 100644 index de014cb1b703..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-SecurityUI.todo +++ /dev/null @@ -1,11 +0,0 @@ -!missing-selector! SFCertificatePresentation::dismissSheet not bound -!missing-selector! SFCertificatePresentation::helpURL not bound -!missing-selector! SFCertificatePresentation::initWithTrust: not bound -!missing-selector! SFCertificatePresentation::message not bound -!missing-selector! SFCertificatePresentation::presentSheetInWindow:dismissHandler: not bound -!missing-selector! SFCertificatePresentation::setHelpURL: not bound -!missing-selector! SFCertificatePresentation::setMessage: not bound -!missing-selector! SFCertificatePresentation::setTitle: not bound -!missing-selector! SFCertificatePresentation::title not bound -!missing-selector! SFCertificatePresentation::trust not bound -!missing-type! SFCertificatePresentation not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-SecurityUI.todo b/tests/xtro-sharpie/api-annotations-dotnet/tvOS-SecurityUI.todo deleted file mode 100644 index 6d70b0d3bde4..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/tvOS-SecurityUI.todo +++ /dev/null @@ -1,11 +0,0 @@ -!missing-selector! SFCertificatePresentation::dismissSheet not bound -!missing-selector! SFCertificatePresentation::helpURL not bound -!missing-selector! SFCertificatePresentation::initWithTrust: not bound -!missing-selector! SFCertificatePresentation::message not bound -!missing-selector! SFCertificatePresentation::presentSheetInViewController:dismissHandler: not bound -!missing-selector! SFCertificatePresentation::setHelpURL: not bound -!missing-selector! SFCertificatePresentation::setMessage: not bound -!missing-selector! SFCertificatePresentation::setTitle: not bound -!missing-selector! SFCertificatePresentation::title not bound -!missing-selector! SFCertificatePresentation::trust not bound -!missing-type! SFCertificatePresentation not bound diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index ce2ca564f5ea..c6fb5854499b 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -290,6 +290,8 @@ public static Frameworks MacFrameworks { // FSKit was removed from Xcode 16 RC, but keeping it commented, because it's likely to return in a later release // { "FSKit", "FSKit", 15, 0 }, { "MediaExtension", "MediaExtension", 15, 0 }, + + { "SecurityUI", "SecurityUI", 15, 4 }, }; } return mac_frameworks; @@ -471,6 +473,8 @@ public static Frameworks CreateiOSFrameworks (bool is_simulator_build) { "AccessorySetupKit", "AccessorySetupKit", 18, 0 }, + { "SecurityUI", "SecurityUI", 18, 4 }, + // the above MUST be kept in sync with simlauncher // see tools/mtouch/Makefile // please also keep it sorted to ease comparison @@ -584,6 +588,7 @@ public static Frameworks TVOSFrameworks { { "PdfKit", "PDFKit", 18, 2 }, { "BackgroundAssets", "BackgroundAssets", 18, 4 }, + { "SecurityUI", "SecurityUI", 18, 4 }, }; } return tvos_frameworks; From 878dffe9fa46a9aac8c4a0b014871463fb2a9c26 Mon Sep 17 00:00:00 2001 From: GitHub Actions Autoformatter Date: Fri, 21 Mar 2025 06:19:40 +0000 Subject: [PATCH 2/3] Auto-format source code --- src/securityui.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/securityui.cs b/src/securityui.cs index 542d08598c41..0968d194546c 100644 --- a/src/securityui.cs +++ b/src/securityui.cs @@ -13,11 +13,10 @@ #endif namespace SecurityUI { - [TV (18, 4), MacCatalyst (18, 4), Mac (15,4), iOS (18,4)] - [BaseType (typeof(NSObject))] + [TV (18, 4), MacCatalyst (18, 4), Mac (15, 4), iOS (18, 4)] + [BaseType (typeof (NSObject))] [DisableDefaultCtor] - interface SFCertificatePresentation - { + interface SFCertificatePresentation { [Export ("initWithTrust:")] [DesignatedInitializer] NativeHandle Constructor (SecTrust trust); From f5f70e3e62dca892be8c048316acdd13182d4ce0 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 24 Mar 2025 18:19:41 +0100 Subject: [PATCH 3/3] Fix test with new framework. --- tests/dotnet/UnitTests/ProjectTest.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/dotnet/UnitTests/ProjectTest.cs b/tests/dotnet/UnitTests/ProjectTest.cs index f61a419e22c4..e0cbfb60ed92 100644 --- a/tests/dotnet/UnitTests/ProjectTest.cs +++ b/tests/dotnet/UnitTests/ProjectTest.cs @@ -2588,6 +2588,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl "/System/Library/Frameworks/SceneKit.framework/SceneKit", "/System/Library/Frameworks/ScreenTime.framework/ScreenTime", "/System/Library/Frameworks/Security.framework/Security", + "/System/Library/Frameworks/SecurityUI.framework/SecurityUI", "/System/Library/Frameworks/SensitiveContentAnalysis.framework/SensitiveContentAnalysis", "/System/Library/Frameworks/SensorKit.framework/SensorKit", "/System/Library/Frameworks/SharedWithYou.framework/SharedWithYou", @@ -2722,6 +2723,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl "/System/Library/Frameworks/ReplayKit.framework/ReplayKit", "/System/Library/Frameworks/SceneKit.framework/SceneKit", "/System/Library/Frameworks/Security.framework/Security", + "/System/Library/Frameworks/SecurityUI.framework/SecurityUI", "/System/Library/Frameworks/SharedWithYou.framework/SharedWithYou", "/System/Library/Frameworks/ShazamKit.framework/ShazamKit", "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis", @@ -2897,6 +2899,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl "/System/Library/Frameworks/ScreenTime.framework/Versions/A/ScreenTime", "/System/Library/Frameworks/ScriptingBridge.framework/Versions/A/ScriptingBridge", "/System/Library/Frameworks/Security.framework/Versions/A/Security", + "/System/Library/Frameworks/SecurityUI.framework/Versions/A/SecurityUI", "/System/Library/Frameworks/SensitiveContentAnalysis.framework/Versions/A/SensitiveContentAnalysis", "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement", "/System/Library/Frameworks/SharedWithYou.framework/Versions/A/SharedWithYou", @@ -3091,6 +3094,7 @@ public void AppendRuntimeIdentifierToOutputPath_DisableDirectoryBuildProps (Appl "/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore", "/System/Library/Frameworks/QuickLookThumbnailing.framework/Versions/A/QuickLookThumbnailing", "/System/Library/Frameworks/Security.framework/Versions/A/Security", + "/System/Library/Frameworks/SecurityUI.framework/Versions/A/SecurityUI", "/System/Library/Frameworks/SensitiveContentAnalysis.framework/Versions/A/SensitiveContentAnalysis", "/System/Library/Frameworks/SensorKit.framework/Versions/A/SensorKit", "/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement",