/ keychain / SecureObjectSync / SOSTypes.h
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