From 4cdbdebdb85d59518a685b7dea50e99246d6e4cc Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 26 Aug 2015 04:19:03 +0300 Subject: [PATCH] Trying to use Security.Cryptography library (http://clrsecurity.codeplex.com) for Up1 file uploader --- Lib/Security.Cryptography.dll | Bin 0 -> 95232 bytes ShareX.UploadersLib/FileUploaders/Up1.cs | 30 ++++++++++-------- .../ShareX.UploadersLib.csproj | 7 ++-- ShareX.UploadersLib/packages.config | 1 - 4 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 Lib/Security.Cryptography.dll diff --git a/Lib/Security.Cryptography.dll b/Lib/Security.Cryptography.dll new file mode 100644 index 0000000000000000000000000000000000000000..d19198541fe092e486dbcc7ee6612328ed141a70 GIT binary patch literal 95232 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

T$6{{`%iKWQ8BX3}Cojb)FI`=EiB*+&rjx6O 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 TVYrh}_kT-)|6e)nHSqrd0xNr- literal 0 HcmV?d00001 diff --git a/ShareX.UploadersLib/FileUploaders/Up1.cs b/ShareX.UploadersLib/FileUploaders/Up1.cs index 4d0f2d7f2..966518d2f 100644 --- a/ShareX.UploadersLib/FileUploaders/Up1.cs +++ b/ShareX.UploadersLib/FileUploaders/Up1.cs @@ -24,9 +24,7 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using Newtonsoft.Json; -using Org.BouncyCastle.Crypto.Engines; -using Org.BouncyCastle.Crypto.Modes; -using Org.BouncyCastle.Crypto.Parameters; +using Security.Cryptography; using ShareX.HelpersLib; using System; using System.Collections.Generic; @@ -153,18 +151,24 @@ private static MemoryStream Encrypt(Stream source, string fileName, out string s byte[] ccmIV = new byte[ccmIVLen]; Array.Copy(iv, ccmIV, ccmIVLen); - // Set up the encryption parameters - KeyParameter keyParam = new KeyParameter(key); - CcmParameters ccmParams = new CcmParameters(keyParam, MacSize, ccmIV, new byte[0]); - CcmBlockCipher ccmMode = new CcmBlockCipher(new AesFastEngine()); - ccmMode.Init(true, ccmParams); + // http://blogs.msdn.com/b/shawnfa/archive/2009/03/17/authenticated-symmetric-encryption-in-net.aspx + using (AuthenticatedAesCng aes = new AuthenticatedAesCng()) + { + aes.CngMode = CngChainingMode.Ccm; + aes.Key = key; + aes.IV = ccmIV; - // Perform the encryption - byte[] encBytes = new byte[ccmMode.GetOutputSize(data.Length)]; - int res = ccmMode.ProcessBytes(data, 0, data.Length, encBytes, 0); - ccmMode.DoFinal(encBytes, res); + MemoryStream ms = new MemoryStream(); - return new MemoryStream(encBytes); + using (IAuthenticatedCryptoTransform encryptor = aes.CreateAuthenticatedEncryptor()) + { + CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write); + cs.Write(data, 0, data.Length); + cs.FlushFinalBlock(); + //tag = encryptor.GetTag(); + return ms; + } + } } public override UploadResult Upload(Stream input, string fileName) diff --git a/ShareX.UploadersLib/ShareX.UploadersLib.csproj b/ShareX.UploadersLib/ShareX.UploadersLib.csproj index 666fa809f..40e32ae53 100644 --- a/ShareX.UploadersLib/ShareX.UploadersLib.csproj +++ b/ShareX.UploadersLib/ShareX.UploadersLib.csproj @@ -77,10 +77,6 @@ ..\packages\AWSSDK.S3.3.1.2.0\lib\net35\AWSSDK.S3.dll True - - ..\packages\Portable.BouncyCastle.1.7.0.2\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch10+MonoAndroid10+xamarinmac20+xamarinios10\crypto.dll - True - ..\packages\MegaApiClient.1.1.1\lib\net40\MegaApiClient.dll True @@ -93,6 +89,9 @@ ..\packages\SSH.NET.2014.4.6-beta2\lib\net40\Renci.SshNet.dll True + + ..\Lib\Security.Cryptography.dll + diff --git a/ShareX.UploadersLib/packages.config b/ShareX.UploadersLib/packages.config index bcfb26040..43f5127c4 100644 --- a/ShareX.UploadersLib/packages.config +++ b/ShareX.UploadersLib/packages.config @@ -4,7 +4,6 @@ - \ No newline at end of file