5 // Created by Richard Murphy on 2/23/15.
9 #ifndef _sec_SOSRingTypes_
10 #define _sec_SOSRingTypes_
13 #include <CoreFoundation/CFRuntime.h>
14 #include <CoreFoundation/CoreFoundation.h>
15 #include <Security/SecureObjectSync/SOSAccount.h>
16 #include <Security/SecureObjectSync/SOSRingUtils.h>
20 typedef struct ringfuncs_t
{
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
;
42 bool SOSRingRequirementKnown(SOSAccountRef account
, CFStringRef name
, CFErrorRef
*error
);
43 bool SOSRingRequirementCreate(SOSAccountRef account
, CFStringRef name
, SOSRingType type
, CFErrorRef
*error
);
46 bool SOSRingRequirementResetToOffering(SOSAccountRef account
, CFStringRef name
, CFErrorRef
* error
);
47 bool SOSRingRequirementResetToEmpty(SOSAccountRef account
, CFStringRef name
, CFErrorRef
* error
);
50 bool SOSRingRequirementRequestToJoin(SOSAccountRef account
, CFStringRef name
, CFErrorRef
* error
);
51 bool SOSRingRequirementRemoveThisDevice(SOSAccountRef account
, CFStringRef name
, CFErrorRef
* error
);
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
);
58 #endif /* defined(_sec_SOSRingTypes_) */