<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

PopoSigningKeyInput

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class PopoSigningKeyInput : Asn1Encodable { private readonly GeneralName m_sender; private readonly PKMacValue m_publicKeyMac; private readonly SubjectPublicKeyInfo m_publicKey; public virtual GeneralName Sender => m_sender; public virtual PKMacValue PublicKeyMac => m_publicKeyMac; public virtual SubjectPublicKeyInfo PublicKey => m_publicKey; public static PopoSigningKeyInput GetInstance(object obj) { if (obj == null) return null; PopoSigningKeyInput popoSigningKeyInput = obj as PopoSigningKeyInput; if (popoSigningKeyInput != null) return popoSigningKeyInput; return new PopoSigningKeyInput(Asn1Sequence.GetInstance(obj)); } public static PopoSigningKeyInput GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PopoSigningKeyInput(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static PopoSigningKeyInput GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PopoSigningKeyInput(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private PopoSigningKeyInput(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); Asn1Encodable asn1Encodable = seq[0]; Asn1TaggedObject asn1TaggedObject = asn1Encodable as Asn1TaggedObject; if (asn1TaggedObject != null) m_sender = GeneralName.GetInstance(Asn1Utilities.GetExplicitContextBaseObject(asn1TaggedObject, 0)); else m_publicKeyMac = PKMacValue.GetInstance(asn1Encodable); m_publicKey = SubjectPublicKeyInfo.GetInstance(seq[1]); } public PopoSigningKeyInput(GeneralName sender, SubjectPublicKeyInfo spki) { if (sender == null) throw new ArgumentNullException("sender"); m_sender = sender; if (spki == null) throw new ArgumentNullException("spki"); m_publicKey = spki; } public PopoSigningKeyInput(PKMacValue pkmac, SubjectPublicKeyInfo spki) { if (pkmac == null) throw new ArgumentNullException("pkmac"); m_publicKeyMac = pkmac; if (spki == null) throw new ArgumentNullException("spki"); m_publicKey = spki; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(2); if (m_sender != null) asn1EncodableVector.Add(new DerTaggedObject(true, 0, m_sender)); else asn1EncodableVector.Add(m_publicKeyMac); asn1EncodableVector.Add(m_publicKey); return new DerSequence(asn1EncodableVector); } } }