Пример #1
0
        public static void VerifyDecode(TagClass tagClass, int tagValue, bool constructed, string inputHex)
        {
            Asn1Tag expectedTag = new Asn1Tag(tagClass, tagValue, constructed);

            byte[] input  = inputHex.HexToByteArray();
            byte[] padded = input;
            Array.Resize(ref padded, input.Length + 3);

            int     consumed;
            Asn1Tag tag;

            Assert.False(Asn1Tag.TryDecode(input.AsSpan(0, input.Length - 1), out tag, out consumed));
            Assert.Equal(0, consumed);
            Assert.Equal(default(Asn1Tag), tag);

            Assert.Throws <AsnContentException>(() => Asn1Tag.Decode(input.AsSpan(0, input.Length - 1), out consumed));
            Assert.Equal(0, consumed);

            Assert.True(Asn1Tag.TryDecode(padded, out tag, out consumed));
            Assert.Equal(input.Length, consumed);
            Assert.Equal(expectedTag, tag);

            Assert.True(Asn1Tag.TryDecode(input, out tag, out consumed));
            Assert.Equal(input.Length, consumed);
            Assert.Equal(expectedTag, tag);

            tag = Asn1Tag.Decode(padded, out consumed);
            Assert.Equal(input.Length, consumed);
            Assert.Equal(expectedTag, tag);

            tag = Asn1Tag.Decode(input, out consumed);
            Assert.Equal(input.Length, consumed);
            Assert.Equal(expectedTag, tag);
        }