Im working on api project that requires Signing Verifying Digital signature
below the signing code
public static string SignJSONMessage(string messageToSign,string certificateSerialNumber){ RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider(); rsaCryptoServiceProvider.FromXmlString(GetCertificates(certificateSerialNumber).PrivateKey.ToXmlString(true)); RSACryptoServiceProvider.UseMachineKeyStore = true; rsaCryptoServiceProvider.ExportParameters(false); rsaCryptoServiceProvider.KeySize = 2048; return Convert.ToBase64String(rsaCryptoServiceProvider.SignData(Encoding.Unicode.GetBytes(messageToSign), CryptoConfig.MapNameToOID("SHA256")));}
, verifying
public static bool VerifyJSONMessage(string originalMessage, string signedMessage, string certificateSerialNumber) { RSACryptoServiceProvider rsaCryptoServiceProvider = (RSACryptoServiceProvider)GetCertificates(certificateSerialNumber).PublicKey.Key;RSACryptoServiceProvider.UseMachineKeyStore = true; rsaCryptoServiceProvider.ExportParameters(false); rsaCryptoServiceProvider.KeySize = 2048; byte[] Signature; try{ Signature = Convert.FromBase64String(SignedMessage); } catch{return false;} return rsaCryptoServiceProvider.VerifyData(Encoding.Unicode.GetBytes(originalMessage), CryptoConfig.MapNameToOID("SHA256"), Signature);}
there is no problem with the GetCertificates() method its woirking
every time i check the verify it returns false!
,here's the code
string b_body = @"{""BilrCatCode"":1}"; var signature = SignJSONMessage(b_body, "Cert Serial Number"); bool x = VerifyJSONMessage(b_body, signature, "Cert Serial Number");
can any one help on this
Thanks in advanced