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

Challenge

public class Challenge : Asn1Encodable
using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Cmp { public class Challenge : Asn1Encodable { public class Rand : Asn1Encodable { private readonly DerInteger m_intVal; private readonly GeneralName m_sender; public virtual DerInteger IntVal => m_intVal; public virtual GeneralName Sender => m_sender; public static Rand GetInstance(object obj) { if (obj == null) return null; Rand rand = obj as Rand; if (rand != null) return rand; return new Rand(Asn1Sequence.GetInstance(obj)); } public static Rand GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Rand(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public Rand(DerInteger intVal, GeneralName sender) { m_intVal = intVal; m_sender = sender; } public Rand(Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("expected sequence size of 2", "seq"); m_intVal = DerInteger.GetInstance(seq[0]); m_sender = GeneralName.GetInstance(seq[1]); } public override Asn1Object ToAsn1Object() { return new DerSequence(m_intVal, m_sender); } } private readonly AlgorithmIdentifier m_owf; private readonly Asn1OctetString m_witness; private readonly Asn1OctetString m_challenge; public virtual AlgorithmIdentifier Owf => m_owf; public virtual Asn1OctetString Witness => m_witness; public virtual Asn1OctetString ChallengeValue => m_challenge; public static Challenge GetInstance(object obj) { if (obj == null) return null; Challenge challenge = obj as Challenge; if (challenge != null) return challenge; return new Challenge(Asn1Sequence.GetInstance(obj)); } public static Challenge GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Challenge(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static Challenge GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Challenge(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private Challenge(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 2 || count > 3) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_owf = Asn1Utilities.ReadOptional(seq, ref sequencePosition, AlgorithmIdentifier.GetOptional); m_witness = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_challenge = Asn1OctetString.GetInstance(seq[sequencePosition++]); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public Challenge(byte[] witness, byte[] challenge) : this(null, witness, challenge) { } public Challenge(AlgorithmIdentifier owf, byte[] witness, byte[] challenge) { m_owf = owf; m_witness = DerOctetString.FromContents(witness); m_challenge = DerOctetString.FromContents(challenge); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); asn1EncodableVector.AddOptional(m_owf); asn1EncodableVector.Add(m_witness, m_challenge); return new DerSequence(asn1EncodableVector); } } }