summary refs log tree commit diff
path: root/crypto/src/asn1/oiw
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/src/asn1/oiw')
-rw-r--r--crypto/src/asn1/oiw/ElGamalParameter.cs61
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);
     }
 }