SigningCertificateV2
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Ess
{
public class SigningCertificateV2 : Asn1Encodable
{
private readonly Asn1Sequence m_certs;
private readonly Asn1Sequence m_policies;
public static SigningCertificateV2 GetInstance(object o)
{
if (o == null)
return null;
SigningCertificateV2 signingCertificateV = o as SigningCertificateV2;
if (signingCertificateV != null)
return signingCertificateV;
return new SigningCertificateV2(Asn1Sequence.GetInstance(o));
}
public static SigningCertificateV2 GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SigningCertificateV2(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static SigningCertificateV2 GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new SigningCertificateV2(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
private SigningCertificateV2(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 1 || count > 2)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_certs = Asn1Sequence.GetInstance(seq[sequencePosition++]);
m_policies = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Sequence.GetOptional);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public SigningCertificateV2(EssCertIDv2 cert)
{
m_certs = new DerSequence(cert);
}
public SigningCertificateV2(EssCertIDv2[] certs)
{
m_certs = DerSequence.FromElements(certs);
}
public SigningCertificateV2(EssCertIDv2[] certs, PolicyInformation[] policies)
{
m_certs = new DerSequence(certs);
m_policies = DerSequence.FromElementsOptional(policies);
}
public EssCertIDv2[] GetCerts()
{
return m_certs.MapElements(EssCertIDv2.GetInstance);
}
public PolicyInformation[] GetPolicies()
{
return m_policies?.MapElements(PolicyInformation.GetInstance);
}
public override Asn1Object ToAsn1Object()
{
if (m_policies != null)
return DerSequence.FromElements(m_certs, m_policies);
return DerSequence.FromElement(m_certs);
}
}
}