0

当我尝试从智能卡中获取时间戳时出现异常

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;

        }
4

1 回答 1

0

我访问了tsa.net,发现它与 Timestamp Authorities 完全无关。它看起来像一个 Made For Adsense 页面,广告涉及航空公司行李规定和 TSA(运输安全管理局)。所以回答你的问题:你没有连接到真正的时间戳权威。

于 2013-04-04T06:40:28.480 回答