CKeyPair.Verify() implementation and testing
authorCryptoManiac <balthazar@yandex.ru>
Mon, 17 Aug 2015 20:11:33 +0000 (23:11 +0300)
committerCryptoManiac <balthazar@yandex.ru>
Mon, 17 Aug 2015 20:11:33 +0000 (23:11 +0300)
Novacoin/CKeyPair.cs
NovacoinTest/Program.cs

index 9c5903c..034e331 100644 (file)
@@ -67,6 +67,18 @@ namespace Novacoin
             return signer.GenerateSignature();
         }
 
+        public bool Verify(IEnumerable<byte> data, IEnumerable<byte> signature)
+        {
+            byte[] dataBytes = data.ToArray();
+
+            ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA");
+            ECPublicKeyParameters keyParameters = new ECPublicKeyParameters(Q, domain);
+            signer.Init(false, keyParameters);
+            signer.BlockUpdate(dataBytes, 0, dataBytes.Length);
+
+            return signer.VerifySignature(signature.ToArray());
+        }
+
         /// <summary>
         /// Secret part of key pair
         /// </summary>
index d7242ad..d0106d1 100644 (file)
@@ -52,9 +52,11 @@ namespace NovacoinTest
             /// ECDSA keypair signing test
 
             string data = "Превед!";
-            byte[] signature = keyPair1.Sign(Encoding.UTF8.GetBytes(data)).ToArray();
+            byte[] dataBytes = Encoding.UTF8.GetBytes(data);
+            byte[] signature = keyPair1.Sign(dataBytes).ToArray();
 
             Console.WriteLine("Signature: {0}", Interop.ToHex(signature));
+            Console.WriteLine("Signature is OK: {0}", keyPair1.Verify(dataBytes, signature));
 
             Console.ReadLine();
         }