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

TimeStampRequestGenerator

using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Tsp; using Org.BouncyCastle.Asn1.X509; using Org.BouncyCastle.Math; using Org.BouncyCastle.Operators.Utilities; using System; namespace Org.BouncyCastle.Tsp { public class TimeStampRequestGenerator { private readonly X509ExtensionsGenerator m_extGenerator = new X509ExtensionsGenerator(); private readonly IDigestAlgorithmFinder m_digestAlgorithmFinder; private DerObjectIdentifier m_reqPolicy; private DerBoolean m_certReq; public TimeStampRequestGenerator() : this(DefaultDigestAlgorithmFinder.Instance) { } public TimeStampRequestGenerator(IDigestAlgorithmFinder digestAlgorithmFinder) { if (digestAlgorithmFinder == null) throw new ArgumentNullException("digestAlgorithmFinder"); m_digestAlgorithmFinder = digestAlgorithmFinder; } public void SetReqPolicy(DerObjectIdentifier reqPolicy) { m_reqPolicy = reqPolicy; } [Obsolete("Use overload taking DerObjectIdentifier instead")] public void SetReqPolicy(string reqPolicy) { SetReqPolicy(new DerObjectIdentifier(reqPolicy)); } public void SetCertReq(DerBoolean certReq) { m_certReq = certReq; } public void SetCertReq(bool certReq) { SetCertReq(DerBoolean.GetInstance(certReq)); } public virtual void AddExtension(DerObjectIdentifier oid, bool critical, Asn1Encodable extValue) { m_extGenerator.AddExtension(oid, critical, extValue); } public virtual void AddExtension(DerObjectIdentifier oid, bool critical, byte[] extValue) { m_extGenerator.AddExtension(oid, critical, extValue); } public TimeStampRequest Generate(string digestAlgorithm, byte[] digest) { return Generate(digestAlgorithm, digest, null); } public TimeStampRequest Generate(string digestAlgorithmOid, byte[] digest, BigInteger nonce) { if (digestAlgorithmOid == null) throw new ArgumentNullException("digestAlgorithmOid"); return Generate(new DerObjectIdentifier(digestAlgorithmOid), digest, nonce); } public virtual TimeStampRequest Generate(DerObjectIdentifier digestAlgorithm, byte[] digest) { return Generate(digestAlgorithm, digest, null); } public virtual TimeStampRequest Generate(DerObjectIdentifier digestAlgorithm, byte[] digest, BigInteger nonce) { return Generate(m_digestAlgorithmFinder.Find(digestAlgorithm), digest, nonce); } public virtual TimeStampRequest Generate(AlgorithmIdentifier digestAlgorithm, byte[] digest) { return Generate(digestAlgorithm, digest, null); } public virtual TimeStampRequest Generate(AlgorithmIdentifier digestAlgorithm, byte[] digest, BigInteger nonce) { if (digestAlgorithm == null) throw new ArgumentNullException("digestAlgorithm"); return new TimeStampRequest(new TimeStampReq(new MessageImprint(digestAlgorithm, digest), nonce: (nonce == null) ? null : new DerInteger(nonce), extensions: m_extGenerator.IsEmpty ? null : m_extGenerator.Generate(), tsaPolicy: m_reqPolicy, certReq: m_certReq)); } } }