using System.Diagnostics.Contracts;\r
using System.IO;\r
using System.Reflection;\r
+using System.Security.Cryptography;\r
using System.ServiceModel.Channels;\r
using System.Threading;\r
using System.Threading.Tasks;\r
using System.Threading.Tasks.Dataflow;\r
-using OpenSSL.Crypto;\r
+\r
\r
namespace Pithos.Network\r
{\r
if (size == 0)\r
{\r
var buf = new byte[0];\r
- using (var hasher = new MessageDigestContext(MessageDigest.CreateByName(algorithm)))\r
- { \r
- hasher.Init();\r
- hashes[0] = hasher.Digest(buf);\r
+ using (var hasher = HashAlgorithm.Create(algorithm))\r
+ {\r
+ hashes[0] = hasher.ComputeHash(buf);\r
return hashes;\r
}\r
}\r
var actualHashers = parallelism > blocks ? (byte)blocks : parallelism;\r
\r
var buffer = new byte[actualHashers][];\r
- var hashers = new MessageDigestContext[actualHashers];\r
+ var hashers = new HashAlgorithm[actualHashers];\r
var bufferManager = GetBufferManager(blockSize, actualHashers);\r
for (var i = 0; i < actualHashers; i++)\r
{\r
buffer[i] = bufferManager.TakeBuffer(blockSize);// new byte[blockSize];\r
- hashers[i] = new MessageDigestContext(MessageDigest.CreateByName(algorithm));\r
- hashers[i].Init();\r
+ hashers[i] = HashAlgorithm.Create(algorithm); \r
}\r
try\r
{\r
int bufIdx = 0;\r
long index = 0;\r
\r
- long block = 0;\r
+ //long block = 0;\r
\r
while ((read = await stream.ReadAsync(buffer[bufIdx], 0, blockSize).ConfigureAwait(false)) > 0)\r
{\r
\r
var hasher = hashers[idx];\r
\r
- byte[] hash;\r
+ byte[] hash=hasher.ComputeHash(buffer[idx],0,lastByteIndex+1);\r
+/*\r
if (buffer[idx].Length == lastByteIndex || lastByteIndex==-1)\r
hash = hasher.Digest(buffer[idx]);\r
else\r
Buffer.BlockCopy(buffer[idx],0,buf,0,lastByteIndex+1);\r
hash = hasher.Digest(buf);\r
}\r
+*/\r
\r
\r
\r