summary refs log tree commit diff
path: root/crypto/test/src/asn1/test/GeneralNameTest.cs
blob: 76b8105920e440c69a1224214db1b12ec8c9cdff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;

using NUnit.Framework;

using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.Utilities.Test;

namespace Org.BouncyCastle.Asn1.Tests
{
	[TestFixture]
	public class GeneralNameTest
		: SimpleTest
	{
		private static readonly byte[] ipv4 = Hex.Decode("87040a090800");
        private static readonly byte[] ipv4WithMask24 = Hex.Decode("87080a090800ffffff00");
        private static readonly byte[] ipv4WithMask14 = Hex.Decode("87080a090800fffc0000");

		private static readonly byte[] ipv6a = Hex.Decode("871020010db885a308d313198a2e03707334");
		private static readonly byte[] ipv6b = Hex.Decode("871020010db885a3000013198a2e03707334");
		private static readonly byte[] ipv6c = Hex.Decode("871000000000000000000000000000000001");
		private static readonly byte[] ipv6d = Hex.Decode("871020010db885a3000000008a2e03707334");
		private static readonly byte[] ipv6e = Hex.Decode("871020010db885a3000000008a2e0a090800");
		private static readonly byte[] ipv6f = Hex.Decode("872020010db885a3000000008a2e0a090800ffffffffffff00000000000000000000");
		private static readonly byte[] ipv6g = Hex.Decode("872020010db885a3000000008a2e0a090800ffffffffffffffffffffffffffffffff");
		private static readonly byte[] ipv6h = Hex.Decode("872020010db885a300000000000000000000ffffffffffff00000000000000000000");
	    
		public override string Name
		{
			get { return "GeneralName"; }
		}

		public override void PerformTest()
		{
			GeneralName nm = new GeneralName(GeneralName.IPAddress, "10.9.8.0");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv4))
			{
				Fail("ipv4 encoding failed");
			}

            nm = new GeneralName(GeneralName.IPAddress, "10.9.8.0/255.255.255.0");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv4WithMask24))
			{
				Fail("ipv4 with netmask 1 encoding failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "10.9.8.0/24");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv4WithMask24))
			{
				Fail("ipv4 with netmask 2 encoding failed");
			}

            nm = new GeneralName(GeneralName.IPAddress, "10.9.8.0/255.252.0.0");
            if (!Arrays.AreEqual(nm.GetEncoded(), ipv4WithMask14))
            {
                Fail("ipv4 with netmask 1 encoding failed");
            }

            nm = new GeneralName(GeneralName.IPAddress, "10.9.8.0/14");
            if (!Arrays.AreEqual(nm.GetEncoded(), ipv4WithMask14))
            {
                Fail("ipv4 with netmask 2 encoding failed");
            }

            nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3:08d3:1319:8a2e:0370:7334");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6a))
			{
				Fail("ipv6 with netmask encoding failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::1319:8a2e:0370:7334");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6b))
			{
				Fail("ipv6b encoding failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "::1");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6c))
			{
				Fail("ipv6c failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::8a2e:0370:7334");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6d))
			{
				Fail("ipv6d failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::8a2e:10.9.8.0");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6e))
			{
				Fail("ipv6e failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::8a2e:10.9.8.0/ffff:ffff:ffff::0000");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6f))
			{
				Fail("ipv6f failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::8a2e:10.9.8.0/128");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6g))
			{
				Fail("ipv6g failed");
			}

			nm = new GeneralName(GeneralName.IPAddress, "2001:0db8:85a3::/48");
			if (!Arrays.AreEqual(nm.GetEncoded(), ipv6h))
			{
				Fail("ipv6h failed");
			}
		}

		[Test]
		public void TestFunction()
		{
			string resultText = Perform().ToString();

			Assert.AreEqual(resultText, Name + ": Okay", resultText);
		}
	}
}