OTClientStateMachine.h [plain text]
#if OCTAGON
#import <ApplePushService/ApplePushService.h>
#import <Foundation/Foundation.h>
#import "keychain/ckks/OctagonAPSReceiver.h"
#import "keychain/TrustedPeersHelper/TrustedPeersHelperProtocol.h"
#import "keychain/ot/OTDefines.h"
#import "keychain/ot/OTSOSAdapter.h"
#import "keychain/ot/OctagonStateMachineHelpers.h"
#import "keychain/ot/OTCuttlefishContext.h"
#import "keychain/ot/proto/generated_source/OTAccountMetadataClassC.h"
#import <KeychainCircle/PairingChannel.h>
NS_ASSUME_NONNULL_BEGIN
extern OctagonState* const OctagonStateAcceptorBeginClientJoin;
extern OctagonState* const OctagonStateAcceptorEpochPrepared;
extern OctagonState* const OctagonStateAcceptorAwaitingIdentity;
extern OctagonState* const OctagonStateAcceptorVoucherPrepared;
extern OctagonState* const OctagonStateAcceptorDone;
NSDictionary<OctagonState*, NSNumber*>* OctagonClientStateMap(void);
@interface OTClientStateMachine : NSObject
@property (readonly) id<NSXPCProxyCreating> cuttlefishXPCConnection;
@property (readonly) NSString* containerName;
@property (readonly) NSString* contextID;
@property (readonly) NSString* clientName;
@property (readonly) OctagonState* currentState;
@property NSMutableDictionary<OctagonState*, CKKSCondition*>* stateConditions;
- (instancetype)initWithContainerName:(NSString*)containerName
contextID:(NSString*)contextID
clientName:(NSString*)clientName
cuttlefish:(id<NSXPCProxyCreating>)cuttlefish;
- (void)startOctagonStateMachine;
- (void)notifyContainerChange;
- (void)rpcEpoch:(OTCuttlefishContext*)cuttlefishContext
reply:(void (^)(uint64_t epoch,
NSError * _Nullable error))reply;
- (void)rpcVoucher:(OTCuttlefishContext*)cuttlefishContext
peerID:(NSString*)peerID
permanentInfo:(NSData *)permanentInfo
permanentInfoSig:(NSData *)permanentInfoSig
stableInfo:(NSData *)stableInfo
stableInfoSig:(NSData *)stableInfoSig
reply:(void (^)(NSData* voucher, NSData* voucherSig, NSError * _Nullable error))reply;
@end
NS_ASSUME_NONNULL_END
#endif