]> git.saurik.com Git - apple/security.git/blobdiff - keychain/ot/OTSOSAdapter.h
Security-59306.11.20.tar.gz
[apple/security.git] / keychain / ot / OTSOSAdapter.h
diff --git a/keychain/ot/OTSOSAdapter.h b/keychain/ot/OTSOSAdapter.h
new file mode 100644 (file)
index 0000000..f8adfb8
--- /dev/null
@@ -0,0 +1,33 @@
+#if OCTAGON
+
+#import "keychain/ckks/CKKSPeer.h"
+#import "keychain/ot/OTDefines.h"
+#import "keychain/SecureObjectSync/SOSCloudCircle.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol OTSOSAdapter <CKKSPeerProvider>
+@property bool sosEnabled;
+- (SOSCCStatus)circleStatus:(NSError**)error;
+- (id<CKKSSelfPeer> _Nullable)currentSOSSelf:(NSError**)error;
+- (NSSet<id<CKKSRemotePeerProtocol>>* _Nullable)fetchTrustedPeers:(NSError**)error;
+- (void)updateOctagonKeySetWithAccount:(id<CKKSSelfPeer>)currentSelfPeer error:(NSError**)error;
+@end
+
+@interface OTSOSActualAdapter : NSObject <OTSOSAdapter>
+- (instancetype)init NS_UNAVAILABLE;
+- (instancetype)initAsEssential:(BOOL)essential;
+
+// Helper methods
++ (NSArray<NSData*>*)peerPublicSigningKeySPKIs:(NSSet<id<CKKSPeer>>* _Nullable)peers;
+
++ (NSSet<NSString*>*)sosCKKSViewList;
+@end
+
+// This adapter is for a platform which does not have SOS (e.g., aTV, Watch, HomePod)
+@interface OTSOSMissingAdapter : NSObject <OTSOSAdapter>
+@end
+
+NS_ASSUME_NONNULL_END
+
+#endif // OCTAGON