wasSharpNET – Blame information for rev 11

Subversion Repositories:
Rev:
Rev Author Line No. Line
2 office 1 ///////////////////////////////////////////////////////////////////////////
2 // Copyright (C) Wizardry and Steamworks 2016 - License: GNU GPLv3 //
3 // Please see: http://www.gnu.org/licenses/gpl.html for legal details, //
4 // rights of fair usage, the disclaimer and warranty conditions. //
5 ///////////////////////////////////////////////////////////////////////////
6  
7 using System;
10 office 8 using System.IO;
5 office 9 using System.Text;
10 office 10 using System.Threading.Tasks;
2 office 11  
12 namespace wasSharpNET.Cryptography
13 {
14 public static class SHA1
15 {
16 /// <summary>
17 /// Return a 40 character hex representation of a SHA1 hash.
18 /// </summary>
19 /// <param name="sha1">the SHA1 hash object</param>
20 public static string ToHex(this System.Security.Cryptography.SHA1 sha1, byte[] data)
21 {
22 return BitConverter.ToString(sha1.ComputeHash(data)).Replace("-", "");
23 }
5 office 24  
25 public static string ToHex(this System.Security.Cryptography.SHA1 sha1, string data)
26 {
27 return BitConverter.ToString(sha1.ComputeHash(Encoding.UTF8.GetBytes(data))).Replace("-", "");
28 }
10 office 29  
30 ///////////////////////////////////////////////////////////////////////////
31 // Copyright (C) Wizardry and Steamworks 2014 - License: GNU GPLv3 //
32 ///////////////////////////////////////////////////////////////////////////
33 /// <summary>
34 /// Compute the SHA1 hash of an array of bytes and copy the result to the output stream as a hexadecimal string.
35 /// </summary>
36 /// <param name="sha1">the SHA1 object to use</param>
37 /// <param name="data">the data to hash</param>
38 /// <param name="outStream">the output stream</param>
39 public static async Task CopyToAsync(this System.Security.Cryptography.SHA1 sha1, byte[] data, Stream outStream)
40 {
41 var buffer = new char[1];
42 using (MemoryStream SHA1OutputStream = new MemoryStream())
43 {
44 using (StringReader SHA1InputStream = new StringReader(BitConverter.ToString(sha1.ComputeHash(data)).Replace("-", "")))
45 {
46 int count;
47 while ((count = await SHA1InputStream.ReadAsync(buffer, 0, 1)) != 0)
48 {
49 switch (buffer[0])
50 {
51 case '-':
52 continue;
53 default:
54 SHA1OutputStream.WriteByte((byte)buffer[0]);
55 break;
56 }
57 }
58 }
59 SHA1OutputStream.Position = 0L;
60 await SHA1OutputStream.CopyToAsync(outStream);
61 }
62 }
2 office 63 }
11 office 64 }