获取智能卡时间戳时连接异常关闭
本文关键字:异常 连接 智能卡 时间戳 获取 | 更新日期: 2023-09-27 18:07:20
我有一个异常,当我试图从我的智能卡获取时间戳
byte[] ts = tsc.GetTimeStampToken(tsImprint);
调试问题:
异常堆栈底层连接已关闭:连接已关闭意外。
at System.Net.HttpWebRequest.GetResponse()
at iTextSharp.text.pdf.security.TSAClientBouncyCastle.GetTSAResponse(Byte[] requestBytes)
at iTextSharp.text.pdf.security.TSAClientBouncyCastle.GetTimeStampToken(Byte[] imprint)
at DemoSCFmwk.Program.GetTimestamp(Byte[] signature) in c:'Users'guilherme'Desktop'smartCard Project'smartcardapi_source'Smartcard_API'DemoSCFmwk'Program.cs:line 167
at DemoSCFmwk.Program.SignMsg(Byte[] msg, X509Certificate2 signerCert, Boolean detached) in c:'Users'guilherme'Desktop'smartCard Project'smartcardapi_source'Smartcard_API'DemoSCFmwk'Program.cs:line 149
at DemoSCFmwk.Program.SignHashed() in c:'Users'guilherme'Desktop'smartCard Project'smartcardapi_source'Smartcard_API'DemoSCFmwk'Program.cs:line 58
at DemoSCFmwk.Program.Main() in c:'Users'guilherme'Desktop'smartCard Project'smartcardapi_source'Smartcard_API'DemoSCFmwk'Program.cs:line 202
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
完整代码在这里:
public static Asn1EncodableVector GetTimestamp(byte[] signature) {
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] tsImprint = sha1.ComputeHash(signature);
ITSAClient tsc = new TSAClientBouncyCastle("http://tsa.net", null, null);
String ID_TIME_STAMP_TOKEN = "1.2.840.113549.1.9.16.2.14"; // RFC 3161 id-aa-timeStampToken
byte[] ts = tsc.GetTimeStampToken(tsImprint);
MemoryStream mem = new MemoryStream(ts);
Asn1InputStream tempstream = new Asn1InputStream(mem);
Asn1EncodableVector unauthAttributes = new Asn1EncodableVector();
Asn1EncodableVector v = new Asn1EncodableVector();
v.Add(new DerObjectIdentifier(ID_TIME_STAMP_TOKEN)); // id-aa-timeStampToken
Asn1Sequence seq = (Asn1Sequence) tempstream.ReadObject();
v.Add(new DerSet(seq));
unauthAttributes.Add(new DerSequence(v));
return unauthAttributes;
}
我访问了tsa.net,发现它与时间戳权威完全无关。它看起来像是一个专为Adsense设计的页面,上面的广告提到了航空行李法规和运输安全管理局(TSA)。所以回答你的问题:你没有连接到一个真正的时间戳权威。