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

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 GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); EncryptedValue encryptedValue = element as EncryptedValue; if (encryptedValue != null) return encryptedValue; Asn1Sequence optional = Asn1Sequence.GetOptional(element); if (optional != null) return new EncryptedValue(optional); return null; } public static EncryptedValue GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new EncryptedValue(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private EncryptedValue(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 6) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_intendedAlg = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, false, AlgorithmIdentifier.GetTagged); m_symmAlg = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, false, AlgorithmIdentifier.GetTagged); m_encSymmKey = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 2, false, DerBitString.GetTagged); m_keyAlg = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 3, false, AlgorithmIdentifier.GetTagged); m_valueHint = Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 4, false, Asn1OctetString.GetTagged); m_encValue = DerBitString.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public EncryptedValue(AlgorithmIdentifier intendedAlg, AlgorithmIdentifier symmAlg, DerBitString encSymmKey, AlgorithmIdentifier keyAlg, Asn1OctetString valueHint, DerBitString encValue) { m_intendedAlg = intendedAlg; m_symmAlg = symmAlg; m_encSymmKey = encSymmKey; m_keyAlg = keyAlg; m_valueHint = valueHint; if (encValue == null) throw new ArgumentNullException("encValue"); 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); } } }