#import "KeychainXCTest.h"
#import "SecItemServer.h"
#import "SFKeychainServer.h"
#import <SecurityFoundation/SFEncryptionOperation.h>
#import <XCTest/XCTest.h>
#import <OCMock/OCMock.h>
#if USE_KEYSTORE
#include "OSX/utilities/SecAKSWrappers.h"
typedef enum {
LockStateUnlocked,
LockStateLockedAndDisallowAKS,
LockStateLockedAndAllowAKS } LockState;
@interface KeychainXCTestFailureLogger : NSObject <XCTestObservation>
@end
@interface KeychainXCTest : XCTestCase
@property LockState lockState;
@property id mockSecDbKeychainItemV7;
@property id mockSecAKSObjCWrappers;
@property bool allowDecryption;
@property BOOL didAKSDecrypt;
@property BOOL simulateRolledAKSKey;
@property keyclass_t keyclassUsedForAKSDecryption;
@property NSString* keychainDirectoryPrefix;
@property SFAESKeySpecifier* keySpecifier;
@property NSData* fakeAKSKey;
@property id keychainPartialMock;
- (bool)setNewFakeAKSKey:(NSData*)newKeyData;
- (void)setEntitlements:(NSDictionary<NSString *, id> *)entitlements validated:(BOOL)validated;
- (NSData*)getDatabaseKeyDataWithError:(NSError**)error;
@end
@interface SFKeychainServerFakeConnection : SFKeychainServerConnection
- (void)setFakeAccessGroups:(NSArray*)fakeAccessGroups;
@end
#endif