Пример #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Response"/> class.
        /// </summary>
        /// <param name="response">DER encoded time stamp response.</param>
        public Response(byte[] response)
        {
            if (null == response)
            {
                throw new ArgumentNullException("response");
            }

            this.response = new TimeStampResponse(response);

            if (null != this.response.TimeStampToken)
            {
                // NOTICE: this.response.TimeStampToken.GetEncoded() returns malformed byte array; therefore, we use low level interface
                // this.TST = new TimeStampToken(this.response.TimeStampToken.GetEncoded());
                Org.BouncyCastle.Asn1.Tsp.TimeStampResp asn1Response = Org.BouncyCastle.Asn1.Tsp.TimeStampResp.GetInstance(Org.BouncyCastle.Asn1.Asn1Sequence.FromByteArray(response));
                var derTst = asn1Response.TimeStampToken.GetDerEncoded();

                this.TST = new TimeStampToken(derTst);
            }
        }
Пример #2
0
        public void explode(byte[] fileContents)
        {
            try
            {
                Asn1Sequence        sequenza   = Asn1Sequence.GetInstance(fileContents);
                DerObjectIdentifier tsdOIDFile = sequenza[0] as DerObjectIdentifier;
                if (tsdOIDFile != null)
                {
                    if (tsdOIDFile.Id == CmsObjectIdentifiers.timestampedData.Id)   //TSD
                    {
                        DerTaggedObject taggedObject = sequenza[1] as DerTaggedObject;
                        if (taggedObject != null)
                        {
                            Asn1Sequence    asn1seq = Asn1Sequence.GetInstance(taggedObject, true);
                            TimeStampedData tsd     = TimeStampedData.GetInstance(asn1seq);
                            _p7m = new CryptoFile {
                                Content = tsd.Content.GetOctets(), MessageFileType = fileType.Binary, Name = "default.p7m"
                            };
                            TimeStampAndCrl[] crlTS = tsd.TemporalEvidence.TstEvidence.ToTimeStampAndCrlArray();
                            foreach (TimeStampAndCrl tokCRL in crlTS)
                            {
                                TimeStampToken tsToken = new TimeStampToken(tokCRL.TimeStampToken);
                                ContentInfo    o       = tokCRL.TimeStampToken;

                                Org.BouncyCastle.Asn1.Cmp.PkiStatusInfo si = new Org.BouncyCastle.Asn1.Cmp.PkiStatusInfo(0);
                                Org.BouncyCastle.Asn1.Tsp.TimeStampResp re = new Org.BouncyCastle.Asn1.Tsp.TimeStampResp(si, o);

                                string serial = tsToken.TimeStampInfo.SerialNumber.ToString();
                                _tsr.Add(new CryptoFile {
                                    Content = re.GetEncoded(), Name = String.Format("default.{0}.tsr", serial), MessageFileType = fileType.Binary
                                });
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }