* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Mono.Security / Test / Mono.Security.X509.Extensions / ExtendedKeyUsageExtensionTest.cs
1 //
2 // ExtendedKeyUsageExtensionTest.cs - NUnit Test Cases for 
3 //      Mono.Security.X509.Extensions.ExtendedKeyUsageExtension
4 //
5 // Authors:
6 //      Sebastien Pouliot  <sebastien@ximian.com>
7 //
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
9 //
10
11 using System;
12 using System.IO;
13
14 using Mono.Security;
15 using Mono.Security.X509;
16 using Mono.Security.X509.Extensions;
17
18 using NUnit.Framework;
19
20 namespace MonoTests.Mono.Security.X509.Extensions {
21
22         [TestFixture]
23         public class ExtendedKeyUsageExtensionTest {
24
25                 static string[] CommonKeyPurposes = {
26                         // serverAuth
27                         "1.3.6.1.5.5.7.3.1",
28                         // clientAuth
29                         "1.3.6.1.5.5.7.3.2",
30                         // codeSigning
31                         "1.3.6.1.5.5.7.3.3",
32                         // emailProtection
33                         "1.3.6.1.5.5.7.3.4",
34                         // timeStamping
35                         "1.3.6.1.5.5.7.3.8",
36                         // OCSPSigning
37                         "1.3.6.1.5.5.7.3.9"
38                 };
39
40                 private void Empty (ExtendedKeyUsageExtension eku)
41                 {
42                         Assert.IsFalse (eku.Critical, "Critical");
43                         Assert.AreEqual ("2.5.29.37", eku.Oid, "Oid");
44                         Assert.IsNotNull (eku.Name, "Name");
45                         Assert.IsFalse (eku.Name == eku.Oid, "Name!=Oid");
46                         Assert.AreEqual (0, eku.KeyPurpose.Count, "KeyPurpose");
47                 }
48
49                 [Test]
50                 public void Constructor_Empty ()
51                 {
52                         ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension ();
53                         Empty (eku);
54                 }
55
56                 [Test]
57                 public void Constructor_Extension ()
58                 {
59                         ExtendedKeyUsageExtension ext = new ExtendedKeyUsageExtension ();
60                         ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension (ext);
61                         Empty (eku);
62                 }
63
64                 [Test]
65                 public void Constructor_ASN1 ()
66                 {
67                         ExtendedKeyUsageExtension ext = new ExtendedKeyUsageExtension ();
68                         ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension (ext.ASN1);
69                         Empty (eku);
70                 }
71
72                 [Test]
73                 public void KeyPurpose_NotCritical ()
74                 {
75                         ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension ();
76                         foreach (string oid in CommonKeyPurposes) {
77                                 eku.KeyPurpose.Clear ();
78                                 eku.KeyPurpose.Add (oid);
79                                 Assert.AreEqual ("30-13-06-03-55-1D-25-04-0C-30-0A-06-08-2B-06-01-05-05-07-03-0" 
80                                         + oid [oid.Length - 1].ToString (), BitConverter.ToString (eku.GetBytes ()), oid);
81                         }
82                 }
83
84                 [Test]
85                 public void KeyPurpose_Critical ()
86                 {
87                         ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension ();
88                         eku.Critical = true;
89                         foreach (string oid in CommonKeyPurposes) {
90                                 eku.KeyPurpose.Clear ();
91                                 eku.KeyPurpose.Add (oid);
92                                 Assert.AreEqual ("30-16-06-03-55-1D-25-01-01-FF-04-0C-30-0A-06-08-2B-06-01-05-05-07-03-0" 
93                                         + oid[oid.Length - 1].ToString (), BitConverter.ToString (eku.GetBytes ()), oid);
94                         }
95                 }
96         }
97 }