Skip to content

Commit

Permalink
restored function
Browse files Browse the repository at this point in the history
  • Loading branch information
Velin92 committed Oct 23, 2024
1 parent 96a491b commit 4c72ef2
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#import "MXSession.h"
#import "MXTools.h"
#import "MXKeyBackupPassword.h"
#import "MXRecoveryKey.h"
#import "MXHkdfSha256.h"
#import "MXAesHmacSha2.h"
Expand Down Expand Up @@ -126,6 +127,104 @@ - (MXHTTPOperation*)createKeyWithKeyId:(nullable NSString*)keyId
return operation;
}

- (MXHTTPOperation*)createKeyWithKeyId:(nullable NSString*)keyId
keyName:(nullable NSString*)keyName
passphrase:(nullable NSString*)passphrase
success:(void (^)(MXSecretStorageKeyCreationInfo *keyCreationInfo))success
failure:(void (^)(NSError *error))failure
{
MXLogDebug(@"[MXSecretStorage] createKeyWithKeyId: Creating new key with passphrase");
keyId = keyId ?: [[NSUUID UUID] UUIDString];

MXHTTPOperation *operation = [MXHTTPOperation new];

MXWeakify(self);
dispatch_async(processingQueue, ^{
MXStrongifyAndReturnIfNil(self);

NSError *error;

NSData *privateKey;
MXSecretStoragePassphrase *passphraseInfo;

if (passphrase)
{
// Generate a private key from the passphrase
NSString *salt;
NSUInteger iterations;
privateKey = [MXKeyBackupPassword generatePrivateKeyWithPassword:passphrase
salt:&salt
iterations:&iterations
error:&error];
if (!error)
{
passphraseInfo = [MXSecretStoragePassphrase new];
passphraseInfo.algorithm = @"m.pbkdf2";
passphraseInfo.salt = salt;
passphraseInfo.iterations = iterations;
}
}
else
{
OLMPkDecryption *decryption = [OLMPkDecryption new];

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'OLMPkDecryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'

Check failure on line 169 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'OLMPkDecryption'
[decryption generateKey:&error];

Check failure on line 170 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 170 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 170 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'

Check failure on line 170 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'
privateKey = decryption.privateKey;

Check failure on line 171 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 171 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Unit Tests

use of undeclared identifier 'decryption'

Check failure on line 171 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'

Check failure on line 171 in MatrixSDK/Crypto/SecretStorage/MXSecretStorage.m

View workflow job for this annotation

GitHub Actions / Integration Tests

use of undeclared identifier 'decryption'
}

if (error)
{
dispatch_async(dispatch_get_main_queue(), ^{
MXLogDebug(@"[MXSecretStorage] createKeyWithKeyId: Failed to create a new key - %@", error);
failure(error);
});
return;
}

// Build iv and mac
MXEncryptedSecretContent *encryptedZeroString = [self encryptedZeroStringWithPrivateKey:privateKey iv:nil error:&error];
if (error)
{
dispatch_async(dispatch_get_main_queue(), ^{
MXLogDebug(@"[MXSecretStorage] createKeyWithKeyId: Failed to create a new key - %@", error);
failure(error);
});
return;
}

MXSecretStorageKeyContent *ssssKeyContent = [MXSecretStorageKeyContent new];
ssssKeyContent.name = keyName;
ssssKeyContent.algorithm = MXSecretStorageKeyAlgorithm.aesHmacSha2;
ssssKeyContent.passphrase = passphraseInfo;
ssssKeyContent.iv = encryptedZeroString.iv;
ssssKeyContent.mac = encryptedZeroString.mac;

NSString *accountDataId = [self storageKeyIdForKey:keyId];
MXHTTPOperation *operation2 = [self setAccountData:ssssKeyContent.JSONDictionary forType:accountDataId success:^{

MXSecretStorageKeyCreationInfo *keyCreationInfo = [MXSecretStorageKeyCreationInfo new];
keyCreationInfo.keyId = keyId;
keyCreationInfo.content = ssssKeyContent;
keyCreationInfo.privateKey = privateKey;
keyCreationInfo.recoveryKey = [MXRecoveryKey encode:privateKey];

dispatch_async(dispatch_get_main_queue(), ^{
MXLogDebug(@"[MXSecretStorage] createKeyWithKeyId: Successfully created a new key");
success(keyCreationInfo);
});

} failure:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
MXLogDebug(@"[MXSecretStorage] createKeyWithKeyId: Failed to create a new key - %@", error);
failure(error);
});
}];

[operation mutateTo:operation2];
});

return operation;
}

- (MXHTTPOperation*)deleteKeyWithKeyId:(nullable NSString*)keyId
success:(void (^)(void))success
failure:(void (^)(NSError *error))failure
Expand Down

0 comments on commit 4c72ef2

Please sign in to comment.