]> git.saurik.com Git - apple/security.git/blob - OSX/sec/SOSCircle/SecureObjectSync/SOSRingTypes.h
15462c2fb1dc0b9ab333458f37c47548b1cdac06
[apple/security.git] / OSX / sec / SOSCircle / SecureObjectSync / SOSRingTypes.h
1 //
2 // SOSRingTypes.h
3 // sec
4 //
5 // Created by Richard Murphy on 2/23/15.
6 //
7 //
8
9 #ifndef _sec_SOSRingTypes_
10 #define _sec_SOSRingTypes_
11
12
13 #include <CoreFoundation/CFRuntime.h>
14 #include <CoreFoundation/CoreFoundation.h>
15 #include <Security/SecureObjectSync/SOSAccount.h>
16 #include <Security/SecureObjectSync/SOSRingUtils.h>
17 #include "SOSRing.h"
18
19
20 typedef struct ringfuncs_t {
21 char *typeName;
22 int version;
23 SOSRingRef (*sosRingCreate)(CFStringRef name, CFStringRef myPeerID, CFErrorRef *error);
24 bool (*sosRingResetToEmpty)(SOSRingRef ring, CFStringRef myPeerID, CFErrorRef *error);
25 bool (*sosRingResetToOffering)(SOSRingRef ring, SecKeyRef user_privkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
26 SOSRingStatus (*sosRingDeviceIsInRing)(SOSRingRef ring, CFStringRef peerID);
27 bool (*sosRingApply)(SOSRingRef ring, SecKeyRef user_pubkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
28 bool (*sosRingWithdraw)(SOSRingRef ring, SecKeyRef user_privkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
29 bool (*sosRingGenerationSign)(SOSRingRef ring, SecKeyRef user_privkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
30 bool (*sosRingConcordanceSign)(SOSRingRef ring, SOSFullPeerInfoRef requestor, CFErrorRef *error);
31 SOSConcordanceStatus (*sosRingConcordanceTrust)(SOSFullPeerInfoRef me, CFSetRef peers,
32 SOSRingRef knownRing, SOSRingRef proposedRing,
33 SecKeyRef knownPubkey, SecKeyRef userPubkey,
34 CFStringRef excludePeerID, CFErrorRef *error);
35 bool (*sosRingAccept)(SOSRingRef ring, SecKeyRef user_privkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
36 bool (*sosRingReject)(SOSRingRef ring, SecKeyRef user_privkey, SOSFullPeerInfoRef requestor, CFErrorRef *error);
37 bool (*sosRingSetPayload)(SOSRingRef ring, SecKeyRef user_privkey, CFDataRef payload, SOSFullPeerInfoRef requestor, CFErrorRef *error);
38 CFDataRef (*sosRingGetPayload)(SOSRingRef ring, CFErrorRef *error);
39 } ringFuncStruct, *ringFuncs;
40
41 // ViewRequirements
42 bool SOSRingRequirementKnown(SOSAccountRef account, CFStringRef name, CFErrorRef *error);
43 bool SOSRingRequirementCreate(SOSAccountRef account, CFStringRef name, SOSRingType type, CFErrorRef *error);
44
45 // Admins
46 bool SOSRingRequirementResetToOffering(SOSAccountRef account, CFStringRef name, CFErrorRef* error);
47 bool SOSRingRequirementResetToEmpty(SOSAccountRef account, CFStringRef name, CFErrorRef* error);
48
49 // Clients
50 bool SOSRingRequirementRequestToJoin(SOSAccountRef account, CFStringRef name, CFErrorRef* error);
51 bool SOSRingRequirementRemoveThisDevice(SOSAccountRef account, CFStringRef name, CFErrorRef* error);
52
53 // Approvers
54 CFArrayRef SOSRingRequirementGetApplicants(SOSAccountRef account, CFStringRef name, CFErrorRef* error);
55 bool SOSRingRequirementAcceptApplicants(SOSAccountRef account, CFStringRef name, CFArrayRef applicants, CFErrorRef* error);
56 bool SOSRingRequirementRejectApplicants(SOSAccountRef account, CFStringRef name, CFArrayRef applicants, CFErrorRef *error);
57
58 #endif /* defined(_sec_SOSRingTypes_) */