CKKSPeerProvider.h [plain text]
#if OCTAGON
#import <Foundation/Foundation.h>
#import "keychain/ckks/CKKSPeer.h"
#import "keychain/ckks/CKKSCurrentKeyPointer.h"
NS_ASSUME_NONNULL_BEGIN
@protocol CKKSPeerUpdateListener;
@class CKKSPeerProviderState;
#pragma mark - CKKSPeerProvider protocol
@protocol CKKSPeerProvider <NSObject>
@property (readonly) NSString* providerID;
@property BOOL essential;
- (CKKSSelves* _Nullable)fetchSelfPeers:(NSError* _Nullable __autoreleasing* _Nullable)error;
- (NSSet<id<CKKSRemotePeerProtocol>>* _Nullable)fetchTrustedPeers:(NSError* _Nullable __autoreleasing* _Nullable)error;
- (void)registerForPeerChangeUpdates:(id<CKKSPeerUpdateListener>)listener;
- (void)sendSelfPeerChangedUpdate;
- (void)sendTrustedPeerSetChangedUpdate;
- (CKKSPeerProviderState*)currentState;
@end
#pragma mark - CKKSPeerUpdateListener protocol
@protocol CKKSPeerUpdateListener <NSObject>
- (void)selfPeerChanged:(id<CKKSPeerProvider> _Nullable)provider;
- (void)trustedPeerSetChanged:(id<CKKSPeerProvider> _Nullable)provider;
@end
#pragma mark - CKKSPeerProviderState
@class CKKSKey;
@class CKKSTLKShareRecord;
@interface CKKSPeerProviderState : NSObject
@property NSString* peerProviderID;
@property BOOL essential;
@property (nonatomic, readonly, nullable) CKKSSelves* currentSelfPeers;
@property (nonatomic, readonly, nullable) NSError* currentSelfPeersError;
@property (nonatomic, readonly, nullable) NSSet<id<CKKSRemotePeerProtocol>>* currentTrustedPeers;
@property (nonatomic, readonly, nullable) NSSet<NSString*>* currentTrustedPeerIDs;
@property (nonatomic, readonly, nullable) NSError* currentTrustedPeersError;
- (instancetype)initWithPeerProviderID:(NSString*)providerID
essential:(BOOL)essential
selfPeers:(CKKSSelves* _Nullable)selfPeers
selfPeersError:(NSError* _Nullable)selfPeersError
trustedPeers:(NSSet<id<CKKSPeer>>* _Nullable)currentTrustedPeers
trustedPeersError:(NSError* _Nullable)trustedPeersError;
- (NSSet<id<CKKSPeer>>* _Nullable)findPeersMissingTLKSharesFor:(CKKSCurrentKeySet*)keyset
error:(NSError**)error;
- (BOOL)unwrapKey:(CKKSKey*)proposedTLK
fromShares:(NSArray<CKKSTLKShareRecord*>*)tlkShares
error:(NSError**)error;
+ (CKKSPeerProviderState*)noPeersState:(id<CKKSPeerProvider>)provider;
+ (CKKSPeerProviderState*)createFromProvider:(id<CKKSPeerProvider>)provider;
@end
NS_ASSUME_NONNULL_END
#endif