/ secdxctests / KeychainXCTest.h
KeychainXCTest.h
 1  /*
 2   * Copyright (c) 2018 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  #import "KeychainXCTest.h"
25  #import "SecItemServer.h"
26  #import "SFKeychainServer.h"
27  #import <SecurityFoundation/SFEncryptionOperation.h>
28  #import <XCTest/XCTest.h>
29  #import <OCMock/OCMock.h>
30  
31  #if USE_KEYSTORE
32  #include "OSX/utilities/SecAKSWrappers.h"
33  
34  typedef enum {
35      LockStateUnlocked,
36      LockStateLockedAndDisallowAKS,
37      LockStateLockedAndAllowAKS // this state matches how backup works while locked
38  } LockState;
39  
40  @interface KeychainXCTestFailureLogger : NSObject <XCTestObservation>
41  @end
42  
43  @interface KeychainXCTest : XCTestCase
44  
45  @property LockState lockState;
46  @property id mockSecDbKeychainItemV7;
47  @property id mockSecAKSObjCWrappers;
48  @property bool allowDecryption;
49  @property BOOL didAKSDecrypt;
50  @property BOOL simulateRolledAKSKey;
51  @property keyclass_t keyclassUsedForAKSDecryption;
52  
53  @property NSString* keychainDirectoryPrefix;
54  
55  @property SFAESKeySpecifier* keySpecifier;
56  @property NSData* fakeAKSKey;
57  
58  @property id keychainPartialMock;
59  
60  - (bool)setNewFakeAKSKey:(NSData*)newKeyData;
61  
62  - (void)setEntitlements:(NSDictionary<NSString *, id> *)entitlements validated:(BOOL)validated;
63  
64  - (NSData*)getDatabaseKeyDataWithError:(NSError**)error;
65  
66  @end
67  
68  @interface SFKeychainServerFakeConnection : SFKeychainServerConnection
69  
70  - (void)setFakeAccessGroups:(NSArray*)fakeAccessGroups;
71  
72  @end
73  
74  #endif