CKKSKeychainBackedKey.h [plain text]
#if OCTAGON
#import <Foundation/Foundation.h>
#import "keychain/ckks/CKKS.h"
#import "keychain/ckks/CKKSRecordHolder.h"
#import "keychain/ckks/CKKSSIV.h"
#import "keychain/ckks/proto/generated_source/CKKSSerializedKey.h"
NS_ASSUME_NONNULL_BEGIN
@interface CKKSKeychainBackedKey : NSObject <NSCopying, NSSecureCoding>
@property NSString* uuid;
@property NSString* parentKeyUUID;
@property CKKSKeyClass* keyclass;
@property CKRecordZoneID* zoneID;
@property CKKSWrappedAESSIVKey* wrappedkey;
@property (nullable) CKKSAESSIVKey* aessivkey;
- (instancetype)init NS_UNAVAILABLE;
- (instancetype _Nullable)initSelfWrappedWithAESKey:(CKKSAESSIVKey*)aeskey
uuid:(NSString*)uuid
keyclass:(CKKSKeyClass*)keyclass
zoneID:(CKRecordZoneID*)zoneID;
- (instancetype _Nullable)initWrappedBy:(CKKSKeychainBackedKey*)wrappingKey
AESKey:(CKKSAESSIVKey*)aessivkey
uuid:(NSString*)uuid
keyclass:(CKKSKeyClass*)keyclass
zoneID:(CKRecordZoneID*)zoneID;
- (instancetype)initWithWrappedAESKey:(CKKSWrappedAESSIVKey* _Nullable)wrappedaeskey
uuid:(NSString*)uuid
parentKeyUUID:(NSString*)parentKeyUUID
keyclass:(CKKSKeyClass*)keyclass
zoneID:(CKRecordZoneID*)zoneID;
+ (instancetype _Nullable)randomKeyWrappedByParent:(CKKSKeychainBackedKey*)parentKey
error:(NSError* __autoreleasing*)error;
+ (instancetype _Nullable)randomKeyWrappedByParent:(CKKSKeychainBackedKey*)parentKey
keyclass:(CKKSKeyClass*)keyclass
error:(NSError* __autoreleasing*)error;
+ (instancetype _Nullable)randomKeyWrappedBySelf:(CKRecordZoneID*)zoneID
error:(NSError* __autoreleasing*)error;
- (BOOL)saveKeyMaterialToKeychain:(NSError* __autoreleasing*)error;
- (BOOL)saveKeyMaterialToKeychain:(bool)stashTLK
error:(NSError* __autoreleasing*)error;
- (BOOL)loadKeyMaterialFromKeychain:(NSError* __autoreleasing*)error;
- (BOOL)deleteKeyMaterialFromKeychain:(NSError* __autoreleasing*)error;
+ (NSDictionary* _Nullable)setKeyMaterialInKeychain:(NSDictionary*)query
error:(NSError* __autoreleasing*)error;
+ (NSDictionary* _Nullable)queryKeyMaterialInKeychain:(NSDictionary*)query
error:(NSError* __autoreleasing*)error;
+ (instancetype _Nullable)keyFromKeychain:(NSString*)uuid
parentKeyUUID:(NSString*)parentKeyUUID
keyclass:(CKKSKeyClass*)keyclass
zoneID:(CKRecordZoneID*)zoneID
error:(NSError* __autoreleasing*)error;
- (bool)wrapsSelf;
- (CKKSAESSIVKey* _Nullable)ensureKeyLoaded:(NSError* __autoreleasing*)error;
- (bool)trySelfWrappedKeyCandidate:(CKKSAESSIVKey*)candidate
error:(NSError* __autoreleasing*)error;
- (CKKSWrappedAESSIVKey* _Nullable)wrapAESKey:(CKKSAESSIVKey*)keyToWrap
error:(NSError* __autoreleasing*)error;
- (CKKSAESSIVKey* _Nullable)unwrapAESKey:(CKKSWrappedAESSIVKey*)keyToUnwrap
error:(NSError* __autoreleasing*)error;
- (bool)wrapUnder:(CKKSKeychainBackedKey*)wrappingKey
error:(NSError* __autoreleasing*)error;
- (bool)unwrapSelfWithAESKey:(CKKSAESSIVKey*)unwrappingKey
error:(NSError* __autoreleasing*)error;
- (NSData* _Nullable)encryptData:(NSData*)plaintext
authenticatedData:(NSDictionary<NSString*, NSData*>* _Nullable)ad
error:(NSError* __autoreleasing*)error;
- (NSData* _Nullable)decryptData:(NSData*)ciphertext
authenticatedData:(NSDictionary<NSString*, NSData*>* _Nullable)ad
error:(NSError* __autoreleasing*)error;
- (NSData* _Nullable)serializeAsProtobuf:(NSError* __autoreleasing*)error;
+ (CKKSKeychainBackedKey* _Nullable)loadFromProtobuf:(NSData*)data
error:(NSError* __autoreleasing*)error;
@end
@interface CKKSKeychainBackedKeySet : NSObject <NSSecureCoding>
@property CKKSKeychainBackedKey* tlk;
@property CKKSKeychainBackedKey* classA;
@property CKKSKeychainBackedKey* classC;
@property BOOL newUpload;
- (instancetype)initWithTLK:(CKKSKeychainBackedKey*)tlk
classA:(CKKSKeychainBackedKey*)classA
classC:(CKKSKeychainBackedKey*)classC
newUpload:(BOOL)newUpload;
@end
NS_ASSUME_NONNULL_END
#endif