public void CertificateAuthority_Critical ()
		{
			BasicConstraintsExtension bce = new BasicConstraintsExtension ();
			bce.Critical = true;
			bce.CertificateAuthority = true;
			bce.PathLenConstraint = 0;
			Assert.AreEqual ("30-12-06-03-55-1D-13-01-01-FF-04-08-30-06-01-01-FF-02-01-00", BitConverter.ToString (bce.GetBytes ()), "GetBytes");

			BasicConstraintsExtension bce2 = new BasicConstraintsExtension (bce.ASN1);
			Assert.IsTrue (bce2.Critical, "Critical");
			Assert.IsTrue (bce2.CertificateAuthority, "CertificateAuthority");
			Assert.AreEqual (0, bce2.PathLenConstraint, "PathLenConstraint");
		}
		public void NotCertificateAuthority ()
		{
			BasicConstraintsExtension bce = new BasicConstraintsExtension ();
			bce.CertificateAuthority = false;
			// CertificateAuthority isn't encoded (default value is false)
			bce.PathLenConstraint = Int32.MaxValue;
			// PathLenConstraint is ignored (per RFC3280)
			Assert.AreEqual ("30-09-06-03-55-1D-13-04-02-30-00", BitConverter.ToString (bce.GetBytes ()), "GetBytes");

			BasicConstraintsExtension bce2 = new BasicConstraintsExtension (bce.ASN1);
			Assert.IsFalse (bce2.Critical, "Critical");
			Assert.IsFalse (bce2.CertificateAuthority, "CertificateAuthority");
			Assert.AreEqual (BasicConstraintsExtension.NoPathLengthConstraint, bce2.PathLenConstraint, "PathLenConstraint");
		}
		public void CertificateAuthority_NoPathLengthConstraint ()
		{
			BasicConstraintsExtension bce = new BasicConstraintsExtension ();
			bce.CertificateAuthority = true;
			bce.PathLenConstraint = BasicConstraintsExtension.NoPathLengthConstraint;
			Assert.AreEqual ("30-0C-06-03-55-1D-13-04-05-30-03-01-01-FF", BitConverter.ToString (bce.GetBytes ()), "GetBytes");

			BasicConstraintsExtension bce2 = new BasicConstraintsExtension (bce.ASN1);
			Assert.IsFalse (bce2.Critical, "Critical");
			Assert.IsTrue (bce2.CertificateAuthority, "CertificateAuthority");
			Assert.AreEqual (BasicConstraintsExtension.NoPathLengthConstraint, bce2.PathLenConstraint, "PathLenConstraint");
		}