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

Cast5CbcParameters

using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Asn1.Misc { public class Cast5CbcParameters : Asn1Encodable { private readonly Asn1OctetString m_iv; private readonly DerInteger m_keyLength; public Asn1OctetString IV => m_iv; public int KeyLength => m_keyLength.IntValueExact; public static Cast5CbcParameters GetInstance(object o) { if (o == null) return null; Cast5CbcParameters cast5CbcParameters = o as Cast5CbcParameters; if (cast5CbcParameters != null) return cast5CbcParameters; return new Cast5CbcParameters(Asn1Sequence.GetInstance(o)); } public static Cast5CbcParameters GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Cast5CbcParameters(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static Cast5CbcParameters GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Cast5CbcParameters(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private Cast5CbcParameters(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 1 || count > 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_iv = (Asn1Utilities.ReadOptional(seq, ref sequencePosition, Asn1OctetString.GetOptional) ?? new DerOctetString(new byte[8])); m_keyLength = DerInteger.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public Cast5CbcParameters(byte[] iv, int keyLength) { m_iv = new DerOctetString(iv ?? new byte[8]); m_keyLength = new DerInteger(keyLength); } public byte[] GetIV() { return Arrays.Clone(m_iv.GetOctets()); } public override Asn1Object ToAsn1Object() { if (!IsDefaultIV(m_iv)) return new DerSequence(m_iv, m_keyLength); return new DerSequence(m_keyLength); } private static bool IsDefaultIV(Asn1OctetString iv) { if (iv.GetOctetsLength() == 8) return Arrays.AreAllZeroes(iv.GetOctets(), 0, 8); return false; } } }