Add CKeyPair.Sign() implementation
authorCryptoManiac <balthazar@yandex.ru>
Mon, 17 Aug 2015 19:54:47 +0000 (22:54 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Mon, 17 Aug 2015 19:54:47 +0000 (22:54 +0300)
Novacoin/CKeyPair.cs
NovacoinTest/Program.cs

index 158ad70..9c5903c 100644 (file)
@@ -51,6 +51,23 @@ namespace Novacoin
         }
 
         /// <summary>
+        /// Create signature for supplied data
+        /// </summary>
+        /// <param name="data">Data bytes sequence</param>
+        /// <returns>Signature bytes sequence</returns>
+        public IEnumerable<byte> Sign(IEnumerable<byte> data)
+        {
+            byte[] dataBytes = data.ToArray();
+
+            ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA");
+            ECPrivateKeyParameters keyParameters = new ECPrivateKeyParameters(D, domain);
+            signer.Init(true, keyParameters);
+            signer.BlockUpdate(dataBytes, 0, dataBytes.Length);
+
+            return signer.GenerateSignature();
+        }
+
+        /// <summary>
         /// Secret part of key pair
         /// </summary>
         public IEnumerable<byte> Secret
index 01f9b9d..d7242ad 100644 (file)
@@ -49,6 +49,13 @@ namespace NovacoinTest
             Console.WriteLine(keyPair1.ToString());
             Console.WriteLine("OK: {0}\n", keyPair1.ToString() == keyPair2.ToString());
 
+            /// ECDSA keypair signing test
+
+            string data = "Превед!";
+            byte[] signature = keyPair1.Sign(Encoding.UTF8.GetBytes(data)).ToArray();
+
+            Console.WriteLine("Signature: {0}", Interop.ToHex(signature));
+
             Console.ReadLine();
         }
     }