Simplification of syntax
[NovacoinLibrary.git] / Novacoin / Hash256.cs
index 365f778..bad52d7 100644 (file)
@@ -1,36 +1,37 @@
 \feffusing System;
 using System.Text;
 using System.Linq;
+using System.Collections.Generic;
+
+using System.Security.Cryptography;
 
 namespace Novacoin
 {
        /// <summary>
        /// Representation of SHA-256 hash
        /// </summary>
-       public class Hash256
-       {
-               /// <summary>
-               /// Array of digest bytes.
-               /// </summary>
-               private byte[] h;
+    public class Hash256 : Hash
+    {
+        // 32 bytes
+        public override int hashSize
+        {
+            get { return 32; }
+        }
+
+        public Hash256() : base() { }
+        public Hash256(byte[] bytes, int offset=0) : base(bytes, offset) { }
+        public Hash256(IEnumerable<byte> bytes, int skip=0) : base(bytes, skip) { }
+        public Hash256(Hash256 h) : base(h) { }
+
 
-               /// <summary>
-               /// Initializes an empty instance of the Hash256 class.
-               /// </summary>
-               public Hash256 ()
-               {
-                       h = Enumerable.Repeat<byte>(0, 32).ToArray();
-               }
+        public static Hash256 Compute256(IEnumerable<byte> inputBytes)
+        {
+            byte[] dataBytes = inputBytes.ToArray();
+            byte[] digest1 = _hasher256.ComputeHash(dataBytes, 0, dataBytes.Length);
+            byte[] digest2 = _hasher256.ComputeHash(digest1, 0, digest1.Length);
 
-               public override string ToString()
-               {
-                       StringBuilder sb = new StringBuilder(h.Length * 2);
-                       foreach (byte b in h)
-                       {
-                               sb.AppendFormat ("{0:x2}", b);
-                       }
-                       return sb.ToString();
-               }
-       }
+            return new Hash256(digest2);
+        }
+    }
 }