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

EncryptedValue

public class EncryptedValue : Asn1Encodable
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Crmf { public class EncryptedValue : Asn1Encodable { private readonly AlgorithmIdentifier m_intendedAlg; private readonly AlgorithmIdentifier m_symmAlg; private readonly DerBitString m_encSymmKey; private readonly AlgorithmIdentifier m_keyAlg; private readonly Asn1OctetString m_valueHint; private readonly DerBitString m_encValue; public virtual AlgorithmIdentifier IntendedAlg => m_intendedAlg; public virtual AlgorithmIdentifier SymmAlg => m_symmAlg; public virtual DerBitString EncSymmKey => m_encSymmKey; public virtual AlgorithmIdentifier KeyAlg => m_keyAlg; public virtual Asn1OctetString ValueHint => m_valueHint; public virtual DerBitString EncValue => m_encValue; public static EncryptedValue GetInstance(object obj) { if (obj == null) return null; EncryptedValue encryptedValue = obj as EncryptedValue; if (encryptedValue != null) return encryptedValue; return new EncryptedValue(Asn1Sequence.GetInstance(obj)); } public static EncryptedValue GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new EncryptedValue(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static EncryptedValue GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new EncryptedValue(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private EncryptedValue(Asn1Sequence seq) { int num = 0; while (true) { Asn1TaggedObject asn1TaggedObject = seq[num] as Asn1TaggedObject; if (asn1TaggedObject == null) break; switch (asn1TaggedObject.TagNo) { case 0: m_intendedAlg = AlgorithmIdentifier.GetInstance(asn1TaggedObject, false); break; case 1: m_symmAlg = AlgorithmIdentifier.GetInstance(asn1TaggedObject, false); break; case 2: m_encSymmKey = DerBitString.GetInstance(asn1TaggedObject, false); break; case 3: m_keyAlg = AlgorithmIdentifier.GetInstance(asn1TaggedObject, false); break; case 4: m_valueHint = Asn1OctetString.GetInstance(asn1TaggedObject, false); break; } num++; } m_encValue = DerBitString.GetInstance(seq[num]); } public EncryptedValue(AlgorithmIdentifier intendedAlg, AlgorithmIdentifier symmAlg, DerBitString encSymmKey, AlgorithmIdentifier keyAlg, Asn1OctetString valueHint, DerBitString encValue) { if (encValue == null) throw new ArgumentNullException("encValue"); m_intendedAlg = intendedAlg; m_symmAlg = symmAlg; m_encSymmKey = encSymmKey; m_keyAlg = keyAlg; m_valueHint = valueHint; m_encValue = encValue; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(6); asn1EncodableVector.AddOptionalTagged(false, 0, m_intendedAlg); asn1EncodableVector.AddOptionalTagged(false, 1, m_symmAlg); asn1EncodableVector.AddOptionalTagged(false, 2, m_encSymmKey); asn1EncodableVector.AddOptionalTagged(false, 3, m_keyAlg); asn1EncodableVector.AddOptionalTagged(false, 4, m_valueHint); asn1EncodableVector.Add(m_encValue); return new DerSequence(asn1EncodableVector); } } }