Add recaptcha

This commit is contained in:
Isaac 2025-01-31 21:04:26 +04:00
parent 4d1cfa678f
commit 2da0f6fcc4
34 changed files with 2093 additions and 8 deletions

View File

@ -745,7 +745,7 @@ private final class NotificationServiceHandler {
Logger.shared.logToConsole = loggingSettings.logToConsole
Logger.shared.redactSensitiveData = loggingSettings.redactSensitiveData
let networkArguments = NetworkInitializationArguments(apiId: apiId, apiHash: apiHash, languagesCategory: languagesCategory, appVersion: appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(buildConfig.bundleData(withAppToken: nil, tokenType: nil, tokenEnvironment: nil, signatureDict: nil)), externalRequestVerificationStream: .never(), autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: false)
let networkArguments = NetworkInitializationArguments(apiId: apiId, apiHash: apiHash, languagesCategory: languagesCategory, appVersion: appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(buildConfig.bundleData(withAppToken: nil, tokenType: nil, tokenEnvironment: nil, signatureDict: nil)), externalRequestVerificationStream: .never(), externalRecaptchaRequestVerification: { _, _ in return .never() }, autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: false)
let isLockedMessage: String?
if let data = try? Data(contentsOf: URL(fileURLWithPath: appLockStatePath(rootPath: rootPath))), let state = try? JSONDecoder().decode(LockState.self, from: data), isAppLocked(state: state) {

View File

@ -174,7 +174,7 @@ class DefaultIntentHandler: INExtension, INSendMessageIntentHandling, INSearchFo
if let accountCache = accountCache {
account = .single(accountCache)
} else {
account = currentAccount(allocateIfNotExists: false, networkArguments: NetworkInitializationArguments(apiId: apiId, apiHash: apiHash, languagesCategory: languagesCategory, appVersion: appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(buildConfig.bundleData(withAppToken: nil, tokenType: nil, tokenEnvironment: nil, signatureDict: nil)), externalRequestVerificationStream: .never(), autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: false), supplementary: true, manager: accountManager, rootPath: rootPath, auxiliaryMethods: accountAuxiliaryMethods, encryptionParameters: encryptionParameters)
account = currentAccount(allocateIfNotExists: false, networkArguments: NetworkInitializationArguments(apiId: apiId, apiHash: apiHash, languagesCategory: languagesCategory, appVersion: appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(buildConfig.bundleData(withAppToken: nil, tokenType: nil, tokenEnvironment: nil, signatureDict: nil)), externalRequestVerificationStream: .never(), externalRecaptchaRequestVerification: { _, _ in return .never() }, autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: false), supplementary: true, manager: accountManager, rootPath: rootPath, auxiliaryMethods: accountAuxiliaryMethods, encryptionParameters: encryptionParameters)
|> mapToSignal { account -> Signal<Account?, NoError> in
if let account = account {
switch account {

View File

@ -100,7 +100,9 @@
- (void)setDiscoverBackupAddressListSignal:(MTSignal * _Nonnull)signal;
- (void)setExternalRequestVerification:(MTSignal * _Nonnull (^ _Nonnull)(NSString * _Nonnull))externalRequestVerification;
- (void)setExternalRecaptchaRequestVerification:(MTSignal * _Nonnull (^ _Nonnull)(NSString * _Nonnull, NSString * _Nonnull))externalRecaptchaRequestVerification;
- (MTSignal * _Nullable)performExternalRequestVerificationWithNonce:(NSString * _Nonnull)nonce;
- (MTSignal * _Nullable)performExternalRecaptchaRequestVerificationWithMethod:(NSString * _Nonnull)method siteKey:(NSString * _Nonnull)siteKey;
- (NSTimeInterval)globalTime;
- (NSTimeInterval)globalTimeDifference;

View File

@ -13,6 +13,17 @@
@end
@interface MTRequestPendingRecaptchaVerificationData : NSObject
@property (nonatomic, strong, readonly) NSString *siteKey;
@property (nonatomic, strong) NSString *token;
@property (nonatomic) bool isResolved;
@property (nonatomic, strong) id<MTDisposable> disposable;
- (instancetype)initWithSiteKey:(NSString *)siteKey;
@end
@interface MTRequestErrorContext : NSObject
@property (nonatomic) CFAbsoluteTime minimalExecuteTime;
@ -25,5 +36,6 @@
@property (nonatomic, strong) id waitingForRequestToComplete;
@property (nonatomic, strong) MTRequestPendingVerificationData *pendingVerificationData;
@property (nonatomic, strong) MTRequestPendingRecaptchaVerificationData *pendingRecaptchaVerificationData;
@end

View File

@ -182,6 +182,7 @@ static MTDatacenterAuthInfoMapKeyStruct parseAuthInfoMapKeyInteger(NSNumber *key
MTSignal *_discoverBackupAddressListSignal;
MTSignal * _Nonnull (^ _Nullable _externalRequestVerification)(NSString * _Nonnull);
MTSignal * _Nonnull (^ _Nullable _externalRecaptchaRequestVerification)(NSString * _Nonnull, NSString * _Nonnull);
NSMutableDictionary *_discoverDatacenterAddressActions;
NSMutableDictionary<NSNumber *, MTDatacenterAuthAction *> *_datacenterAuthActions;
@ -533,6 +534,12 @@ static void copyKeychainDictionaryKey(NSString * _Nonnull group, NSString * _Non
} synchronous:true];
}
- (void)setExternalRecaptchaRequestVerification:(MTSignal * _Nonnull (^ _Nonnull)(NSString * _Nonnull, NSString * _Nonnull))externalRecaptchaRequestVerification {
[[MTContext contextQueue] dispatchOnQueue:^ {
_externalRecaptchaRequestVerification = externalRecaptchaRequestVerification;
} synchronous:true];
}
- (MTSignal * _Nullable)performExternalRequestVerificationWithNonce:(NSString * _Nonnull)nonce {
__block MTSignal * _Nonnull (^ _Nullable externalRequestVerification)(NSString * _Nonnull);
[[MTContext contextQueue] dispatchOnQueue:^ {
@ -546,6 +553,19 @@ static void copyKeychainDictionaryKey(NSString * _Nonnull group, NSString * _Non
}
}
- (MTSignal * _Nullable)performExternalRecaptchaRequestVerificationWithMethod:(NSString * _Nonnull)method siteKey:(NSString * _Nonnull)siteKey {
__block MTSignal * _Nonnull (^ _Nullable externalRecaptchaRequestVerification)(NSString * _Nonnull, NSString * _Nonnull);
[[MTContext contextQueue] dispatchOnQueue:^ {
externalRecaptchaRequestVerification = _externalRecaptchaRequestVerification;
} synchronous:true];
if (externalRecaptchaRequestVerification != nil) {
return externalRecaptchaRequestVerification(method, siteKey);
} else {
return [MTSignal single:nil];
}
}
- (NSTimeInterval)globalTime
{
return [[NSDate date] timeIntervalSince1970] + [self globalTimeDifference];

View File

@ -12,6 +12,18 @@
@end
@implementation MTRequestPendingRecaptchaVerificationData
- (instancetype)initWithSiteKey:(NSString *)siteKey {
self = [super init];
if (self != nil) {
_siteKey = siteKey;
}
return self;
}
@end
@implementation MTRequestErrorContext
@end

View File

@ -45,6 +45,24 @@
@end
@interface MTRequestRecaptchaVerificationData : NSObject
@property (nonatomic, strong, readonly) NSString *token;
@end
@implementation MTRequestRecaptchaVerificationData
- (instancetype)initWithToken:(NSString *)token {
self = [super init];
if (self != nil) {
_token = token;
}
return self;
}
@end
@interface MTRequestMessageService ()
{
MTContext *_context;
@ -402,7 +420,7 @@
}
}
- (NSData *)decorateRequestData:(MTRequest *)request initializeApi:(bool)initializeApi requestVerificationData:(MTRequestVerificationData *)requestVerificationData unresolvedDependencyOnRequestInternalId:(__autoreleasing id *)unresolvedDependencyOnRequestInternalId decoratedDebugDescription:(__autoreleasing NSString **)decoratedDebugDescription
- (NSData *)decorateRequestData:(MTRequest *)request initializeApi:(bool)initializeApi requestVerificationData:(MTRequestVerificationData *)requestVerificationData recaptchaVerificationData:(MTRequestRecaptchaVerificationData *)recaptchaVerificationData unresolvedDependencyOnRequestInternalId:(__autoreleasing id *)unresolvedDependencyOnRequestInternalId decoratedDebugDescription:(__autoreleasing NSString **)decoratedDebugDescription
{
NSData *currentData = request.payload;
@ -514,6 +532,18 @@
debugDescription = [debugDescription stringByAppendingFormat:@", apnsSecret(%@, %@)", requestVerificationData.nonce, requestVerificationData.secret];
}
if (recaptchaVerificationData != nil) {
MTBuffer *buffer = [[MTBuffer alloc] init];
[buffer appendInt32:(int32_t)0xadbb0f94];
[buffer appendTLString:recaptchaVerificationData.token];
[buffer appendBytes:currentData.bytes length:currentData.length];
currentData = buffer.data;
debugDescription = [debugDescription stringByAppendingFormat:@", recaptcha(%@)", recaptchaVerificationData.token];
}
if (decoratedDebugDescription != nil) {
*decoratedDebugDescription = debugDescription;
}
@ -548,6 +578,11 @@
continue;
}
}
if (request.errorContext.pendingRecaptchaVerificationData != nil) {
if (!request.errorContext.pendingRecaptchaVerificationData.isResolved) {
continue;
}
}
bool foundDependency = false;
for (MTRequest *anotherRequest in _requests) {
@ -588,7 +623,16 @@
}
}
NSData *decoratedRequestData = [self decorateRequestData:request initializeApi:requestsWillInitializeApi requestVerificationData:requestVerificationData unresolvedDependencyOnRequestInternalId:&autoreleasingUnresolvedDependencyOnRequestInternalId decoratedDebugDescription:&decoratedDebugDescription];
MTRequestRecaptchaVerificationData *recaptchaVerificationData = nil;
if (request.errorContext != nil) {
if (request.errorContext.pendingRecaptchaVerificationData != nil) {
if (request.errorContext.pendingRecaptchaVerificationData.isResolved) {
recaptchaVerificationData = [[MTRequestRecaptchaVerificationData alloc] initWithToken:request.errorContext.pendingRecaptchaVerificationData.token];
}
}
}
NSData *decoratedRequestData = [self decorateRequestData:request initializeApi:requestsWillInitializeApi requestVerificationData:requestVerificationData recaptchaVerificationData:recaptchaVerificationData unresolvedDependencyOnRequestInternalId:&autoreleasingUnresolvedDependencyOnRequestInternalId decoratedDebugDescription:&decoratedDebugDescription];
MTOutgoingMessage *outgoingMessage = [[MTOutgoingMessage alloc] initWithData:decoratedRequestData metadata:request.metadata additionalDebugDescription:decoratedDebugDescription shortMetadata:request.shortMetadata messageId:messageId messageSeqNo:messageSeqNo];
outgoingMessage.needsQuickAck = request.acknowledgementReceived != nil;
@ -950,6 +994,45 @@
}];
restartRequest = true;
} else if (rpcError.errorCode == 403 && [rpcError.errorDescription rangeOfString:@"RECAPTCHA_CHECK_"].location != NSNotFound) {
NSString *checkData = [rpcError.errorDescription substringFromIndex:[@"RECAPTCHA_CHECK_" length]];
NSRange separatorRange = [checkData rangeOfString:@"__"];
NSString *method = nil;
NSString *siteKey = nil;
if (separatorRange.location != NSNotFound) {
method = [checkData substringToIndex:separatorRange.location];
siteKey = [checkData substringFromIndex:separatorRange.location + separatorRange.length];
}
if (method != nil && siteKey != nil) {
if (request.errorContext == nil) {
request.errorContext = [[MTRequestErrorContext alloc] init];
}
request.errorContext.pendingRecaptchaVerificationData = [[MTRequestPendingRecaptchaVerificationData alloc] initWithSiteKey:siteKey];
__weak MTRequestMessageService *weakSelf = self;
MTQueue *queue = _queue;
id requestId = request.internalId;
request.errorContext.pendingRecaptchaVerificationData.disposable = [[_context performExternalRecaptchaRequestVerificationWithMethod:method siteKey:siteKey] startWithNext:^(id result) {
[queue dispatchOnQueue:^{
__strong MTRequestMessageService *strongSelf = weakSelf;
if (!strongSelf) {
return;
}
for (MTRequest *request in strongSelf->_requests) {
if (request.internalId == requestId) {
request.errorContext.pendingRecaptchaVerificationData.token = result;
request.errorContext.pendingRecaptchaVerificationData.isResolved = true;
}
}
[strongSelf->_mtProto requestTransportTransaction];
}];
}];
restartRequest = true;
}
} else if (rpcError.errorCode == 406) {
if (_didReceiveSoftAuthResetError) {
_didReceiveSoftAuthResetError();

View File

@ -435,13 +435,14 @@ public struct NetworkInitializationArguments {
public let voipVersions: [CallSessionManagerImplementationVersion]
public let appData: Signal<Data?, NoError>
public let externalRequestVerificationStream: Signal<[String: String], NoError>
public let externalRecaptchaRequestVerification: (String, String) -> Signal<String?, NoError>
public let autolockDeadine: Signal<Int32?, NoError>
public let encryptionProvider: EncryptionProvider
public let deviceModelName:String?
public let useBetaFeatures: Bool
public let isICloudEnabled: Bool
public init(apiId: Int32, apiHash: String, languagesCategory: String, appVersion: String, voipMaxLayer: Int32, voipVersions: [CallSessionManagerImplementationVersion], appData: Signal<Data?, NoError>, externalRequestVerificationStream: Signal<[String: String], NoError>, autolockDeadine: Signal<Int32?, NoError>, encryptionProvider: EncryptionProvider, deviceModelName: String?, useBetaFeatures: Bool, isICloudEnabled: Bool) {
public init(apiId: Int32, apiHash: String, languagesCategory: String, appVersion: String, voipMaxLayer: Int32, voipVersions: [CallSessionManagerImplementationVersion], appData: Signal<Data?, NoError>, externalRequestVerificationStream: Signal<[String: String], NoError>, externalRecaptchaRequestVerification: @escaping (String, String) -> Signal<String?, NoError>, autolockDeadine: Signal<Int32?, NoError>, encryptionProvider: EncryptionProvider, deviceModelName: String?, useBetaFeatures: Bool, isICloudEnabled: Bool) {
self.apiId = apiId
self.apiHash = apiHash
self.languagesCategory = languagesCategory
@ -450,6 +451,7 @@ public struct NetworkInitializationArguments {
self.voipVersions = voipVersions
self.appData = appData
self.externalRequestVerificationStream = externalRequestVerificationStream
self.externalRecaptchaRequestVerification = externalRecaptchaRequestVerification
self.autolockDeadine = autolockDeadine
self.encryptionProvider = encryptionProvider
self.deviceModelName = deviceModelName
@ -589,6 +591,22 @@ func initializedNetwork(accountId: AccountRecordId, arguments: NetworkInitializa
subscriber?.putCompletion()
})
return MTBlockDisposable(block: {
disposable.dispose()
})
})
})
let externalRecaptchaRequestVerification = arguments.externalRecaptchaRequestVerification
context.setExternalRecaptchaRequestVerification({ method, siteKey in
return MTSignal(generator: { subscriber in
let disposable = (externalRecaptchaRequestVerification(method, siteKey)
|> filter { $0 != nil }
|> take(1)
|> timeout(15.0, queue: .mainQueue(), alternate: .single("RECAPTCHA_TIMEOUT"))).start(next: { token in
subscriber?.putNext(token)
subscriber?.putCompletion()
})
return MTBlockDisposable(block: {
disposable.dispose()
})

View File

@ -210,7 +210,7 @@ public class BoxedMessage: NSObject {
public class Serialization: NSObject, MTSerialization {
public func currentLayer() -> UInt {
return 198
return 199
}
public func parseMessage(_ data: Data!) -> Any! {

View File

@ -42,6 +42,7 @@ import MediaEditor
import TelegramUIDeclareEncodables
import ContextMenuScreen
import MetalEngine
import RecaptchaEnterprise
#if canImport(AppCenter)
import AppCenter
@ -322,6 +323,8 @@ private func extractAccountManagerState(records: AccountRecordsView<TelegramAcco
private let voipDeviceToken = Promise<Data?>(nil)
private let regularDeviceToken = Promise<Data?>(nil)
private var recaptchaClientsBySiteKey: [String: Promise<RecaptchaClient>] = [:]
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
precondition(!testIsLaunched)
@ -511,7 +514,63 @@ private func extractAccountManagerState(records: AccountRecordsView<TelegramAcco
Logger.shared.log("data", "can't deserialize")
}
return data
}, externalRequestVerificationStream: self.firebaseRequestVerificationSecretStream.get(), autolockDeadine: autolockDeadine, encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: buildConfig.isICloudEnabled)
}, externalRequestVerificationStream: self.firebaseRequestVerificationSecretStream.get(), externalRecaptchaRequestVerification: { method, siteKey in
return Signal { subscriber in
let recaptchaClient: Promise<RecaptchaClient>
if let current = self.recaptchaClientsBySiteKey[siteKey] {
recaptchaClient = current
} else {
recaptchaClient = Promise<RecaptchaClient>()
self.recaptchaClientsBySiteKey[siteKey] = recaptchaClient
Recaptcha.fetchClient(withSiteKey: siteKey) { client, error in
Queue.mainQueue().async {
guard let client else {
Logger.shared.log("App \(self.episodeId)", "RecaptchaClient creation error: \(String(describing: error)).")
return
}
recaptchaClient.set(.single(client))
}
}
}
return (recaptchaClient.get()
|> take(1)
|> mapToSignal { recaptchaClient -> Signal<String?, NoError> in
return Signal { subscriber in
var recaptchaAction: RecaptchaAction?
switch method {
case "signup":
recaptchaAction = RecaptchaAction.signup
default:
break
}
guard let recaptchaAction else {
subscriber.putNext(nil)
subscriber.putCompletion()
return EmptyDisposable
}
recaptchaClient.execute(withAction: recaptchaAction) { token, error in
if let token {
subscriber.putNext(token)
Logger.shared.log("App \(self.episodeId)", "RecaptchaClient executed successfully")
} else {
subscriber.putNext(nil)
Logger.shared.log("App \(self.episodeId)", "RecaptchaClient execute error: \(String(describing: error))")
}
subscriber.putCompletion()
}
return ActionDisposable {
}
}
|> runOn(Queue.mainQueue())
}).startStandalone(next: subscriber.putNext, error: subscriber.putError, completed: subscriber.putCompletion)
}
|> runOn(Queue.mainQueue())
}, autolockDeadine: autolockDeadine, encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: !buildConfig.isAppStoreBuild, isICloudEnabled: buildConfig.isICloudEnabled)
guard let appGroupUrl = maybeAppGroupUrl else {
self.mainWindow?.presentNative(UIAlertController(title: nil, message: "Error 2", preferredStyle: .alert))

View File

@ -140,7 +140,7 @@ public final class NotificationViewControllerImpl {
return nil
})
sharedAccountContext = SharedAccountContextImpl(mainWindow: nil, sharedContainerPath: self.initializationData.appGroupPath, basePath: rootPath, encryptionParameters: ValueBoxEncryptionParameters(forceEncryptionIfNoSet: false, key: ValueBoxEncryptionParameters.Key(data: self.initializationData.encryptionParameters.0)!, salt: ValueBoxEncryptionParameters.Salt(data: self.initializationData.encryptionParameters.1)!), accountManager: accountManager, appLockContext: appLockContext, notificationController: nil, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: NetworkInitializationArguments(apiId: self.initializationData.apiId, apiHash: self.initializationData.apiHash, languagesCategory: self.initializationData.languagesCategory, appVersion: self.initializationData.appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(self.initializationData.bundleData), externalRequestVerificationStream: .never(), autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: self.initializationData.useBetaFeatures, isICloudEnabled: false), hasInAppPurchases: false, rootPath: rootPath, legacyBasePath: nil, apsNotificationToken: .never(), voipNotificationToken: .never(), firebaseSecretStream: .never(), setNotificationCall: { _ in }, navigateToChat: { _, _, _ in }, appDelegate: nil)
sharedAccountContext = SharedAccountContextImpl(mainWindow: nil, sharedContainerPath: self.initializationData.appGroupPath, basePath: rootPath, encryptionParameters: ValueBoxEncryptionParameters(forceEncryptionIfNoSet: false, key: ValueBoxEncryptionParameters.Key(data: self.initializationData.encryptionParameters.0)!, salt: ValueBoxEncryptionParameters.Salt(data: self.initializationData.encryptionParameters.1)!), accountManager: accountManager, appLockContext: appLockContext, notificationController: nil, applicationBindings: applicationBindings, initialPresentationDataAndSettings: initialPresentationDataAndSettings!, networkArguments: NetworkInitializationArguments(apiId: self.initializationData.apiId, apiHash: self.initializationData.apiHash, languagesCategory: self.initializationData.languagesCategory, appVersion: self.initializationData.appVersion, voipMaxLayer: 0, voipVersions: [], appData: .single(self.initializationData.bundleData), externalRequestVerificationStream: .never(), externalRecaptchaRequestVerification: { _, _ in return .never() }, autolockDeadine: .single(nil), encryptionProvider: OpenSSLEncryptionProvider(), deviceModelName: nil, useBetaFeatures: self.initializationData.useBetaFeatures, isICloudEnabled: false), hasInAppPurchases: false, rootPath: rootPath, legacyBasePath: nil, apsNotificationToken: .never(), voipNotificationToken: .never(), firebaseSecretStream: .never(), setNotificationCall: { _ in }, navigateToChat: { _, _, _ in }, appDelegate: nil)
presentationDataPromise.set(sharedAccountContext!.presentationData)
}

14
third-party/recaptcha/BUILD vendored Normal file
View File

@ -0,0 +1,14 @@
load(
"@build_bazel_rules_apple//apple:apple.bzl",
"apple_dynamic_xcframework_import",
"apple_static_xcframework_import",
"apple_dynamic_framework_import",
)
apple_static_xcframework_import(
name = "RecaptchaEnterprise",
xcframework_imports = glob(["RecaptchaEnterprise.xcframework/**"]),
visibility = [
"//visibility:public",
],
)

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AvailableLibraries</key>
<array>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64</string>
<key>LibraryPath</key>
<string>RecaptchaEnterprise.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
</dict>
<dict>
<key>LibraryIdentifier</key>
<string>ios-arm64_x86_64-simulator</string>
<key>LibraryPath</key>
<string>RecaptchaEnterprise.framework</string>
<key>SupportedArchitectures</key>
<array>
<string>arm64</string>
<string>x86_64</string>
</array>
<key>SupportedPlatform</key>
<string>ios</string>
<key>SupportedPlatformVariant</key>
<string>simulator</string>
</dict>
</array>
<key>CFBundlePackageType</key>
<string>XFWK</string>
<key>XCFrameworkFormatVersion</key>
<string>1.0</string>
</dict>
</plist>

View File

@ -0,0 +1,338 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>files</key>
<dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Headers/RecaptchaEnterprise.h</key>
<data>
4VDxU6SZ65gQBn3rUWCCNqxbb2Q=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/Info.plist</key>
<data>
lLz/4hKuGngSXx+1idP1Qd7K96Q=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftdoc</key>
<data>
EhXEo2CcyN6grvu7hRiGTj5N5/Q=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftinterface</key>
<data>
HKWaSFA8HkKEhv60fJePQ6MMw6A=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/module.modulemap</key>
<data>
e79+f2szYbQmmcycLjb4qvAm9ic=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/PrivacyInfo.xcprivacy</key>
<data>
d34/WdITFALLLJjkSHGiQSA6Z3Y=
</data>
<key>ios-arm64/RecaptchaEnterprise.framework/RecaptchaEnterprise</key>
<data>
Vl9+I/cFYuo5INyhscdU7ZKuJKM=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Headers/RecaptchaEnterprise.h</key>
<data>
4VDxU6SZ65gQBn3rUWCCNqxbb2Q=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Info.plist</key>
<data>
qvXMamMsVpa8+m+Nzwchfsvt/eE=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftdoc</key>
<data>
U/f1XLQrWkvQeR+Px1/pRwRc/cc=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftinterface</key>
<data>
spJ76Pm8/Wr3VMBn4v2XqjpgBVQ=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/x86_64.swiftdoc</key>
<data>
f96x+pLmntLoPnADpTqimN2ipfI=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/x86_64.swiftinterface</key>
<data>
s1JZ2QV5QeLTytibw4yKa97YXMg=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/module.modulemap</key>
<data>
e79+f2szYbQmmcycLjb4qvAm9ic=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/PrivacyInfo.xcprivacy</key>
<data>
d34/WdITFALLLJjkSHGiQSA6Z3Y=
</data>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/RecaptchaEnterprise</key>
<data>
Bj5s+c75uv9OG+DFaJDzCJQdNR4=
</data>
</dict>
<key>files2</key>
<dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Headers/RecaptchaEnterprise.h</key>
<dict>
<key>hash</key>
<data>
4VDxU6SZ65gQBn3rUWCCNqxbb2Q=
</data>
<key>hash2</key>
<data>
DVSRC0UZpbiuicyY3o0XyRn5J4W67BXA3EZoseXSJ+E=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Info.plist</key>
<dict>
<key>hash</key>
<data>
lLz/4hKuGngSXx+1idP1Qd7K96Q=
</data>
<key>hash2</key>
<data>
69AqI/t+mFQl1WdbSZTMvyjw8Arr/BaO45RgklSi/OY=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftdoc</key>
<dict>
<key>hash</key>
<data>
EhXEo2CcyN6grvu7hRiGTj5N5/Q=
</data>
<key>hash2</key>
<data>
FjQ9BxuUBuAipikhZdGTwdVPGVtsVSoqgo5laiu4cGk=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftinterface</key>
<dict>
<key>hash</key>
<data>
HKWaSFA8HkKEhv60fJePQ6MMw6A=
</data>
<key>hash2</key>
<data>
01O3JDW+YCBhgBZ+F9hJi88lBiR0CKI8XKA7R9aJ5M4=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
e79+f2szYbQmmcycLjb4qvAm9ic=
</data>
<key>hash2</key>
<data>
PteZu5hZeSnScpxe2bKzAkh/J6tvZqHOPjJPPX9L3B0=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/PrivacyInfo.xcprivacy</key>
<dict>
<key>hash</key>
<data>
d34/WdITFALLLJjkSHGiQSA6Z3Y=
</data>
<key>hash2</key>
<data>
9ogbL0FljSMHAXmM5vR4v1xZZKB2oE8aTODyTk0qUj8=
</data>
</dict>
<key>ios-arm64/RecaptchaEnterprise.framework/RecaptchaEnterprise</key>
<dict>
<key>hash</key>
<data>
Vl9+I/cFYuo5INyhscdU7ZKuJKM=
</data>
<key>hash2</key>
<data>
vQn3SxzkE8c0pSwmCUM4R8oKZsHxVsafDddQf0HeFTo=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Headers/RecaptchaEnterprise.h</key>
<dict>
<key>hash</key>
<data>
4VDxU6SZ65gQBn3rUWCCNqxbb2Q=
</data>
<key>hash2</key>
<data>
DVSRC0UZpbiuicyY3o0XyRn5J4W67BXA3EZoseXSJ+E=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Info.plist</key>
<dict>
<key>hash</key>
<data>
qvXMamMsVpa8+m+Nzwchfsvt/eE=
</data>
<key>hash2</key>
<data>
jnZiaN642xbrWF2l7fQF33YSTgePAQACl0FbRUmayMI=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftdoc</key>
<dict>
<key>hash</key>
<data>
U/f1XLQrWkvQeR+Px1/pRwRc/cc=
</data>
<key>hash2</key>
<data>
tuY9mB+LTHtCEGJRwTeUGym5ANc4iiGERy3vedGcZqo=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/arm64.swiftinterface</key>
<dict>
<key>hash</key>
<data>
spJ76Pm8/Wr3VMBn4v2XqjpgBVQ=
</data>
<key>hash2</key>
<data>
vlFk7bczYlw+XSHD42G8VkhH755HVehFT7fD1snaME4=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/x86_64.swiftdoc</key>
<dict>
<key>hash</key>
<data>
f96x+pLmntLoPnADpTqimN2ipfI=
</data>
<key>hash2</key>
<data>
zHc1oXV0xksHw1i1q0HYnVIF0FJ3244NSbUty6NT3g8=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/RecaptchaEnterprise.swiftmodule/x86_64.swiftinterface</key>
<dict>
<key>hash</key>
<data>
s1JZ2QV5QeLTytibw4yKa97YXMg=
</data>
<key>hash2</key>
<data>
5enubvBpufjdyyeqCZwbNZnVGNchHIwyNhUx56fzXto=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/Modules/module.modulemap</key>
<dict>
<key>hash</key>
<data>
e79+f2szYbQmmcycLjb4qvAm9ic=
</data>
<key>hash2</key>
<data>
PteZu5hZeSnScpxe2bKzAkh/J6tvZqHOPjJPPX9L3B0=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/PrivacyInfo.xcprivacy</key>
<dict>
<key>hash</key>
<data>
d34/WdITFALLLJjkSHGiQSA6Z3Y=
</data>
<key>hash2</key>
<data>
9ogbL0FljSMHAXmM5vR4v1xZZKB2oE8aTODyTk0qUj8=
</data>
</dict>
<key>ios-arm64_x86_64-simulator/RecaptchaEnterprise.framework/RecaptchaEnterprise</key>
<dict>
<key>hash</key>
<data>
Bj5s+c75uv9OG+DFaJDzCJQdNR4=
</data>
<key>hash2</key>
<data>
dwEBfc7UHwM0emsKXMYVXM6SRC1m7w/jOCVveRoW9jY=
</data>
</dict>
</dict>
<key>rules</key>
<dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^version.plist$</key>
<true/>
</dict>
<key>rules2</key>
<dict>
<key>.*\.dSYM($|/)</key>
<dict>
<key>weight</key>
<real>11</real>
</dict>
<key>^(.*/)?\.DS_Store$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>2000</real>
</dict>
<key>^.*</key>
<true/>
<key>^.*\.lproj/</key>
<dict>
<key>optional</key>
<true/>
<key>weight</key>
<real>1000</real>
</dict>
<key>^.*\.lproj/locversion.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>1100</real>
</dict>
<key>^Base\.lproj/</key>
<dict>
<key>weight</key>
<real>1010</real>
</dict>
<key>^Info\.plist$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^PkgInfo$</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>20</real>
</dict>
<key>^embedded\.provisionprofile$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
<key>^version\.plist$</key>
<dict>
<key>weight</key>
<real>20</real>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,523 @@
// Generated by Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
#ifndef RECAPTCHAENTERPRISE_SWIFT_H
#define RECAPTCHAENTERPRISE_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if 1 /* #if __has_feature(objc_modules) */
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
// Rewritten: @import Foundation;
// From module Foundation
#import <Foundation/Foundation.h>
// Rewritten: @import ObjectiveC;
// From module ObjectiveC
// From module ObjectiveC.NSObject
#import <objc/NSObject.h>
// From module ObjectiveC.message
#import <objc/message.h>
// From module ObjectiveC.NSObjCRuntime
#import <objc/NSObjCRuntime.h>
// From module ObjectiveC.objc_api
#import <objc/objc-api.h>
// From module ObjectiveC.objc_auto
#import <objc/objc-auto.h>
// From module ObjectiveC.objc_exception
#import <objc/objc-exception.h>
// From module ObjectiveC.objc_sync
#import <objc/objc-sync.h>
// From module ObjectiveC.objc
#import <objc/objc.h>
// From module ObjectiveC.runtime
#import <objc/runtime.h>
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RecaptchaEnterprise",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
@class NSString;
@class RecaptchaClient;
@class NSError;
/// Interface to interact with reCAPTCHA.
SWIFT_CLASS("_TtC19RecaptchaEnterprise9Recaptcha")
@interface Recaptcha : NSObject
/// Builds a new reCAPTCHA Client for the given Site Key.
/// The SDK accepts one Site Key. Passing a different Site Key will throw an exception.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)fetchClientWithSiteKey:(NSString * _Nonnull)siteKey completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion;
/// Builds a new reCAPTCHA Client for the given Site Key and timeout.
/// The SDK accepts one Site Key. Passing a different Site Key will
/// throw an exception.
/// At least a 10000 milliseconds timeout is suggested to allow for slow
/// networking, though in some cases longer timeouts may be necessary. The
/// minimum allowable value is 5000 milliseconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param timeout Timeout for getClient in milliseconds.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey withTimeout:(double)timeout completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
/// Builds a new reCAPTCHA Client for the given Site Key and timeout.
/// The SDK accepts one Site Key. Passing a different Site Key will
/// throw an exception.
/// This function will timeout after 10 seconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
/// Builds a new reCAPTCHA Client for the given SiteKey.
/// This function will timeout after 10 seconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completionHandler Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey completionHandler:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completionHandler SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
enum RecaptchaActionType : NSInteger;
/// Action intended to be protected by reCAPTCHA. This object should be passed
/// to RecaptchaClient.execute.
SWIFT_CLASS("_TtC19RecaptchaEnterprise15RecaptchaAction")
@interface RecaptchaAction : NSObject
/// Creates an object with a predefined reCAPTCHA action.
/// \param action The type of the action.
///
///
/// returns:
/// A RecaptchaAction object with the given action type.
- (nonnull instancetype)initWithAction:(enum RecaptchaActionType)action OBJC_DESIGNATED_INITIALIZER SWIFT_DEPRECATED_MSG("Please use customAction with the regular RecaptchaAction.custom() function");
/// Indicates that the protected action is a Login workflow.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RecaptchaAction * _Nonnull login;)
+ (RecaptchaAction * _Nonnull)login SWIFT_WARN_UNUSED_RESULT;
/// Indicates that the protected action is a Signup workflow.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RecaptchaAction * _Nonnull signup;)
+ (RecaptchaAction * _Nonnull)signup SWIFT_WARN_UNUSED_RESULT;
/// Creates a custom action from a String.
+ (RecaptchaAction * _Nonnull)custom:(NSString * _Nonnull)action SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
/// Action type intended to be protected by reCAPTCHA.
typedef SWIFT_ENUM(NSInteger, RecaptchaActionType, open) {
/// Indicates that the protected action is a Login workflow.
RecaptchaActionTypeLogin = 0,
/// Indicates that the protected action is a Signup workflow.
RecaptchaActionTypeSignup = 1,
/// When a custom action is specified, reCAPTCHA uses this value automatically.
RecaptchaActionTypeOther = 2,
};
@class RecaptchaToken;
@class RecaptchaError;
/// Interface to interact with reCAPTCHA.
SWIFT_CLASS("_TtC19RecaptchaEnterprise15RecaptchaClient")
@interface RecaptchaClient : NSObject
/// Executes reCAPTCHA on a user action.
/// It is suggested the usage of 10 seconds for the timeout. The minimum value
/// 5 seconds.
/// \param action The user action to protect.
///
/// \param timeout Timeout for execute in milliseconds.
///
/// \param completion Callback function to return the execute response.
///
- (void)executeWithAction:(RecaptchaAction * _Nonnull)action withTimeout:(double)timeout completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completion Callback function to return the execute response.
///
- (void)executeWithAction:(RecaptchaAction * _Nonnull)action completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completion Callback function to return the execute response.
///
- (void)execute:(RecaptchaAction * _Nonnull)action completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completionHandler Callback function to return the execute response.
///
- (void)execute:(RecaptchaAction * _Nonnull)action completionHandler:(void (^ _Nonnull)(RecaptchaToken * _Nullable, RecaptchaError * _Nullable))completionHandler SWIFT_DEPRECATED_MSG("Use `execute(withAction:completion:)` instead.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
SWIFT_CLASS("_TtC19RecaptchaEnterprise17RecaptchaConstant")
@interface RecaptchaConstant : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull clientVersion;)
+ (NSString * _Nonnull)clientVersion SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) double defaultTimeoutExecute;)
+ (double)defaultTimeoutExecute SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) double defaultTimeoutInit;)
+ (double)defaultTimeoutInit SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
enum RecaptchaErrorCode : NSInteger;
@class NSCoder;
/// Error class for reCAPTCHA Events.
SWIFT_CLASS("_TtC19RecaptchaEnterprise14RecaptchaError")
@interface RecaptchaError : NSError
/// Code relative to the error that was thrown. It maps to <code>RecaptchaErrorCode</code>.
@property (nonatomic, readonly) enum RecaptchaErrorCode errorCode;
/// Human readable error message.
@property (nonatomic, readonly, copy) NSString * _Nonnull errorMessage;
/// Required by <code>NSError</code> but should not be used.
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (nonnull instancetype)initWithDomain:(NSString * _Nonnull)domain code:(NSInteger)code userInfo:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_UNAVAILABLE;
@end
/// List of errors that can be returned from the SDK.
/// IMPORTANT: This list is add-only. Never change any existing value, since this class is
/// publicly visible and customers rely on these values to do error checking.
typedef SWIFT_ENUM(NSInteger, RecaptchaErrorCode, open) {
/// Unknown error occurred during the workflow.
RecaptchaErrorCodeErrorCodeUnknown = 0,
/// reCAPTCHA cannot connect to Google servers, please make sure the app has network access.
RecaptchaErrorCodeErrorNetworkError = 1,
/// The site key used to call reCAPTCHA is invalid.
RecaptchaErrorCodeErrorInvalidSiteKey = 2,
/// Cannot create a reCAPTCHA interface because the key used cannot be used on iOS.
/// Please register new site key with the key type set to “iOS App” via
/// <a href="https://cloud.google.com/recaptcha/docs/create-key">Create Key</a>.
RecaptchaErrorCodeErroInvalidKeyType = 3,
/// Cannot create a reCAPTCHA interface because the site key used doesnt support the calling
/// package.
RecaptchaErrorCodeErrorInvalidPackageName = 4,
/// reCAPTCHA cannot accept the action used, see custom
/// <a href="https://cloud.google.com/recaptcha/docs/actions-mobile">action guidelines</a>.
RecaptchaErrorCodeErrorInvalidAction = 5,
/// reCAPTCHA cannot accept timeout provided, see
/// <a href="https://cloud.google.com/recaptcha/docs/instrument-ios-apps#timeout">timeout guidelines</a>.
RecaptchaErrorCodeErrorInvalidTimeout = 6,
/// No network was found in the device.
RecaptchaErrorCodeErrorNoNetwork = 7,
/// reCAPTCHA has faced an internal error, please try again in a bit.
RecaptchaErrorCodeErrorCodeInternalError = 100,
};
/// Swift implementation for RecaptchaTokenSwift that holds the response of a successful
/// execute call.
SWIFT_CLASS("_TtC19RecaptchaEnterprise14RecaptchaToken") SWIFT_DEPRECATED_MSG("Newer implementations return the Token as a string.")
@interface RecaptchaToken : NSObject
/// The Token to be used for verification.
@property (nonatomic, readonly, copy) NSString * _Nonnull recaptchaToken;
- (nonnull instancetype)init:(NSString * _Nonnull)mobilemivdvtyi OBJC_DESIGNATED_INITIALIZER SWIFT_DEPRECATED_MSG("Newer implementations return the Token as a string.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif

View File

@ -0,0 +1,107 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
// swift-module-flags: -target arm64-apple-ios12.0 -enable-objc-interop -enable-library-evolution -enforce-exclusivity=checked -O -enable-experimental-feature AccessLevelOnImport -enable-bare-slash-regex -module-name RecaptchaEnterprise -package-name googlemac/iPhone/recaptcha/enterprise
import CryptoKit
import DeviceCheck
import Foundation
import Network
import Swift
import UIKit
import WebKit
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
@objc @_inheritsConvenienceInitializers @objcMembers public class RecaptchaConstant : ObjectiveC.NSObject {
@objc public static let clientVersion: Swift.String
@objc public static let defaultTimeoutExecute: Swift.Double
@objc public static let defaultTimeoutInit: Swift.Double
@objc override dynamic public init()
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc public class Recaptcha : ObjectiveC.NSObject {
@objc public static func fetchClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public static func fetchClient(withSiteKey siteKey: Swift.String) async throws -> RecaptchaEnterprise.RecaptchaClient
#endif
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, withTimeout timeout: Swift.Double, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(siteKey: Swift.String, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
@objc public enum RecaptchaActionType : Swift.Int {
case login
case signup
case other
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaAction : ObjectiveC.NSObject {
convenience public init(customAction: Swift.String)
@available(*, deprecated, message: "Please use customAction with the regular RecaptchaAction.custom() function")
@objc public init(action: RecaptchaEnterprise.RecaptchaActionType)
@objc public static let login: RecaptchaEnterprise.RecaptchaAction
@objc public static let signup: RecaptchaEnterprise.RecaptchaAction
@objc public static func custom(_ action: Swift.String) -> RecaptchaEnterprise.RecaptchaAction
@objc deinit
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaClient : ObjectiveC.NSObject {
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double = RecaptchaConstant.defaultTimeoutExecute) async throws -> Swift.String
#endif
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use `execute(withAction:completion:)` instead.")
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaToken?, RecaptchaEnterprise.RecaptchaError?) -> Swift.Void)
@objc deinit
}
@objc public enum RecaptchaErrorCode : Swift.Int {
case errorCodeUnknown = 0
case errorNetworkError = 1
case errorInvalidSiteKey = 2
case erroInvalidKeyType = 3
case errorInvalidPackageName = 4
case errorInvalidAction = 5
case errorInvalidTimeout = 6
case errorNoNetwork = 7
case errorCodeInternalError = 100
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaError : Foundation.NSError {
@objc public var errorCode: RecaptchaEnterprise.RecaptchaErrorCode {
@objc get
}
@objc public var errorMessage: Swift.String {
@objc get
}
@objc deinit
}
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public class RecaptchaToken : ObjectiveC.NSObject {
@objc final public let recaptchaToken: Swift.String
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public init(_ mobilemivdvtyi: Swift.String)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Equatable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Hashable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.RawRepresentable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Equatable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Hashable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.RawRepresentable {}

View File

@ -0,0 +1,4 @@
framework module RecaptchaEnterprise {
header "RecaptchaEnterprise.h"
requires objc
}

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePerformanceData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,523 @@
// Generated by Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
#ifndef RECAPTCHAENTERPRISE_SWIFT_H
#define RECAPTCHAENTERPRISE_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"
#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif
#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif
#pragma clang diagnostic ignored "-Wauto-import"
#if defined(__OBJC__)
#include <Foundation/Foundation.h>
#endif
#if defined(__cplusplus)
#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <cstring>
#include <stdlib.h>
#include <new>
#include <type_traits>
#else
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <string.h>
#endif
#if defined(__cplusplus)
#if defined(__arm64e__) && __has_include(<ptrauth.h>)
# include <ptrauth.h>
#else
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
# ifndef __ptrauth_swift_value_witness_function_pointer
# define __ptrauth_swift_value_witness_function_pointer(x)
# endif
# ifndef __ptrauth_swift_class_method_pointer
# define __ptrauth_swift_class_method_pointer(x)
# endif
#pragma clang diagnostic pop
#endif
#endif
#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
# include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
# define SWIFT_CLASS_PROPERTY(...)
# endif
#endif
#if !defined(SWIFT_RUNTIME_NAME)
# if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
# else
# define SWIFT_RUNTIME_NAME(X)
# endif
#endif
#if !defined(SWIFT_COMPILE_NAME)
# if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
# else
# define SWIFT_COMPILE_NAME(X)
# endif
#endif
#if !defined(SWIFT_METHOD_FAMILY)
# if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
# else
# define SWIFT_METHOD_FAMILY(X)
# endif
#endif
#if !defined(SWIFT_NOESCAPE)
# if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
# else
# define SWIFT_NOESCAPE
# endif
#endif
#if !defined(SWIFT_RELEASES_ARGUMENT)
# if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
# else
# define SWIFT_RELEASES_ARGUMENT
# endif
#endif
#if !defined(SWIFT_WARN_UNUSED_RESULT)
# if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
# else
# define SWIFT_WARN_UNUSED_RESULT
# endif
#endif
#if !defined(SWIFT_NORETURN)
# if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
# else
# define SWIFT_NORETURN
# endif
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif
#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif
#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
# define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if __has_attribute(enum_extensibility)
# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
# define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if !defined(SWIFT_DEPRECATED_OBJC)
# if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
# else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
# endif
#endif
#if defined(__OBJC__)
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#endif
#if !defined(SWIFT_EXTERN)
# if defined(__cplusplus)
# define SWIFT_EXTERN extern "C"
# else
# define SWIFT_EXTERN extern
# endif
#endif
#if !defined(SWIFT_CALL)
# define SWIFT_CALL __attribute__((swiftcall))
#endif
#if !defined(SWIFT_INDIRECT_RESULT)
# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result))
#endif
#if !defined(SWIFT_CONTEXT)
# define SWIFT_CONTEXT __attribute__((swift_context))
#endif
#if !defined(SWIFT_ERROR_RESULT)
# define SWIFT_ERROR_RESULT __attribute__((swift_error_result))
#endif
#if defined(__cplusplus)
# define SWIFT_NOEXCEPT noexcept
#else
# define SWIFT_NOEXCEPT
#endif
#if !defined(SWIFT_C_INLINE_THUNK)
# if __has_attribute(always_inline)
# if __has_attribute(nodebug)
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug))
# else
# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline))
# endif
# else
# define SWIFT_C_INLINE_THUNK inline
# endif
#endif
#if defined(_WIN32)
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport)
#endif
#else
#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL)
# define SWIFT_IMPORT_STDLIB_SYMBOL
#endif
#endif
#if defined(__OBJC__)
#if 1 /* #if __has_feature(objc_modules) */
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
// Rewritten: @import Foundation;
// From module Foundation
#import <Foundation/Foundation.h>
// Rewritten: @import ObjectiveC;
// From module ObjectiveC
// From module ObjectiveC.NSObject
#import <objc/NSObject.h>
// From module ObjectiveC.message
#import <objc/message.h>
// From module ObjectiveC.NSObjCRuntime
#import <objc/NSObjCRuntime.h>
// From module ObjectiveC.objc_api
#import <objc/objc-api.h>
// From module ObjectiveC.objc_auto
#import <objc/objc-auto.h>
// From module ObjectiveC.objc_exception
#import <objc/objc-exception.h>
// From module ObjectiveC.objc_sync
#import <objc/objc-sync.h>
// From module ObjectiveC.objc
#import <objc/objc.h>
// From module ObjectiveC.runtime
#import <objc/runtime.h>
#endif
#endif
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"
#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="RecaptchaEnterprise",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif
#if defined(__OBJC__)
@class NSString;
@class RecaptchaClient;
@class NSError;
/// Interface to interact with reCAPTCHA.
SWIFT_CLASS("_TtC19RecaptchaEnterprise9Recaptcha")
@interface Recaptcha : NSObject
/// Builds a new reCAPTCHA Client for the given Site Key.
/// The SDK accepts one Site Key. Passing a different Site Key will throw an exception.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)fetchClientWithSiteKey:(NSString * _Nonnull)siteKey completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion;
/// Builds a new reCAPTCHA Client for the given Site Key and timeout.
/// The SDK accepts one Site Key. Passing a different Site Key will
/// throw an exception.
/// At least a 10000 milliseconds timeout is suggested to allow for slow
/// networking, though in some cases longer timeouts may be necessary. The
/// minimum allowable value is 5000 milliseconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param timeout Timeout for getClient in milliseconds.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey withTimeout:(double)timeout completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
/// Builds a new reCAPTCHA Client for the given Site Key and timeout.
/// The SDK accepts one Site Key. Passing a different Site Key will
/// throw an exception.
/// This function will timeout after 10 seconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completion Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey completion:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completion SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
/// Builds a new reCAPTCHA Client for the given SiteKey.
/// This function will timeout after 10 seconds.
/// \param siteKey reCAPTCHA Site Key for the app.
///
/// \param completionHandler Callback function to return the RecaptchaClient or an error.
///
+ (void)getClientWithSiteKey:(NSString * _Nonnull)siteKey completionHandler:(void (^ _Nonnull)(RecaptchaClient * _Nullable, NSError * _Nullable))completionHandler SWIFT_DEPRECATED_MSG("Use the new api `fetchClient(withSiteKey:completion:)` instead.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
enum RecaptchaActionType : NSInteger;
/// Action intended to be protected by reCAPTCHA. This object should be passed
/// to RecaptchaClient.execute.
SWIFT_CLASS("_TtC19RecaptchaEnterprise15RecaptchaAction")
@interface RecaptchaAction : NSObject
/// Creates an object with a predefined reCAPTCHA action.
/// \param action The type of the action.
///
///
/// returns:
/// A RecaptchaAction object with the given action type.
- (nonnull instancetype)initWithAction:(enum RecaptchaActionType)action OBJC_DESIGNATED_INITIALIZER SWIFT_DEPRECATED_MSG("Please use customAction with the regular RecaptchaAction.custom() function");
/// Indicates that the protected action is a Login workflow.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RecaptchaAction * _Nonnull login;)
+ (RecaptchaAction * _Nonnull)login SWIFT_WARN_UNUSED_RESULT;
/// Indicates that the protected action is a Signup workflow.
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) RecaptchaAction * _Nonnull signup;)
+ (RecaptchaAction * _Nonnull)signup SWIFT_WARN_UNUSED_RESULT;
/// Creates a custom action from a String.
+ (RecaptchaAction * _Nonnull)custom:(NSString * _Nonnull)action SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
/// Action type intended to be protected by reCAPTCHA.
typedef SWIFT_ENUM(NSInteger, RecaptchaActionType, open) {
/// Indicates that the protected action is a Login workflow.
RecaptchaActionTypeLogin = 0,
/// Indicates that the protected action is a Signup workflow.
RecaptchaActionTypeSignup = 1,
/// When a custom action is specified, reCAPTCHA uses this value automatically.
RecaptchaActionTypeOther = 2,
};
@class RecaptchaToken;
@class RecaptchaError;
/// Interface to interact with reCAPTCHA.
SWIFT_CLASS("_TtC19RecaptchaEnterprise15RecaptchaClient")
@interface RecaptchaClient : NSObject
/// Executes reCAPTCHA on a user action.
/// It is suggested the usage of 10 seconds for the timeout. The minimum value
/// 5 seconds.
/// \param action The user action to protect.
///
/// \param timeout Timeout for execute in milliseconds.
///
/// \param completion Callback function to return the execute response.
///
- (void)executeWithAction:(RecaptchaAction * _Nonnull)action withTimeout:(double)timeout completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completion Callback function to return the execute response.
///
- (void)executeWithAction:(RecaptchaAction * _Nonnull)action completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completion Callback function to return the execute response.
///
- (void)execute:(RecaptchaAction * _Nonnull)action completion:(void (^ _Nonnull)(NSString * _Nullable, NSError * _Nullable))completion;
/// Executes reCAPTCHA on a user action.
/// This function throws a timeout exception after 10 seconds.
/// \param action The user action to protect.
///
/// \param completionHandler Callback function to return the execute response.
///
- (void)execute:(RecaptchaAction * _Nonnull)action completionHandler:(void (^ _Nonnull)(RecaptchaToken * _Nullable, RecaptchaError * _Nullable))completionHandler SWIFT_DEPRECATED_MSG("Use `execute(withAction:completion:)` instead.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
SWIFT_CLASS("_TtC19RecaptchaEnterprise17RecaptchaConstant")
@interface RecaptchaConstant : NSObject
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, copy) NSString * _Nonnull clientVersion;)
+ (NSString * _Nonnull)clientVersion SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) double defaultTimeoutExecute;)
+ (double)defaultTimeoutExecute SWIFT_WARN_UNUSED_RESULT;
SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) double defaultTimeoutInit;)
+ (double)defaultTimeoutInit SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
enum RecaptchaErrorCode : NSInteger;
@class NSCoder;
/// Error class for reCAPTCHA Events.
SWIFT_CLASS("_TtC19RecaptchaEnterprise14RecaptchaError")
@interface RecaptchaError : NSError
/// Code relative to the error that was thrown. It maps to <code>RecaptchaErrorCode</code>.
@property (nonatomic, readonly) enum RecaptchaErrorCode errorCode;
/// Human readable error message.
@property (nonatomic, readonly, copy) NSString * _Nonnull errorMessage;
/// Required by <code>NSError</code> but should not be used.
- (nonnull instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE;
- (nonnull instancetype)initWithDomain:(NSString * _Nonnull)domain code:(NSInteger)code userInfo:(NSDictionary<NSString *, id> * _Nullable)dict SWIFT_UNAVAILABLE;
@end
/// List of errors that can be returned from the SDK.
/// IMPORTANT: This list is add-only. Never change any existing value, since this class is
/// publicly visible and customers rely on these values to do error checking.
typedef SWIFT_ENUM(NSInteger, RecaptchaErrorCode, open) {
/// Unknown error occurred during the workflow.
RecaptchaErrorCodeErrorCodeUnknown = 0,
/// reCAPTCHA cannot connect to Google servers, please make sure the app has network access.
RecaptchaErrorCodeErrorNetworkError = 1,
/// The site key used to call reCAPTCHA is invalid.
RecaptchaErrorCodeErrorInvalidSiteKey = 2,
/// Cannot create a reCAPTCHA interface because the key used cannot be used on iOS.
/// Please register new site key with the key type set to “iOS App” via
/// <a href="https://cloud.google.com/recaptcha/docs/create-key">Create Key</a>.
RecaptchaErrorCodeErroInvalidKeyType = 3,
/// Cannot create a reCAPTCHA interface because the site key used doesnt support the calling
/// package.
RecaptchaErrorCodeErrorInvalidPackageName = 4,
/// reCAPTCHA cannot accept the action used, see custom
/// <a href="https://cloud.google.com/recaptcha/docs/actions-mobile">action guidelines</a>.
RecaptchaErrorCodeErrorInvalidAction = 5,
/// reCAPTCHA cannot accept timeout provided, see
/// <a href="https://cloud.google.com/recaptcha/docs/instrument-ios-apps#timeout">timeout guidelines</a>.
RecaptchaErrorCodeErrorInvalidTimeout = 6,
/// No network was found in the device.
RecaptchaErrorCodeErrorNoNetwork = 7,
/// reCAPTCHA has faced an internal error, please try again in a bit.
RecaptchaErrorCodeErrorCodeInternalError = 100,
};
/// Swift implementation for RecaptchaTokenSwift that holds the response of a successful
/// execute call.
SWIFT_CLASS("_TtC19RecaptchaEnterprise14RecaptchaToken") SWIFT_DEPRECATED_MSG("Newer implementations return the Token as a string.")
@interface RecaptchaToken : NSObject
/// The Token to be used for verification.
@property (nonatomic, readonly, copy) NSString * _Nonnull recaptchaToken;
- (nonnull instancetype)init:(NSString * _Nonnull)mobilemivdvtyi OBJC_DESIGNATED_INITIALIZER SWIFT_DEPRECATED_MSG("Newer implementations return the Token as a string.");
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end
#endif
#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#if defined(__cplusplus)
#endif
#pragma clang diagnostic pop
#endif

View File

@ -0,0 +1,107 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
// swift-module-flags: -target arm64-apple-ios14.0-simulator -enable-objc-interop -enable-library-evolution -enforce-exclusivity=checked -O -enable-experimental-feature AccessLevelOnImport -enable-bare-slash-regex -module-name RecaptchaEnterprise -package-name googlemac/iPhone/recaptcha/enterprise
import CryptoKit
import DeviceCheck
import Foundation
import Network
import Swift
import UIKit
import WebKit
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
@objc @_inheritsConvenienceInitializers @objcMembers public class RecaptchaConstant : ObjectiveC.NSObject {
@objc public static let clientVersion: Swift.String
@objc public static let defaultTimeoutExecute: Swift.Double
@objc public static let defaultTimeoutInit: Swift.Double
@objc override dynamic public init()
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc public class Recaptcha : ObjectiveC.NSObject {
@objc public static func fetchClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public static func fetchClient(withSiteKey siteKey: Swift.String) async throws -> RecaptchaEnterprise.RecaptchaClient
#endif
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, withTimeout timeout: Swift.Double, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(siteKey: Swift.String, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
@objc public enum RecaptchaActionType : Swift.Int {
case login
case signup
case other
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaAction : ObjectiveC.NSObject {
convenience public init(customAction: Swift.String)
@available(*, deprecated, message: "Please use customAction with the regular RecaptchaAction.custom() function")
@objc public init(action: RecaptchaEnterprise.RecaptchaActionType)
@objc public static let login: RecaptchaEnterprise.RecaptchaAction
@objc public static let signup: RecaptchaEnterprise.RecaptchaAction
@objc public static func custom(_ action: Swift.String) -> RecaptchaEnterprise.RecaptchaAction
@objc deinit
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaClient : ObjectiveC.NSObject {
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double = RecaptchaConstant.defaultTimeoutExecute) async throws -> Swift.String
#endif
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use `execute(withAction:completion:)` instead.")
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaToken?, RecaptchaEnterprise.RecaptchaError?) -> Swift.Void)
@objc deinit
}
@objc public enum RecaptchaErrorCode : Swift.Int {
case errorCodeUnknown = 0
case errorNetworkError = 1
case errorInvalidSiteKey = 2
case erroInvalidKeyType = 3
case errorInvalidPackageName = 4
case errorInvalidAction = 5
case errorInvalidTimeout = 6
case errorNoNetwork = 7
case errorCodeInternalError = 100
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaError : Foundation.NSError {
@objc public var errorCode: RecaptchaEnterprise.RecaptchaErrorCode {
@objc get
}
@objc public var errorMessage: Swift.String {
@objc get
}
@objc deinit
}
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public class RecaptchaToken : ObjectiveC.NSObject {
@objc final public let recaptchaToken: Swift.String
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public init(_ mobilemivdvtyi: Swift.String)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Equatable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Hashable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.RawRepresentable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Equatable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Hashable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.RawRepresentable {}

View File

@ -0,0 +1,107 @@
// swift-interface-format-version: 1.0
// swift-compiler-version: Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
// swift-module-flags: -target x86_64-apple-ios12.0-simulator -enable-objc-interop -enable-library-evolution -enforce-exclusivity=checked -O -enable-experimental-feature AccessLevelOnImport -enable-bare-slash-regex -module-name RecaptchaEnterprise -package-name googlemac/iPhone/recaptcha/enterprise
import CryptoKit
import DeviceCheck
import Foundation
import Network
import Swift
import UIKit
import WebKit
import _Concurrency
import _StringProcessing
import _SwiftConcurrencyShims
@objc @_inheritsConvenienceInitializers @objcMembers public class RecaptchaConstant : ObjectiveC.NSObject {
@objc public static let clientVersion: Swift.String
@objc public static let defaultTimeoutExecute: Swift.Double
@objc public static let defaultTimeoutInit: Swift.Double
@objc override dynamic public init()
@objc deinit
}
@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc public class Recaptcha : ObjectiveC.NSObject {
@objc public static func fetchClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public static func fetchClient(withSiteKey siteKey: Swift.String) async throws -> RecaptchaEnterprise.RecaptchaClient
#endif
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, withTimeout timeout: Swift.Double, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(withSiteKey siteKey: Swift.String, completion: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use the new api `fetchClient(withSiteKey:completion:)` instead.")
@objc public static func getClient(siteKey: Swift.String, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaClient?, Foundation.NSError?) -> Swift.Void)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
@objc public enum RecaptchaActionType : Swift.Int {
case login
case signup
case other
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaAction : ObjectiveC.NSObject {
convenience public init(customAction: Swift.String)
@available(*, deprecated, message: "Please use customAction with the regular RecaptchaAction.custom() function")
@objc public init(action: RecaptchaEnterprise.RecaptchaActionType)
@objc public static let login: RecaptchaEnterprise.RecaptchaAction
@objc public static let signup: RecaptchaEnterprise.RecaptchaAction
@objc public static func custom(_ action: Swift.String) -> RecaptchaEnterprise.RecaptchaAction
@objc deinit
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaClient : ObjectiveC.NSObject {
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
#if compiler(>=5.3) && $AsyncAwait
@available(iOS 13.0, *)
public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, withTimeout timeout: Swift.Double = RecaptchaConstant.defaultTimeoutExecute) async throws -> Swift.String
#endif
@objc public func execute(withAction action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completion: @escaping (Swift.String?, Foundation.NSError?) -> Swift.Void)
@available(*, deprecated, message: "Use `execute(withAction:completion:)` instead.")
@objc public func execute(_ action: RecaptchaEnterprise.RecaptchaAction, completionHandler: @escaping (RecaptchaEnterprise.RecaptchaToken?, RecaptchaEnterprise.RecaptchaError?) -> Swift.Void)
@objc deinit
}
@objc public enum RecaptchaErrorCode : Swift.Int {
case errorCodeUnknown = 0
case errorNetworkError = 1
case errorInvalidSiteKey = 2
case erroInvalidKeyType = 3
case errorInvalidPackageName = 4
case errorInvalidAction = 5
case errorInvalidTimeout = 6
case errorNoNetwork = 7
case errorCodeInternalError = 100
public init?(rawValue: Swift.Int)
public typealias RawValue = Swift.Int
public var rawValue: Swift.Int {
get
}
}
@_hasMissingDesignatedInitializers @objc public class RecaptchaError : Foundation.NSError {
@objc public var errorCode: RecaptchaEnterprise.RecaptchaErrorCode {
@objc get
}
@objc public var errorMessage: Swift.String {
@objc get
}
@objc deinit
}
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public class RecaptchaToken : ObjectiveC.NSObject {
@objc final public let recaptchaToken: Swift.String
@available(*, deprecated, message: "Newer implementations return the Token as a string.")
@objc public init(_ mobilemivdvtyi: Swift.String)
@objc deinit
}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Equatable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.Hashable {}
@available(*, deprecated, message: "Use RecaptchaAction enums instead.")
extension RecaptchaEnterprise.RecaptchaActionType : Swift.RawRepresentable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Equatable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.Hashable {}
extension RecaptchaEnterprise.RecaptchaErrorCode : Swift.RawRepresentable {}

View File

@ -0,0 +1,4 @@
framework module RecaptchaEnterprise {
header "RecaptchaEnterprise.h"
requires objc
}

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeDeviceID</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypePerformanceData</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeProductInteraction</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>