Add WriteElements method
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
|