X509ChainPolicyTest.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. //
  2. // X509ChainPolicyTest.cs - NUnit tests for X509ChainPolicy
  3. //
  4. // Author:
  5. // Sebastien Pouliot ([email protected])
  6. //
  7. // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
  8. //
  9. #if NET_1_2
  10. using NUnit.Framework;
  11. using System;
  12. using System.Collections;
  13. using System.Security.Cryptography;
  14. using System.Security.Cryptography.X509Certificates;
  15. namespace MonoTests.System.Security.Cryptography.X509Certificates {
  16. [TestFixture]
  17. public class X509ChainPolicyTest : Assertion {
  18. static string signingTimeOid = "1.2.840.113549.1.9.5";
  19. private X509ChainPolicy GetPolicy ()
  20. {
  21. X509Chain c = new X509Chain ();
  22. return c.ChainPolicy;
  23. }
  24. [Test]
  25. public void Default ()
  26. {
  27. X509ChainPolicy cp = GetPolicy ();
  28. // default properties
  29. AssertEquals ("ApplicationPolicy", 0, cp.ApplicationPolicy.Count);
  30. AssertEquals ("CertificatePolicy", 0, cp.CertificatePolicy.Count);
  31. AssertEquals ("ExtraStore", 0, cp.ExtraStore.Count);
  32. AssertEquals ("RevocationFlag", X509RevocationFlag.ExcludeRoot, cp.RevocationFlag);
  33. AssertEquals ("RevocationMode", X509RevocationMode.Online, cp.RevocationMode);
  34. AssertEquals ("UrlRetrievalTimeout", 0, cp.UrlRetrievalTimeout.Ticks);
  35. AssertEquals ("VerificationFlags", X509VerificationFlags.NoFlag, cp.VerificationFlags);
  36. DateTime vt = cp.VerificationTime;
  37. Assert ("VerificationTime", ((vt <= DateTime.Now) && (vt > DateTime.Now.AddMinutes (-1))));
  38. }
  39. [Test]
  40. public void ApplicationPolicy ()
  41. {
  42. X509ChainPolicy cp = GetPolicy ();
  43. cp.ApplicationPolicy.Add (new Oid (signingTimeOid));
  44. AssertEquals ("ApplicationPolicy", 1, cp.ApplicationPolicy.Count);
  45. }
  46. [Test]
  47. public void CertificatePolicy ()
  48. {
  49. X509ChainPolicy cp = GetPolicy ();
  50. cp.CertificatePolicy.Add (new Oid (signingTimeOid));
  51. AssertEquals ("CertificatePolicy", 1, cp.CertificatePolicy.Count);
  52. }
  53. [Test]
  54. public void ExtraStore ()
  55. {
  56. X509ChainPolicy cp = GetPolicy ();
  57. cp.ExtraStore.Add (new X509CertificateEx ());
  58. AssertEquals ("ExtraStore", 1, cp.ExtraStore.Count);
  59. }
  60. [Test]
  61. public void RevocationFlag ()
  62. {
  63. X509ChainPolicy cp = GetPolicy ();
  64. cp.RevocationFlag = X509RevocationFlag.EndCertificateOnly;
  65. AssertEquals ("EndCertificateOnly", X509RevocationFlag.EndCertificateOnly, cp.RevocationFlag);
  66. cp.RevocationFlag = X509RevocationFlag.EntireChain;
  67. AssertEquals ("EntireChain", X509RevocationFlag.EntireChain, cp.RevocationFlag);
  68. cp.RevocationFlag = X509RevocationFlag.ExcludeRoot;
  69. AssertEquals ("ExcludeRoot", X509RevocationFlag.ExcludeRoot, cp.RevocationFlag);
  70. }
  71. [Test]
  72. public void RevocationMode ()
  73. {
  74. X509ChainPolicy cp = GetPolicy ();
  75. cp.RevocationMode = X509RevocationMode.NoCheck;
  76. AssertEquals ("NoCheck", X509RevocationMode.NoCheck, cp.RevocationMode);
  77. cp.RevocationMode = X509RevocationMode.Offline;
  78. AssertEquals ("Offline", X509RevocationMode.Offline, cp.RevocationMode);
  79. cp.RevocationMode = X509RevocationMode.Online;
  80. AssertEquals ("Online", X509RevocationMode.Online, cp.RevocationMode);
  81. }
  82. [Test]
  83. public void UrlRetrievalTimeout ()
  84. {
  85. X509ChainPolicy cp = GetPolicy ();
  86. cp.UrlRetrievalTimeout = new TimeSpan (100);
  87. AssertEquals ("TimeSpan=100", 100, cp.UrlRetrievalTimeout.Ticks);
  88. cp.UrlRetrievalTimeout = new TimeSpan (0);
  89. AssertEquals ("TimeSpan=0", 0, cp.UrlRetrievalTimeout.Ticks);
  90. }
  91. [Test]
  92. public void VerificationFlags ()
  93. {
  94. X509ChainPolicy cp = GetPolicy ();
  95. cp.VerificationFlags = X509VerificationFlags.AllFlags;
  96. AssertEquals ("AllFlags", X509VerificationFlags.AllFlags, cp.VerificationFlags);
  97. cp.VerificationFlags = X509VerificationFlags.AllowUnknownCertificateAuthority;
  98. AssertEquals ("AllowUnknownCertificateAuthority", X509VerificationFlags.AllowUnknownCertificateAuthority, cp.VerificationFlags);
  99. cp.VerificationFlags = X509VerificationFlags.IgnoreCertificateAuthorityRevocationUnknown;
  100. AssertEquals ("IgnoreCertificateAuthorityRevocationUnknown", X509VerificationFlags.IgnoreCertificateAuthorityRevocationUnknown, cp.VerificationFlags);
  101. cp.VerificationFlags = X509VerificationFlags.IgnoreCtlNotTimeValid;
  102. AssertEquals ("IgnoreCtlNotTimeValid", X509VerificationFlags.IgnoreCtlNotTimeValid, cp.VerificationFlags);
  103. cp.VerificationFlags = X509VerificationFlags.IgnoreCtlSignerRevocationUnknown;
  104. AssertEquals ("IgnoreCtlSignerRevocationUnknown", X509VerificationFlags.IgnoreCtlSignerRevocationUnknown, cp.VerificationFlags);
  105. cp.VerificationFlags = X509VerificationFlags.IgnoreEndRevocationUnknown;
  106. AssertEquals ("IgnoreEndRevocationUnknown", X509VerificationFlags.IgnoreEndRevocationUnknown, cp.VerificationFlags);
  107. cp.VerificationFlags = X509VerificationFlags.IgnoreInvalidBasicConstraints;
  108. AssertEquals ("IgnoreInvalidBasicConstraints", X509VerificationFlags.IgnoreInvalidBasicConstraints, cp.VerificationFlags);
  109. cp.VerificationFlags = X509VerificationFlags.IgnoreInvalidName;
  110. AssertEquals ("IgnoreInvalidName", X509VerificationFlags.IgnoreInvalidName, cp.VerificationFlags);
  111. cp.VerificationFlags = X509VerificationFlags.IgnoreInvalidPolicy;
  112. AssertEquals ("IgnoreInvalidPolicy", X509VerificationFlags.IgnoreInvalidPolicy, cp.VerificationFlags);
  113. cp.VerificationFlags = X509VerificationFlags.IgnoreNotTimeNested;
  114. AssertEquals ("IgnoreNotTimeNested", X509VerificationFlags.IgnoreNotTimeNested, cp.VerificationFlags);
  115. cp.VerificationFlags = X509VerificationFlags.IgnoreNotTimeValid;
  116. AssertEquals ("IgnoreNotTimeValid", X509VerificationFlags.IgnoreNotTimeValid, cp.VerificationFlags);
  117. cp.VerificationFlags = X509VerificationFlags.IgnoreRootRevocationUnknown;
  118. AssertEquals ("IgnoreRootRevocationUnknown", X509VerificationFlags.IgnoreRootRevocationUnknown, cp.VerificationFlags);
  119. cp.VerificationFlags = X509VerificationFlags.IgnoreWrongUsage;
  120. AssertEquals ("IgnoreWrongUsage", X509VerificationFlags.IgnoreWrongUsage, cp.VerificationFlags);
  121. cp.VerificationFlags = X509VerificationFlags.NoFlag;
  122. AssertEquals ("NoFlag", X509VerificationFlags.NoFlag, cp.VerificationFlags);
  123. }
  124. [Test]
  125. public void Reset ()
  126. {
  127. X509ChainPolicy cp = GetPolicy ();
  128. cp.ApplicationPolicy.Add (new Oid (signingTimeOid));
  129. cp.CertificatePolicy.Add (new Oid (signingTimeOid));
  130. cp.ExtraStore.Add (new X509CertificateEx ());
  131. cp.RevocationFlag = X509RevocationFlag.EndCertificateOnly;
  132. cp.RevocationMode = X509RevocationMode.NoCheck;
  133. cp.UrlRetrievalTimeout = new TimeSpan (100);
  134. cp.VerificationFlags = X509VerificationFlags.AllFlags;
  135. DateTime vt = cp.VerificationTime;
  136. Assert ("VerificationTime", ((vt <= DateTime.Now) && (vt > DateTime.Now.AddMinutes (-1))));
  137. cp.Reset ();
  138. Assert ("VerificationTime-Reset", (vt != cp.VerificationTime));
  139. // default properties
  140. AssertEquals ("ApplicationPolicy", 0, cp.ApplicationPolicy.Count);
  141. AssertEquals ("CertificatePolicy", 0, cp.CertificatePolicy.Count);
  142. AssertEquals ("ExtraStore", 0, cp.ExtraStore.Count);
  143. AssertEquals ("RevocationFlag", X509RevocationFlag.ExcludeRoot, cp.RevocationFlag);
  144. AssertEquals ("RevocationMode", X509RevocationMode.Online, cp.RevocationMode);
  145. AssertEquals ("UrlRetrievalTimeout", 0, cp.UrlRetrievalTimeout.Ticks);
  146. AssertEquals ("VerificationFlags", X509VerificationFlags.NoFlag, cp.VerificationFlags);
  147. vt = cp.VerificationTime;
  148. Assert ("VerificationTime", ((vt <= DateTime.Now) && (vt > DateTime.Now.AddMinutes (-1))));
  149. }
  150. }
  151. }
  152. #endif