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

OriginatorPublicKey

using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Cms { public class OriginatorPublicKey : Asn1Encodable { private readonly AlgorithmIdentifier m_algorithm; private readonly DerBitString m_publicKey; public AlgorithmIdentifier Algorithm => m_algorithm; public DerBitString PublicKey => m_publicKey; public static OriginatorPublicKey GetInstance(object obj) { if (obj == null) return null; OriginatorPublicKey originatorPublicKey = obj as OriginatorPublicKey; if (originatorPublicKey != null) return originatorPublicKey; return new OriginatorPublicKey(Asn1Sequence.GetInstance(obj)); } public static OriginatorPublicKey GetInstance(Asn1TaggedObject obj, bool explicitly) { return new OriginatorPublicKey(Asn1Sequence.GetInstance(obj, explicitly)); } public static OriginatorPublicKey GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new OriginatorPublicKey(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public OriginatorPublicKey(AlgorithmIdentifier algorithm, byte[] publicKey) : this(algorithm, new DerBitString(publicKey)) { } public OriginatorPublicKey(AlgorithmIdentifier algorithm, DerBitString publicKey) { if (algorithm == null) throw new ArgumentNullException("algorithm"); m_algorithm = algorithm; if (publicKey == null) throw new ArgumentNullException("publicKey"); m_publicKey = publicKey; } private OriginatorPublicKey(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_algorithm = AlgorithmIdentifier.GetInstance(seq[0]); m_publicKey = DerBitString.GetInstance(seq[1]); } public override Asn1Object ToAsn1Object() { return new DerSequence(m_algorithm, m_publicKey); } } }