summary refs log tree commit diff
path: root/crypto/src/asn1/oiw/ElGamalParameter.cs
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2024-07-01 16:15:42 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2024-07-01 16:15:42 +0700
commit70b47a3c76303a3af17c9ed635f7f1fa8a78ad18 (patch)
treea447b19f4ca05e728ea48bc24d5b369f01ab75ca /crypto/src/asn1/oiw/ElGamalParameter.cs
parentRefactoring in Asn1.Nist (diff)
downloadBouncyCastle.NET-ed25519-70b47a3c76303a3af17c9ed635f7f1fa8a78ad18.tar.xz
Refactoring in Asn1.Oiw
Diffstat (limited to 'crypto/src/asn1/oiw/ElGamalParameter.cs')
-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);
     }
 }