OTCuttlefishContext.h [plain text]
#if OCTAGON
#ifndef OTCUTTLEFISH_CONTEXT
#define OTCUTTLEFISH_CONTEXT
#import <ApplePushService/ApplePushService.h>
#import <Foundation/Foundation.h>
#import <CloudKit/CloudKit.h>
#import <CloudKit/CloudKit_Private.h>
#import "keychain/ckks/OctagonAPSReceiver.h"
#import "keychain/ckks/CKKSAccountStateTracker.h"
#import "keychain/ckks/CKKSCondition.h"
#import "keychain/TrustedPeersHelper/TrustedPeersHelperProtocol.h"
#import "OTDeviceInformation.h"
#import "keychain/ot/OTConstants.h"
#import "keychain/ot/OTDefines.h"
#import "keychain/ot/OTClique.h"
#import "keychain/ot/OTFollowup.h"
#import "keychain/ot/OTSOSAdapter.h"
#import "keychain/ot/OTAuthKitAdapter.h"
#import "keychain/ot/OTDeviceInformationAdapter.h"
#import "keychain/ot/OTCuttlefishAccountStateHolder.h"
#import "keychain/ot/OctagonStateMachineHelpers.h"
#import "keychain/ot/OctagonStateMachine.h"
#import "keychain/ot/proto/generated_source/OTAccountMetadataClassC.h"
#import <KeychainCircle/PairingChannel.h>
#import "keychain/ot/OTJoiningConfiguration.h"
#import "keychain/ot/OTOperationDependencies.h"
#import "keychain/ot/CuttlefishXPCWrapper.h"
#import "keychain/escrowrequest/Framework/SecEscrowRequest.h"
#import <CoreCDP/CDPAccount.h>
#import "keychain/ckks/CKKSLockStateTracker.h"
#import "keychain/ckks/CKKSReachabilityTracker.h"
#import "keychain/ckks/CKKSViewManager.h"
#import "keychain/ckks/CKKSKeychainView.h"
NS_ASSUME_NONNULL_BEGIN
@interface OTCuttlefishContext : NSObject <OctagonCuttlefishUpdateReceiver,
OTAuthKitAdapterNotifier,
OctagonStateMachineEngine,
CKKSCloudKitAccountStateListener,
CKKSPeerUpdateListener,
OTDeviceInformationNameUpdateListener>
@property (readonly) CuttlefishXPCWrapper* cuttlefishXPCWrapper;
@property (readonly) OTFollowup *followupHandler;
@property (readonly) NSString *containerName;
@property (readonly) NSString *contextID;
@property (readonly) NSString *altDSID;
@property (nonatomic,strong) NSString *_Nullable pairingUUID;
@property (nonatomic, readonly) CKKSLockStateTracker *lockStateTracker;
@property (nonatomic, readonly) OTCuttlefishAccountStateHolder* accountMetadataStore;
@property (readonly) OctagonStateMachine* stateMachine;
@property (nullable, nonatomic) CKKSNearFutureScheduler* apsRateLimiter;
@property (nullable, nonatomic) CKKSNearFutureScheduler* sosConsistencyRateLimiter;
@property (readonly, nullable) CKKSViewManager* viewManager;
@property (readonly) id<OTDeviceInformationAdapter> deviceAdapter;
@property id<OTAuthKitAdapter> authKitAdapter;
@property dispatch_queue_t queue;
- (instancetype)initWithContainerName:(NSString*)containerName
contextID:(NSString*)contextID
cuttlefish:(id<NSXPCProxyCreating>)cuttlefish
sosAdapter:(id<OTSOSAdapter>)sosAdapter
authKitAdapter:(id<OTAuthKitAdapter>)authKitAdapter
ckksViewManager:(CKKSViewManager* _Nullable)viewManager
lockStateTracker:(CKKSLockStateTracker*)lockStateTracker
reachabilityTracker:(CKKSReachabilityTracker*)reachabilityTracker
accountStateTracker:(id<CKKSCloudKitAccountStateTrackingProvider, CKKSOctagonStatusMemoizer>)accountStateTracker
deviceInformationAdapter:(id<OTDeviceInformationAdapter>)deviceInformationAdapter
apsConnectionClass:(Class<OctagonAPSConnection>)apsConnectionClass
escrowRequestClass:(Class<SecEscrowRequestable>)escrowRequestClass
cdpd:(id<OctagonFollowUpControllerProtocol>)cdpd;
- (BOOL)accountAvailable:(NSString*)altDSID error:(NSError**)error;
- (BOOL)accountNoLongerAvailable:(NSError**)error;
- (BOOL)idmsTrustLevelChanged:(NSError**)error;
- (OTCDPStatus)getCDPStatus:(NSError* __autoreleasing *)error;
- (BOOL)setCDPEnabled:(NSError* __autoreleasing *)error;
- (void)deviceNameUpdated;
- (void)startOctagonStateMachine;
- (void)handlePairingRestart:(OTJoiningConfiguration*)config;
- (void)rpcPrepareIdentityAsApplicantWithConfiguration:(OTJoiningConfiguration*)config
epoch:(uint64_t)epoch
reply:(void (^)(NSString * _Nullable peerID,
NSData * _Nullable permanentInfo,
NSData * _Nullable permanentInfoSig,
NSData * _Nullable stableInfo,
NSData * _Nullable stableInfoSig,
NSError * _Nullable error))reply;
- (void)rpcJoin:(NSData*)vouchData
vouchSig:(NSData*)vouchSig
reply:(void (^)(NSError * _Nullable error))reply;
- (void)rpcResetAndEstablish:(CuttlefishResetReason)resetReason reply:(nonnull void (^)(NSError * _Nullable))reply;
- (void)localReset:(nonnull void (^)(NSError * _Nullable))reply;
- (void)rpcEstablish:(nonnull NSString *)altDSID
reply:(nonnull void (^)(NSError * _Nullable))reply;
- (void)rpcLeaveClique:(nonnull void (^)(NSError * _Nullable))reply;
-(void)joinWithBottle:(NSString*)bottleID
entropy:(NSData *)entropy
bottleSalt:(NSString *)bottleSalt
reply:(void (^)(NSError * _Nullable error))reply;
-(void)joinWithRecoveryKey:(NSString*)recoveryKey
reply:(void (^)(NSError * _Nullable error))reply;
- (void)rpcRemoveFriendsInClique:(NSArray<NSString*>*)peerIDs
reply:(void (^)(NSError * _Nullable))reply;
- (void)notifyContainerChange:(APSIncomingMessage* _Nullable)notification;
- (void)notifyContainerChangeWithUserInfo:(NSDictionary*)userInfo;
- (void)rpcStatus:(void (^)(NSDictionary* _Nullable result, NSError* _Nullable error))reply;
- (void)rpcFetchEgoPeerID:(void (^)(NSString* _Nullable peerID, NSError* _Nullable error))reply;
- (void)rpcTrustStatus:(OTOperationConfiguration *)configuration
reply:(void (^)(CliqueStatus status,
NSString* _Nullable peerID,
NSDictionary<NSString*, NSNumber*>* _Nullable peerCountByModelID,
BOOL isExcluded,
BOOL isLocked,
NSError * _Nullable))reply;
- (void)rpcFetchDeviceNamesByPeerID:(void (^)(NSDictionary<NSString*, NSString*>* _Nullable peers, NSError* _Nullable error))reply;
- (void)rpcFetchAllViableBottles:(void (^)(NSArray<NSString*>* _Nullable sortedBottleIDs,
NSArray<NSString*>* _Nullable sortedPartialEscrowRecordIDs,
NSError* _Nullable error))reply;
- (void)rpcFetchAllViableEscrowRecords:(BOOL)forceFetch reply:(void (^)(NSArray<NSData*>* _Nullable records,
NSError* _Nullable error))reply;
- (void)rpcInvalidateEscrowCache:(void (^)(NSError* _Nullable error))reply;
- (void)fetchEscrowContents:(void (^)(NSData* _Nullable entropy,
NSString* _Nullable bottleID,
NSData* _Nullable signingPublicKey,
NSError* _Nullable error))reply;
- (void)rpcSetRecoveryKey:(NSString*)recoveryKey reply:(void (^)(NSError * _Nullable error))reply;
- (void)rpcRefetchCKKSPolicy:(void (^)(NSError * _Nullable error))reply;
- (void)rpcFetchUserControllableViewsSyncingStatus:(void (^)(BOOL areSyncing, NSError* _Nullable error))reply;
- (void)rpcSetUserControllableViewsSyncingStatus:(BOOL)status reply:(void (^)(BOOL areSyncing, NSError* _Nullable error))reply;
- (void)requestTrustedDeviceListRefresh;
- (OTDeviceInformation*)prepareInformation;
- (void) moveToCheckTrustedState;
- (OTOperationDependencies*)operationDependencies;
- (void)waitForOctagonUpgrade:(void (^)(NSError* error))reply NS_SWIFT_NAME(waitForOctagonUpgrade(reply:));
- (BOOL)waitForReady:(int64_t)timeOffset;
- (OTAccountMetadataClassC_AccountState)currentMemoizedAccountState;
- (OTAccountMetadataClassC_TrustState)currentMemoizedTrustState;
- (NSDate* _Nullable) currentMemoizedLastHealthCheck;
- (void)checkTrustStatusAndPostRepairCFUIfNecessary:(void (^ _Nullable)(CliqueStatus status, BOOL posted, BOOL hasIdentity, BOOL isLocked, NSError * _Nullable error))reply;
- (void)rpcResetAccountCDPContents:(void (^)(NSError* _Nullable error))reply;
- (void)clearCKKSViewManager;
@property (nullable) TPPolicyVersion* policyOverride;
- (void)checkOctagonHealth:(BOOL)skipRateLimitingCheck reply:(void (^)(NSError * _Nullable error))reply;
- (BOOL)machineIDOnMemoizedList:(NSString*)machineID error:(NSError**)error NS_SWIFT_NOTHROW;
- (TrustedPeersHelperEgoPeerStatus* _Nullable)egoPeerStatus:(NSError**)error;
@end
NS_ASSUME_NONNULL_END
#endif // OTCUTTLEFISH_CONTEXT
#endif