/* * 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 NS_ASSUME_NONNULL_BEGIN /// Represents different stages of App Attest attestation. typedef NS_ENUM(NSInteger, FIRAppAttestAttestationState) { /// App Attest is not supported on the current device. FIRAppAttestAttestationStateUnsupported, /// App Attest is supported, the App Attest key pair has been generated. FIRAppAttestAttestationStateSupportedInitial, /// App Attest key pair has been generated but has not been attested and registered with Firebase /// backend. FIRAppAttestAttestationStateKeyGenerated, /// App Attest key has been generated, attested with Apple backend and registered with Firebase /// backend. An encrypted artifact required to refresh FAC token is stored on the device. FIRAppAttestAttestationStateKeyRegistered, }; /// Represents attestation stages of App Attest. The class is designed to be used exclusively by /// `FIRAppAttestProvider`. @interface FIRAppAttestProviderState : NSObject /// App Attest attestation state. @property(nonatomic, readonly) FIRAppAttestAttestationState state; /// An error object when state is FIRAppAttestAttestationStateUnsupported. @property(nonatomic, nullable, readonly) NSError *appAttestUnsupportedError; /// An App Attest key ID when state is FIRAppAttestAttestationStateKeyGenerated or /// FIRAppAttestAttestationStateKeyRegistered. @property(nonatomic, nullable, readonly) NSString *appAttestKeyID; /// An attestation artifact received from Firebase backend when state is /// FIRAppAttestAttestationStateKeyRegistered. @property(nonatomic, nullable, readonly) NSData *attestationArtifact; - (instancetype)init NS_UNAVAILABLE; /// Init with FIRAppAttestAttestationStateUnsupported and an error describing issue. - (instancetype)initUnsupportedWithError:(NSError *)error; /// Init with FIRAppAttestAttestationStateSupportedInitial. - (instancetype)initWithSupportedInitialState; /// Init with FIRAppAttestAttestationStateKeyGenerated and the key ID. - (instancetype)initWithGeneratedKeyID:(NSString *)keyID; /// Init with FIRAppAttestAttestationStateKeyRegistered, the key ID and the attestation artifact /// received from Firebase backend. - (instancetype)initWithRegisteredKeyID:(NSString *)keyID artifact:(NSData *)artifact; @end NS_ASSUME_NONNULL_END