summary refs log tree commit diff
path: root/crypto/src/asn1/DerOutputStream.cs
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 20:33:18 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 20:33:18 +0700
commit61605407b72d584c94daeafe4ea4c2b1cad3914e (patch)
treefb8d07b180f7c06dd1438e1a5796d4766df6d44a /crypto/src/asn1/DerOutputStream.cs
parentFix and Obsolete BerNull (diff)
downloadBouncyCastle.NET-ed25519-61605407b72d584c94daeafe4ea4c2b1cad3914e.tar.xz
Add withID to Encode method
- refactor Asn1OutputStream utility methods
Diffstat (limited to 'crypto/src/asn1/DerOutputStream.cs')
-rw-r--r--crypto/src/asn1/DerOutputStream.cs115
1 files changed, 4 insertions, 111 deletions
diff --git a/crypto/src/asn1/DerOutputStream.cs b/crypto/src/asn1/DerOutputStream.cs
index 84d1af44b..b8cbe9ee2 100644
--- a/crypto/src/asn1/DerOutputStream.cs
+++ b/crypto/src/asn1/DerOutputStream.cs
@@ -17,119 +17,12 @@ namespace Org.BouncyCastle.Asn1
 
         public virtual void WriteObject(Asn1Encodable encodable)
         {
-            new DerOutputStreamNew(s).WriteObject(encodable);
+            Asn1OutputStream.Create(s, Asn1Encodable.Der).WriteObject(encodable);
         }
 
         public virtual void WriteObject(Asn1Object primitive)
         {
-            new DerOutputStreamNew(s).WriteObject(primitive);
-        }
-
-        internal virtual bool IsBer
-        {
-            get { return false; }
-        }
-
-		internal void WriteDL(int length)
-		{
-            if (length < 128)
-            {
-                WriteByte((byte)length);
-            }
-            else
-            {
-                byte[] stack = new byte[5];
-                int pos = stack.Length;
-
-                do
-                {
-                    stack[--pos] = (byte)length;
-                    length >>= 8;
-                }
-                while (length > 0);
-
-                int count = stack.Length - pos;
-                stack[--pos] = (byte)(0x80 | count);
-
-                Write(stack, pos, count + 1);
-            }
-        }
-
-        internal void WriteEncoded(
-			int		tag,
-			byte[]	bytes)
-		{
-			WriteByte((byte)tag);
-			WriteDL(bytes.Length);
-			Write(bytes, 0, bytes.Length);
-		}
-
-        internal void WriteEncoded(
-            int     tag,
-            byte    first,
-            byte[]  bytes)
-        {
-            WriteByte((byte)tag);
-            WriteDL(bytes.Length + 1);
-            WriteByte(first);
-            Write(bytes, 0, bytes.Length);
-        }
-
-        internal void WriteEncoded(
-			int		tag,
-			byte[]	bytes,
-			int		offset,
-			int		length)
-		{
-			WriteByte((byte)tag);
-            WriteDL(length);
-			Write(bytes, offset, length);
-		}
-
-		internal void WriteEncoded(
-			int		flags,
-			int		tagNo,
-			byte[]	bytes)
-		{
-			WriteIdentifier(true, flags, tagNo);
-            WriteDL(bytes.Length);
-			Write(bytes, 0, bytes.Length);
-		}
-
-        internal void WriteIdentifier(bool withID, int identifier)
-        {
-            if (withID)
-            {
-                WriteByte((byte)identifier);
-            }
-        }
-
-        internal void WriteIdentifier(bool withID, int flags, int tag)
-        {
-            if (!withID)
-            {
-                // Don't write the identifier
-            }
-            else if (tag < 31)
-            {
-                WriteByte((byte)(flags | tag));
-            }
-            else
-            {
-                byte[] stack = new byte[6];
-                int pos = stack.Length;
-
-                stack[--pos] = (byte)(tag & 0x7F);
-                while (tag > 127)
-                {
-                    tag >>= 7;
-                    stack[--pos] = (byte)(tag & 0x7F | 0x80);
-                }
-
-                stack[--pos] = (byte)(flags | 0x1F);
-
-                Write(stack, pos, stack.Length - pos);
-            }
+            Asn1OutputStream.Create(s, Asn1Encodable.Der).WriteObject(primitive);
         }
 	}
 
@@ -146,7 +39,7 @@ namespace Org.BouncyCastle.Asn1
             get { return false; }
         }
 
-        internal override void WritePrimitive(Asn1Object primitive)
+        internal override void WritePrimitive(Asn1Object primitive, bool withID)
         {
             Asn1Set asn1Set = primitive as Asn1Set;
             if (null != asn1Set)
@@ -158,7 +51,7 @@ namespace Org.BouncyCastle.Asn1
                 primitive = new DerSet(asn1Set.elements);
             }
 
-            primitive.Encode(this);
+            primitive.Encode(this, withID);
         }
     }
 }