2
0
Эх сурвалжийг харах

2005-04-24 Sebastien Pouliot <[email protected]>

	* X509CertificateEx.cs: Added new constructors and Import methods that
	accept SecureString for passwords. Added new property HasPrivateKey and
	Verify method.
	* X509CertificateExCollection.cs: Added new constructor that accept a
	single X509Certificate2.
	* X509EnhancedKeyUsageExtension.cs: Fixed compiler warnings.
	* X509KeyUsageExtension.cs: Fixed new enum name for CrlSign. 
	* X509KeyUsageFlags.cs: Fixed values and removed [Serializable].
	* X509NameType.cs: Fixed values and removed [Serializable].
	* X509Store.cs: Added new constructor that accept an IntPtr and the 
	StoreHandle property. Fixed compiler warnings.


svn path=/trunk/mcs/; revision=43512
Sebastien Pouliot 20 жил өмнө
parent
commit
bd933f00fb

+ 14 - 0
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/ChangeLog

@@ -1,3 +1,17 @@
+2005-04-24  Sebastien Pouliot  <[email protected]>
+
+	* X509CertificateEx.cs: Added new constructors and Import methods that
+	accept SecureString for passwords. Added new property HasPrivateKey and
+	Verify method.
+	* X509CertificateExCollection.cs: Added new constructor that accept a
+	single X509Certificate2.
+	* X509EnhancedKeyUsageExtension.cs: Fixed compiler warnings.
+	* X509KeyUsageExtension.cs: Fixed new enum name for CrlSign. 
+	* X509KeyUsageFlags.cs: Fixed values and removed [Serializable].
+	* X509NameType.cs: Fixed values and removed [Serializable].
+	* X509Store.cs: Added new constructor that accept an IntPtr and the 
+	StoreHandle property. Fixed compiler warnings.
+
 2005-04-23  Sebastien Pouliot  <[email protected]>
 
 	* X509CertificateEx.cs, X509CertificateExCollection.cs, 

+ 48 - 1
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509CertificateEx.cs

@@ -63,12 +63,23 @@ namespace System.Security.Cryptography.X509Certificates {
 			_cert = new MX.X509Certificate (this.RawData);
 		}
 
+		public X509Certificate2 (byte[] rawData, SecureString password) : base (rawData, password) 
+		{
+			_cert = new MX.X509Certificate (this.RawData);
+		}
+
 		public X509Certificate2 (byte[] rawData, string password, X509KeyStorageFlags keyStorageFlags)
 			: base (rawData, password, keyStorageFlags) 
 		{
 			_cert = new MX.X509Certificate (this.RawData);
 		}
 
+		public X509Certificate2 (byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags)
+			: base (rawData, password, keyStorageFlags) 
+		{
+			_cert = new MX.X509Certificate (this.RawData);
+		}
+
 		public X509Certificate2 (string fileName) : base (fileName) 
 		{
 			_cert = new MX.X509Certificate (this.RawData);
@@ -79,18 +90,29 @@ namespace System.Security.Cryptography.X509Certificates {
 			_cert = new MX.X509Certificate (this.RawData);
 		}
 
+		public X509Certificate2 (string fileName, SecureString password) 
+		{
+			_cert = new MX.X509Certificate (this.RawData);
+		}
+
 		public X509Certificate2 (string fileName, string password, X509KeyStorageFlags keyStorageFlags)
 			: base (fileName, password, keyStorageFlags) 
 		{
 			_cert = new MX.X509Certificate (this.RawData);
 		}
 
+		public X509Certificate2 (string fileName, SecureString password, X509KeyStorageFlags keyStorageFlags)
+			: base (fileName, password, keyStorageFlags) 
+		{
+			_cert = new MX.X509Certificate (this.RawData);
+		}
+
 		public X509Certificate2 (IntPtr handle) : base (handle) 
 		{
 			_cert = new MX.X509Certificate (this.RawData);
 		}
 
-		public X509Certificate2 (X509Certificate2 certificate) 
+		public X509Certificate2 (X509Certificate certificate) 
 		{
 			_cert = new MX.X509Certificate (this.RawData);
 		}
@@ -111,6 +133,11 @@ namespace System.Security.Cryptography.X509Certificates {
 			set { _name = value; }
 		}
 
+		[MonoTODO]
+		public bool HasPrivateKey {
+			get { return false; }
+		}
+
 		[MonoTODO]
 		public X500DistinguishedName IssuerName {
 			get { return null; }
@@ -203,6 +230,11 @@ namespace System.Security.Cryptography.X509Certificates {
 			base.Import (rawData, password, keyStorageFlags);
 		}
 
+		public override void Import (byte[] rawData, SecureString password, X509KeyStorageFlags keyStorageFlags)
+		{
+			base.Import (rawData, password, keyStorageFlags);
+		}
+
 		public override void Import (string fileName) 
 		{
 			base.Import (fileName);
@@ -213,6 +245,11 @@ namespace System.Security.Cryptography.X509Certificates {
 			base.Import (fileName, password, keyStorageFlags);
 		}
 
+		public override void Import (string fileName, SecureString password, X509KeyStorageFlags keyStorageFlags) 
+		{
+			base.Import (fileName, password, keyStorageFlags);
+		}
+
 		public override void Reset () 
 		{
 			_serial = null;
@@ -232,6 +269,16 @@ namespace System.Security.Cryptography.X509Certificates {
 			return null;
 		}
 
+		[MonoTODO]
+		public bool Verify ()
+		{
+			X509Chain chain = new X509Chain ();
+			if (!chain.Build (this))
+				return false;
+			// TODO - check chain and other stuff ???
+			return true;
+		}
+
 		// static methods
 
 		[MonoTODO]

+ 5 - 0
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509CertificateExCollection.cs

@@ -48,6 +48,11 @@ namespace System.Security.Cryptography.X509Certificates {
 			AddRange (certificates);
 		}
 
+		public X509Certificate2Collection (X509Certificate2 certificate) 
+		{
+			Add (certificate);
+		}
+
 		public X509Certificate2Collection (X509Certificate2[] certificates) 
 		{
 			AddRange (certificates);

+ 0 - 2
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs

@@ -160,8 +160,6 @@ namespace System.Security.Cryptography.X509Certificates {
 			if (_enhKeyUsage.Count == 0)
 				return "Information Not Available";
 
-			bool first = false;
-			bool onebyte = true;
 			StringBuilder sb = new StringBuilder ();
 
 			for (int i=0; i < _enhKeyUsage.Count; i++) {

+ 2 - 2
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs

@@ -41,7 +41,7 @@ namespace System.Security.Cryptography.X509Certificates {
 		internal const string oid = "2.5.29.15";
 		internal const string friendlyName = "Key Usage";
 
-		internal const X509KeyUsageFlags all = X509KeyUsageFlags.EncipherOnly | X509KeyUsageFlags.CRLSign | 
+		internal const X509KeyUsageFlags all = X509KeyUsageFlags.EncipherOnly | X509KeyUsageFlags.CrlSign | 
 			X509KeyUsageFlags.KeyCertSign | X509KeyUsageFlags.KeyAgreement | X509KeyUsageFlags.DataEncipherment |
 			X509KeyUsageFlags.KeyEncipherment | X509KeyUsageFlags.NonRepudiation | 
 			X509KeyUsageFlags.DigitalSignature | X509KeyUsageFlags.DecipherOnly;
@@ -219,7 +219,7 @@ namespace System.Security.Cryptography.X509Certificates {
 					sb.Append (", ");
 				sb.Append ("Certificate Signing");
 			}
-			if ((_keyUsages & X509KeyUsageFlags.CRLSign) != 0) {
+			if ((_keyUsages & X509KeyUsageFlags.CrlSign) != 0) {
 				if (sb.Length > 0)
 					sb.Append (", ");
 				sb.Append ("Off-line CRL Signing, CRL Signing");

+ 3 - 5
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509KeyUsageFlags.cs

@@ -5,7 +5,7 @@
 //	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell Inc. (http://www.novell.com)
+// Copyright (C) 2004-2005 Novell Inc. (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,15 +29,13 @@
 
 #if NET_2_0
 
-using System;
-
 namespace System.Security.Cryptography.X509Certificates {
 
 	[Flags]
-	[Serializable]
 	public enum X509KeyUsageFlags {
+		None = 0,
 		EncipherOnly = 1,
-		CRLSign = 2,
+		CrlSign = 2,
 		KeyCertSign = 4,
 		KeyAgreement = 8,
 		DataEncipherment = 16,

+ 6 - 9
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509NameType.cs

@@ -5,7 +5,7 @@
 //	Sebastien Pouliot  <[email protected]>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell Inc. (http://www.novell.com)
+// Copyright (C) 2004-2005 Novell Inc. (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,17 +29,14 @@
 
 #if NET_2_0
 
-using System;
-
 namespace System.Security.Cryptography.X509Certificates {
 
-	[Serializable]
 	public enum X509NameType {
-		SimpleName = 1,
-		EmailName = 2,
-		UpnName = 3,
-		DnsName = 4,
-		UrlName = 5
+		SimpleName,
+		EmailName,
+		UpnName,
+		DnsName,
+		UrlName
 	}
 }
 

+ 14 - 4
mcs/class/System.Security/System.Security.Cryptography.X509Certificates/X509Store.cs

@@ -68,6 +68,12 @@ namespace System.Security.Cryptography.X509Certificates {
 		{
 		}
 
+		public X509Store (IntPtr storeHandle)
+		{
+			// CryptoAPI compatibility (unmanaged handle)
+			throw new NotSupportedException ();
+		}
+
 		[MonoTODO ("call Mono.Security.X509.X509Store*")]
 		public X509Store (string storeName, StoreLocation storeLocation)
 		{
@@ -100,6 +106,10 @@ namespace System.Security.Cryptography.X509Certificates {
 			get { return ((_flags & OpenFlags.ReadOnly) != OpenFlags.ReadOnly); }
 		}
 
+		public IntPtr StoreHandle {
+			get { return IntPtr.Zero; }
+		}
+
 		// methods
 
 		private static string StoreNameToString (StoreName sn) 
@@ -120,7 +130,7 @@ namespace System.Security.Cryptography.X509Certificates {
 
 			if (!ReadOnly) {
 				try {
-					Mono.Security.X509.X509Certificate x = new Mono.Security.X509.X509Certificate (certificate.RawData);
+					// Mono.Security.X509.X509Certificate x = new Mono.Security.X509.X509Certificate (certificate.RawData);
 					// TODO
 				}
 				catch {
@@ -150,9 +160,9 @@ namespace System.Security.Cryptography.X509Certificates {
 		public void Open (OpenFlags flags)
 		{
 			_flags = flags;
-			bool readOnly = ((flags & OpenFlags.ReadOnly) == OpenFlags.ReadOnly);
+			/*bool readOnly = ((flags & OpenFlags.ReadOnly) == OpenFlags.ReadOnly);
 			bool create = !((flags & OpenFlags.OpenExistingOnly) == OpenFlags.OpenExistingOnly);
-			bool archive = ((flags & OpenFlags.IncludeArchived) == OpenFlags.IncludeArchived);
+			bool archive = ((flags & OpenFlags.IncludeArchived) == OpenFlags.IncludeArchived);*/
 			// TODO
 		}
 
@@ -164,7 +174,7 @@ namespace System.Security.Cryptography.X509Certificates {
 
 			if (!ReadOnly) {
 				try {
-					Mono.Security.X509.X509Certificate x = new Mono.Security.X509.X509Certificate (certificate.RawData);
+					//Mono.Security.X509.X509Certificate x = new Mono.Security.X509.X509Certificate (certificate.RawData);
 					// TODO
 				}
 				catch {