Antidote/local_pod_repo/objcTox/Classes/Public/Wrapper/OCTToxEncryptSave.h
2024-02-22 21:43:11 +02:00

94 lines
3.7 KiB
Objective-C

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#import <Foundation/Foundation.h>
/**
* This class is used for encryption/decryption of save data.
*
* You can use class methods or create instance and use it's methods.
* Note that instance encryption/decryption methods are much faster because
* instance stores generated encryption key.
*/
@interface OCTToxEncryptSave : NSObject
/**
* Determines whether or not the given data is encrypted (by checking the magic number).
*
* @param data Data to check.
*
* @return YES if data is encrypted, NO otherwise.
*/
+ (BOOL)isDataEncrypted:(nonnull NSData *)data;
/**
* Encrypts the given data with the given passphrase.
*
* @param data Data to encrypt.
* @param passphrase Passphrase used to encrypt the data.
* @param error If an error occurs, this pointer is set to an actual error object containing the error information.
* See OCTToxEncryptSaveEncryptionError for all error codes.
*
* @return Encrypted data on success, nil on failure.
*/
+ (nullable NSData *)encryptData:(nonnull NSData *)data
withPassphrase:(nonnull NSString *)passphrase
error:(NSError *__nullable *__nullable)error;
/**
* Decrypts the given data with the given passphrase.
*
* @param data Data to decrypt.
* @param passphrase Passphrase used to decrypt the data.
* @param error If an error occurs, this pointer is set to an actual error object containing the error information.
* See OCTToxEncryptSaveDecryptionError for all error codes.
*
* @return Decrypted data on success, nil on failure.
*/
+ (nullable NSData *)decryptData:(nonnull NSData *)data
withPassphrase:(nonnull NSString *)passphrase
error:(NSError *__nullable *__nullable)error;
/**
* Creates new instance of OCTToxEncryptSave object with given passphrase. This instance can be used
* to encrypt and decrypt given data.
* Encryption key is generated and stored in this method. Due to that encrypting/decrypting data
* using instance instead of class methods is much faster, as key derivation is very expensive compared
* to the actual encryption.
*
* @param passphrase Passphrase used to encrypt/decrypt the data.
* @param toxData If you have toxData that you would like to decrypt, you have to pass it here. Salt will be extracted from data and used for key generation.
* @param error If an error occurs, this pointer is set to an actual error object containing the error information.
* See OCTToxEncryptSaveKeyDerivationError for all error codes.
*
* @return Created instance or nil in case of error.
*/
- (nullable instancetype)initWithPassphrase:(nonnull NSString *)passphrase
toxData:(nullable NSData *)toxData
error:(NSError *__nullable *__nullable)error;
/**
* Encrypts the given data.
*
* @param data Data to encrypt.
* @param error If an error occurs, this pointer is set to an actual error object containing the error information.
* See OCTToxEncryptSaveEncryptionError for all error codes.
*
* @return Encrypted data on success, nil on failure.
*/
- (nullable NSData *)encryptData:(nonnull NSData *)data error:(NSError *__nullable *__nullable)error;
/**
* Decrypts the given data.
*
* @param data Data to decrypt.
* @param error If an error occurs, this pointer is set to an actual error object containing the error information.
* See OCTToxEncryptSaveDecryptionError for all error codes.
*
* @return Decrypted data on success, nil on failure.
*/
- (nullable NSData *)decryptData:(nonnull NSData *)data error:(NSError *__nullable *__nullable)error;
@end