Tag: digital signature

在IIS上托管的C#中使用USB令牌打开X509证书选择

我正在制定一项要求,要求在ASP.Net C#中对PDF文件进行数字签名,并开发了一个在我的本地机器上使用USB令牌获取客户端证书的应用程序。 但是,在IIS服务器上托管此应用程序时收到错误“当前会话不是交互式” 。 任何人都有任何想法,我们如何从ASP.Net C#中的客户端机器获取X509Certificates,并且此应用程序托管在IIS服务器而不是控制台应用程序上。 我的代码供参考: private void getSign() { X509Store store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); X509Certificate2 cert = null; //manually chose the certificate in the store X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(store.Certificates, null, null, X509SelectionFlag.SingleSelection); if (sel.Count > 0) cert = sel[0]; else { //MessageBox.Show(“Certificate not found”); return; } SignWithThisCert(cert); }

解码OAEP填充时发生错误

在使用RSACryptoServiceProvider.Decrypt解密文本时,我收到错误: 解码OAEP填充时发生错误。 这是我的代码: CspParameters cspParam = new CspParameters(); cspParam = new CspParameters(); cspParam.Flags = CspProviderFlags.UseMachineKeyStore; clsCertificates cc = new clsCertificates(); string a = “”; cc.OpenStoreIE(ref a); cc.SetProperties(); X509Certificate2 cert = new X509Certificate2(); cert = cc.x509_2Cert; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cspParam); //to gentrate private and public keys from the certificate rsa.FromXmlString(cert.PublicKey.Key.ToXmlString(false)); String publicKey = rsa.ToXmlString(false); // […]

使用c#中的私钥对数据进行签名

我需要使用一个私钥使用算法SHA1RSA,Rsa密钥长度2048和64基本编码来签署一些数据。我的代码是这样的 string sPayload = “”; HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(“URI”); httpWebRequest.ContentType = “application/json; charset=utf-8”; httpWebRequest.Method = WebRequestMethods.Http.Post; using (StreamWriter streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { sPayload = “{\”id\”:\”14123213213\”,” + “\”uid\”:\”teller\”,” + “\”pwd\”:\”abc123\”,” + “\”apiKey\”:\”2343243\”,” + “\”agentRefNo\”:\”234324324\”}”; httpWebRequest.Headers.Add(“SIGNATURE”, Convert.ToBase64String(new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(sPayload)))); streamWriter.Write(sPayload); streamWriter.Flush(); streamWriter.Close(); } System.Net.ServicePointManager.Expect100Continue = false; HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream())) { […]

在C#中,使用x.509证书签署xml并检查签名

我正在尝试使用x.509证书签署XML文件,我可以使用私钥对文档进行签名,然后使用CheckSignature方法(它具有接收证书作为参数的重载)来validation签名。 问题是validation签名的用户必须拥有证书,我关心的是,如果用户拥有证书,那么他可以访问私钥,据我所知,这是私有的,应该只对用户可用谁签字。 我错过了什么? 谢谢你的帮助。