From 2b93d0982010321dbbc51ecbef9c3adfb22e7860 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Thu, 14 Oct 2021 17:03:04 +0700 Subject: Add WriteElements method --- crypto/src/asn1/Asn1OutputStream.cs | 8 ++++++++ crypto/src/asn1/BerSequence.cs | 5 +---- crypto/src/asn1/BerSet.cs | 5 +---- crypto/src/asn1/DerSequence.cs | 7 +------ crypto/src/asn1/DerSet.cs | 7 +------ 5 files changed, 12 insertions(+), 20 deletions(-) (limited to 'crypto/src/asn1') 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 -- cgit 1.4.1