diff options
Diffstat (limited to 'crypto/src/asn1/oiw')
-rw-r--r-- | crypto/src/asn1/oiw/ElGamalParameter.cs | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/crypto/src/asn1/oiw/ElGamalParameter.cs b/crypto/src/asn1/oiw/ElGamalParameter.cs index b0a0ce348..4f1a8890c 100644 --- a/crypto/src/asn1/oiw/ElGamalParameter.cs +++ b/crypto/src/asn1/oiw/ElGamalParameter.cs @@ -7,39 +7,54 @@ namespace Org.BouncyCastle.Asn1.Oiw public class ElGamalParameter : Asn1Encodable { - internal DerInteger p, g; - - public ElGamalParameter( - BigInteger p, - BigInteger g) + public static ElGamalParameter GetInstance(object obj) { - this.p = new DerInteger(p); - this.g = new DerInteger(g); + if (obj == null) + return null; + if (obj is ElGamalParameter elGamalParameter) + return elGamalParameter; +#pragma warning disable CS0618 // Type or member is obsolete + return new ElGamalParameter(Asn1Sequence.GetInstance(obj)); +#pragma warning restore CS0618 // Type or member is obsolete } - public ElGamalParameter( - Asn1Sequence seq) + public static ElGamalParameter GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - if (seq.Count != 2) - throw new ArgumentException("Wrong number of elements in sequence", "seq"); +#pragma warning disable CS0618 // Type or member is obsolete + return new ElGamalParameter(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); +#pragma warning restore CS0618 // Type or member is obsolete + } - p = DerInteger.GetInstance(seq[0]); - g = DerInteger.GetInstance(seq[1]); + public static ElGamalParameter GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) + { +#pragma warning disable CS0618 // Type or member is obsolete + return new ElGamalParameter(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); +#pragma warning restore CS0618 // Type or member is obsolete } - public BigInteger P - { - get { return p.PositiveValue; } - } + private readonly DerInteger m_p, m_g; - public BigInteger G - { - get { return g.PositiveValue; } - } + [Obsolete("Use 'GetInstance' instead")] + public ElGamalParameter(Asn1Sequence seq) + { + int count = seq.Count; + if (count != 2) + throw new ArgumentException("Bad sequence size: " + count, nameof(seq)); - public override Asn1Object ToAsn1Object() + m_p = DerInteger.GetInstance(seq[0]); + m_g = DerInteger.GetInstance(seq[1]); + } + + public ElGamalParameter(BigInteger p, BigInteger g) { - return new DerSequence(p, g); + m_p = new DerInteger(p); + m_g = new DerInteger(g); } + + public BigInteger P => m_p.PositiveValue; + + public BigInteger G => m_g.PositiveValue; + + public override Asn1Object ToAsn1Object() => new DerSequence(m_p, m_g); } } |