<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" />

TimeStampRequest

using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Tsp; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Math; using Org.BouncyCastle.X509; using System; using System.Collections.Generic; using System.IO; namespace Org.BouncyCastle.Tsp { public class TimeStampRequest : X509ExtensionBase { private readonly TimeStampReq m_req; public int Version => m_req.Version.IntValueExact; public MessageImprint MessageImprint => m_req.MessageImprint; public AlgorithmIdentifier MessageImprintAlgID => m_req.MessageImprint.HashAlgorithm; public string MessageImprintAlgOid => m_req.MessageImprint.HashAlgorithm.Algorithm.Id; public string ReqPolicy => m_req.ReqPolicy?.Id; public BigInteger Nonce => m_req.Nonce?.Value; public bool CertReq => (m_req.CertReq ?? DerBoolean.False).IsTrue; internal X509Extensions Extensions => m_req.Extensions; public virtual bool HasExtensions => Extensions != null; public TimeStampRequest(TimeStampReq req) { m_req = req; } public TimeStampRequest(byte[] req) : this(new Asn1InputStream(req)) { } public TimeStampRequest(Stream input) : this(new Asn1InputStream(input)) { } private TimeStampRequest(Asn1InputStream str) { try { m_req = TimeStampReq.GetInstance(str.ReadObject()); } catch (InvalidCastException ex) { throw new IOException("malformed request: " + ex?.ToString()); } catch (ArgumentException ex2) { throw new IOException("malformed request: " + ex2?.ToString()); } } public byte[] GetMessageImprintDigest() { return m_req.MessageImprint.GetHashedMessage(); } public void Validate(IList<string> algorithms, IList<string> policies, IList<string> extensions) { if (!algorithms.Contains(MessageImprintAlgOid)) throw new TspValidationException("request contains unknown algorithm", 128); if (policies != null && ReqPolicy != null && !policies.Contains(ReqPolicy)) throw new TspValidationException("request contains unknown policy", 256); if (Extensions != null && extensions != null) { foreach (DerObjectIdentifier extensionOid in Extensions.ExtensionOids) { if (!extensions.Contains(extensionOid.Id)) throw new TspValidationException("request contains unknown extension", 8388608); } } if (TspUtil.GetDigestLength(MessageImprintAlgOid) != GetMessageImprintDigest().Length) throw new TspValidationException("imprint digest the wrong length", 4); } public byte[] GetEncoded() { return m_req.GetEncoded(); } public virtual IList<DerObjectIdentifier> GetExtensionOids() { return TspUtil.GetExtensionOids(Extensions); } protected override X509Extensions GetX509Extensions() { return Extensions; } } }