0

I am using ECDsa for signing. When I use VerifyData with byte[] it works, but when I use it as Stream VerifyData returns false. Why?

VerifyData byte[]: True VerifyData Stream: False

using System.Security.Cryptography;
using System.Text;

string data = "Hello, World!";
using MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(data));

using ECDsa ecdSa = ECDsa.Create();
byte[] signature = ecdSa.SignData(ms.ToArray(), HashAlgorithmName.SHA256, DSASignatureFormat.Rfc3279DerSequence);
bool verify = ecdSa.VerifyData(ms.ToArray(), signature, HashAlgorithmName.SHA256, DSASignatureFormat.Rfc3279DerSequence);

byte[] signatureStream = ecdSa.SignData(ms, HashAlgorithmName.SHA256, DSASignatureFormat.Rfc3279DerSequence);
bool verifyStream = ecdSa.VerifyData(ms, signatureStream, HashAlgorithmName.SHA256, DSASignatureFormat.Rfc3279DerSequence);

Console.WriteLine("VerifyData byte[]: " + verify);
Console.WriteLine("VerifyData Stream: " + verifyStream);
Console.ReadLine();

please review the example, thanks

andka
  • 1
  • 1

0 Answers0