SignerIdentifier
using Org.BouncyCastle.Asn1.X509;
using System;
namespace Org.BouncyCastle.Asn1.Cms
{
public class SignerIdentifier : Asn1Encodable, IAsn1Choice
{
private readonly Asn1Encodable m_id;
public bool IsTagged => m_id is Asn1TaggedObject;
public Asn1Encodable ID {
get {
if (Asn1Utilities.TryGetOptionalContextTagged(m_id, 0, false, out Asn1OctetString result, Asn1OctetString.GetTagged))
return result;
return IssuerAndSerialNumber.GetInstance(m_id);
}
}
public static SignerIdentifier GetInstance(object o)
{
return Asn1Utilities.GetInstanceChoice(o, GetOptional);
}
public static SignerIdentifier GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance);
}
public static SignerIdentifier GetOptional(Asn1Encodable element)
{
if (element == null)
throw new ArgumentNullException("element");
SignerIdentifier signerIdentifier = element as SignerIdentifier;
if (signerIdentifier != null)
return signerIdentifier;
IssuerAndSerialNumber optional = IssuerAndSerialNumber.GetOptional(element);
if (optional != null)
return new SignerIdentifier(optional);
Asn1TaggedObject optional2 = Asn1TaggedObject.GetOptional(element);
if (optional2 != null && optional2.HasContextTag(0))
return new SignerIdentifier(SubjectKeyIdentifier.GetTagged(optional2, false));
Asn1OctetString asn1OctetString = element as Asn1OctetString;
if (asn1OctetString != null)
return new SignerIdentifier(asn1OctetString);
Asn1Object asn1Object = element as Asn1Object;
if (asn1Object != null)
return new SignerIdentifier(asn1Object);
return null;
}
public static SignerIdentifier GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance);
}
public SignerIdentifier(IssuerAndSerialNumber id)
{
if (id == null)
throw new ArgumentNullException("id");
m_id = id;
}
public SignerIdentifier(SubjectKeyIdentifier id)
{
m_id = new DerTaggedObject(false, 0, id);
}
[Obsolete("Use constructor taking a 'SubjectKeyIdentifier' instead")]
public SignerIdentifier(Asn1OctetString id)
{
m_id = new DerTaggedObject(false, 0, id);
}
[Obsolete("Will be removed")]
public SignerIdentifier(Asn1Object id)
{
if (id == null)
throw new ArgumentNullException("id");
m_id = id;
}
public override Asn1Object ToAsn1Object()
{
return m_id.ToAsn1Object();
}
}
}