<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

PopoSigningKey

public class PopoSigningKey : Asn1Encodable
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class PopoSigningKey : Asn1Encodable { private readonly PopoSigningKeyInput m_poposkInput; private readonly AlgorithmIdentifier m_algorithmIdentifier; private readonly DerBitString m_signature; public virtual PopoSigningKeyInput PoposkInput => m_poposkInput; public virtual AlgorithmIdentifier AlgorithmIdentifier => m_algorithmIdentifier; public virtual DerBitString Signature => m_signature; public static PopoSigningKey GetInstance(object obj) { if (obj == null) return null; PopoSigningKey popoSigningKey = obj as PopoSigningKey; if (popoSigningKey != null) return popoSigningKey; return new PopoSigningKey(Asn1Sequence.GetInstance(obj)); } public static PopoSigningKey GetInstance(Asn1TaggedObject obj, bool isExplicit) { return new PopoSigningKey(Asn1Sequence.GetInstance(obj, isExplicit)); } public static PopoSigningKey GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PopoSigningKey(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private PopoSigningKey(Asn1Sequence seq) { int count = seq.Count; if (count < 2 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); int sequencePosition = 0; m_poposkInput = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, false, PopoSigningKeyInput.GetTagged); m_algorithmIdentifier = AlgorithmIdentifier.GetInstance(seq[sequencePosition++]); m_signature = DerBitString.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public PopoSigningKey(PopoSigningKeyInput poposkIn, AlgorithmIdentifier aid, DerBitString signature) { m_poposkInput = poposkIn; if (aid == null) throw new ArgumentNullException("aid"); m_algorithmIdentifier = aid; if (signature == null) throw new ArgumentNullException("signature"); m_signature = signature; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.AddOptionalTagged(false, 0, m_poposkInput); asn1EncodableVector.Add(m_algorithmIdentifier); asn1EncodableVector.Add(m_signature); return new DerSequence(asn1EncodableVector); } } }