OtherInfo
using System;
namespace Org.BouncyCastle.Asn1.X9
{
public class OtherInfo : Asn1Encodable
{
private readonly KeySpecificInfo m_keyInfo;
private readonly Asn1OctetString m_partyAInfo;
private readonly Asn1OctetString m_suppPubInfo;
public KeySpecificInfo KeyInfo => m_keyInfo;
public Asn1OctetString PartyAInfo => m_partyAInfo;
public Asn1OctetString SuppPubInfo => m_suppPubInfo;
public static OtherInfo GetInstance(object obj)
{
if (obj == null)
return null;
OtherInfo otherInfo = obj as OtherInfo;
if (otherInfo != null)
return otherInfo;
return new OtherInfo(Asn1Sequence.GetInstance(obj));
}
public static OtherInfo GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new OtherInfo(Asn1Sequence.GetInstance(taggedObject, declaredExplicit));
}
public static OtherInfo GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new OtherInfo(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
[Obsolete("Use 'GetInstance' instead")]
public OtherInfo(Asn1Sequence seq)
{
int count = seq.Count;
int sequencePosition = 0;
if (count < 2 || count > 3)
throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq");
m_keyInfo = KeySpecificInfo.GetInstance(seq[sequencePosition++]);
m_partyAInfo = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, Asn1OctetString.GetTagged);
m_suppPubInfo = Asn1Utilities.ReadContextTagged(seq, ref sequencePosition, 2, true, Asn1OctetString.GetTagged);
if (sequencePosition != count)
throw new ArgumentException("Unexpected elements in sequence", "seq");
}
public OtherInfo(KeySpecificInfo keyInfo, Asn1OctetString partyAInfo, Asn1OctetString suppPubInfo)
{
if (keyInfo == null)
throw new ArgumentNullException("keyInfo");
m_keyInfo = keyInfo;
m_partyAInfo = partyAInfo;
if (suppPubInfo == null)
throw new ArgumentNullException("suppPubInfo");
m_suppPubInfo = suppPubInfo;
}
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3);
asn1EncodableVector.Add(m_keyInfo);
asn1EncodableVector.AddOptionalTagged(true, 0, m_partyAInfo);
asn1EncodableVector.Add(new DerTaggedObject(2, m_suppPubInfo));
return new DerSequence(asn1EncodableVector);
}
}
}