Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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());
        }
Exemplo n.º 9
0
        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()));
        }
Exemplo n.º 10
0
 internal override void WriteAlgorithmIdentifier(
     ref Asn1Writer writer,
     ReadOnlySpan <byte> nonce)
 {
     writer.End();
     writer.OctetString(nonce);
     writer.ObjectIdentifier(s_oid.Bytes);
     writer.BeginSequence();
 }
Exemplo n.º 11
0
        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
        }
Exemplo n.º 12
0
        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
        }
Exemplo n.º 13
0
        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());
        }
Exemplo n.º 14
0
        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
        }
Exemplo n.º 15
0
        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());
        }
Exemplo n.º 16
0
        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());
        }
Exemplo n.º 17
0
        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());
        }
Exemplo n.º 18
0
        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));
        }
Exemplo n.º 19
0
        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());
        }
Exemplo n.º 20
0
        public static void SequenceStackUnderflow()
        {
            var writer = new Asn1Writer(Span <byte> .Empty);

            try { writer.BeginSequence(); Assert.True(false); } catch (InvalidOperationException) { } // cannot use Assert.Throws
        }
Exemplo n.º 21
0
 internal virtual void WriteAlgorithmIdentifier(
     ref Asn1Writer writer,
     ReadOnlySpan <byte> nonce)
 {
     throw Error.NotSupported_Operation();
 }