Skip to content

Commit 7582001

Browse files
Mark reviewed LocalAuthentication methods safe
1 parent 7cd66b1 commit 7582001

3 files changed

Lines changed: 83 additions & 1 deletion

File tree

‎docs/FRAMEWORKS_CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
1818
- `OSAKit` / `objc2-osa-kit`.
1919
- `ScreenCaptureKit` / `objc2-screen-capture-kit`.
2020
- `Network` / `objc2-network`.
21+
- `LocalAuthentication` / `objc2-local-authentication`.
2122
* Added a few missing APIs that uses arrays.
2223
* Added `CGBitmapInfo::new`.
2324
* Added `Default` implementations for enumerations, bitflags and structs.

‎framework-crates/objc2-local-authentication/translation-config.toml‎

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,84 @@ enum.LAPolicy.use-value = true
1515
enum.LACredentialType.use-value = true
1616
enum.LAError.use-value = true
1717
enum.LAAccessControlOperation.use-value = true
18+
19+
unsafe-default-safety.documentation-is-reviewed = true
20+
unsafe-default-safety.bounds-checked-internally = true
21+
22+
# Construction increments process-wide `+newInstanceId` and `+newCommandId`
23+
# counters without atomics or a lock (observed on macOS 26.6.2).
24+
class.LAContext.methods.init.unsafe = true
25+
class.LAContext.methods.new.unsafe = true
26+
class.LARight.methods.init.unsafe = true
27+
class.LARight.methods."initWithRequirement:".unsafe = true
28+
class.LARight.methods.new.unsafe = true
29+
30+
# Increments the process-wide command counter, and its error path replaces the
31+
# process-wide cached biometry type.
32+
class.LAContext.methods."canEvaluatePolicy:error:".unsafe = true
33+
34+
# Each call takes an ID from the process-wide command counter.
35+
class.LAContext.methods.invalidate.unsafe = true
36+
class.LAContext.methods."isCredentialSet:".unsafe = true
37+
class.LAContext.methods."setCredential:type:".unsafe = true
38+
class.LAContext.methods.localizedFallbackTitle.unsafe = true
39+
class.LAContext.methods."setLocalizedFallbackTitle:".unsafe = true
40+
class.LAContext.methods.localizedCancelTitle.unsafe = true
41+
class.LAContext.methods."setLocalizedCancelTitle:".unsafe = true
42+
class.LAContext.methods.touchIDAuthenticationAllowableReuseDuration.unsafe = true
43+
class.LAContext.methods."setTouchIDAuthenticationAllowableReuseDuration:".unsafe = true
44+
class.LAContext.methods.localizedReason.unsafe = true
45+
class.LAContext.methods."setLocalizedReason:".unsafe = true
46+
class.LAContext.methods.interactionNotAllowed.unsafe = true
47+
class.LAContext.methods."setInteractionNotAllowed:".unsafe = true
48+
49+
# Reads the process-wide cached biometry type without retaining it, while
50+
# other contexts and evaluation completions replace and release it unguarded.
51+
class.LAContext.methods.biometryType.unsafe = true
52+
class.LAContext.methods.domainState.unsafe = true
53+
class.LAContext.methods.evaluatedPolicyDomainState.unsafe = true
54+
55+
# Deprecated and not reviewed.
56+
class.LAContext.methods.maxBiometryFailures.unsafe = true
57+
class.LAContext.methods."setMaxBiometryFailures:".unsafe = true
58+
59+
# The reply runs on a framework queue and updates process-wide state shared
60+
# with construction.
61+
class.LAContext.methods."evaluatePolicy:localizedReason:reply:".unsafe = true
62+
class.LAContext.methods."evaluateAccessControl:operation:localizedReason:reply:".unsafe = true
63+
64+
# The completion runs on a framework queue and writes the right's `state`.
65+
class.LARight.methods."authorizeWithLocalizedReason:completion:".unsafe = true
66+
class.LARight.methods."checkCanAuthorizeWithCompletion:".unsafe = true
67+
class.LARight.methods."deauthorizeWithCompletion:".unsafe = true
68+
69+
# Reads `_state` directly while authorization completions write it from a
70+
# framework queue.
71+
class.LARight.methods.state.unsafe = true
72+
73+
# The observer is held weakly and called on a framework queue.
74+
class.LAEnvironment.methods."addObserver:".unsafe = true
75+
class.LAEnvironment.methods."removeObserver:".unsafe = true
76+
protocol.LAEnvironmentObserver.methods."environment:stateDidChangeFromOldState:".unsafe = true
77+
78+
# Inherited from `NSObject` with unspecified behaviour, instances come from the
79+
# class factory methods.
80+
class.LAAuthenticationRequirement.methods.init.unsafe = true
81+
class.LAAuthenticationRequirement.methods.new.unsafe = true
82+
class.LABiometryFallbackRequirement.methods.init.unsafe = true
83+
class.LABiometryFallbackRequirement.methods.new.unsafe = true
84+
85+
# Instances are only obtained through `LARightStore`.
86+
class.LAPersistedRight.methods."initWithRequirement:".unsafe = true
87+
88+
# Creates or uses an `LAContext` internally, which increments the counters above.
89+
class.LARightStore.methods."rightForIdentifier:completion:".unsafe = true
90+
class.LARightStore.methods."saveRight:identifier:completion:".unsafe = true
91+
class.LARightStore.methods."saveRight:identifier:secret:completion:".unsafe = true
92+
class.LAPrivateKey.methods."signData:secKeyAlgorithm:completion:".unsafe = true
93+
class.LAPrivateKey.methods."decryptData:secKeyAlgorithm:completion:".unsafe = true
94+
class.LAPrivateKey.methods."exchangeKeysWithPublicKey:secKeyAlgorithm:secKeyParameters:completion:".unsafe = true
95+
class.LAPublicKey.methods."exportBytesWithCompletion:".unsafe = true
96+
class.LAPublicKey.methods."encryptData:secKeyAlgorithm:completion:".unsafe = true
97+
class.LAPublicKey.methods."verifyData:signature:secKeyAlgorithm:completion:".unsafe = true
98+
class.LASecret.methods."loadDataWithCompletion:".unsafe = true

0 commit comments

Comments
 (0)