Skip to content

LocalAuthentication iOS xcode16.0 b1

Rolf Bjarne Kvinge edited this page Jul 12, 2024 · 3 revisions

#LocalAuthentication.framework https://github.com/xamarin/xamarin-macios/pull/20891

diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LABiometryType.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LABiometryType.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LABiometryType.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LABiometryType.h	2024-05-30 10:47:59 @@ -0,0 +1,26 @@ +// +// Copyright © 2024 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAPublicDefines.h> + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, LABiometryType) +{ + /// The device does not support biometry. + LABiometryTypeNone API_AVAILABLE(macos(10.13.2), ios(11.2)) = kLABiometryTypeNone, + LABiometryNone API_DEPRECATED_WITH_REPLACEMENT("LABiometryTypeNone", macos(10.13, 10.13.2), ios(11.0, 11.2)) = LABiometryTypeNone, +  + /// The device supports Touch ID. + LABiometryTypeTouchID = kLABiometryTypeTouchID, + + /// The device supports Face ID. + LABiometryTypeFaceID API_AVAILABLE(macos(10.15)) = kLABiometryTypeFaceID, + + /// The device supports Optic ID + LABiometryTypeOpticID API_AVAILABLE(visionos(1.0), ios(17.0), macos(14.0)) = kLABiometryTypeOpticID, +} API_AVAILABLE(macos(10.13.2), ios(11.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LACompanionType.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LACompanionType.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LACompanionType.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LACompanionType.h	2024-05-30 10:47:59 @@ -0,0 +1,19 @@ +// +// Copyright © 2024 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAPublicDefines.h> + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, LACompanionType) +{ + /// Paired Apple Watch + LACompanionTypeWatch API_AVAILABLE(macos(15.0)) API_UNAVAILABLE(ios, watchos, tvos, visionos) = kLACompanionTypeWatch, +  + /// Paired Mac + LACompanionTypeMac API_AVAILABLE(ios(18.0)) API_UNAVAILABLE(macos, watchos, tvos, visionos) = kLACompanionTypeMac, +} API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAContext.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAContext.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAContext.h	2024-04-19 07:49:13 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAContext.h	2024-05-30 05:04:22 @@ -6,6 +6,8 @@ // #import <Foundation/Foundation.h> +#import <LocalAuthentication/LABiometryType.h> +#import <LocalAuthentication/LADomainState.h> #import <LocalAuthentication/LAPublicDefines.h> NS_ASSUME_NONNULL_BEGIN @@ -62,8 +64,16 @@ /// /// Watch authentication dialog looks and behaves similarly to the biometric variant. Users can /// confirm authentication by double-clicking the side button on their watch. - LAPolicyDeviceOwnerAuthenticationWithWatch API_AVAILABLE(macos(10.15), macCatalyst(13.0)) API_UNAVAILABLE(ios, watchos, tvos) = kLAPolicyDeviceOwnerAuthenticationWithWatch, + LAPolicyDeviceOwnerAuthenticationWithWatch API_DEPRECATED_WITH_REPLACEMENT("LAPolicyDeviceOwnerAuthenticationWithCompanion", macos(10.15, 15.0), macCatalyst(13.0, 18.0)) API_UNAVAILABLE(ios, watchos, tvos) = kLAPolicyDeviceOwnerAuthenticationWithWatch, + /// Device owner will be authenticated by a companion device e.g. Watch, Mac, etc. + /// + /// @discussion Companion authentication is required. If no nearby paired companion device can be found, + /// LAErrorCompanionNotAvailable is returned. + /// + /// Users should follow instructions on the companion device to authenticate. + LAPolicyDeviceOwnerAuthenticationWithCompanion API_AVAILABLE(macos(15.0), macCatalyst(18.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos) = kLAPolicyDeviceOwnerAuthenticationWithCompanion, + /// Device owner will be authenticated by biometry or Watch. /// /// @discussion Watch or biometric authentication is required. If no nearby paired watch device can be found, @@ -73,8 +83,18 @@ /// Watch authentication dialog looks and behaves similarly to biometric variant. When both /// mechanisms are available, user is asked to use biometry and watch authentication will run in /// parallel. - LAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch API_AVAILABLE(macos(10.15), macCatalyst(13.0)) API_UNAVAILABLE(ios, watchos, tvos) = kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch, -  + LAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch API_DEPRECATED_WITH_REPLACEMENT("LAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion", macos(10.15, 15.0), macCatalyst(13.0, 18.0)) API_UNAVAILABLE(ios, watchos, tvos) = kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch, + + /// Device owner will be authenticated by biometry or a companion device e.g. Watch, Mac, etc. + /// + /// @discussion Companion or biometric authentication is required. If no nearby paired companion device can be found, + /// it behaves as LAPolicyDeviceOwnerAuthenticationWithBiometrics. Similarly, if biometry is + /// unavailable it behaves as LAPolicyDeviceOwnerAuthenticationWithCompanion. + /// + /// When both mechanisms are available, user is asked to use biometry and companion authentication + /// will run in parallel. Users should follow instructions on the companion device to authenticate. + LAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion API_AVAILABLE(macos(15.0), macCatalyst(18.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos) = kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion, + /// Device owner will be authenticated by device passcode. The authentication will also succeed if the wrist detection is enabled, /// correct passcode was entered in the past and the watch has been on the wrist ever since. LAPolicyDeviceOwnerAuthenticationWithWristDetection API_AVAILABLE(watchos(9.0)) API_UNAVAILABLE(macos, ios, tvos) = kLAPolicyDeviceOwnerAuthenticationWithWristDetection, @@ -322,20 +342,6 @@ /// this property is left nil or is set to empty string. @property (nonatomic, nullable, copy) NSString *localizedCancelTitle API_AVAILABLE(macos(10.12), ios(10.0)) API_UNAVAILABLE(watchos, tvos); -/// Contains policy domain state. -/// -/// @discussion This property is set only when evaluatePolicy is called and succesful Touch ID or Face ID authentication -/// was performed, or when canEvaluatePolicy succeeds for a biometric policy. -/// It stays nil for all other cases. -/// If biometric database was modified (fingers or faces were removed or added), evaluatedPolicyDomainState -/// data will change. Nature of such database changes cannot be determined -/// but comparing data of evaluatedPolicyDomainState after different evaluatePolicy -/// will reveal the fact database was changed between calls. -/// -/// @warning Please note that the value returned by this property can change exceptionally between major OS versions even if -/// the state of biometry has not changed. -@property (nonatomic, nullable, readonly) NSData *evaluatedPolicyDomainState API_AVAILABLE(macos(10.11), ios(9.0)) API_UNAVAILABLE(watchos, tvos); - /// Time interval for accepting a successful Touch ID or Face ID device unlock (on the lock screen) from the past. /// /// @discussion This property can be set with a time interval in seconds. If the device was successfully unlocked by @@ -371,29 +377,26 @@ /// LAErrorNotInteractive instead of displaying the authentication UI. @property (nonatomic) BOOL interactionNotAllowed API_AVAILABLE(macos(10.13), ios(11.0), watchos(4.0)) API_UNAVAILABLE(tvos); - -typedef NS_ENUM(NSInteger, LABiometryType) -{ - /// The device does not support biometry. - LABiometryTypeNone API_AVAILABLE(macos(10.13.2), ios(11.2)) = kLABiometryTypeNone, - LABiometryNone API_DEPRECATED_WITH_REPLACEMENT("LABiometryTypeNone", macos(10.13, 10.13.2), ios(11.0, 11.2)) = LABiometryTypeNone, -  - /// The device supports Touch ID. - LABiometryTypeTouchID = kLABiometryTypeTouchID, - - /// The device supports Face ID. - LABiometryTypeFaceID API_AVAILABLE(macos(10.15)) = kLABiometryTypeFaceID, - - /// The device supports Optic ID - LABiometryTypeOpticID API_AVAILABLE(visionos(1.0), ios(17.0), macos(14.0)) = kLABiometryTypeOpticID, -} API_AVAILABLE(macos(10.13.2), ios(11.0)) API_UNAVAILABLE(watchos, tvos); - /// Indicates the type of the biometry supported by the device. +@property (nonatomic, readonly) LABiometryType biometryType API_AVAILABLE(macos(10.13.2), ios(11.0), watchos(11.0), tvos(18.0), visionos(2.0)); + +/// Contains policy domain state. /// -/// @discussion This property is set when canEvaluatePolicy has been called for a biometric policy. -/// The default value is LABiometryTypeNone. -@property (nonatomic, readonly) LABiometryType biometryType API_AVAILABLE(macos(10.13.2), ios(11.0)) API_UNAVAILABLE(watchos, tvos); +/// @discussion This property is set only when evaluatePolicy is called and succesful Touch ID or Face ID authentication +/// was performed, or when canEvaluatePolicy succeeds for a biometric policy. +/// It stays nil for all other cases. +/// If biometric database was modified (fingers or faces were removed or added), evaluatedPolicyDomainState +/// data will change. Nature of such database changes cannot be determined +/// but comparing data of evaluatedPolicyDomainState after different evaluatePolicy +/// will reveal the fact database was changed between calls. +/// +/// @warning Please note that the value returned by this property can change exceptionally between major OS versions even if +/// the state of biometry has not changed. +@property (nonatomic, nullable, readonly) NSData *evaluatedPolicyDomainState +API_DEPRECATED_WITH_REPLACEMENT("domainState.biometry.stateHash", macos(10.11, 15.0), ios(9.0, 18.0)) API_UNAVAILABLE(watchos, tvos); +/// Contains authentication domain state. +@property (nonatomic, readonly) LADomainState *domainState API_AVAILABLE(macos(15.0), ios(18.0), visionos(2.0)) API_UNAVAILABLE(watchos, tvos); @end diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LADomainState.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LADomainState.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LADomainState.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LADomainState.h	2024-05-30 10:47:59 @@ -0,0 +1,95 @@ +// +// Copyright © 2024 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LABiometryType.h> +#import <LocalAuthentication/LACompanionType.h> + + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(macos(15.0), ios(18.0), visionos(2.0)) API_UNAVAILABLE(watchos, tvos) +@interface LADomainStateBiometry : NSObject + +/// Indicates biometry type available on the device. +@property (nonatomic, readonly) LABiometryType biometryType; + +/// Contains state hash data for the available biometry type. Returns `nil` if no biometry entities are enrolled. +/// +/// @discussion If biometric database was modified (fingers, faces were removed or added), `stateHash` +/// data will change. Nature of such database changes cannot be determined +/// but comparing data of `stateHash` after different evaluatePolicy calls +/// will reveal the fact database was changed between the calls. +/// +/// @warning Please note that the value returned by this property can change exceptionally between major OS versions even if +/// the state of biometry has not changed. +@property (nonatomic, readonly, nullable) NSData *stateHash; + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +@end + +API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos) +@interface LADomainStateCompanion : NSObject + +/// Indicates types of companions paired with the device. +/// The elements are NSNumber-wrapped instances of @c `LACompanionType`. +@property (nonatomic, readonly) NSSet<NSNumber *> *availableCompanionTypes NS_REFINED_FOR_SWIFT; + +/// Contains combined state hash data for all available companion types. . Returns `nil` if no companion devices are paired. +/// +/// @discussion As long as database of paired companion devices doesn't change, +/// `stateHash` stays the same for the same set of `availableCompanions`. +/// +/// If database of paired companion devices was modified, `stateHash` +/// data will change. Nature of such database changes cannot be determined +/// but comparing data of `stateHash` after different policy evaluation +/// will reveal the fact database was changed between calls. +/// +/// If you are interested in a state hash for a specific companion type +/// you can use `stateHashForCompanionType` method. +/// +/// @warning Please note that the value returned by this property can change exceptionally between major OS versions even if +/// the list of paired companions has not changed. +@property (nonatomic, readonly, nullable) NSData *stateHash; + +/// Returns state hash data for the given companion type. +/// +/// @discussion If database of paired devices of the given type was modified state hash +/// data will change. Nature of such database changes cannot be determined +/// but comparing data of state hash after different policy evaluation +/// will reveal the fact database was changed between calls. +/// +/// @param companionType The companion type for which state hash data should be returned. +- (NSData * _Nullable)stateHashForCompanionType:(LACompanionType)companionType NS_SWIFT_NAME(stateHash(for:)); + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +@end + +API_AVAILABLE(macos(15.0), ios(18.0), visionos(2.0)) API_UNAVAILABLE(watchos, tvos) +@interface LADomainState : NSObject + +/// Contains biometric domain state. +@property (nonatomic, readonly) LADomainStateBiometry *biometry; + +/// Contains companion domain state. +@property (nonatomic, readonly) LADomainStateCompanion *companion +API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos); + +/// Contains combined state hash data for biometry and companion state hashes. +/// +/// @warning Please note that the value returned by this property can change exceptionally between major OS versions even if +/// the list of paired companions has not changed. +@property (nonatomic, readonly, nullable) NSData *stateHash; + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END + diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironment.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironment.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironment.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironment.h	2024-05-30 10:47:59 @@ -0,0 +1,49 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAEnvironmentState.h> + +NS_ASSUME_NONNULL_BEGIN + +@protocol LAEnvironmentObserver; + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +@interface LAEnvironment : NSObject + +/// The clients should use @c currentUser class property. ++ (instancetype)new NS_UNAVAILABLE; + +/// The clients should use @c currentUser class property. +- (instancetype)init NS_UNAVAILABLE; + +/// @brief Adds observer to monitor changes of the environment. +/// @discussion The observer will be held weakly so its instance should be kept alive by the caller. +- (void)addObserver:(id<LAEnvironmentObserver>)observer NS_SWIFT_NAME(addObserver(_:)); + +/// @brief Removes the previously registered observer. +/// @discussion If the observer is deallocated, it will be removed automatically. +- (void)removeObserver:(id<LAEnvironmentObserver>)observer NS_SWIFT_NAME(removeObserver(_:)); + +/// Environment of the current user. +@property (nonatomic, readonly, class) LAEnvironment *currentUser; + +/// The environment state information. +@property (nonatomic, readonly) LAEnvironmentState *state; + +@end + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +NS_SWIFT_NAME(LAEnvironment.Observer) +@protocol LAEnvironmentObserver<NSObject> +@optional +/// Called when there has been a change in the environment. +/// @discussion Invoked on a queue private to LocalAuthentication framework. At the moment of invocation of this method, +/// @c LAEnvironment.state already contains the new updated state. +/// @param oldState The old environment state (before update) +- (void)environment:(LAEnvironment *)environment stateDidChangeFromOldState:(LAEnvironmentState *)oldState; +@end + + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanism.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanism.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanism.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanism.h	2024-05-30 10:47:59 @@ -0,0 +1,33 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +NS_SWIFT_NAME(LAEnvironment.Mechanism) +NS_SWIFT_SENDABLE +@interface LAEnvironmentMechanism : NSObject + +/// Clients should only consume environment mechanisms.. ++ (instancetype)new NS_UNAVAILABLE; + +/// The Clients should only consume environment mechanisms.. +- (instancetype)init NS_UNAVAILABLE; + +/// @brief Whether the mechanism is available for use, i.e. whether the relevant preflight call of @c canEvaluatePolicy would succeed. +/// @warning If @c isUsable reads @c NO, do not assume that it's because of some particular reason. You should check +/// properties of the subclass to determine why mechanism can't be used. +@property (nonatomic, readonly) BOOL isUsable; + +/// The localized name of the authentication mechanism, e.g. "Touch ID", "Face ID" etc. +@property (nonatomic, readonly) NSString *localizedName; + +/// Name of the SF Symbol representing this authentication mechanism. +@property (nonatomic, readonly) NSString *iconSystemName; + +@end + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismBiometry.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismBiometry.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismBiometry.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismBiometry.h	2024-05-30 10:47:59 @@ -0,0 +1,48 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAContext.h> +#import <LocalAuthentication/LAEnvironmentMechanism.h> + +NS_ASSUME_NONNULL_BEGIN + + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +NS_SWIFT_NAME(LAEnvironment.MechanismBiometry) +NS_SWIFT_SENDABLE +@interface LAEnvironmentMechanismBiometry : LAEnvironmentMechanism + +/// @brief Type of biometry supported by the device. +/// @discussion This property does not indicate whether biometry is available or not. It always reads the type of biometry +/// supported by device hardware. You should check @c isUsable property to see if it is available for use. +@property (nonatomic, readonly) LABiometryType biometryType; + +/// @brief Whether the user has enrolled this biometry. +/// @discussion Even if biometry is enrolled, it does not necessarily mean that it can be used. You should check @c isUsable +/// property to see if it is available for use. +@property (nonatomic, readonly) BOOL isEnrolled; + +/// @brief Whether biometry is locked out. +/// @discussion The system might lock the user out of biometry for various reasons. For example, with Face ID, the user is +/// locked out after 5 failed match attempts in row. To recover from bio lockout, users need to enter their passcode +/// (e.g. during device ulock). +@property (nonatomic, readonly) BOOL isLockedOut; + +/// @brief The application specific state of the biometric enrollment as returned by @c LAContext.domainState.biometry.stateHash +/// @discussion This value represents the state of the enrollment and changes whenever the biometric enrollment is changed. +/// It does not directly map to the enrolled templates, e.g. if a finger is added to Touch ID enrollement and then +/// removed, the final state would be different. +/// It also returns different values to different apps to prevent tracking of user identity. +@property (nonatomic, readonly) NSData *stateHash; + +/// @brief Whether the built in biometric sensor is inaccessible in the current configuration, preventing the use of biometry. +/// @discussion Currently, the only example of this is a Clamshell Mode on macOS. The user will be not able to use Touch ID +/// if the MacBook lid is closed while connected to external monitor and keyboard, unless the external keyboard +/// has Touch ID. +@property (nonatomic, readonly) BOOL builtInSensorInaccessible; + +@end + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismCompanion.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismCompanion.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismCompanion.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismCompanion.h	2024-05-30 10:47:59 @@ -0,0 +1,27 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAEnvironmentMechanism.h> +#import <LocalAuthentication/LACompanionType.h> + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +NS_SWIFT_NAME(LAEnvironment.MechanismCompanion) +NS_SWIFT_SENDABLE +@interface LAEnvironmentMechanismCompanion : LAEnvironmentMechanism + +/// Type of the companion. +@property (nonatomic, readonly) LACompanionType type; + +/// @brief Hash of the current companion pairing as returned by @c LAContext.domainState.companion.stateHash(for:) +/// @discussion If no companion are paired for this companion type, @c stateHash property is @c nil. +/// If at least one companion is paired for this companion type, @c stateHash is not @c nil and +/// it changes whenever the set of paired companions of this type is changed. +@property (nonatomic, readonly, nullable) NSData *stateHash; + +@end + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismUserPassword.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismUserPassword.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismUserPassword.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentMechanismUserPassword.h	2024-05-30 10:47:59 @@ -0,0 +1,20 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAEnvironmentMechanism.h> + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0))  +NS_SWIFT_NAME(LAEnvironment.MechanismUserPassword) +NS_SWIFT_SENDABLE +@interface LAEnvironmentMechanismUserPassword : LAEnvironmentMechanism + +/// @brief Whether the local user password or passcode is set on this device. +@property (nonatomic, readonly) BOOL isSet; + +@end + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentState.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentState.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentState.h	1970-01-01 01:00:00 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAEnvironmentState.h	2024-05-30 10:47:59 @@ -0,0 +1,49 @@ +// +// Copyright © 2023 Apple Inc. All rights reserved. +// + +#import <Foundation/Foundation.h> +#import <LocalAuthentication/LAEnvironmentMechanism.h> +#import <LocalAuthentication/LAEnvironmentMechanismBiometry.h> +#import <LocalAuthentication/LAEnvironmentMechanismCompanion.h> +#import <LocalAuthentication/LAEnvironmentMechanismUserPassword.h> + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(macos(15.0), ios(18.0), watchos(11.0), tvos(18.0), visionos(2.0)) +NS_SWIFT_NAME(LAEnvironment.State) +NS_SWIFT_SENDABLE +@interface LAEnvironmentState : NSObject<NSCopying> + +/// Clients shall not create environment state. +- (instancetype)init NS_UNAVAILABLE; + +/// Clients shall not create environment state. ++ (instancetype)new NS_UNAVAILABLE; + +/// @brief Information about biometric authentication (Touch ID, Face ID or Optic ID). +/// @discussion @c nil if biometry is not supported by this device. +@property (nonatomic, readonly, nullable) LAEnvironmentMechanismBiometry *biometry; + +/// @brief Information about local user password (on macOS) or passcode (on embedded platforms). +/// @discussion @c nil if user password or passcode is not supported by this device. +@property (nonatomic, readonly, nullable) LAEnvironmentMechanismUserPassword *userPassword; + +/// @brief Companion authentication mechanisms. +/// @discussion Companion mechanisms such as Apple Watch can appear and disappear as they get in and out of reach, but +/// this property enumerates paired companions, even if they are not reachable at the moment. Check @c isUsable +/// property to determine if a particular companion type is available for use.  +/// Note that items in this array represent paired companion types, not individual devices. Therefore, even if the user +/// has paired multiple Apple Watch devices for companion authentication, the array will contain only one +/// @c LAEnvironmentMechanimsCompanion instance of type @c LACompanionTypeWatch. +@property (nonatomic, readonly) NSArray<LAEnvironmentMechanismCompanion *> *companions +API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos); + +/// @brief Information about all authentication mechanisms. +/// @discussion This property aggregates @c biometry, @c userPassword, @c companions and any future +/// authentication mechanisms. +@property (nonatomic, readonly) NSArray<LAEnvironmentMechanism *> *allMechanisms; + +@end + +NS_ASSUME_NONNULL_END diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAError.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAError.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAError.h	2024-04-19 07:58:21 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAError.h	2024-05-30 10:47:59 @@ -64,8 +64,11 @@ LAErrorNotInteractive API_AVAILABLE(macos(10.10), ios(8.0), watchos(3.0)) API_UNAVAILABLE(tvos) = kLAErrorNotInteractive, /// Authentication could not start because there was no paired watch device nearby. - LAErrorWatchNotAvailable API_AVAILABLE(macos(10.15)) API_UNAVAILABLE(ios, watchos, tvos) = kLAErrorWatchNotAvailable, + LAErrorWatchNotAvailable API_DEPRECATED_WITH_REPLACEMENT("LAErrorCompanionNotAvailable", macos(10.15, 15.0)) API_UNAVAILABLE(ios, watchos, tvos) = kLAErrorWatchNotAvailable, + /// Authentication could not start because there was no paired companion device nearby. + LAErrorCompanionNotAvailable API_AVAILABLE(macos(15.0), ios(18.0)) API_UNAVAILABLE(watchos, tvos, visionos) = kLAErrorCompanionNotAvailable, + /// Authentication could not start because this device supports biometry only via removable accessories and no accessory has been paired. LAErrorBiometryNotPaired API_AVAILABLE(macos(11.2)) API_UNAVAILABLE(ios, watchos, tvos) = kLAErrorBiometryNotPaired, diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAPublicDefines.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAPublicDefines.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAPublicDefines.h	2024-04-19 08:03:04 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LAPublicDefines.h	2024-05-30 10:47:58 @@ -14,6 +14,8 @@ #define kLAPolicyDeviceOwnerAuthenticationWithWatch 3 #define kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch 4 #define kLAPolicyDeviceOwnerAuthenticationWithWristDetection 5 +#define kLAPolicyDeviceOwnerAuthenticationWithCompanion kLAPolicyDeviceOwnerAuthenticationWithWatch +#define kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch // Biometry types #define kLABiometryTypeNone 0 @@ -44,8 +46,13 @@ #define kLAErrorBiometryNotPaired -12 #define kLAErrorBiometryDisconnected -13 #define kLAErrorInvalidDimensions -14 +#define kLAErrorCompanionNotAvailable kLAErrorWatchNotAvailable // Error domain #define kLAErrorDomain "com.apple.LocalAuthentication" + +// Companion types +#define kLACompanionTypeWatch 1 << 0 +#define kLACompanionTypeMac 1 << 1 #endif diff -ruN /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LocalAuthentication.h /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LocalAuthentication.h --- /Applications/Xcode_15.4.0.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LocalAuthentication.h	2024-04-19 08:03:04 +++ /Applications/Xcode_16.0.0-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/LocalAuthentication.framework/Headers/LocalAuthentication.h	2024-05-30 10:47:58 @@ -3,7 +3,16 @@ // #import <LocalAuthentication/LABase.h> +#import <LocalAuthentication/LABiometryType.h> +#import <LocalAuthentication/LACompanionType.h> #import <LocalAuthentication/LAContext.h> +#import <LocalAuthentication/LADomainState.h> +#import <LocalAuthentication/LAEnvironment.h> +#import <LocalAuthentication/LAEnvironmentMechanism.h> +#import <LocalAuthentication/LAEnvironmentMechanismBiometry.h> +#import <LocalAuthentication/LAEnvironmentMechanismCompanion.h> +#import <LocalAuthentication/LAEnvironmentMechanismUserPassword.h> +#import <LocalAuthentication/LAEnvironmentState.h> #import <LocalAuthentication/LAError.h> #import <LocalAuthentication/LAPublicDefines.h> #import <LocalAuthentication/LAPersistedRight.h> 
Clone this wiki locally