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));
}
}
}