1
2
3#ifndef SOSKVSKEYS_H
4#define SOSKVSKEYS_H
5
6#include "SOSCircle.h"
7#include <SecureObjectSync/SOSTransportMessage.h>
8#include <SecureObjectSync/SOSTransportMessageKVS.h>
9
10//
11// MARK: Key formation
12//
13
14typedef enum {
15    kCircleKey,
16    kMessageKey,
17    kParametersKey,
18    kInitialSyncKey,
19    kRetirementKey,
20    kAccountChangedKey,
21    kUnknownKey,
22} SOSKVSKeyType;
23
24extern const CFStringRef kSOSKVSKeyParametersKey;
25extern const CFStringRef kSOSKVSInitialSyncKey;
26extern const CFStringRef kSOSKVSAccountChangedKey;
27extern const CFStringRef sCirclePrefix;
28extern const CFStringRef sRetirementPrefix;
29
30
31SOSKVSKeyType SOSKVSKeyGetKeyType(CFStringRef key);
32SOSKVSKeyType SOSKVSKeyGetKeyTypeAndParse(CFStringRef key, CFStringRef *circle, CFStringRef *from, CFStringRef *to);
33
34CFStringRef SOSCircleKeyCreateWithCircle(SOSCircleRef circle, CFErrorRef *error);
35CFStringRef SOSCircleKeyCreateWithName(CFStringRef name, CFErrorRef *error);
36CFStringRef SOSCircleKeyCopyCircleName(CFStringRef key, CFErrorRef *error);
37CFStringRef SOSMessageKeyCreateWithCircleNameAndPeerNames(CFStringRef circleName, CFStringRef from_peer_name, CFStringRef to_peer_name);
38
39CFStringRef SOSMessageKeyCopyCircleName(CFStringRef key, CFErrorRef *error);
40CFStringRef SOSMessageKeyCopyFromPeerName(CFStringRef messageKey, CFErrorRef *error);
41CFStringRef SOSMessageKeyCreateWithCircleAndPeerNames(SOSCircleRef circle, CFStringRef from_peer_name, CFStringRef to_peer_name);
42CFStringRef SOSMessageKeyCreateWithCircleAndPeerInfos(SOSCircleRef circle, SOSPeerInfoRef from_peer, SOSPeerInfoRef to_peer);
43
44CFStringRef SOSRetirementKeyCreateWithCircleNameAndPeer(CFStringRef circle_name, CFStringRef retirement_peer_name);
45CFStringRef SOSRetirementKeyCreateWithCircleAndPeer(SOSCircleRef circle, CFStringRef retirement_peer_name);
46
47CFStringRef SOSMessageKeyCreateFromTransportToPeer(SOSTransportMessageKVSRef transport, CFStringRef peer_name);
48CFStringRef SOSMessageKeyCreateFromPeerToTransport(SOSTransportMessageKVSRef transport, CFStringRef peer_name);
49
50#endif
51