SOSTypes.h
1 /* 2 * Copyright (c) 2012-2014 Apple Inc. All Rights Reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24 #ifndef _SECURITY_SOSTYPES_H_ 25 #define _SECURITY_SOSTYPES_H_ 26 27 #include <sys/cdefs.h> 28 29 __BEGIN_DECLS 30 31 /* 32 Reasons 33 */ 34 35 typedef enum SyncWithAllPeersReason { 36 kSyncWithAllPeersOtherFail = 0, 37 kSyncWithAllPeersSuccess, 38 kSyncWithAllPeersLocked, 39 } SyncWithAllPeersReason; 40 41 /* 42 * Piggy backing codes 43 */ 44 45 typedef enum{ 46 kPiggyV0 = 0, //first version of piggybacking, does not pad messages with keys 47 kPiggyV1 = 1, //tacks on initial sync credentials 48 kPiggyV2 = 2, //Octagon 49 } PiggyBackProtocolVersion; 50 51 typedef enum{ 52 kPiggyTLKs = 0, 53 kPiggyiCloudIdentities = 1 54 } PiggybackKeyTypes; 55 56 typedef enum { 57 kTLKUnknown = 0, 58 kTLKManatee = 1, 59 kTLKEngram = 2, 60 kTLKAutoUnlock = 3, 61 kTLKHealth = 4, 62 } kTLKTypes; 63 64 /* 65 View Result Codes 66 */ 67 enum { 68 kSOSCCGeneralViewError = 0, 69 kSOSCCViewMember = 1, 70 kSOSCCViewNotMember = 2, 71 kSOSCCViewNotQualified = 3, 72 kSOSCCNoSuchView = 4, 73 kSOSCCViewPending = 5, 74 kSOSCCViewAuthErr = 6, 75 }; 76 typedef int SOSViewResultCode; 77 78 79 /* 80 View Action Codes 81 */ 82 enum { 83 kSOSCCViewEnable = 1, 84 kSOSCCViewDisable = 2, 85 kSOSCCViewQuery = 3, 86 }; 87 typedef int SOSViewActionCode; 88 89 #if __OBJC__ 90 91 #import <Foundation/Foundation.h> 92 93 #define SOSControlInitialSyncFlagTLK (1 << 0) 94 #define SOSControlInitialSyncFlagPCS (1 << 1) 95 #define SOSControlInitialSyncFlagPCSNonCurrent (1 << 2) 96 #define SOSControlInitialSyncFlagBluetoothMigration (1 << 3) 97 98 typedef NS_OPTIONS(uint32_t, SOSAccountGhostBustingOptions) { 99 SOSGhostBustBySerialNumber = 1, 100 SOSGhostBustByMID = 2, 101 SOSGhostBustSerialByAge = 4, 102 SOSGhostBustTriggerNow = 8, 103 SOSGhostBustiCloudIdentities = 16, 104 }; 105 106 @protocol SOSControlProtocol <NSObject> 107 - (void)userPublicKey:(void ((^))(BOOL trusted, NSData *spki, NSError *error))complete; 108 - (void)kvsPerformanceCounters:(void(^)(NSDictionary <NSString *, NSNumber *> *))reply; 109 - (void)rateLimitingPerformanceCounters:(void(^)(NSDictionary <NSString *, NSString *> *))reply; 110 111 - (void)stashedCredentialPublicKey:(void(^)(NSData *, NSError *error))complete; 112 - (void)assertStashedAccountCredential:(void(^)(BOOL result, NSError *error))complete; 113 - (void)validatedStashedAccountCredential:(void(^)(NSData *credential, NSError *error))complete; 114 - (void)stashAccountCredential:(NSData *)credential complete:(void(^)(bool success, NSError *error))complete; 115 - (void)ghostBust:(SOSAccountGhostBustingOptions)options complete: (void(^)(bool ghostBusted, NSError *error))complete; 116 - (void)ghostBustPeriodic:(SOSAccountGhostBustingOptions)options complete: (void(^)(bool busted, NSError *error))complete; 117 - (void)ghostBustTriggerTimed:(SOSAccountGhostBustingOptions)options complete: (void(^)(bool ghostBusted, NSError *error))complete; 118 - (void)ghostBustInfo: (void(^)(NSData *json, NSError *error))complete; 119 - (void)iCloudIdentityStatus_internal: (void(^)(NSDictionary *tableSpid, NSError *error))complete; 120 - (void)iCloudIdentityStatus: (void (^)(NSData *json, NSError *error))complete; 121 122 - (void)myPeerInfo:(void (^)(NSData *, NSError *))complete; 123 - (void)circleHash:(void (^)(NSString *, NSError *))complete; 124 - (void)circleJoiningBlob:(NSData *)applicant complete:(void (^)(NSData *blob, NSError *))complete; 125 - (void)joinCircleWithBlob:(NSData *)blob version:(PiggyBackProtocolVersion)version complete:(void (^)(bool success, NSError *))complete; 126 - (void)initialSyncCredentials:(uint32_t)flags complete:(void (^)(NSArray *, NSError *))complete; 127 - (void)importInitialSyncCredentials:(NSArray *)items complete:(void (^)(bool success, NSError *))complete; 128 129 - (void)rpcTriggerSync:(NSArray <NSString *> *)peers complete:(void(^)(bool success, NSError *))complete; 130 131 - (void)getWatchdogParameters:(void (^)(NSDictionary* parameters, NSError* error))complete; 132 - (void)setWatchdogParmeters:(NSDictionary*)parameters complete:(void (^)(NSError* error))complete; 133 134 - (void)rpcTriggerBackup:(NSArray<NSString *>*)backupPeers complete:(void (^)(NSError *error))complete; 135 - (void)rpcTriggerRingUpdate:(void (^)(NSError *error))complete; 136 137 - (void)removeV0Peers:(void(^)(bool removedV0Peer, NSError *error))reply; 138 139 @end 140 #endif 141 142 143 __END_DECLS 144 145 #endif