pyobjc-framework-LocalAuthentication 10.2__tar.gz → 11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/LocalAuthentication/__init__.py +19 -2
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/LocalAuthentication/_metadata.py +29 -5
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/pyobjc_framework_LocalAuthentication.egg-info/PKG-INFO +6 -6
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/pyobjc_framework_LocalAuthentication.egg-info/SOURCES.txt +15 -4
- pyobjc_framework_localauthentication-11.0/Lib/pyobjc_framework_LocalAuthentication.egg-info/pyobjc-build-info.txt +3 -0
- pyobjc_framework_localauthentication-11.0/Lib/pyobjc_framework_LocalAuthentication.egg-info/requires.txt +3 -0
- pyobjc_framework_localauthentication-11.0/Modules/_LocalAuthentication.m +67 -0
- pyobjc_framework_localauthentication-11.0/Modules/_LocalAuthentication_protocols.m +13 -0
- pyobjc_framework_localauthentication-11.0/Modules/pyobjc-api.h +214 -0
- pyobjc_framework_localauthentication-11.0/Modules/pyobjc-compat.h +320 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PKG-INFO +6 -6
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_labiometrictype.py +26 -0
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_lacompaniontype.py +15 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_lacontext.py +8 -0
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_laenvironment.py +8 -0
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_laenvironmentmechanism.py +8 -0
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_laenvironmentmechanismbiometry.py +16 -0
- pyobjc_framework_localauthentication-11.0/PyObjCTest/test_laenvironmentmechanismuserpassword.py +10 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_laerror.py +4 -1
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_lapublicdefines.py +15 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/LocalAuthentication.fwinfo +6 -0
- pyobjc-framework-LocalAuthentication-10.2/metadata/raw/arm64-14.0.fwinfo → pyobjc_framework_localauthentication-11.0/metadata/raw/arm64-14.5.fwinfo +2 -2
- pyobjc_framework_localauthentication-11.0/metadata/raw/arm64-15.0.fwinfo +2391 -0
- pyobjc-framework-LocalAuthentication-10.2/metadata/raw/x86_64-14.0.fwinfo → pyobjc_framework_localauthentication-11.0/metadata/raw/x86_64-14.5.fwinfo +2 -2
- pyobjc_framework_localauthentication-11.0/metadata/raw/x86_64-15.0.fwinfo +2391 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/pyobjc_setup.py +121 -27
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/setup.py +15 -2
- pyobjc-framework-LocalAuthentication-10.2/Lib/pyobjc_framework_LocalAuthentication.egg-info/requires.txt +0 -3
- pyobjc-framework-LocalAuthentication-10.2/metadata/raw/arm64-12.0.fwinfo +0 -500
- pyobjc-framework-LocalAuthentication-10.2/metadata/raw/x86_64-12.0.fwinfo +0 -500
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/LICENSE.txt +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/pyobjc_framework_LocalAuthentication.egg-info/dependency_links.txt +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/pyobjc_framework_LocalAuthentication.egg-info/not-zip-safe +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/Lib/pyobjc_framework_LocalAuthentication.egg-info/top_level.txt +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/MANIFEST.in +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/__init__.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_laprivatekey.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_lapublickey.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_laright.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_larightstore.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_lasecret.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/PyObjCTest/test_localauthentication.py +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/README.txt +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/metadata.ini +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/arm64-12.3.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/arm64-13.0.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/x86_64-10.10.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/x86_64-10.15.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/x86_64-10.16.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/x86_64-12.3.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/metadata/raw/x86_64-13.0.fwinfo +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/pyproject.toml +0 -0
- {pyobjc-framework-LocalAuthentication-10.2 → pyobjc_framework_localauthentication-11.0}/setup.cfg +0 -0
|
@@ -11,7 +11,7 @@ def _setup():
|
|
|
11
11
|
|
|
12
12
|
import Foundation
|
|
13
13
|
import objc
|
|
14
|
-
from . import _metadata
|
|
14
|
+
from . import _metadata, _LocalAuthentication
|
|
15
15
|
|
|
16
16
|
dir_func, getattr_func = objc.createFrameworkDirAndGetattr(
|
|
17
17
|
name="LocalAuthentication",
|
|
@@ -21,13 +21,30 @@ def _setup():
|
|
|
21
21
|
),
|
|
22
22
|
globals_dict=globals(),
|
|
23
23
|
inline_list=None,
|
|
24
|
-
parents=(
|
|
24
|
+
parents=(
|
|
25
|
+
_LocalAuthentication,
|
|
26
|
+
Foundation,
|
|
27
|
+
),
|
|
25
28
|
metadict=_metadata.__dict__,
|
|
26
29
|
)
|
|
27
30
|
|
|
28
31
|
globals()["__dir__"] = dir_func
|
|
29
32
|
globals()["__getattr__"] = getattr_func
|
|
30
33
|
|
|
34
|
+
for cls, sel in (
|
|
35
|
+
("LARightStore", b"init"),
|
|
36
|
+
("LARightStore", b"new"),
|
|
37
|
+
("LAPrivateKey", b"init"),
|
|
38
|
+
("LAPrivateKey", b"new"),
|
|
39
|
+
("LAPublicKey", b"init"),
|
|
40
|
+
("LAPublicKey", b"new"),
|
|
41
|
+
("LASecret", b"init"),
|
|
42
|
+
("LASecret", b"new"),
|
|
43
|
+
("LAPersistedRight", b"init"),
|
|
44
|
+
("LAPersistedRight", b"new"),
|
|
45
|
+
):
|
|
46
|
+
objc.registerUnavailableMethod(cls, sel)
|
|
47
|
+
|
|
31
48
|
del sys.modules["LocalAuthentication._metadata"]
|
|
32
49
|
|
|
33
50
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is generated by objective.metadata
|
|
2
2
|
#
|
|
3
|
-
# Last update:
|
|
3
|
+
# Last update: Wed Jun 19 17:14:28 2024
|
|
4
4
|
#
|
|
5
5
|
# flake8: noqa
|
|
6
6
|
|
|
@@ -31,13 +31,14 @@ else:
|
|
|
31
31
|
|
|
32
32
|
misc = {}
|
|
33
33
|
constants = """$LAErrorDomain$LATouchIDAuthenticationMaximumAllowableReuseDuration@d$"""
|
|
34
|
-
enums = """$LAAccessControlOperationCreateItem@0$LAAccessControlOperationCreateKey@2$LAAccessControlOperationUseItem@1$LAAccessControlOperationUseKeyDecrypt@4$LAAccessControlOperationUseKeyKeyExchange@5$LAAccessControlOperationUseKeySign@3$LABiometryNone@0$LABiometryTypeFaceID@2$LABiometryTypeNone@0$LABiometryTypeOpticID@4$LABiometryTypeTouchID@1$LACredentialTypeApplicationPassword@0$LACredentialTypeSmartCardPIN@-3$LAErrorAppCancel@-9$LAErrorAuthenticationFailed@-1$LAErrorBiometryDisconnected@-13$LAErrorBiometryLockout@-8$LAErrorBiometryNotAvailable@-6$LAErrorBiometryNotEnrolled@-7$LAErrorBiometryNotPaired@-12$LAErrorInvalidContext@-10$LAErrorInvalidDimensions@-14$LAErrorNotInteractive@-1004$LAErrorPasscodeNotSet@-5$LAErrorSystemCancel@-4$LAErrorTouchIDLockout@-8$LAErrorTouchIDNotAvailable@-6$LAErrorTouchIDNotEnrolled@-7$LAErrorUserCancel@-2$LAErrorUserFallback@-3$LAErrorWatchNotAvailable@-11$LAPolicyDeviceOwnerAuthentication@2$LAPolicyDeviceOwnerAuthenticationWithBiometrics@1$LAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch@4$LAPolicyDeviceOwnerAuthenticationWithWatch@3$LAPolicyDeviceOwnerAuthenticationWithWristDetection@5$LARightStateAuthorized@2$LARightStateAuthorizing@1$LARightStateNotAuthorized@3$LARightStateUnknown@0$kLABiometryTypeFaceID@2$kLABiometryTypeNone@0$kLABiometryTypeOpticID@4$kLABiometryTypeTouchID@1$kLACredentialCTKPIN@-3$kLACredentialSmartCardPIN@-3$kLACredentialTypeApplicationPassword@0$kLACredentialTypePasscode@-1$kLACredentialTypePassphrase@-2$kLAErrorAppCancel@-9$kLAErrorAuthenticationFailed@-1$kLAErrorBiometryDisconnected@-13$kLAErrorBiometryNotPaired@-12$kLAErrorInvalidContext@-10$kLAErrorInvalidDimensions@-14$kLAErrorNotInteractive@-1004$kLAErrorPasscodeNotSet@-5$kLAErrorSystemCancel@-4$kLAErrorTouchIDLockout@-8$kLAErrorTouchIDNotAvailable@-6$kLAErrorTouchIDNotEnrolled@-7$kLAErrorUserCancel@-2$kLAErrorUserFallback@-3$kLAErrorWatchNotAvailable@-11$kLAOptionAuthenticationReason@2$kLAOptionUserFallback@1$kLAPolicyDeviceOwnerAuthentication@2$kLAPolicyDeviceOwnerAuthenticationWithBiometrics@1$kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch@4$kLAPolicyDeviceOwnerAuthenticationWithWatch@3$kLAPolicyDeviceOwnerAuthenticationWithWristDetection@5$"""
|
|
34
|
+
enums = """$LAAccessControlOperationCreateItem@0$LAAccessControlOperationCreateKey@2$LAAccessControlOperationUseItem@1$LAAccessControlOperationUseKeyDecrypt@4$LAAccessControlOperationUseKeyKeyExchange@5$LAAccessControlOperationUseKeySign@3$LABiometryNone@0$LABiometryTypeFaceID@2$LABiometryTypeNone@0$LABiometryTypeOpticID@4$LABiometryTypeTouchID@1$LACompanionTypeMac@2$LACompanionTypeWatch@1$LACredentialTypeApplicationPassword@0$LACredentialTypeSmartCardPIN@-3$LAErrorAppCancel@-9$LAErrorAuthenticationFailed@-1$LAErrorBiometryDisconnected@-13$LAErrorBiometryLockout@-8$LAErrorBiometryNotAvailable@-6$LAErrorBiometryNotEnrolled@-7$LAErrorBiometryNotPaired@-12$LAErrorCompanionNotAvailable@-11$LAErrorInvalidContext@-10$LAErrorInvalidDimensions@-14$LAErrorNotInteractive@-1004$LAErrorPasscodeNotSet@-5$LAErrorSystemCancel@-4$LAErrorTouchIDLockout@-8$LAErrorTouchIDNotAvailable@-6$LAErrorTouchIDNotEnrolled@-7$LAErrorUserCancel@-2$LAErrorUserFallback@-3$LAErrorWatchNotAvailable@-11$LAPolicyDeviceOwnerAuthentication@2$LAPolicyDeviceOwnerAuthenticationWithBiometrics@1$LAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion@4$LAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch@4$LAPolicyDeviceOwnerAuthenticationWithCompanion@3$LAPolicyDeviceOwnerAuthenticationWithWatch@3$LAPolicyDeviceOwnerAuthenticationWithWristDetection@5$LARightStateAuthorized@2$LARightStateAuthorizing@1$LARightStateNotAuthorized@3$LARightStateUnknown@0$kLABiometryTypeFaceID@2$kLABiometryTypeNone@0$kLABiometryTypeOpticID@4$kLABiometryTypeTouchID@1$kLACompanionTypeMac@2$kLACompanionTypeWatch@1$kLACredentialCTKPIN@-3$kLACredentialSmartCardPIN@-3$kLACredentialTypeApplicationPassword@0$kLACredentialTypePasscode@-1$kLACredentialTypePassphrase@-2$kLAErrorAppCancel@-9$kLAErrorAuthenticationFailed@-1$kLAErrorBiometryDisconnected@-13$kLAErrorBiometryNotPaired@-12$kLAErrorInvalidContext@-10$kLAErrorInvalidDimensions@-14$kLAErrorNotInteractive@-1004$kLAErrorPasscodeNotSet@-5$kLAErrorSystemCancel@-4$kLAErrorTouchIDLockout@-8$kLAErrorTouchIDNotAvailable@-6$kLAErrorTouchIDNotEnrolled@-7$kLAErrorUserCancel@-2$kLAErrorUserFallback@-3$kLAErrorWatchNotAvailable@-11$kLAOptionAuthenticationReason@2$kLAOptionUserFallback@1$kLAPolicyDeviceOwnerAuthentication@2$kLAPolicyDeviceOwnerAuthenticationWithBiometrics@1$kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch@4$kLAPolicyDeviceOwnerAuthenticationWithWatch@3$kLAPolicyDeviceOwnerAuthenticationWithWristDetection@5$"""
|
|
35
35
|
misc.update(
|
|
36
36
|
{
|
|
37
|
+
"LACompanionType": NewType("LACompanionType", int),
|
|
37
38
|
"LABiometryType": NewType("LABiometryType", int),
|
|
38
|
-
"LAError": NewType("LAError", int),
|
|
39
|
-
"LAAccessControlOperation": NewType("LAAccessControlOperation", int),
|
|
40
39
|
"LACredentialType": NewType("LACredentialType", int),
|
|
40
|
+
"LAAccessControlOperation": NewType("LAAccessControlOperation", int),
|
|
41
|
+
"LAError": NewType("LAError", int),
|
|
41
42
|
"LAPolicy": NewType("LAPolicy", int),
|
|
42
43
|
"LARightState": NewType("LARightState", int),
|
|
43
44
|
}
|
|
@@ -47,13 +48,16 @@ misc.update({"kLAErrorDomain": "com.apple.LocalAuthentication"})
|
|
|
47
48
|
aliases = {
|
|
48
49
|
"LACredentialTypeSmartCardPIN": "kLACredentialSmartCardPIN",
|
|
49
50
|
"LAErrorBiometryLockout": "kLAErrorBiometryLockout",
|
|
50
|
-
"
|
|
51
|
+
"kLAPolicyDeviceOwnerAuthenticationWithCompanion": "kLAPolicyDeviceOwnerAuthenticationWithWatch",
|
|
51
52
|
"LABiometryNone": "LABiometryTypeNone",
|
|
52
53
|
"kLAErrorBiometryNotEnrolled": "kLAErrorTouchIDNotEnrolled",
|
|
53
54
|
"LAErrorBiometryNotAvailable": "kLAErrorBiometryNotAvailable",
|
|
54
55
|
"kLAErrorBiometryNotAvailable": "kLAErrorTouchIDNotAvailable",
|
|
56
|
+
"LAErrorBiometryNotEnrolled": "kLAErrorBiometryNotEnrolled",
|
|
55
57
|
"LABiometryTypeOpticID": "kLABiometryTypeOpticID",
|
|
58
|
+
"kLAErrorCompanionNotAvailable": "kLAErrorWatchNotAvailable",
|
|
56
59
|
"kLAErrorBiometryLockout": "kLAErrorTouchIDLockout",
|
|
60
|
+
"kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrCompanion": "kLAPolicyDeviceOwnerAuthenticationWithBiometricsOrWatch",
|
|
57
61
|
}
|
|
58
62
|
r = objc.registerMetaDataForSelector
|
|
59
63
|
objc._updatingMetadata(True)
|
|
@@ -125,6 +129,15 @@ try:
|
|
|
125
129
|
r(b"LAContext", b"setCredential:type:", {"retval": {"type": "Z"}})
|
|
126
130
|
r(b"LAContext", b"setFallbackButtonVisible:", {"arguments": {2: {"type": "Z"}}})
|
|
127
131
|
r(b"LAContext", b"setInteractionNotAllowed:", {"arguments": {2: {"type": "Z"}}})
|
|
132
|
+
r(b"LAEnvironmentMechanism", b"isUsable", {"retval": {"type": b"Z"}})
|
|
133
|
+
r(
|
|
134
|
+
b"LAEnvironmentMechanismBiometry",
|
|
135
|
+
b"builtInSensorInaccessible",
|
|
136
|
+
{"retval": {"type": b"Z"}},
|
|
137
|
+
)
|
|
138
|
+
r(b"LAEnvironmentMechanismBiometry", b"isEnrolled", {"retval": {"type": b"Z"}})
|
|
139
|
+
r(b"LAEnvironmentMechanismBiometry", b"isLockedOut", {"retval": {"type": b"Z"}})
|
|
140
|
+
r(b"LAEnvironmentMechanismUserPassword", b"isSet", {"retval": {"type": b"Z"}})
|
|
128
141
|
r(b"LAPrivateKey", b"canDecryptUsingSecKeyAlgorithm:", {"retval": {"type": b"Z"}})
|
|
129
142
|
r(
|
|
130
143
|
b"LAPrivateKey",
|
|
@@ -394,8 +407,19 @@ try:
|
|
|
394
407
|
}
|
|
395
408
|
},
|
|
396
409
|
)
|
|
410
|
+
r(
|
|
411
|
+
b"NSObject",
|
|
412
|
+
b"environment:stateDidChangeFromOldState:",
|
|
413
|
+
{
|
|
414
|
+
"required": False,
|
|
415
|
+
"retval": {"type": b"v"},
|
|
416
|
+
"arguments": {2: {"type": b"@"}, 3: {"type": b"@"}},
|
|
417
|
+
},
|
|
418
|
+
)
|
|
397
419
|
finally:
|
|
398
420
|
objc._updatingMetadata(False)
|
|
421
|
+
|
|
422
|
+
objc.registerNewKeywordsFromSelector("LARight", b"initWithRequirement:")
|
|
399
423
|
expressions = {}
|
|
400
424
|
|
|
401
425
|
# END OF FILE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyobjc-framework-LocalAuthentication
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.0
|
|
4
4
|
Summary: Wrappers for the framework LocalAuthentication on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -18,22 +18,22 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
18
18
|
Classifier: Programming Language :: Python
|
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.9
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.10
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.11
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
26
25
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
27
27
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
28
28
|
Classifier: Programming Language :: Objective C
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
31
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.9
|
|
32
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
33
33
|
License-File: LICENSE.txt
|
|
34
|
-
Requires-Dist: pyobjc-core>=
|
|
35
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
36
|
-
Requires-Dist: pyobjc-framework-Security>=
|
|
34
|
+
Requires-Dist: pyobjc-core>=11.0
|
|
35
|
+
Requires-Dist: pyobjc-framework-Cocoa>=11.0
|
|
36
|
+
Requires-Dist: pyobjc-framework-Security>=11.0
|
|
37
37
|
Project-URL: Documentation, https://pyobjc.readthedocs.io/en/latest/
|
|
38
38
|
Project-URL: Issue tracker, https://github.com/ronaldoussoren/pyobjc/issues
|
|
39
39
|
Project-URL: Repository, https://github.com/ronaldoussoren/pyobjc
|
|
@@ -10,10 +10,21 @@ Lib/pyobjc_framework_LocalAuthentication.egg-info/PKG-INFO
|
|
|
10
10
|
Lib/pyobjc_framework_LocalAuthentication.egg-info/SOURCES.txt
|
|
11
11
|
Lib/pyobjc_framework_LocalAuthentication.egg-info/dependency_links.txt
|
|
12
12
|
Lib/pyobjc_framework_LocalAuthentication.egg-info/not-zip-safe
|
|
13
|
+
Lib/pyobjc_framework_LocalAuthentication.egg-info/pyobjc-build-info.txt
|
|
13
14
|
Lib/pyobjc_framework_LocalAuthentication.egg-info/requires.txt
|
|
14
15
|
Lib/pyobjc_framework_LocalAuthentication.egg-info/top_level.txt
|
|
16
|
+
Modules/_LocalAuthentication.m
|
|
17
|
+
Modules/_LocalAuthentication_protocols.m
|
|
18
|
+
Modules/pyobjc-api.h
|
|
19
|
+
Modules/pyobjc-compat.h
|
|
15
20
|
PyObjCTest/__init__.py
|
|
21
|
+
PyObjCTest/test_labiometrictype.py
|
|
22
|
+
PyObjCTest/test_lacompaniontype.py
|
|
16
23
|
PyObjCTest/test_lacontext.py
|
|
24
|
+
PyObjCTest/test_laenvironment.py
|
|
25
|
+
PyObjCTest/test_laenvironmentmechanism.py
|
|
26
|
+
PyObjCTest/test_laenvironmentmechanismbiometry.py
|
|
27
|
+
PyObjCTest/test_laenvironmentmechanismuserpassword.py
|
|
17
28
|
PyObjCTest/test_laerror.py
|
|
18
29
|
PyObjCTest/test_laprivatekey.py
|
|
19
30
|
PyObjCTest/test_lapublicdefines.py
|
|
@@ -24,14 +35,14 @@ PyObjCTest/test_lasecret.py
|
|
|
24
35
|
PyObjCTest/test_localauthentication.py
|
|
25
36
|
metadata/LocalAuthentication.fwinfo
|
|
26
37
|
metadata/metadata.ini
|
|
27
|
-
metadata/raw/arm64-12.0.fwinfo
|
|
28
38
|
metadata/raw/arm64-12.3.fwinfo
|
|
29
39
|
metadata/raw/arm64-13.0.fwinfo
|
|
30
|
-
metadata/raw/arm64-14.
|
|
40
|
+
metadata/raw/arm64-14.5.fwinfo
|
|
41
|
+
metadata/raw/arm64-15.0.fwinfo
|
|
31
42
|
metadata/raw/x86_64-10.10.fwinfo
|
|
32
43
|
metadata/raw/x86_64-10.15.fwinfo
|
|
33
44
|
metadata/raw/x86_64-10.16.fwinfo
|
|
34
|
-
metadata/raw/x86_64-12.0.fwinfo
|
|
35
45
|
metadata/raw/x86_64-12.3.fwinfo
|
|
36
46
|
metadata/raw/x86_64-13.0.fwinfo
|
|
37
|
-
metadata/raw/x86_64-14.
|
|
47
|
+
metadata/raw/x86_64-14.5.fwinfo
|
|
48
|
+
metadata/raw/x86_64-15.0.fwinfo
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#define PY_SSIZE_T_CLEAN
|
|
2
|
+
#include "Python.h"
|
|
3
|
+
#include "pyobjc-api.h"
|
|
4
|
+
|
|
5
|
+
#import <LocalAuthentication/LocalAuthentication.h>
|
|
6
|
+
#import <Foundation/Foundation.h>
|
|
7
|
+
|
|
8
|
+
/* We include the source code here instead of
|
|
9
|
+
* using the linker due to limitations in pyobjc-api.h
|
|
10
|
+
*/
|
|
11
|
+
#include "_LocalAuthentication_protocols.m"
|
|
12
|
+
|
|
13
|
+
static PyMethodDef mod_methods[] = {
|
|
14
|
+
{0, 0, 0, 0} /* sentinel */
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
static int mod_exec_module(PyObject* m)
|
|
18
|
+
{
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static struct PyModuleDef_Slot mod_slots[] = {
|
|
23
|
+
{
|
|
24
|
+
.slot = Py_mod_exec,
|
|
25
|
+
.value = (void*)mod_exec_module
|
|
26
|
+
},
|
|
27
|
+
#if PY_VERSION_HEX >= 0x030c0000
|
|
28
|
+
{
|
|
29
|
+
/* This extension does not use the CPython API other than initializing
|
|
30
|
+
* the module, hence is safe with subinterpreters and per-interpreter
|
|
31
|
+
* GILs
|
|
32
|
+
*/
|
|
33
|
+
.slot = Py_mod_multiple_interpreters,
|
|
34
|
+
.value = Py_MOD_PER_INTERPRETER_GIL_SUPPORTED,
|
|
35
|
+
},
|
|
36
|
+
#endif
|
|
37
|
+
#if PY_VERSION_HEX >= 0x030d0000
|
|
38
|
+
{
|
|
39
|
+
/* The code in this extension should be safe to use without the GIL */
|
|
40
|
+
.slot = Py_mod_gil,
|
|
41
|
+
.value = Py_MOD_GIL_NOT_USED,
|
|
42
|
+
},
|
|
43
|
+
#endif
|
|
44
|
+
{ /* Sentinel */
|
|
45
|
+
.slot = 0,
|
|
46
|
+
.value = 0
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
static struct PyModuleDef mod_module = {
|
|
51
|
+
.m_base = PyModuleDef_HEAD_INIT,
|
|
52
|
+
.m_name = "_LocalAuthentication",
|
|
53
|
+
.m_doc = NULL,
|
|
54
|
+
.m_size = 0,
|
|
55
|
+
.m_methods = mod_methods,
|
|
56
|
+
.m_slots = mod_slots,
|
|
57
|
+
.m_traverse = NULL,
|
|
58
|
+
.m_clear = NULL,
|
|
59
|
+
.m_free = NULL,
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
PyObject* PyInit__LocalAuthentication(void);
|
|
63
|
+
|
|
64
|
+
PyObject* __attribute__((__visibility__("default"))) PyInit__LocalAuthentication(void)
|
|
65
|
+
{
|
|
66
|
+
return PyModuleDef_Init(&mod_module);
|
|
67
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is generated by objective.metadata
|
|
3
|
+
*
|
|
4
|
+
* Last update: Wed Jun 19 21:41:38 2024
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
static void __attribute__((__used__)) use_protocols(void)
|
|
8
|
+
{
|
|
9
|
+
PyObject* p __attribute__((__unused__));
|
|
10
|
+
#if PyObjC_BUILD_RELEASE >= 1500
|
|
11
|
+
p = PyObjC_IdToPython(@protocol(LAEnvironmentObserver)); Py_XDECREF(p);
|
|
12
|
+
#endif /* PyObjC_BUILD_RELEASE >= 1500 */
|
|
13
|
+
}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
#ifndef PyObjC_API_H
|
|
2
|
+
#define PyObjC_API_H
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* Use this in helper modules for the objc package, and in wrappers
|
|
6
|
+
* for functions that deal with objective-C objects/classes
|
|
7
|
+
*
|
|
8
|
+
* This header defines some utility wrappers for importing and using
|
|
9
|
+
* the core bridge.
|
|
10
|
+
*
|
|
11
|
+
* This is the *only* header file that should be used to access
|
|
12
|
+
* functionality in the core bridge.
|
|
13
|
+
*
|
|
14
|
+
* WARNING: this file is not part of the public interface of PyObjC and
|
|
15
|
+
* might change or be removed without warning or regard for backward
|
|
16
|
+
* compatibility.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
#include <objc/objc.h>
|
|
20
|
+
|
|
21
|
+
#import <Foundation/Foundation.h>
|
|
22
|
+
|
|
23
|
+
#include "pyobjc-compat.h"
|
|
24
|
+
|
|
25
|
+
#ifdef Py_LIMITED_API
|
|
26
|
+
/*
|
|
27
|
+
* Make sure PyObjC framework wrappers can build using the limited API
|
|
28
|
+
*/
|
|
29
|
+
typedef void Py_buffer;
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include <objc/objc-runtime.h>
|
|
33
|
+
|
|
34
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
35
|
+
|
|
36
|
+
/* Current API version, increase whenever:
|
|
37
|
+
* - Semantics of current functions change
|
|
38
|
+
* - Functions are removed
|
|
39
|
+
*
|
|
40
|
+
* Do not increase when adding a new function, the struct_len field
|
|
41
|
+
* can be used for detecting if a function has been added.
|
|
42
|
+
*/
|
|
43
|
+
#ifndef PYOBJC_API_VERSION
|
|
44
|
+
#define PYOBJC_API_VERSION 25
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
#define PYOBJC_API_NAME "__C_API__"
|
|
48
|
+
|
|
49
|
+
#ifndef PyObjC_EXPECTED_STRUCT_SIZE
|
|
50
|
+
#define PyObjC_EXPECTED_STRUCT_SIZE (sizeof(struct pyobjc_api))
|
|
51
|
+
#endif
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* Only add items to the end of this list!
|
|
55
|
+
*/
|
|
56
|
+
typedef int(RegisterMethodMappingFunctionType)(
|
|
57
|
+
Class, SEL,
|
|
58
|
+
PyObject* _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull,
|
|
59
|
+
PyObject* _Nonnull const* _Nonnull, size_t),
|
|
60
|
+
IMP _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull));
|
|
61
|
+
|
|
62
|
+
struct pyobjc_api {
|
|
63
|
+
int api_version; /* API version */
|
|
64
|
+
size_t struct_len; /* Length of this struct */
|
|
65
|
+
RegisterMethodMappingFunctionType* register_method_mapping;
|
|
66
|
+
id _Nullable (*_Nonnull obj_get_object)(PyObject* _Nonnull);
|
|
67
|
+
Class _Nullable (*_Nonnull cls_get_class)(PyObject* _Nonnull);
|
|
68
|
+
int (*_Nonnull depythonify_python_object)(PyObject* _Nonnull, id _Nullable* _Nonnull);
|
|
69
|
+
PyObject* _Nullable (*_Nonnull id_to_python)(id _Nullable);
|
|
70
|
+
void (*_Nonnull err_objc_to_python)(NSObject* _Nonnull);
|
|
71
|
+
int (*_Nonnull py_to_objc)(const char* _Nonnull, PyObject* _Nonnull, void* _Nonnull);
|
|
72
|
+
PyObject* _Nullable (*_Nonnull objc_to_py)(const char* _Nonnull,
|
|
73
|
+
const void* _Nonnull);
|
|
74
|
+
Py_ssize_t (*_Nonnull sizeof_type)(const char* _Nonnull);
|
|
75
|
+
Class _Nullable (*_Nonnull sel_get_class)(PyObject* _Nonnull sel);
|
|
76
|
+
SEL _Nullable (*_Nonnull sel_get_sel)(PyObject* _Nonnull sel);
|
|
77
|
+
int (*_Nonnull register_pointer_wrapper)(
|
|
78
|
+
const char* _Nonnull, const char* _Nonnull,
|
|
79
|
+
PyObject* _Nullable (*_Nonnull pythonify)(void* _Nonnull),
|
|
80
|
+
int (*_Nonnull depythonify)(PyObject* _Nonnull, void* _Nonnull));
|
|
81
|
+
IMP _Nullable (*_Nonnull unsupported_method_imp)(PyObject* _Nonnull,
|
|
82
|
+
PyObject* _Nonnull);
|
|
83
|
+
PyObject* _Nullable (*_Nonnull unsupported_method_caller)(
|
|
84
|
+
PyObject* _Nonnull, PyObject* _Nonnull, PyObject* _Nonnull const* _Nonnull,
|
|
85
|
+
size_t);
|
|
86
|
+
void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state) __attribute__((__noreturn__));
|
|
87
|
+
int (*_Nonnull simplify_sig)(const char* signature, char* buf, size_t buflen);
|
|
88
|
+
void (*_Nonnull free_c_array)(int, Py_buffer*);
|
|
89
|
+
int (*_Nonnull py_to_c_array)(BOOL, BOOL, const char* _Nonnull, PyObject* _Nonnull,
|
|
90
|
+
void* _Nullable* _Nonnull, Py_ssize_t* _Nullable,
|
|
91
|
+
PyObject* _Nonnull* _Nonnull, Py_buffer* _Nonnull);
|
|
92
|
+
PyObject* _Nullable (*_Nonnull c_array_to_py)(const char* _Nonnull,
|
|
93
|
+
const void* _Nonnull, Py_ssize_t);
|
|
94
|
+
PyTypeObject* _Nonnull imp_type;
|
|
95
|
+
IMP _Nullable (*_Nonnull imp_get_imp)(PyObject* _Nonnull);
|
|
96
|
+
SEL _Nullable (*_Nonnull imp_get_sel)(PyObject* _Nonnull);
|
|
97
|
+
PyObject* _Nullable (*_Nonnull newtransient)(id _Nullable objc_object,
|
|
98
|
+
int* _Nonnull cookie);
|
|
99
|
+
void (*_Nonnull releasetransient)(PyObject* _Nonnull proxy, int cookie);
|
|
100
|
+
PyObject* _Nonnull* _Nonnull pyobjc_null;
|
|
101
|
+
int (*_Nonnull dep_c_array_count)(const char* _Nonnull type, Py_ssize_t count,
|
|
102
|
+
BOOL strict, PyObject* _Nonnull value,
|
|
103
|
+
void* _Nonnull datum, BOOL, BOOL);
|
|
104
|
+
PyObject* _Nullable (*_Nonnull varlistnew)(const char* _Nonnull tp,
|
|
105
|
+
void* _Nonnull array);
|
|
106
|
+
int (*_Nonnull pyobjcobject_convert)(PyObject* _Nonnull, void* _Nonnull);
|
|
107
|
+
int (*_Nonnull register_id_alias)(const char* _Nonnull, const char* _Nonnull);
|
|
108
|
+
int (*_Nonnull memview_check)(PyObject* _Nonnull);
|
|
109
|
+
PyObject* _Nullable (*_Nonnull memview_new)(void);
|
|
110
|
+
Py_buffer* _Nullable (*_Nonnull memview_getbuffer)(PyObject* _Nonnull);
|
|
111
|
+
int (*_Nonnull checkargcount)(PyObject* _Nonnull callable, size_t min_args,
|
|
112
|
+
size_t max_args, size_t nargsf);
|
|
113
|
+
int (*_Nonnull checknokwnames)(PyObject* _Nonnull callable,
|
|
114
|
+
PyObject* _Nullable kwnames);
|
|
115
|
+
|
|
116
|
+
PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*, const char*);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
#ifndef PYOBJC_BUILD
|
|
120
|
+
|
|
121
|
+
#ifndef PYOBJC_METHOD_STUB_IMPL
|
|
122
|
+
static struct pyobjc_api* PyObjC_API;
|
|
123
|
+
#endif /* PYOBJC_METHOD_STUB_IMPL */
|
|
124
|
+
|
|
125
|
+
#define PyObjCIMP_Check(obj) PyObject_TypeCheck(obj, PyObjC_API->imp_type)
|
|
126
|
+
#define PyObjCObject_GetObject (PyObjC_API->obj_get_object)
|
|
127
|
+
#define PyObjCClass_GetClass (PyObjC_API->cls_get_class)
|
|
128
|
+
#define PyObjCSelector_GetClass (PyObjC_API->sel_get_class)
|
|
129
|
+
#define PyObjCSelector_GetSelector (PyObjC_API->sel_get_sel)
|
|
130
|
+
#define depythonify_python_object (PyObjC_API->depythonify_python_object)
|
|
131
|
+
#define PyObjC_IdToPython (PyObjC_API->id_to_python)
|
|
132
|
+
#define PyObjCErr_FromObjC (PyObjC_API->err_objc_to_python)
|
|
133
|
+
#define PyObjCErr_ToObjCWithGILState (PyObjC_API->err_python_to_objc_gil)
|
|
134
|
+
#define PyObjC_PythonToObjC (PyObjC_API->py_to_objc)
|
|
135
|
+
#define PyObjC_ObjCToPython (PyObjC_API->objc_to_py)
|
|
136
|
+
#define PyObjC_RegisterMethodMapping (PyObjC_API->register_method_mapping)
|
|
137
|
+
#define PyObjCPointerWrapper_Register (PyObjC_API->register_pointer_wrapper)
|
|
138
|
+
#define PyObjCUnsupportedMethod_IMP (PyObjC_API->unsupported_method_imp)
|
|
139
|
+
#define PyObjCUnsupportedMethod_Caller (PyObjC_API->unsupported_method_caller)
|
|
140
|
+
#define PyObjCRT_SizeOfType (PyObjC_API->sizeof_type)
|
|
141
|
+
#define PyObjC_FreeCArray (PyObjC_API->free_c_array)
|
|
142
|
+
#define PyObjC_PythonToCArray (PyObjC_API->py_to_c_array)
|
|
143
|
+
#define PyObjC_CArrayToPython (PyObjC_API->c_array_to_py)
|
|
144
|
+
#define PyObjCIMP_GetIMP (PyObjC_API->imp_get_imp)
|
|
145
|
+
#define PyObjCIMP_GetSelector (PyObjC_API->imp_get_sel)
|
|
146
|
+
#define PyObjCObject_NewTransient (PyObjC_API->newtransient)
|
|
147
|
+
#define PyObjCObject_ReleaseTransient (PyObjC_API->releasetransient)
|
|
148
|
+
#define PyObjC_NULL (*(PyObjC_API->pyobjc_null))
|
|
149
|
+
#define PyObjC_DepythonifyCArray (PyObjC_API->dep_c_array_count)
|
|
150
|
+
#define PyObjCVarList_New (PyObjC_API->varlistnew)
|
|
151
|
+
#define PyObjCObject_Convert (PyObjC_API->pyobjcobject_convert)
|
|
152
|
+
#define PyObjCPointerWrapper_RegisterID (PyObjC_API->register_id_alias)
|
|
153
|
+
#define PyObjCMemView_Check (PyObjC_API->memview_check)
|
|
154
|
+
#define PyObjCMemView_New (PyObjC_API->memview_new)
|
|
155
|
+
#define PyObjCMemView_GetBuffer (PyObjC_API->memview_getbuffer)
|
|
156
|
+
#define PyObjC_CheckArgCount (PyObjC_API->checkargcount)
|
|
157
|
+
#define PyObjC_CheckNoKwnames (PyObjC_API->checknokwnames)
|
|
158
|
+
#define PyObjCCreateOpaquePointerType (PyObjC_API->createopaquepointertype)
|
|
159
|
+
|
|
160
|
+
typedef void (*PyObjC_Function_Pointer)(void);
|
|
161
|
+
typedef struct PyObjC_function_map {
|
|
162
|
+
const char* name;
|
|
163
|
+
PyObjC_Function_Pointer function;
|
|
164
|
+
} PyObjC_function_map;
|
|
165
|
+
|
|
166
|
+
#ifndef PYOBJC_METHOD_STUB_IMPL
|
|
167
|
+
|
|
168
|
+
static inline PyObject*
|
|
169
|
+
PyObjC_CreateInlineTab(PyObjC_function_map* map)
|
|
170
|
+
{
|
|
171
|
+
return PyCapsule_New(map, "objc.__inline__", NULL);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
static inline int
|
|
175
|
+
PyObjC_ImportAPI(PyObject* calling_module)
|
|
176
|
+
{
|
|
177
|
+
PyObjC_API = (struct pyobjc_api*)PyCapsule_Import("objc." PYOBJC_API_NAME, 0);
|
|
178
|
+
if (PyObjC_API == NULL) {
|
|
179
|
+
return -1;
|
|
180
|
+
}
|
|
181
|
+
if (PyObjC_API->api_version != PYOBJC_API_VERSION) {
|
|
182
|
+
PyErr_Format(PyExc_RuntimeError,
|
|
183
|
+
"Wrong version of PyObjC C API (got %d, expected %d)",
|
|
184
|
+
(int)PyObjC_API->api_version, (int)PYOBJC_API_VERSION);
|
|
185
|
+
return -1;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (PyObjC_API->struct_len < PyObjC_EXPECTED_STRUCT_SIZE) {
|
|
189
|
+
PyErr_Format(PyExc_RuntimeError,
|
|
190
|
+
"Wrong struct-size of PyObjC C API (got %d, expected %d)",
|
|
191
|
+
(int)PyObjC_API->struct_len, (int)sizeof(struct pyobjc_api));
|
|
192
|
+
return -1;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/* Current pyobjc implementation doesn't allow deregistering
|
|
196
|
+
* information, avoid unloading of users of the C-API.
|
|
197
|
+
* (Yes this is ugle, patches to fix this situation are apriciated)
|
|
198
|
+
*/
|
|
199
|
+
Py_INCREF(calling_module);
|
|
200
|
+
|
|
201
|
+
return 0;
|
|
202
|
+
}
|
|
203
|
+
#endif /* PYOBJC_METHOD_STUB_IMPL */
|
|
204
|
+
|
|
205
|
+
#else /* PyObjC_BUILD */
|
|
206
|
+
|
|
207
|
+
extern struct pyobjc_api objc_api;
|
|
208
|
+
extern int PyObjCAPI_Register(PyObject* module);
|
|
209
|
+
|
|
210
|
+
#endif /* !PYOBJC_BUILD */
|
|
211
|
+
|
|
212
|
+
NS_ASSUME_NONNULL_END
|
|
213
|
+
|
|
214
|
+
#endif /* PyObjC_API_H */
|