Guest User

Untitled

a guest
Jan 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. (void)deriveDecryptionKey: (NSString *)salt password:(NSString *)password volumeName:(NSString *)volumeName {
  2.  
  3. /**
  4. * This was an attempt to use RNCryptor to derive the key.
  5. */
  6. /*
  7. NSData *saltdata = [salt dataUsingEncoding:NSUTF8StringEncoding];
  8. NSData *mykey2 = [RNDecryptor keyForPassword:password salt:saltdata settings:kRNCryptorAES256Settings.keySettings];
  9. */
  10.  
  11. // Step 1
  12. NSData *binsalt = [self dataFromHexString:salt];
  13.  
  14. // Step 2
  15. NSString *base64Encoded = [binsalt base64EncodedStringWithOptions:0];
  16.  
  17. NSString *base64_alphabet = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  18. NSString *blfish_alphabet = @"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  19.  
  20. NSString *bfsalt = [base64Encoded substringToIndex:22];
  21.  
  22. for(int i = 0; i < [base64_alphabet length]; ++i) {
  23. NSString *from = [base64_alphabet substringWithRange:NSMakeRange(i, 1)];
  24. NSString *to = [blfish_alphabet substringWithRange:NSMakeRange(i, 1)];
  25. bfsalt = [bfsalt stringByReplacingOccurrencesOfString:from withString:to];
  26. }
  27.  
  28. // Step 3 + 4
  29. NSString *bfhash = [self _bCryptPassword:password withSaltData:binsalt];
  30.  
  31. // Step 5
  32. NSString *encrkey = [self createSHA512: bfhash];
  33. uint8_t key[64];
  34. CCKeyDerivationPBKDF(kCCPBKDF2, [bfhash dataUsingEncoding:NSUTF8StringEncoding].bytes, [bfhash dataUsingEncoding:NSUTF8StringEncoding].length, binsalt.bytes, binsalt.length, kCCPRFHmacAlgSHA512, 1, key, 64);
  35.  
  36. [SKYSyncEncryptionHelper setDecryptionKeyForVolume:volumeName decryptionKey:encrkey];
  37.  
  38. [[NSUserDefaults standardUserDefaults] synchronize];
  39.  
  40. // Step 6
  41. }
Add Comment
Please, Sign In to add comment