Format() public method

public Format ( bool multiLine ) : string
multiLine bool
return string
示例#1
0
		public void Constructor_StringData ()
		{
			AsnEncodedData aed = new AsnEncodedData ("oid", asnNullBytes);
			Assert.AreEqual ("oid", aed.Oid.Value, "Oid.Value");
			Assert.IsNull (aed.Oid.FriendlyName, "Oid.FriendlyName");
			Assert.AreEqual (BitConverter.ToString (asnNullBytes), BitConverter.ToString (aed.RawData), "RawData");
			Assert.AreEqual (asnNullString, aed.Format (true), "Format");
		}
示例#2
0
		[Category ("NotDotNet")] // FriendlyName should not only be English.
		// note: important to emulate in Mono because we need it for SSL/TLS
		public void Build_SubjectAltNameExtension ()
		{
			AsnEncodedData aed = new AsnEncodedData (new byte[] { 0x30, 0x16, 0x82, 0x14, 0x77, 0x77, 0x77, 0x2E, 0x6D, 0x6F, 0x6E, 0x6F, 0x2D, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x63, 0x6F, 0x6D });
			Assert.AreEqual ("30 16 82 14 77 77 77 2e 6d 6f 6e 6f 2d 70 72 6f 6a 65 63 74 2e 63 6f 6d", aed.Format (true), "Format(true)");
			Assert.AreEqual ("30 16 82 14 77 77 77 2e 6d 6f 6e 6f 2d 70 72 6f 6a 65 63 74 2e 63 6f 6d", aed.Format (false), "Format(false)");
			aed.Oid = new Oid ("2.5.29.17");
			// and now "AsnEncodedData" knows how to (magically) decode the data without involving the class
			Assert.AreEqual ("DNS Name=www.mono-project.com" + Environment.NewLine, aed.Format (true), "aed.Format(true)");
			Assert.AreEqual ("DNS Name=www.mono-project.com", aed.Format (false), "aed.Format(false)");
			// note that the Fx doesn't "really" support this extension
			// finally this also means that the Oid "knowns" about oid not used in the Fx itself
			// FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
			Assert.AreEqual ("Subject Alternative Name", aed.Oid.FriendlyName, "FriendlyName");
			// anyway the answer is most probably CryptoAPI
		}
示例#3
0
		[Category ("NotDotNet")] // FriendlyName should not only be English.
		public void Build_X509EnhancedKeyUsageExtension ()
		{
			AsnEncodedData aed = new AsnEncodedData (new byte[] { 0x30, 0x05, 0x06, 0x03, 0x2A, 0x03, 0x04 });
			Assert.AreEqual ("30 05 06 03 2a 03 04", aed.Format (true), "Format(true)");
			Assert.AreEqual ("30 05 06 03 2a 03 04", aed.Format (false), "Format(false)");
			aed.Oid = new Oid ("2.5.29.37");
			// and now "AsnEncodedData" knows how to (magically) decode the data without involving the class
			// FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)" + Environment.NewLine, aed.Format (true), "aed.Format(true)");
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)", aed.Format (false), "aed.Format(false)");
			// compare with the output of the "appropriate" class
			X509EnhancedKeyUsageExtension eku = new X509EnhancedKeyUsageExtension (aed, false);
			// FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)" + Environment.NewLine, eku.Format (true), "eku.Format(true)");
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)", eku.Format (false), "eku.Format(false)");
		}
示例#4
0
		[Category ("NotDotNet")] // FriendlyName should not only be English.
		// note: important to emulate in Mono because we need it for SSL/TLS
		public void Build_NetscapeCertTypeExtension ()
		{
			AsnEncodedData aed = new AsnEncodedData (new byte[] { 0x03, 0x02, 0x01, 0x06 });
			Assert.AreEqual ("03 02 01 06", aed.Format (true), "Format(true)");
			Assert.AreEqual ("03 02 01 06", aed.Format (false), "Format(false)");
			aed.Oid = new Oid ("2.16.840.1.113730.1.1");
			// and now "AsnEncodedData" knows how to (magically) decode the data without involving the class
			Assert.AreEqual ("SSL CA, SMIME CA (06)", aed.Format (true), "aed.Format(true)");
			Assert.AreEqual ("SSL CA, SMIME CA (06)", aed.Format (false), "aed.Format(false)");
			// note that the Fx doesn't "really" support this extension
			// and strangely no NewLine is being appended to Format(true)
			// finally this also means that the Oid "knowns" about oid not used in the Fx itself
			// FIXME: Don't expect that FriendlyName is English. This test fails under non-English Windows.
			Assert.AreEqual ("Netscape Cert Type", aed.Oid.FriendlyName, "FriendlyName");
			// anyway the answer is most probably CryptoAPI
		}
示例#5
0
		public void CopyFrom ()
		{
			Oid o = new Oid ("1.2.3");
			byte[] data = (byte[])asnNullBytes.Clone ();
			AsnEncodedData aed = new AsnEncodedData (o, asnNullBytes);
			AsnEncodedData copy = new AsnEncodedData ((Oid)null, new byte [0]);
			copy.CopyFrom (aed);

			Assert.AreEqual (aed.Oid.Value, copy.Oid.Value, "Oid 1");
			Assert.AreEqual (aed.Format (true), copy.Format (true), "Format 1");

			aed.Oid = new Oid ("1.2.4");
			aed.RawData = new byte[1];

			Assert.AreEqual ("1.2.3", copy.Oid.Value, "Oid 2");
			Assert.AreEqual (asnNullString, copy.Format (true), "Format 2");
		}
示例#6
0
		public void FormatMultiline ()
		{
			AsnEncodedData aed = new AsnEncodedData ("1.2.840.113549.1.1.1", asnLongBytes);
			Assert.AreEqual ("1.2.840.113549.1.1.1", aed.Oid.Value, "Oid.Value");
			Assert.AreEqual ("RSA", aed.Oid.FriendlyName, "Oid.FriendlyName");
			Assert.AreEqual (BitConverter.ToString (asnLongBytes), BitConverter.ToString (aed.RawData), "RawData");
			string result = aed.Format (true);
			Assert.AreEqual (asnLongString, result, "Format(true)");
		}
示例#7
0
		public void RawData_CanModify ()
		{
			byte[] data = (byte[])asnNullBytes.Clone ();
			AsnEncodedData aed = new AsnEncodedData ("1.2.3", data);
			Assert.AreEqual (asnNullString, aed.Format (true), "Format 1");
			data[0] = 0x06;
			Assert.AreEqual (asnNullString, aed.Format (true), "Format 2"); ; // didn't change (copy)
			aed.RawData[0] = 0x07;
			Assert.AreEqual ("07 00", aed.Format (true), "Format 3"); // changed!
		}
 private void Parse(byte[] data)
 {
     if (base.Oid.Value == SubjectAltNameOid ||
         base.Oid.Value == SubjectAltName2Oid)
     {
         AsnEncodedData asnData = new AsnEncodedData(base.Oid.Value, data);
         string formattedData = asnData.Format(false);
         ParseSubjectAltNameUsageExtension(formattedData);
     }
     else
     {
         throw new ServiceResultException(
             StatusCodes.BadCertificateInvalid,
             "Certificate uses unknown SubjectAltNameOid.");
     }
 }
 private void Parse(byte[] data)
 {
     if (base.Oid.Value == AuthorityKeyIdentifierOid ||
         base.Oid.Value == AuthorityKeyIdentifier2Oid)
     {
         AsnEncodedData asnData = new AsnEncodedData(base.Oid.Value, data);
         string formattedData = asnData.Format(false);
         ParseAuthorityKeyIdentifierExtension(formattedData);
     }
     else
     {
         throw new ServiceResultException(
             StatusCodes.BadCertificateInvalid,
             "Certificate uses unknown AuthorityKeyIdentifierOid.");
     }
 }
示例#10
0
		public void Constructor_Asn () 
		{
			AsnEncodedData aed = new AsnEncodedData ("oid", asnNullBytes);
			AsnEncodedData aed2 = new AsnEncodedData (aed);
			Assert.AreEqual (aed.Oid.Value, aed2.Oid.Value, "Oid.Value");
			Assert.AreEqual (aed.Oid.FriendlyName, aed2.Oid.FriendlyName, "Oid.FriendlyName");
			Assert.AreEqual (BitConverter.ToString (aed.RawData), BitConverter.ToString (aed2.RawData), "RawData");
			string s1 = aed.Format (false); 
			string s2 = aed.Format (true);
			Assert.AreEqual (s1, s2, "Format");
		}
示例#11
0
        private static bool CertificateValidationCallBack(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            // Certificate2 is better than Certificate1, right?
            X509Certificate2 cert = (X509Certificate2)certificate;

            string[] subjectPieces = splitDN(cert.Subject);

            Console.Write("Certificate Subject   : ");
            for (int x = 0; x < subjectPieces.Length; x++)
            {
                if (x == 0)
                    Console.WriteLine(subjectPieces[x]);
                else
                    Console.WriteLine("                        " + subjectPieces[x]);
            }

            string[] issuerPieces = splitDN(cert.Issuer);

            Console.Write("Certificate Issuer    : ");
            for (int x = 0; x < issuerPieces.Length; x++)
            {
                if (x == 0)
                    Console.WriteLine(issuerPieces[x]);
                else
                    Console.WriteLine("                        " + issuerPieces[x]);
            }

            Console.WriteLine("Certificate Begins    : " + cert.NotBefore);
            Console.WriteLine("Certificate Expires   : " + cert.NotAfter);
            Console.WriteLine("Certificate Version   : " + cert.Version);
            if (cert.SignatureAlgorithm.FriendlyName.ToLower().Contains("md5"))
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Signature Algorithm   : " + cert.SignatureAlgorithm.FriendlyName + " (" + cert.SignatureAlgorithm.Value + ")");
                Console.ResetColor();
            }
            else
            {
                Console.WriteLine("Signature Algorithm   : " + cert.SignatureAlgorithm.FriendlyName + " (" + cert.SignatureAlgorithm.Value + ")");
            }
            Console.WriteLine("Key Exchange Algorithm: " + cert.PublicKey.Key.KeyExchangeAlgorithm);
            Console.WriteLine("Public Key Algorithm  : " + new System.Security.Cryptography.Oid(cert.GetKeyAlgorithm()).FriendlyName);
            Console.WriteLine("Public Key Size       : " + cert.PublicKey.Key.KeySize);
            foreach (X509Extension extension in cert.Extensions)
            {
                if (extension.Oid.FriendlyName == "Subject Alternative Name")
                {
                    AsnEncodedData asnData = new AsnEncodedData(extension.Oid, extension.RawData);
                    string[] sans = asnData.Format(false).Split(',');
                    Console.Write("Alternative Names     : ");
                    for (int x = 0; x < sans.Length; x++)
                    {
                        if (x == 0)
                            Console.WriteLine(sans[x]);
                        else
                            Console.WriteLine("                       " + sans[x]);
                    }
                }
            }
            Console.Write("Certificate Validated : ");
            if (sslPolicyErrors == SslPolicyErrors.None)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Yes");
                Console.ResetColor();
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("No (" + sslPolicyErrors + ")");
                Console.ResetColor();
            }
            return true;
        }
 public static string GetElementInX509Name(X509Certificate2 certificate, string element)
 {
     var asnEncodedData = new AsnEncodedData(new Oid(element), certificate.SubjectName.RawData);
     return asnEncodedData.Format(false);
 }
 public static string GetSubjectCommonName(X509Certificate2 certificate)
 {
     var asnEncodedData = new AsnEncodedData(new Oid(ObjectIdentifiers.CommonName), certificate.SubjectName.RawData);
     return asnEncodedData.Format(false);
 }
示例#14
0
		public void Constructor_OidNullData () 
		{
			// this is legal - http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=38336cfa-3b97-47da-ad4e-9522d557f001
			Oid o = null;
			AsnEncodedData aed = new AsnEncodedData (o, asnNullBytes);
			Assert.IsNull (aed.Oid, "Oid");
			Assert.AreEqual (BitConverter.ToString (asnNullBytes), BitConverter.ToString (aed.RawData), "RawData");
			Assert.AreEqual (asnNullString, aed.Format (true), "Format");
		}
示例#15
0
		public void RawData ()
		{
			AsnEncodedData aed = new AsnEncodedData ((Oid)null, asnNullBytes);
			Assert.AreEqual (asnNullString, aed.Format (true), "Format 1");
			aed.RawData = null;
		}
示例#16
0
文件: Helper.cs 项目: darko0201/eVR
 public static string GetAuthorityKeyIdentifier(X509Certificate2 cert)
 {
     X509Extension extension = Helper.GetX509Extension(cert, "2.5.29.35");
     if (extension == null)
     {
         return null;
     }
     AsnEncodedData asndata = new AsnEncodedData(extension.Oid, extension.RawData);
     return asndata.Format(true);
 }
		public void CopyFrom_AsnEncodedData ()
		{
			AsnEncodedData aed = new AsnEncodedData (new Oid ("2.5.29.37"), new byte[] { 0x30, 0x05, 0x06, 0x03, 0x2A, 0x03, 0x04 });
			// this is recognized as an Enhanced Key Usages extension
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)" + Environment.NewLine, aed.Format (true), "aed.Format(true)");
			Assert.AreEqual ("Unknown Key Usage (1.2.3.4)", aed.Format (false), "aed.Format(false)");
			X509Ex ex = new X509Ex ();
			// but won't be accepted by the CopyFrom method (no a X509Extension)
			ex.CopyFrom (aed);
		}