SecDbKeychainItemV7.h [plain text]
#import "SecKeybagSupport.h"
#import <Foundation/Foundation.h>
#import <ProtocolBuffer/PBCodable.h>
NS_ASSUME_NONNULL_BEGIN
@interface SecDbKeychainItemV7 : NSObject
@property (nonatomic, readonly) keyclass_t keyclass;
- (nullable instancetype)initWithData:(NSData*)data decryptionKeybag:(keybag_handle_t)decryptionKeybag error:(NSError**)error;
- (instancetype)initWithSecretAttributes:(NSDictionary*)secretAttributes metadataAttributes:(NSDictionary*)metadataAttributes tamperCheck:(NSString*)tamperCheck keyclass:(keyclass_t)keyclass;
- (nullable NSDictionary*)metadataAttributesWithError:(NSError**)error;
- (nullable NSDictionary*)secretAttributesWithAcmContext:(NSData*)acmContext accessControl:(SecAccessControlRef)accessControl callerAccessGroups:(NSArray*)callerAccessGroups error:(NSError**)error;
- (BOOL)deleteWithAcmContext:(NSData*)acmContext accessControl:(SecAccessControlRef)accessControl callerAccessGroups:(NSArray*)callerAccessGroups error:(NSError**)error;
- (nullable NSData*)encryptedBlobWithKeybag:(keybag_handle_t)keybag accessControl:(SecAccessControlRef)accessControl acmContext:(nullable NSData*)acmContext error:(NSError**)error;
@end
extern NSString* const SecDbKeychainErrorDomain;
extern const NSInteger SecDbKeychainErrorDeserializationFailed;
@class SecDbKeychainSerializedMetadata;
@class SecDbKeychainSerializedSecretData;
@interface SecDbKeychainItemV7 (UnitTesting)
+ (bool)aksEncryptWithKeybag:(keybag_handle_t)keybag keyclass:(keyclass_t)keyclass keyData:(NSData*)keyData outKeyclass:(keyclass_t* _Nullable)outKeyclass wrappedKey:(NSMutableData*)wrappedKey error:(NSError**)error;
+ (bool)aksDecryptWithKeybag:(keybag_handle_t)keybag keyclass:(keyclass_t)keyclass wrappedKeyData:(NSData*)wrappedKeyData outKeyclass:(keyclass_t* _Nullable)outKeyclass unwrappedKey:(NSMutableData*)unwrappedKey error:(NSError**)error;
+ (bool)isKeychainUnlocked;
@property (readonly) NSData* encryptedMetadataBlob;
@property (readonly) NSData* encryptedSecretDataBlob;
- (BOOL)encryptMetadataWithKeybag:(keybag_handle_t)keybag error:(NSError**)error;
- (BOOL)encryptSecretDataWithKeybag:(keybag_handle_t)keybag accessControl:(SecAccessControlRef)accessControl acmContext:(nullable NSData*)acmContext error:(NSError**)error;
@end
@interface SecDbKeychainMetadataKeyStore : NSObject
+ (bool)cachingEnabled;
+ (void)resetSharedStore;
+ (instancetype)sharedStore;
- (instancetype)init NS_UNAVAILABLE;
- (void)dropClassAKeys;
@end
NS_ASSUME_NONNULL_END