diff options
Diffstat (limited to 'crypto/test')
-rw-r--r-- | crypto/test/src/asn1/test/EnumeratedTest.cs | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/crypto/test/src/asn1/test/EnumeratedTest.cs b/crypto/test/src/asn1/test/EnumeratedTest.cs new file mode 100644 index 000000000..d881e4c3e --- /dev/null +++ b/crypto/test/src/asn1/test/EnumeratedTest.cs @@ -0,0 +1,113 @@ +namespace crypto.test.src.asn1.test +{ + using NUnit.Framework; + + using Org.BouncyCastle.Asn1; + using Org.BouncyCastle.Utilities.Encoders; + + /// <summary> + /// Tests used to verify correct decoding of the ENUMERATED type. + /// </summary> + [TestFixture] + public class EnumeratedTest + { + /// <summary> + /// Test vector used to test decoding of multiple items. + /// </summary> + /// <remarks>This sample uses an ENUMERATED and a BOOLEAN.</remarks> + private static readonly byte[] MultipleSingleByteItems = Hex.Decode("30060a01010101ff"); + + /// <summary> + /// Test vector used to test decoding of multiple items. + /// </summary> + /// <remarks>This sample uses two ENUMERATEDs.</remarks> + private static readonly byte[] MultipleDoubleByteItems = Hex.Decode("30080a0201010a020202"); + + /// <summary> + /// Test vector used to test decoding of multiple items. + /// </summary> + /// <remarks>This sample uses an ENUMERATED and an OBJECT IDENTIFIER.</remarks> + private static readonly byte[] MultipleTripleByteItems = Hex.Decode("300a0a0301010106032b0601"); + + /// <summary> + /// Makes sure multiple identically sized values are parsed correctly. + /// </summary> + [Test] + public void TestReadingMultipleSingleByteItems() + { + Asn1Object obj = Asn1Object.FromByteArray(MultipleSingleByteItems); + + Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE"); + + DerSequence sequence = (DerSequence)obj; + + Assert.AreEqual(2, sequence.Count, "2 items expected"); + + DerEnumerated enumerated = sequence[0] as DerEnumerated; + + Assert.IsNotNull(enumerated, "ENUMERATED expected"); + + Assert.AreEqual(1, enumerated.Value.IntValue, "Unexpected ENUMERATED value"); + + DerBoolean boolean = sequence[1] as DerBoolean; + + Assert.IsNotNull(boolean, "BOOLEAN expected"); + + Assert.IsTrue(boolean.IsTrue, "Unexpected BOOLEAN value"); + } + + /// <summary> + /// Makes sure multiple identically sized values are parsed correctly. + /// </summary> + [Test] + public void TestReadingMultipleDoubleByteItems() + { + Asn1Object obj = Asn1Object.FromByteArray(MultipleDoubleByteItems); + + Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE"); + + DerSequence sequence = (DerSequence)obj; + + Assert.AreEqual(2, sequence.Count, "2 items expected"); + + DerEnumerated enumerated1 = sequence[0] as DerEnumerated; + + Assert.IsNotNull(enumerated1, "ENUMERATED expected"); + + Assert.AreEqual(257, enumerated1.Value.IntValue, "Unexpected ENUMERATED value"); + + DerEnumerated enumerated2 = sequence[1] as DerEnumerated; + + Assert.IsNotNull(enumerated2, "ENUMERATED expected"); + + Assert.AreEqual(514, enumerated2.Value.IntValue, "Unexpected ENUMERATED value"); + } + + /// <summary> + /// Makes sure multiple identically sized values are parsed correctly. + /// </summary> + [Test] + public void TestReadingMultipleTripleByteItems() + { + Asn1Object obj = Asn1Object.FromByteArray(MultipleTripleByteItems); + + Assert.IsTrue(obj is DerSequence, "Null ASN.1 SEQUENCE"); + + DerSequence sequence = (DerSequence)obj; + + Assert.AreEqual(2, sequence.Count, "2 items expected"); + + DerEnumerated enumerated = sequence[0] as DerEnumerated; + + Assert.IsNotNull(enumerated, "ENUMERATED expected"); + + Assert.AreEqual(65793, enumerated.Value.IntValue, "Unexpected ENUMERATED value"); + + DerObjectIdentifier objectId = sequence[1] as DerObjectIdentifier; + + Assert.IsNotNull(objectId, "OBJECT IDENTIFIER expected"); + + Assert.AreEqual("1.3.6.1", objectId.Id, "Unexpected OBJECT IDENTIFIER value"); + } + } +} |