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

RC2CbcParameter

using Org.BouncyCastle.Math; using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Asn1.Pkcs { public class RC2CbcParameter : Asn1Encodable { private readonly DerInteger m_version; private readonly Asn1OctetString m_iv; public BigInteger RC2ParameterVersion => m_version?.Value; public DerInteger RC2ParameterVersionData => m_version; public Asn1OctetString IV => m_iv; public static RC2CbcParameter GetInstance(object obj) { if (obj == null) return null; RC2CbcParameter rC2CbcParameter = obj as RC2CbcParameter; if (rC2CbcParameter != null) return rC2CbcParameter; return new RC2CbcParameter(Asn1Sequence.GetInstance(obj)); } public static RC2CbcParameter GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RC2CbcParameter(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static RC2CbcParameter GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RC2CbcParameter(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private RC2CbcParameter(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_version = Asn1Utilities.ReadOptional(seq, ref sequencePosition, DerInteger.GetOptional); m_iv = Asn1OctetString.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public RC2CbcParameter(byte[] iv) { m_version = null; m_iv = DerOctetString.FromContents(iv); } public RC2CbcParameter(int parameterVersion, byte[] iv) { m_version = new DerInteger(parameterVersion); m_iv = DerOctetString.FromContents(iv); } public byte[] GetIV() { return Arrays.Clone(m_iv.GetOctets()); } public override Asn1Object ToAsn1Object() { if (m_version != null) return new DerSequence(m_version, m_iv); return new DerSequence(m_iv); } } }