|
@@ -353,8 +353,12 @@ cleanup:
|
|
|
|
|
|
NSData *ivData = [self generateIV:AES_IVEC_LENGTH];
|
|
|
NSData *tagData = [NSData new];
|
|
|
-
|
|
|
- BOOL result = [self encryptData:_privateKeyData cipherData:&privateKeyCipherData keyData:keyData keyLen:AES_KEY_256_LENGTH ivData:ivData tagData:&tagData];
|
|
|
+
|
|
|
+ /* ENCODE 64 privateKey JAVA compatibility */
|
|
|
+ NSString *string = [_privateKeyData base64EncodedStringWithOptions:0];
|
|
|
+ NSMutableData *strdata = (NSMutableData *)[string dataUsingEncoding:NSUTF8StringEncoding];
|
|
|
+
|
|
|
+ BOOL result = [self encryptData:strdata cipherData:&privateKeyCipherData keyData:keyData keyLen:AES_KEY_256_LENGTH ivData:ivData tagData:&tagData];
|
|
|
|
|
|
if (result && privateKeyCipherData) {
|
|
|
|
|
@@ -412,21 +416,22 @@ cleanup:
|
|
|
BOOL result = [self decryptData:privateKeyCipherData plainData:&privateKeyData keyData:keyData keyLen:AES_KEY_256_LENGTH ivData:ivData tagData:tagData];
|
|
|
|
|
|
if (result && privateKeyData)
|
|
|
+
|
|
|
privateKey = [self base64Decode:privateKeyData];
|
|
|
|
|
|
if (privateKey) {
|
|
|
|
|
|
- NSData *encryptData = [self encryptAsymmetricString:ASYMMETRIC_STRING_TEST publicKey:publicKey];
|
|
|
- if (!encryptData)
|
|
|
- return nil;
|
|
|
-
|
|
|
- NSString *decryptString = [self decryptAsymmetricData:encryptData privateKey:privateKey];
|
|
|
+ NSData *encryptData = [self encryptAsymmetricString:ASYMMETRIC_STRING_TEST publicKey:publicKey];
|
|
|
+ if (!encryptData)
|
|
|
+ return nil;
|
|
|
|
|
|
- if (decryptString && [decryptString isEqualToString:ASYMMETRIC_STRING_TEST])
|
|
|
- return privateKey;
|
|
|
- else
|
|
|
- return nil;
|
|
|
+ NSString *decryptString = [self decryptAsymmetricData:encryptData privateKey:privateKey];
|
|
|
|
|
|
+ if (decryptString && [decryptString isEqualToString:ASYMMETRIC_STRING_TEST])
|
|
|
+ return privateKey;
|
|
|
+ else
|
|
|
+ return nil;
|
|
|
+
|
|
|
} else {
|
|
|
|
|
|
return nil;
|
|
@@ -520,7 +525,7 @@ cleanup:
|
|
|
NSData *keyData = [[NSData alloc] initWithBase64EncodedString:@"WANM0gRv+DhaexIsI0T3Lg==" options:0];
|
|
|
NSData *ivData = [[NSData alloc] initWithBase64EncodedString:@"gKm3n+mJzeY26q4OfuZEqg==" options:0];
|
|
|
|
|
|
- BOOL result = [self encryptData:plainData cipherData:&cipherData keyData:keyData keyLen:AES_KEY_128_LENGTH ivData:ivData tagData:&tagData];
|
|
|
+ BOOL result = [self encryptData:(NSMutableData *)plainData cipherData:&cipherData keyData:keyData keyLen:AES_KEY_128_LENGTH ivData:ivData tagData:&tagData];
|
|
|
|
|
|
if (cipherData != nil && result) {
|
|
|
[cipherData writeToFile:[NSString stringWithFormat:@"%@/%@", activeUrl, @"encrypted.dms"] atomically:YES];
|
|
@@ -565,7 +570,7 @@ cleanup:
|
|
|
}
|
|
|
|
|
|
// Encryption using GCM mode
|
|
|
-- (BOOL)encryptData:(NSData *)plainData cipherData:(NSMutableData **)cipherData keyData:(NSData *)keyData keyLen:(int)keyLen ivData:(NSData *)ivData tagData:(NSData **)tagData
|
|
|
+- (BOOL)encryptData:(NSMutableData *)plainData cipherData:(NSMutableData **)cipherData keyData:(NSData *)keyData keyLen:(int)keyLen ivData:(NSData *)ivData tagData:(NSData **)tagData
|
|
|
{
|
|
|
int status = 0;
|
|
|
int len = 0;
|
|
@@ -621,10 +626,11 @@ cleanup:
|
|
|
return NO;
|
|
|
|
|
|
// Provide the message to be encrypted, and obtain the encrypted output
|
|
|
+ [plainData appendBytes:"\x0" length:16];
|
|
|
*cipherData = [NSMutableData dataWithLength:[plainData length]];
|
|
|
unsigned char * ctBytes = [*cipherData mutableBytes];
|
|
|
int pCipherLen = 0;
|
|
|
- status = EVP_EncryptUpdate (ctx, ctBytes, &pCipherLen, [plainData bytes], (int)[plainData length]);
|
|
|
+ status = EVP_EncryptUpdate(ctx, ctBytes, &pCipherLen, [plainData bytes], (int)[plainData length]);
|
|
|
if (! status)
|
|
|
return NO;
|
|
|
|