[Mono.Security] Added AuthorityKeyIdentifierExtensionTest and SubjectKeyIdentifierExt...
authorLex Li <support@lextm.com>
Mon, 26 May 2014 13:09:41 +0000 (13:09 +0000)
committerLex Li <support@lextm.com>
Mon, 26 May 2014 13:24:00 +0000 (13:24 +0000)
mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs [new file with mode: 0644]
mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs [new file with mode: 0644]

index df74cd53584e4ec95d2109aa0483de28adc54ee9..f9f2ab86bd2b0e5df6c2f5b66b90ac88f2770d1b 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index 0d2d5e70064e3e1c447550e761a529d40db5e497..a7d7094172b70d218272a3abd569719cd36cb0f2 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index a1b0d3102e4c63b6123bf2fe2ca0336fe719c99f..ec89ac06f6ff85eaf8f50bf8b5748db0131d2d3e 100644 (file)
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type1MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type2MessageTest.cs" />\r
     <Compile Include="Test\Mono.Security.Protocol.Ntlm\Type3MessageTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\BasicConstraintsExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\ExtendedKeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\KeyUsageExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509.Extensions\SubjectAltNameExtensionTest.cs" />\r
+    <Compile Include="Test\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtensionTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\PKCS12Test.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X501NameTest.cs" />\r
     <Compile Include="Test\Mono.Security.X509\X509CertificateTest.cs" />\r
index ab426542dbcd01288dd4e2dbf0acb3749f4a5a66..5544fb3b7e7e8059dc1a60ae90e8e0dd7ff31b31 100644 (file)
@@ -85,8 +85,8 @@ namespace Mono.Security.X509.Extensions {
                protected override void Encode ()
                {
                        ASN1 seq = new ASN1 (0x30);
-                       if (Identifier == null) {
-                               throw new ArgumentException ("Invalid AuthorityKeyIdentifier extension");
+                       if (aki == null) {
+                               throw new InvalidOperationException ("Invalid AuthorityKeyIdentifier extension");
                        }
 
                        seq.Add (new ASN1 (0x80, aki));
index c4b3105635712bf62d2736ea45fdd0443e7e9f2d..8f15c28e34a13d7595f53f073b46fcec1cd19743 100644 (file)
@@ -77,8 +77,8 @@ namespace Mono.Security.X509.Extensions {
 
                protected override void Encode ()
                {
-                       if (Identifier == null) {
-                               throw new ArgumentException ("Invalid SubjectKeyIdentifier extension");
+                       if (ski == null) {
+                               throw new InvalidOperationException ("Invalid SubjectKeyIdentifier extension");
                        }
 
                        var seq = new ASN1 (0x04, ski);
diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtensionTest.cs
new file mode 100644 (file)
index 0000000..e095df4
--- /dev/null
@@ -0,0 +1,122 @@
+//
+// AuthorityKeyIdentifierExtensionTest.cs - NUnit Test Cases for 
+//     Mono.Security.X509.Extensions.AuthorityKeyIdentifierExtension
+//
+// Authors:
+//     Lex Li  <support@lextm.com>
+//
+// Copyright (C) 2014 Lex Li
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+using Mono.Security.X509.Extensions;
+using NUnit.Framework;
+
+namespace MonoTests.Mono.Security.X509.Extensions
+{
+       [TestFixture]
+       public class AuthorityKeyIdentifierExtensionTest
+       {
+               private void Empty (AuthorityKeyIdentifierExtension aki)
+               {
+                       Assert.IsFalse (aki.Critical, "Critical");
+                       Assert.AreEqual ("2.5.29.35", aki.Oid, "Oid");
+                       Assert.IsNotNull (aki.Name, "Name");
+                       Assert.IsFalse (aki.Name == aki.Oid, "Name!=Oid");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, aki.Identifier, "Identifier");
+               }
+
+               [Test]
+               public void Constructor_Empty ()
+               {
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension ();
+                       aki.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Empty (aki);
+               }
+
+               [Test]
+               public void Constructor_Extension ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext);
+                       Empty (aki);
+               }
+
+               [Test]
+               public void Constructor_ASN1 ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext.ASN1);
+                       Empty (aki);
+               }
+
+               [Test]
+               public void AuthorityKeyIdentifier_Critical ()
+               {
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension ();
+                       aki.Critical = true;
+                       aki.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Assert.AreEqual ("30-22-06-03-55-1D-23-01-01-FF-04-18-30-16-80-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (aki.GetBytes ()), "GetBytes");
+
+                       AuthorityKeyIdentifierExtension aki2 = new AuthorityKeyIdentifierExtension (aki.ASN1);
+                       Assert.IsTrue (aki2.Critical, "Critical");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, aki2.Identifier, "Identifier");
+               }
+
+               [Test]
+               [ExpectedException (typeof(InvalidOperationException))]
+               public void EmptyIdentifier ()
+               {
+                       AuthorityKeyIdentifierExtension ext = new AuthorityKeyIdentifierExtension ();
+                       AuthorityKeyIdentifierExtension aki = new AuthorityKeyIdentifierExtension (ext);
+                       Empty (aki);
+               }
+       }
+}
diff --git a/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs b/mcs/class/Mono.Security/Test/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtensionTest.cs
new file mode 100644 (file)
index 0000000..5acdd73
--- /dev/null
@@ -0,0 +1,122 @@
+//
+// SubjectKeyIdentifierExtensionTest.cs - NUnit Test Cases for 
+//     Mono.Security.X509.Extensions.SubjectKeyIdentifierExtension
+//
+// Authors:
+//     Lex Li  <support@lextm.com>
+//
+// Copyright (C) 2014 Lex Li
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+using Mono.Security.X509.Extensions;
+using NUnit.Framework;
+
+namespace MonoTests.Mono.Security.X509.Extensions
+{
+       [TestFixture]
+       public class SubjectKeyIdentifierExtensionTest
+       {
+               private void Empty (SubjectKeyIdentifierExtension ski)
+               {
+                       Assert.IsFalse (ski.Critical, "Critical");
+                       Assert.AreEqual ("2.5.29.14", ski.Oid, "Oid");
+                       Assert.IsNotNull (ski.Name, "Name");
+                       Assert.IsFalse (ski.Name == ski.Oid, "Name!=Oid");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, ski.Identifier, "Identifier");
+               }
+
+               [Test]
+               public void Constructor_Empty ()
+               {
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension ();
+                       ski.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Empty (ski);
+               }
+
+               [Test]
+               public void Constructor_Extension ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
+                       Empty (ski);
+               }
+
+               [Test]
+               public void Constructor_ASN1 ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       ext.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext.ASN1);
+                       Empty (ski);
+               }
+
+               [Test]
+               public void AuthorityKeyIdentifier_Critical ()
+               {
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension ();
+                       ski.Critical = true;
+                       ski.Identifier = new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       };
+                       Assert.AreEqual ("30-20-06-03-55-1D-0E-01-01-FF-04-16-04-14-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00", BitConverter.ToString (ski.GetBytes ()), "GetBytes");
+
+                       SubjectKeyIdentifierExtension ski2 = new SubjectKeyIdentifierExtension (ski.ASN1);
+                       Assert.IsTrue (ski2.Critical, "Critical");
+                       Assert.AreEqual (new byte[] {
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00,
+                               0x00, 0x00, 0x00, 0x00, 0x00
+                       }, ski2.Identifier, "Identifier");
+               }
+
+               [Test]
+               [ExpectedException (typeof(InvalidOperationException))]
+               public void EmptyIdentifier ()
+               {
+                       SubjectKeyIdentifierExtension ext = new SubjectKeyIdentifierExtension ();
+                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
+                       Empty (ski);
+               }
+       }
+}