]> git.saurik.com Git - apple/security.git/blobdiff - keychain/SecureObjectSync/SOSPeerRateLimiter.h
Security-59306.11.20.tar.gz
[apple/security.git] / keychain / SecureObjectSync / SOSPeerRateLimiter.h
diff --git a/keychain/SecureObjectSync/SOSPeerRateLimiter.h b/keychain/SecureObjectSync/SOSPeerRateLimiter.h
new file mode 100644 (file)
index 0000000..e84dbba
--- /dev/null
@@ -0,0 +1,36 @@
+//
+//  SOSPeerRateLimiter.h
+//  Security
+//
+#import "keychain/ckks/RateLimiter.h"
+#include "keychain/SecureObjectSync/SOSPeer.h"
+
+#ifndef SOSPeerRateLimiter_h
+#define SOSPeerRateLimiter_h
+
+enum RateLimitState{
+    RateLimitStateCanSend = 1,
+    RateLimitStateHoldMessage = 2
+};
+
+@interface  PeerRateLimiter : RateLimiter
+{
+    NSString *peerID;
+}
+
+@property (retain) NSString *peerID;
+@property (retain) NSMutableDictionary *accessGroupRateLimitState;
+@property (retain) NSMutableDictionary *accessGroupToTimer;
+@property (retain) NSMutableDictionary *accessGroupToNextMessageToSend;
+
+-(instancetype)initWithPeer:(SOSPeerRef)peer;
+-(NSDictionary *) setUpConfigForPeer;
+-(enum RateLimitState) stateForAccessGroup:(NSString*) accessGroup;
+@end
+
+@interface KeychainItem : NSObject
+@property (atomic, retain) NSString* accessGroup;
+-(instancetype) initWithAccessGroup:(NSString*)accessGroup;
+@end
+
+#endif /* SOSPeerRateLimiter_h */