CertReqTemplateContent
using Org.BouncyCastle.Asn1.Crmf;
using System;
namespace Org.BouncyCastle.Asn1.Cmp
{
public class CertReqTemplateContent : Asn1Encodable
{
private readonly CertTemplate m_certTemplate;
private readonly Controls m_keySpec;
public virtual CertTemplate CertTemplate => m_certTemplate;
[Obsolete("Use 'KeySpecControls' property instead")]
public virtual Asn1Sequence KeySpec {
get {
return Asn1Sequence.GetInstance(m_keySpec?.ToAsn1Object());
}
}
public virtual Controls KeySpecControls => m_keySpec;
public static CertReqTemplateContent GetInstance(object obj)
{
if (obj == null)
return null;
CertReqTemplateContent certReqTemplateContent = obj as CertReqTemplateContent;
if (certReqTemplateContent != null)
return certReqTemplateContent;
return new CertReqTemplateContent(Asn1Sequence.GetInstance(obj));
}
public static CertReqTemplateContent GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new CertReqTemplateContent(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static CertReqTemplateContent GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new CertReqTemplateContent(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private CertReqTemplateContent(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 1 || count > 2)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_certTemplate = CertTemplate.GetInstance(seq[sequencePosition++]);
m_keySpec = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Controls.GetOptional);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public CertReqTemplateContent(CertTemplate certTemplate, Asn1Sequence keySpec)
{
if (certTemplate == null)
throw new ArgumentNullException("certTemplate");
m_certTemplate = certTemplate;
m_keySpec = Controls.GetInstance(keySpec);
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2);
asn1EncodableVector.Add(m_certTemplate);
asn1EncodableVector.AddOptional(m_keySpec);
return new DerSequence(asn1EncodableVector);
}
}
}