From 9d325d3d63c49fed9ac0f73befb1038f72d2696a Mon Sep 17 00:00:00 2001 From: Hitesh Maurya Date: Sat, 2 Aug 2025 12:53:47 +0530 Subject: [PATCH 1/2] Creates recaptcha-enterprise provider and provider factory --- .../AppCheckRecaptchaEnterpriseProvider.swift | 73 +++++++++++++++++++ ...ckRecaptchaEnterpriseProviderFactory.swift | 4 + 2 files changed, 77 insertions(+) create mode 100644 FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift create mode 100644 FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift diff --git a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift new file mode 100644 index 00000000000..2d5d07e13d4 --- /dev/null +++ b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift @@ -0,0 +1,73 @@ +import Foundation +import FirebaseCore +import RecaptchaEnterpriseProvider + + +class AppCheckRecaptchaEnterpriseProvider:NSObject, AppCheckProvider{ + private let recaptchaEnterpriseProvider: AppCheckCoreRecaptchaEnterpriseProvider + + init(recaptchaEnterpriseProvider: AppCheckCoreRecaptchaEnterpriseProvider) { + self.recaptchaEnterpriseProvider = recaptchaEnterpriseProvider + super.init(); + } + + convenience init(app: FirebaseApp,siteKey:String) { + let missingOptionsFields = AppCheckValidator.tokenExchangeMissingFields(in: app.options) + +// if !missingOptionsFields.isEmpty { +//// ("AppCheck", +//// "RecaptchaEnterpriseIncompleteFIROptions", +//// "Cannot instantiate 'AppCheckRecaptchaEnterpriseProvider' for app: @. The following 'FirebaseOptions' fields are missing: @", +//// app.name, missingOptionsFields.joined(separator: ", ")) +// return +// } + let recaptchaEnterpriseProvider = AppCheckCoreRecaptchaEnterpriseProvider( + siteKey:siteKey, + resourceName:app.name, + APIKey: app.options.apiKey!, + requestHooks:[/*app.heartbeatLogger.requestHook()*/] //TODO: Add HeartBeatLogger + ) + self.init(recaptchaEnterpriseProvider:recaptchaEnterpriseProvider) + + } + + func getToken(completion handler: @escaping(AppCheckToken?, Error?)->Void){ + recaptchaEnterpriseProvider.getToken{ +token, +error in + if let error = error { + handler(nil,error) + return + } + + if let token=token{ + handler(AppCheckToken(token: token.token, expirationDate: token.expirationDate),nil) + }else{ + handler( + nil, + NSError(domain:"AppCheckProviderError",code:-1,userInfo:[NSLocalizedDescriptionKey:"Internal token missing without an error"]) + ) + } + } + } + + func getLimitedUseToken(completion handler: @escaping(AppCheckToken?,Error?)->Void){ + recaptchaEnterpriseProvider.getLimitedUseToken {token,error in + if let error=error{ + handler(nil,error) + return + } + + if let token=token{ + handler(AppCheckToken(token:token.token,expirationDate:token.expirationDate),nil) + }else{ + handler( + nil, + NSError(domain:"AppCheckProviderError",code:-1,userInfo:[NSLocalizedDescriptionKey:"Internal token missing without an error"]) + ) + } + } + } + +} + diff --git a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift new file mode 100644 index 00000000000..a35f5d313b2 --- /dev/null +++ b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift @@ -0,0 +1,4 @@ +import Foundation +import SharedAppCheck +import RecaptchaEnterpriseProvider + From efe3a513d5598cdf98d5abaccf0722d213d5fce2 Mon Sep 17 00:00:00 2001 From: Hitesh Maurya Date: Fri, 8 Aug 2025 12:08:45 +0530 Subject: [PATCH 2/2] Adds RecaptchaEnterpriseProvider and RecaptchaEnterpriseProviderFactory --- .../AppAttestProvider/FIRAppAttestProvider.m | 8 ++-- .../Core/Errors/FIRAppCheckErrorUtil.m | 2 +- .../Sources/Core/Errors/FIRAppCheckErrors.m | 2 +- .../Sources/Core/FIRApp+AppCheck.m | 2 +- FirebaseAppCheck/Sources/Core/FIRAppCheck.m | 24 ++++++------ .../Sources/Core/FIRAppCheckComponent.m | 6 +-- .../Sources/Core/FIRAppCheckLogger.m | 4 +- .../Sources/Core/FIRAppCheckSettings.m | 4 +- .../Sources/Core/FIRAppCheckToken.m | 2 +- .../Sources/Core/FIRAppCheckTokenResult.m | 2 +- .../Sources/Core/FIRAppCheckValidator.m | 4 +- .../Core/FIRHeartbeatLogger+AppCheck.m | 2 +- .../Core/FIRInternalAppCheckProvider.m | 6 +-- .../Core/{ => Public/Core}/FIRApp+AppCheck.h | 2 +- .../{ => Public/Core}/FIRAppCheck+Internal.h | 2 +- .../Public/Core}/FIRAppCheck.h | 0 .../Core}/FIRAppCheckErrorUtil.h | 2 +- .../Public/Core}/FIRAppCheckErrors.h | 0 .../{ => Public/Core}/FIRAppCheckLogger.h | 2 +- .../Public/Core}/FIRAppCheckProvider.h | 0 .../Public/Core}/FIRAppCheckProviderFactory.h | 0 .../{ => Public/Core}/FIRAppCheckSettings.h | 0 .../Core}/FIRAppCheckToken+Internal.h | 2 +- .../Public/Core}/FIRAppCheckToken.h | 0 .../Core}/FIRAppCheckTokenResult.h | 0 .../{ => Public/Core}/FIRAppCheckValidator.h | 2 +- .../Core}/FIRHeartbeatLogger+AppCheck.h | 2 +- .../Core}/FIRInternalAppCheckProvider.h | 0 .../DebugProvider/FIRAppCheckDebugProvider.m | 10 ++--- .../FIRAppCheckDebugProviderFactory.m | 2 +- .../FIRDeviceCheckProvider.m | 10 ++--- .../FIRDeviceCheckProviderFactory.m | 2 +- .../FirebaseAppCheck/FIRAppAttestProvider.h | 2 +- .../FIRAppCheckDebugProvider.h | 2 +- .../FIRAppCheckDebugProviderFactory.h | 2 +- .../FirebaseAppCheck/FIRDeviceCheckProvider.h | 2 +- .../FIRDeviceCheckProviderFactory.h | 2 +- .../FirebaseAppCheck/FirebaseAppCheck.h | 10 ++--- .../AppCheckRecaptchaEnterpriseProvider.swift | 34 ++++++++++------ ...ckRecaptchaEnterpriseProviderFactory.swift | 32 ++++++++++++++- Package.swift | 39 +++++++++++++++++-- 41 files changed, 153 insertions(+), 78 deletions(-) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRApp+AppCheck.h (93%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheck+Internal.h (91%) rename FirebaseAppCheck/Sources/{Public/FirebaseAppCheck => Core/Public/Core}/FIRAppCheck.h (100%) rename FirebaseAppCheck/Sources/Core/{Errors => Public/Core}/FIRAppCheckErrorUtil.h (90%) rename FirebaseAppCheck/Sources/{Public/FirebaseAppCheck => Core/Public/Core}/FIRAppCheckErrors.h (100%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheckLogger.h (95%) rename FirebaseAppCheck/Sources/{Public/FirebaseAppCheck => Core/Public/Core}/FIRAppCheckProvider.h (100%) rename FirebaseAppCheck/Sources/{Public/FirebaseAppCheck => Core/Public/Core}/FIRAppCheckProviderFactory.h (100%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheckSettings.h (100%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheckToken+Internal.h (95%) rename FirebaseAppCheck/Sources/{Public/FirebaseAppCheck => Core/Public/Core}/FIRAppCheckToken.h (100%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheckTokenResult.h (100%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRAppCheckValidator.h (97%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRHeartbeatLogger+AppCheck.h (93%) rename FirebaseAppCheck/Sources/Core/{ => Public/Core}/FIRInternalAppCheckProvider.h (100%) diff --git a/FirebaseAppCheck/Sources/AppAttestProvider/FIRAppAttestProvider.m b/FirebaseAppCheck/Sources/AppAttestProvider/FIRAppAttestProvider.m index 9ed9232fdd9..392f441cc4e 100644 --- a/FirebaseAppCheck/Sources/AppAttestProvider/FIRAppAttestProvider.m +++ b/FirebaseAppCheck/Sources/AppAttestProvider/FIRAppAttestProvider.m @@ -18,10 +18,10 @@ #import -#import "FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" -#import "FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h" +#import "Core/FIRApp+AppCheck.h" +#import +#import "Core/FIRAppCheckToken+Internal.h" +#import "Core/FIRHeartbeatLogger+AppCheck.h" #import "FirebaseCore/Extension/FirebaseCoreInternal.h" diff --git a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.m b/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.m index 67ad05133ae..7e4af0fd16c 100644 --- a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.m +++ b/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.h" +#import "Core/FIRAppCheckErrorUtil.h" #import diff --git a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrors.m b/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrors.m index 2146ba7ea7a..f68af13f74f 100644 --- a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrors.m +++ b/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrors.m @@ -16,6 +16,6 @@ #import -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckErrors.h" +#import "Core/FIRAppCheckErrors.h" NSErrorDomain const FIRAppCheckErrorDomain = @"com.firebase.appCheck"; diff --git a/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.m b/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.m index 6616566e8d2..457e46476f0 100644 --- a/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.m +++ b/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h" +#import "Core/FIRApp+AppCheck.h" @implementation FIRApp (AppCheck) diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheck.m b/FirebaseAppCheck/Sources/Core/FIRAppCheck.m index 86bf0ffb0b2..69fcae42e74 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheck.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheck.m @@ -14,23 +14,23 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h" +#import "Public/Core/FIRAppCheck.h" #import #import #import -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckErrors.h" -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProvider.h" -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProviderFactory.h" - -#import "FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheck+Internal.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.h" -#import "FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.h" +#import "Public/Core/FIRAppCheckErrors.h" +#import "Public/Core/FIRAppCheckProvider.h" +#import "Public/Core/FIRAppCheckProviderFactory.h" + +#import "Public/Core/FIRAppCheckErrorUtil.h" +#import "Public/Core/FIRAppCheck+Internal.h" +#import "Public/Core/FIRAppCheckLogger.h" +#import "Public/Core/FIRAppCheckSettings.h" +#import "Public/Core/FIRAppCheckToken+Internal.h" +#import "Public/Core/FIRAppCheckTokenResult.h" +#import "Public/Core/FIRInternalAppCheckProvider.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckComponent.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckComponent.m index 872c9b32cb0..c34fae4ded2 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckComponent.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckComponent.m @@ -18,10 +18,10 @@ #import -#import "FirebaseAppCheck/Sources/Core/FIRAppCheck+Internal.h" -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h" +#import "Public/Core/FIRAppCheck+Internal.h" +#import "Public/Core/FIRAppCheck.h" -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../../FirebaseCore/Extension/FirebaseCoreInternal.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.m index 3c001b22326..76fb8599223 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.m @@ -14,9 +14,9 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" +#import "Core/FIRAppCheckLogger.h" -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../FirebaseCore/Extension/FirebaseCoreInternal.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.m index a9486925304..1a967d8c915 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.m @@ -14,11 +14,11 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h" +#import "Core/FIRAppCheckSettings.h" #import -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../FirebaseCore/Extension/FirebaseCoreInternal.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckToken.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckToken.m index 1067a2dcc16..6a6cf5d69e4 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckToken.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckToken.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" +#import "Core/FIRAppCheckToken+Internal.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.m index b1f27716391..c2a74d804cb 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.h" +#import "Core/FIRAppCheckTokenResult.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.m b/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.m index 53b001e1604..8e6a21d0581 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.m +++ b/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.m @@ -14,9 +14,9 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h" +#import "Public/Core/FIRAppCheckValidator.h" -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../FirebaseCore/Extension/FirebaseCoreInternal.h" @implementation FIRAppCheckValidator diff --git a/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.m b/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.m index 25ad308f253..96ee9e6de9e 100644 --- a/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.m +++ b/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.m @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h" +#import "Public/Core/FIRHeartbeatLogger+AppCheck.h" /// The HTTP request header key for a heartbeat logging payload. static NSString *const kFIRHeartbeatLoggerPayloadHeaderKey = @"X-firebase-client"; diff --git a/FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.m b/FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.m index 5e41f0c2add..018d06e6570 100644 --- a/FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.m +++ b/FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.m @@ -14,10 +14,10 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.h" +#import "Public/Core/FIRInternalAppCheckProvider.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProvider.h" +#import +#import "Core/FIRAppCheckProvider.h" @interface FIRInternalAppCheckProvider () diff --git a/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRApp+AppCheck.h similarity index 93% rename from FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRApp+AppCheck.h index 4a6761fa4d2..8058d880c10 100644 --- a/FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRApp+AppCheck.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../../FirebaseCore/Extension/FirebaseCoreInternal.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheck+Internal.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheck+Internal.h similarity index 91% rename from FirebaseAppCheck/Sources/Core/FIRAppCheck+Internal.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheck+Internal.h index d03976f37e7..daf47acbad2 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheck+Internal.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheck+Internal.h @@ -16,7 +16,7 @@ #import -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h" +#import "Core/FIRAppCheck.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheck.h similarity index 100% rename from FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheck.h diff --git a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckErrorUtil.h similarity index 90% rename from FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckErrorUtil.h index b5d54574d10..bf596dc38b1 100644 --- a/FirebaseAppCheck/Sources/Core/Errors/FIRAppCheckErrorUtil.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckErrorUtil.h @@ -16,7 +16,7 @@ #import -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckErrors.h" +#import "Core/FIRAppCheckErrors.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckErrors.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckErrors.h similarity index 100% rename from FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckErrors.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckErrors.h diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckLogger.h similarity index 95% rename from FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckLogger.h index 3f2fce59da5..6a45faaa85b 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckLogger.h @@ -18,7 +18,7 @@ #import -#import "FirebaseCore/Extension/FirebaseCoreInternal.h" +#import "../../FirebaseCore/Extension/FirebaseCoreInternal.h" extern FIRLoggerService kFIRLoggerAppCheck; diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProvider.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckProvider.h similarity index 100% rename from FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProvider.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckProvider.h diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProviderFactory.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckProviderFactory.h similarity index 100% rename from FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckProviderFactory.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckProviderFactory.h diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckSettings.h similarity index 100% rename from FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckSettings.h diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckToken+Internal.h similarity index 95% rename from FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckToken+Internal.h index b9237a51b7e..116144561b2 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckToken+Internal.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckToken.h" +#import "Core/FIRAppCheckToken.h" #import diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckToken.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckToken.h similarity index 100% rename from FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckToken.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckToken.h diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckTokenResult.h similarity index 100% rename from FirebaseAppCheck/Sources/Core/FIRAppCheckTokenResult.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckTokenResult.h diff --git a/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckValidator.h similarity index 97% rename from FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckValidator.h index c699d957c11..bcc264e2872 100644 --- a/FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRAppCheckValidator.h @@ -19,7 +19,7 @@ @class FIROptions; NS_ASSUME_NONNULL_BEGIN - +NS_SWIFT_NAME(AppCheckValidator) @interface FIRAppCheckValidator : NSObject // `FIRAppCheckValidator` doesn’t provide any instance methods. diff --git a/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRHeartbeatLogger+AppCheck.h similarity index 93% rename from FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRHeartbeatLogger+AppCheck.h index bc90f7d2620..21c35105fd5 100644 --- a/FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h +++ b/FirebaseAppCheck/Sources/Core/Public/Core/FIRHeartbeatLogger+AppCheck.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#import "FirebaseCore/Extension/FIRHeartbeatLogger.h" +#import "../../FirebaseCore/Extension/FIRHeartbeatLogger.h" #import diff --git a/FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.h b/FirebaseAppCheck/Sources/Core/Public/Core/FIRInternalAppCheckProvider.h similarity index 100% rename from FirebaseAppCheck/Sources/Core/FIRInternalAppCheckProvider.h rename to FirebaseAppCheck/Sources/Core/Public/Core/FIRInternalAppCheckProvider.h diff --git a/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProvider.m b/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProvider.m index 9d8d152abc3..1c6b435e7a3 100644 --- a/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProvider.m +++ b/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProvider.m @@ -18,11 +18,11 @@ #import -#import "FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h" -#import "FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h" +#import "Core/FIRApp+AppCheck.h" +#import +#import +#import +#import #import "FirebaseCore/Extension/FirebaseCoreInternal.h" diff --git a/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProviderFactory.m b/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProviderFactory.m index e9980fead80..7c706b01253 100644 --- a/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProviderFactory.m +++ b/FirebaseAppCheck/Sources/DebugProvider/FIRAppCheckDebugProviderFactory.m @@ -16,7 +16,7 @@ #import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProviderFactory.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" +#import #import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProvider.h" NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProvider.m b/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProvider.m index e5dada66e37..1ec07405fc1 100644 --- a/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProvider.m +++ b/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProvider.m @@ -20,11 +20,11 @@ #import -#import "FirebaseAppCheck/Sources/Core/FIRApp+AppCheck.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckLogger.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckToken+Internal.h" -#import "FirebaseAppCheck/Sources/Core/FIRAppCheckValidator.h" -#import "FirebaseAppCheck/Sources/Core/FIRHeartbeatLogger+AppCheck.h" +#import "Core/FIRApp+AppCheck.h" +#import +#import +#import +#import #import "FirebaseCore/Extension/FirebaseCoreInternal.h" diff --git a/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProviderFactory.m b/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProviderFactory.m index 908c0af2d19..2973bae868b 100644 --- a/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProviderFactory.m +++ b/FirebaseAppCheck/Sources/DeviceCheckProvider/FIRDeviceCheckProviderFactory.m @@ -16,7 +16,7 @@ #import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProviderFactory.h" -#import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheck.h" +#import #import "FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProvider.h" @implementation FIRDeviceCheckProviderFactory diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppAttestProvider.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppAttestProvider.h index e75042102ff..40749b147d0 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppAttestProvider.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppAttestProvider.h @@ -16,7 +16,7 @@ #import -#import "FIRAppCheckProvider.h" +#import #import "FIRAppCheckAvailability.h" diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProvider.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProvider.h index 08502c6d8f6..673f69e498c 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProvider.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProvider.h @@ -16,7 +16,7 @@ #import -#import "FIRAppCheckProvider.h" +#import @class FIRApp; diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProviderFactory.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProviderFactory.h index 07f9bd138dc..857efe88982 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProviderFactory.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRAppCheckDebugProviderFactory.h @@ -16,7 +16,7 @@ #import -#import "FIRAppCheckProviderFactory.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProvider.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProvider.h index ae0f88de50c..e21154fb3b9 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProvider.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProvider.h @@ -17,7 +17,7 @@ #import #import "FIRAppCheckAvailability.h" -#import "FIRAppCheckProvider.h" +#import @class FIRApp; @protocol FIRDeviceCheckAPIServiceProtocol; diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProviderFactory.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProviderFactory.h index e20bb9869e7..98e535a28e4 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProviderFactory.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FIRDeviceCheckProviderFactory.h @@ -17,7 +17,7 @@ #import #import "FIRAppCheckAvailability.h" -#import "FIRAppCheckProviderFactory.h" +#import NS_ASSUME_NONNULL_BEGIN diff --git a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FirebaseAppCheck.h b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FirebaseAppCheck.h index 807336e29b4..adbcd8b7e49 100644 --- a/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FirebaseAppCheck.h +++ b/FirebaseAppCheck/Sources/Public/FirebaseAppCheck/FirebaseAppCheck.h @@ -14,11 +14,11 @@ * limitations under the License. */ -#import "FIRAppCheck.h" -#import "FIRAppCheckErrors.h" -#import "FIRAppCheckProvider.h" -#import "FIRAppCheckProviderFactory.h" -#import "FIRAppCheckToken.h" +#import +#import +#import +#import +#import // Debug provider #import "FIRAppCheckDebugProvider.h" diff --git a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift index 2d5d07e13d4..3d82198d708 100644 --- a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift +++ b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProvider.swift @@ -1,7 +1,24 @@ import Foundation +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import FirebaseCore import RecaptchaEnterpriseProvider - +import AppCheckCore +import FirebaseAppCheckCore class AppCheckRecaptchaEnterpriseProvider:NSObject, AppCheckProvider{ private let recaptchaEnterpriseProvider: AppCheckCoreRecaptchaEnterpriseProvider @@ -13,22 +30,17 @@ class AppCheckRecaptchaEnterpriseProvider:NSObject, AppCheckProvider{ convenience init(app: FirebaseApp,siteKey:String) { let missingOptionsFields = AppCheckValidator.tokenExchangeMissingFields(in: app.options) - -// if !missingOptionsFields.isEmpty { -//// ("AppCheck", -//// "RecaptchaEnterpriseIncompleteFIROptions", -//// "Cannot instantiate 'AppCheckRecaptchaEnterpriseProvider' for app: @. The following 'FirebaseOptions' fields are missing: @", -//// app.name, missingOptionsFields.joined(separator: ", ")) -// return -// } let recaptchaEnterpriseProvider = AppCheckCoreRecaptchaEnterpriseProvider( siteKey:siteKey, - resourceName:app.name, + resourceName:app.resourceName, APIKey: app.options.apiKey!, - requestHooks:[/*app.heartbeatLogger.requestHook()*/] //TODO: Add HeartBeatLogger + requestHooks:[app.heartbeatLogger.requestHook()] //TODO: Add HeartBeatLogger ) self.init(recaptchaEnterpriseProvider:recaptchaEnterpriseProvider) + if !missingOptionsFields.isEmpty { + return + } } func getToken(completion handler: @escaping(AppCheckToken?, Error?)->Void){ diff --git a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift index a35f5d313b2..d132166a595 100644 --- a/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift +++ b/FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider/AppCheckRecaptchaEnterpriseProviderFactory.swift @@ -1,4 +1,34 @@ +/* + * Copyright 2021 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + import Foundation -import SharedAppCheck import RecaptchaEnterpriseProvider +import FirebaseAppCheckCore + +@objc(FIRRecaptchaEnterpriseProviderFactory) +public final class RecaptchaEnterpriseProviderFactory: NSObject, AppCheckProviderFactory{ + let siteKey:String; + + public init (siteKey:String){ + self.siteKey=siteKey; + } +public func createProvider(with app: FirebaseApp) -> (any AppCheckProvider)? { + return AppCheckRecaptchaEnterpriseProvider(app:app, siteKey:siteKey) + } + + +} diff --git a/Package.swift b/Package.swift index 1ef46aa47ef..7129016fa49 100644 --- a/Package.swift +++ b/Package.swift @@ -50,7 +50,7 @@ let package = Package( ), .library( name: "FirebaseAppCheck", - targets: ["FirebaseAppCheck"] + targets: ["FirebaseAppCheck","FirebaseAppCheckRecaptchaEnterpriseProvider"] ), .library( name: "FirebaseAppDistribution-Beta", @@ -165,8 +165,7 @@ let package = Package( url: "https://github.com/google/interop-ios-for-google-sdks.git", "101.0.0" ..< "102.0.0" ), - .package(url: "https://github.com/google/app-check.git", - "11.0.1" ..< "12.0.0"), + .package(path:"../app-check"), ], targets: [ .target( @@ -1296,11 +1295,13 @@ let package = Package( dependencies: [ "FirebaseAppCheckInterop", "FirebaseCore", + "FirebaseAppCheckCore", .product(name: "AppCheckCore", package: "app-check"), .product(name: "GULEnvironment", package: "GoogleUtilities"), .product(name: "GULUserDefaults", package: "GoogleUtilities"), ], path: "FirebaseAppCheck/Sources", + exclude:["RecaptchaEnterpriseProvider","Core"], publicHeadersPath: "Public", cSettings: [ .headerSearchPath("../.."), @@ -1348,6 +1349,38 @@ let package = Package( .swiftLanguageMode(SwiftLanguageMode.v5), ] ), + + .target( + name:"FirebaseAppCheckCore", + dependencies:[ + "FirebaseAppCheckInterop", + "FirebaseCore", + "FirebaseCoreExtension", + .product(name: "AppCheckCore", package: "app-check"), + ], + path:"FirebaseAppCheck/Sources/Core", + publicHeadersPath: "Public", + cSettings: [ + .headerSearchPath("../.."), + ], + linkerSettings: [ + .linkedFramework( + "DeviceCheck", + .when(platforms: [.iOS, .macCatalyst, .macOS, .tvOS]) + ), + ] + ), + .target( + name:"FirebaseAppCheckRecaptchaEnterpriseProvider", + dependencies:[ + "FirebaseAppCheck", + "FirebaseAppCheckInterop", + "FirebaseCore", + "FirebaseCoreExtension", + .product(name: "AppCheckCore", package: "app-check"), + ], + path: "FirebaseAppCheck/Sources/RecaptchaEnterpriseProvider", + ), // MARK: Testing support