]> git.saurik.com Git - apple/security.git/blob - sec/securityd/SOSCloudCircleServer.h
Security-55471.14.8.tar.gz
[apple/security.git] / sec / securityd / SOSCloudCircleServer.h
1 //
2 // SOSCloudCircleServer.h
3 // sec
4 //
5 // Created by Mitch Adler on 11/15/12.
6 //
7 //
8
9 #ifndef _SECURITY_SOSCLOUDCIRCLESERVER_H_
10 #define _SECURITY_SOSCLOUDCIRCLESERVER_H_
11
12 #include <SecureObjectSync/SOSCloudCircle.h>
13 #include <SecureObjectSync/SOSAccount.h>
14
15 //
16 // MARK: Server versions of our SPI
17 //
18 bool SOSCCTryUserCredentials_Server(CFStringRef user_label, CFDataRef user_password, CFErrorRef *error);
19 bool SOSCCSetUserCredentials_Server(CFStringRef user_label, CFDataRef user_password, CFErrorRef *error);
20 bool SOSCCCanAuthenticate_Server(CFErrorRef *error);
21 bool SOSCCPurgeUserCredentials_Server(CFErrorRef *error);
22
23 SOSCCStatus SOSCCThisDeviceIsInCircle_Server(CFErrorRef *error);
24 bool SOSCCRequestToJoinCircle_Server(CFErrorRef* error);
25 bool SOSCCRequestToJoinCircleAfterRestore_Server(CFErrorRef* error);
26 bool SOSCCRemoveThisDeviceFromCircle_Server(CFErrorRef* error);
27 bool SOSCCBailFromCircle_Server(uint64_t limit_in_seconds, CFErrorRef* error);
28
29 CFArrayRef SOSCCCopyApplicantPeerInfo_Server(CFErrorRef* error);
30 bool SOSCCRejectApplicants_Server(CFArrayRef applicants, CFErrorRef* error);
31 bool SOSCCAcceptApplicants_Server(CFArrayRef applicants, CFErrorRef* error);
32
33 CFArrayRef SOSCCCopyPeerPeerInfo_Server(CFErrorRef* error);
34 CFArrayRef SOSCCCopyConcurringPeerPeerInfo_Server(CFErrorRef* error);
35
36 bool SOSCCResetToOffering_Server(CFErrorRef* error);
37 bool SOSCCResetToEmpty_Server(CFErrorRef* error);
38
39 CFStringRef SOSCCCopyIncompatibilityInfo_Server(CFErrorRef* error);
40 enum DepartureReason SOSCCGetLastDepartureReason_Server(CFErrorRef* error);
41
42 SyncWithAllPeersReason SOSCCProcessSyncWithAllPeers_Server(CFErrorRef* error);
43
44 //
45 // MARK: Internal kicks.
46 //
47
48 void SOSCCHandleUpdate(CFDictionaryRef updates);
49
50 // Expected to be called when the data source changes.
51 void SOSCCSyncWithAllPeers(void);
52
53 // Internal careful questioning.
54 bool SOSCCThisDeviceDefinitelyNotActiveInCircle(void);
55 void SOSCCSetThisDeviceDefinitelyNotActiveInCircle(SOSCCStatus currentStatus);
56
57 //
58 // MARK: Internal access to local account for tests.
59 //
60 typedef SOSDataSourceFactoryRef (^SOSCCAccountDataSourceFactoryBlock)();
61
62 SOSAccountRef SOSKeychainAccountGetSharedAccount(void);
63 bool SOSKeychainAccountSetFactoryForAccount(SOSCCAccountDataSourceFactoryBlock factory);
64
65 //
66 // MARK: Testing operations, dangerous to call in normal operation.
67 //
68 bool SOSKeychainSaveAccountDataAndPurge(CFErrorRef *error);
69
70
71 //
72 // MARK: Constants for where we store persistent information in the keychain
73 //
74
75 extern CFStringRef kSOSInternalAccessGroup;
76
77 extern CFStringRef kSOSAccountLabel;
78 extern CFStringRef kSOSPeerDataLabel;
79
80 CFDataRef SOSItemGet(CFStringRef label, CFErrorRef* error);
81 bool SOSItemUpdateOrAdd(CFStringRef label, CFStringRef accessibility, CFDataRef data, CFErrorRef *error);
82
83 bool SOSCCCircleIsOn_Artifact(void);
84
85 #endif