private Stream GetCryptoStream(File file, FileUploadedDelegate onUploaded) { var info = CryptoUtil.GetCryptoKeyAndSalt(_cloud.Account.Credentials.PasswordCrypt); var xts = XtsAes256.Create(info.Key, info.IV); file.ServiceInfo.CryptInfo = new CryptInfo { PublicKey = new CryptoKeyInfo { Salt = info.Salt, IV = info.IV }, AlignBytes = (uint)(file.Size % XTSWriteOnlyStream.BlockSize != 0 ? XTSWriteOnlyStream.BlockSize - file.Size % XTSWriteOnlyStream.BlockSize : 0) }; var size = file.OriginalSize % XTSWriteOnlyStream.BlockSize == 0 ? file.OriginalSize.DefaultValue : (file.OriginalSize / XTSWriteOnlyStream.BlockSize + 1) * XTSWriteOnlyStream.BlockSize; var ustream = new SplittedUploadStream(file.FullPath, _cloud, size, false, file.ServiceInfo.CryptInfo); if (onUploaded != null) { ustream.FileUploaded += onUploaded; } // ReSharper disable once RedundantArgumentDefaultValue var encustream = new XTSWriteOnlyStream(ustream, xts, XTSWriteOnlyStream.DefaultSectorSize); return(encustream); }
private Stream GetPlainStream(File file, FileUploadedDelegate onUploaded) { var stream = new SplittedUploadStream(file.FullPath, _cloud, file.Size); if (onUploaded != null) { stream.FileUploaded += onUploaded; } return(stream); }