How To Use Digital Signature in Asp.net
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Text;
public partial class FMS_x509test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
test();
}
public void test()
{
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadWrite);
//Put certificates from the store into a collection so user can select one.
X509Certificate2Collection fcollection = (X509Certificate2Collection)store.Certificates;
X509Certificate2Collection collection = X509Certificate2UI.SelectFromCollection(fcollection, "Select an X509 Certificate", "Choose a certificate to examine.", X509SelectionFlag.SingleSelection);
X509Certificate2 certificate = collection[0];
// X509Certificate2UI.DisplayCertificate(certificate);
RSACryptoServiceProvider csp = null;
csp = (RSACryptoServiceProvider)certificate.PrivateKey;
// Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes("Lokesh");
byte[] hash = sha1.ComputeHash(data);
byte[] signature = csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA1"));
//Verification Code
RSACryptoServiceProvider csp1 = (RSACryptoServiceProvider)certificate.PublicKey.Key;
// Hash the data
SHA1Managed sha11 = new SHA1Managed();
UnicodeEncoding encoding1 = new UnicodeEncoding();
byte[] data1 = encoding.GetBytes("Lokesh");
byte[] hash1 = sha1.ComputeHash(data1);
// Verify the signature with the hash
if (csp1.VerifyHash(hash1, CryptoConfig.MapNameToOID("SHA1"), signature))
{
Response.Write("<script language=javascript> alert('correct');</script/>");
}
else
{
Response.Write("<script language=javascript> alert('No correct');</script/>");
}
// Sign text
// byte[] signature = Sign("Test", "cn=Dashputre Jaideep JYD");
}
}