public static void ObjectIdentifier(byte[] value, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); writer.ObjectIdentifier(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Integer64(long value, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); writer.Integer(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void SequenceStackUnderflow() { var span = new Span <byte>(new byte[0]); var writer = new Asn1Writer(ref span); try { writer.BeginSequence(); Assert.True(false); } catch (IndexOutOfRangeException) { } // cannot use Assert.Throws }
public static void OctetString(byte[] value, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); writer.OctetString(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Bool(bool value, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); writer.Bool(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Null() { var expected = new byte[] { 0x05, 0x00 }; var writer = new Asn1Writer(new byte[expected.Length]); writer.Null(); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void BitString(byte[] value, byte[] expected) { var span = new Span <byte>(new byte[expected.Length]); var writer = new Asn1Writer(ref span); writer.BitString(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Integer32(int value, byte[] expected) { var span = new Span <byte>(new byte[expected.Length]); var writer = new Asn1Writer(ref span); writer.Integer(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Integer64(long value, byte[] expected) { var span = new Span <byte>(new byte[expected.Length]); var writer = new Asn1Writer(ref span); writer.Integer(value); Assert.Equal(BitConverter.ToString(expected), BitConverter.ToString(writer.Bytes.ToArray())); }
internal override void WriteAlgorithmIdentifier( ref Asn1Writer writer, ReadOnlySpan <byte> nonce) { writer.End(); writer.OctetString(nonce); writer.ObjectIdentifier(s_oid.Bytes); writer.BeginSequence(); }
public static void SequenceStackOverflow() { var writer = new Asn1Writer(new byte[2], 3); writer.End(); writer.End(); writer.End(); try { writer.End(); Assert.True(false); } catch (IndexOutOfRangeException) { } // cannot use Assert.Throws }
public static void BufferOverflow(int capacity) { var value = new byte[5]; Utilities.RandomBytes.Slice(0, value.Length).CopyTo(value); var writer = new Asn1Writer(new byte[capacity]); try { writer.OctetString(value); Assert.True(false); } catch (IndexOutOfRangeException) { } // cannot use Assert.Throws }
public static void IntegerSequence(int[] values, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); writer.End(); for (var i = 0; i < values.Length; i++) { writer.Integer(values[values.Length - i - 1]); } writer.BeginSequence(); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void SequenceStackOverflow() { Assert.Equal(6, Asn1Writer.MaxDepth); var writer = new Asn1Writer(new byte[2]); writer.End(); writer.End(); writer.End(); writer.End(); writer.End(); writer.End(); try { writer.End(); Assert.True(false); } catch (InvalidOperationException) { } // cannot use Assert.Throws }
public static void Sequence(int depth, byte[] expected) { var writer = new Asn1Writer(new byte[expected.Length]); for (var i = 0; i < depth; i++) { writer.End(); } for (var i = 0; i < depth; i++) { writer.BeginSequence(); } Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Length100() { var value = new byte[100]; Utilities.Fill(value, 0xCD); var expected = new byte[2 + value.Length]; expected[0] = 0x04; expected[1] = (byte)value.Length; value.CopyTo(expected, 2); var writer = new Asn1Writer(new byte[expected.Length]); writer.OctetString(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void Length400() { var value = new byte[400]; Utilities.Fill(value, 0xCD); var expected = new byte[4 + value.Length]; expected[0] = 0x04; expected[1] = 0x82; expected[2] = (byte)(value.Length >> 8); expected[3] = (byte)(value.Length & 0xFF); value.CopyTo(expected, 4); var writer = new Asn1Writer(new byte[expected.Length]); writer.OctetString(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public void Test() { var data = new byte[0x200]; var rng = new RNGCryptoServiceProvider(); rng.GetBytes(data); var writer = new Asn1Writer(0x240); data[0] &= 0x7f; writer.WriteInt(data); Expect(writer.SequenceBytes[7], Is.EqualTo(0)); writer = new Asn1Writer(0x240); data[0] |= 0x80; writer.WriteInt(data); Expect(writer.SequenceBytes[7], Is.EqualTo(1)); }
public static void Length100000() { const int length = 100000; var expected = new byte[5 + length]; expected[0] = 0x04; expected[1] = 0x83; expected[2] = length >> 16; expected[3] = (length >> 8) & 0xFF; expected[4] = length & 0xFF; var value = expected.AsSpan(5); value.Fill(0xCD); var writer = new Asn1Writer(new byte[expected.Length]); writer.OctetString(value); Assert.Equal(expected, writer.Bytes.ToArray()); }
public static void SequenceStackUnderflow() { var writer = new Asn1Writer(Span <byte> .Empty); try { writer.BeginSequence(); Assert.True(false); } catch (InvalidOperationException) { } // cannot use Assert.Throws }
internal virtual void WriteAlgorithmIdentifier( ref Asn1Writer writer, ReadOnlySpan <byte> nonce) { throw Error.NotSupported_Operation(); }