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

SafeBag

public class SafeBag : Asn1Encodable
using System; namespace Org.BouncyCastle.Asn1.Pkcs { public class SafeBag : Asn1Encodable { private readonly DerObjectIdentifier m_bagID; private readonly Asn1Encodable m_bagValue; private readonly Asn1Set m_bagAttributes; public DerObjectIdentifier BagID => m_bagID; public Asn1Object BagValue => m_bagValue.ToAsn1Object(); public Asn1Encodable BagValueEncodable => m_bagValue; public Asn1Set BagAttributes => m_bagAttributes; public static SafeBag GetInstance(object obj) { if (obj == null) return null; SafeBag safeBag = obj as SafeBag; if (safeBag != null) return safeBag; return new SafeBag(Asn1Sequence.GetInstance(obj)); } public static SafeBag GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SafeBag(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static SafeBag GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new SafeBag(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private SafeBag(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 2 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_bagID = DerObjectIdentifier.GetInstance(seq[sequencePosition++]); m_bagValue = Asn1TaggedObject.GetInstance(seq[sequencePosition++], 128, 0).GetExplicitBaseObject(); m_bagAttributes = Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1Set.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public SafeBag(DerObjectIdentifier oid, Asn1Object obj) : this(oid, obj, null) { } public SafeBag(DerObjectIdentifier oid, Asn1Object obj, Asn1Set bagAttributes) { if (oid == null) throw new ArgumentNullException("oid"); m_bagID = oid; if (obj == null) throw new ArgumentNullException("obj"); m_bagValue = obj; m_bagAttributes = bagAttributes; } public SafeBag(DerObjectIdentifier bagID, Asn1Encodable bagValue) : this(bagID, bagValue, null) { } public SafeBag(DerObjectIdentifier bagID, Asn1Encodable bagValue, Asn1Set bagAttributes) { if (bagID == null) throw new ArgumentNullException("bagID"); m_bagID = bagID; if (bagValue == null) throw new ArgumentNullException("bagValue"); m_bagValue = bagValue; m_bagAttributes = bagAttributes; } public override Asn1Object ToAsn1Object() { DerTaggedObject derTaggedObject = new DerTaggedObject(true, 0, m_bagValue); if (m_bagAttributes != null) return new DerSequence(m_bagID, derTaggedObject, m_bagAttributes); return new DerSequence(m_bagID, derTaggedObject); } } }