summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 17:03:04 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 17:03:04 +0700
commit2b93d0982010321dbbc51ecbef9c3adfb22e7860 (patch)
tree38fbf7ced481c78429877eebd7bd05e5ac458765
parentNull check and reformatting (diff)
downloadBouncyCastle.NET-ed25519-2b93d0982010321dbbc51ecbef9c3adfb22e7860.tar.xz
Add WriteElements method
-rw-r--r--crypto/src/asn1/Asn1OutputStream.cs8
-rw-r--r--crypto/src/asn1/BerSequence.cs5
-rw-r--r--crypto/src/asn1/BerSet.cs5
-rw-r--r--crypto/src/asn1/DerSequence.cs7
-rw-r--r--crypto/src/asn1/DerSet.cs7
5 files changed, 12 insertions, 20 deletions
diff --git a/crypto/src/asn1/Asn1OutputStream.cs b/crypto/src/asn1/Asn1OutputStream.cs
index 240c7891b..5746d1c59 100644
--- a/crypto/src/asn1/Asn1OutputStream.cs
+++ b/crypto/src/asn1/Asn1OutputStream.cs
@@ -34,6 +34,14 @@ namespace Org.BouncyCastle.Asn1
             get { return true; }
         }
 
+        internal virtual void WriteElements(Asn1Encodable[] elements)
+        {
+            for (int i = 0, count = elements.Length; i < count; ++i)
+            {
+                elements[i].ToAsn1Object().Encode(this);
+            }
+        }
+
         public override void WriteObject(Asn1Encodable obj)
         {
             if (obj == null)
diff --git a/crypto/src/asn1/BerSequence.cs b/crypto/src/asn1/BerSequence.cs
index 1f09ecada..b8ef12dd0 100644
--- a/crypto/src/asn1/BerSequence.cs
+++ b/crypto/src/asn1/BerSequence.cs
@@ -46,10 +46,7 @@ namespace Org.BouncyCastle.Asn1
 				asn1Out.WriteByte(Asn1Tags.Sequence | Asn1Tags.Constructed);
 				asn1Out.WriteByte(0x80);
 
-				foreach (Asn1Encodable o in this)
-				{
-                    o.ToAsn1Object().Encode(asn1Out);
-				}
+                asn1Out.WriteElements(elements);
 
 				asn1Out.WriteByte(0x00);
 				asn1Out.WriteByte(0x00);
diff --git a/crypto/src/asn1/BerSet.cs b/crypto/src/asn1/BerSet.cs
index 95214fea9..a3868dfa6 100644
--- a/crypto/src/asn1/BerSet.cs
+++ b/crypto/src/asn1/BerSet.cs
@@ -51,10 +51,7 @@ namespace Org.BouncyCastle.Asn1
                 asn1Out.WriteByte(Asn1Tags.Set | Asn1Tags.Constructed);
                 asn1Out.WriteByte(0x80);
 
-                foreach (Asn1Encodable o in this)
-				{
-                    o.ToAsn1Object().Encode(asn1Out);
-                }
+                asn1Out.WriteElements(elements);
 
                 asn1Out.WriteByte(0x00);
                 asn1Out.WriteByte(0x00);
diff --git a/crypto/src/asn1/DerSequence.cs b/crypto/src/asn1/DerSequence.cs
index 9b4504cfe..05b6f4533 100644
--- a/crypto/src/asn1/DerSequence.cs
+++ b/crypto/src/asn1/DerSequence.cs
@@ -64,12 +64,7 @@ namespace Org.BouncyCastle.Asn1
             // TODO Intermediate buffer could be avoided if we could calculate expected length
             MemoryStream bOut = new MemoryStream();
             Asn1OutputStream dOut = Asn1OutputStream.Create(bOut, Der);
-
-            foreach (Asn1Encodable obj in this)
-            {
-                obj.ToAsn1Object().Encode(dOut);
-            }
-
+            dOut.WriteElements(elements);
             dOut.Flush();
 
 #if PORTABLE
diff --git a/crypto/src/asn1/DerSet.cs b/crypto/src/asn1/DerSet.cs
index 0808434d7..62d8873b8 100644
--- a/crypto/src/asn1/DerSet.cs
+++ b/crypto/src/asn1/DerSet.cs
@@ -81,12 +81,7 @@ namespace Org.BouncyCastle.Asn1
             // TODO Intermediate buffer could be avoided if we could calculate expected length
             MemoryStream bOut = new MemoryStream();
             Asn1OutputStream dOut = Asn1OutputStream.Create(bOut, Asn1Encodable.Der);
-
-            foreach (Asn1Encodable obj in this)
-            {
-                obj.ToAsn1Object().Encode(dOut);
-            }
-
+            dOut.WriteElements(elements);
             dOut.Flush();
 
 #if PORTABLE