当我尝试从智能卡中获取时间戳时出现异常
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;
}