From 5e24f8fe130223d3a270b7353a93499d334839dc Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Mon, 17 Aug 2015 22:54:47 +0300 Subject: [PATCH] Add CKeyPair.Sign() implementation --- Novacoin/CKeyPair.cs | 17 +++++++++++++++++ NovacoinTest/Program.cs | 7 +++++++ 2 files changed, 24 insertions(+), 0 deletions(-) diff --git a/Novacoin/CKeyPair.cs b/Novacoin/CKeyPair.cs index 158ad70..9c5903c 100644 --- a/Novacoin/CKeyPair.cs +++ b/Novacoin/CKeyPair.cs @@ -51,6 +51,23 @@ namespace Novacoin } /// + /// Create signature for supplied data + /// + /// Data bytes sequence + /// Signature bytes sequence + public IEnumerable Sign(IEnumerable 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(); + } + + /// /// Secret part of key pair /// public IEnumerable Secret diff --git a/NovacoinTest/Program.cs b/NovacoinTest/Program.cs index 01f9b9d..d7242ad 100644 --- a/NovacoinTest/Program.cs +++ b/NovacoinTest/Program.cs @@ -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(); } } -- 1.7.1