2 * Copyright (c) 2017 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
25 #import <Foundation/Foundation.h>
26 #import "OTLocalStore.h"
27 #import "OTCloudStore.h"
28 #import "OTEscrowKeys.h"
29 #import "OTIdentity.h"
30 #import "OTBottledPeer.h"
31 #import "OTBottledPeerSigned.h"
34 #import "OTPreflightInfo.h"
35 #import "keychain/ckks/CKKSLockStateTracker.h"
37 NS_ASSUME_NONNULL_BEGIN
39 @protocol OTContextIdentityProvider
<NSObject
>
40 - (nullable OTIdentity
*) currentIdentity
:(NSError
**) error
;
44 @interface OTContext
: NSObject
46 @
property (nonatomic
, readonly
) NSString
* contextID
;
47 @
property (nonatomic
, readonly
) NSString
* dsid
;
48 @
property (nonatomic
, readonly
) OTCloudStore
* cloudStore
;
50 @
property (nonatomic
, readonly
) CKKSLockStateTracker
* lockStateTracker
;
51 @
property (nonatomic
, readonly
) CKKSAccountStateTracker
* accountTracker
;
52 @
property (nonatomic
, readonly
) CKKSReachabilityTracker
*reachabilityTracker
;
54 - (nullable instancetype
) initWithContextID
:(NSString
*)contextID
56 localStore
:(OTLocalStore
*)localStore
57 cloudStore
:(nullable OTCloudStore
*)cloudStore
58 identityProvider
:(id
<OTContextIdentityProvider
>)identityProvider
59 error
:(NSError
**)error
;
61 - (nullable OTBottledPeerSigned
*) restoreFromEscrowRecordID
:(NSString
*)escrowRecordID
62 secret
:(NSData
*)secret
63 error
:(NSError
**)error
;
65 - (NSData
* _Nullable
) makeMeSomeEntropy
:(int)requiredLength
;
66 - (nullable OTPreflightInfo
*) preflightBottledPeer
:(NSString
*)contextID
67 entropy
:(NSData
*)entropy
68 error
:(NSError
**)error
;
69 - (BOOL
)scrubBottledPeer
:(NSString
*)contextID
70 bottleID
:(NSString
*)bottleID
71 error
:(NSError
**)error
;
73 -(BOOL
)updateAllBottlesForPeerID
:(NSString
*)peerID
74 newSigningKey
:(SFECKeyPair
*)newSigningKey
75 newEncryptionKey
:(SFECKeyPair
*)newEncryptionKey
76 error
:(NSError
**)error
;
78 -(OctagonBottleCheckState
)doesThisDeviceHaveABottle
:(NSError
**)error
;