Merge pull request #2894 from marek-safar/mono.security
[mono.git] / mcs / class / corlib / System.Security.Cryptography.X509Certificates / X509Certificate.cs
index 144997e573b63c0cb211a47596cdbb0e676228ac..135b270e508bb123f5f1226ee18710b2942347ca 100644 (file)
@@ -109,17 +109,44 @@ namespace System.Security.Cryptography.X509Certificates {
                        impl = X509Helper.InitFromHandle (handle);
                }
 
+               internal X509Certificate (X509CertificateImpl impl)
+               {
+                       if (impl == null)
+                               throw new ArgumentNullException ("impl");
+
+                       this.impl = X509Helper.InitFromCertificate (impl);
+               }
+
                public X509Certificate (System.Security.Cryptography.X509Certificates.X509Certificate cert) 
                {
                        if (cert == null)
                                throw new ArgumentNullException ("cert");
 
-                       X509Helper.ThrowIfContextInvalid (cert.impl);
-
-                       impl = X509Helper.InitFromCertificate (cert.impl);
+                       impl = X509Helper.InitFromCertificate (cert);
                        hideDates = false;
                }
 
+               internal void ImportHandle (X509CertificateImpl impl)
+               {
+                       Reset ();
+                       this.impl = impl;
+               }
+
+               internal X509CertificateImpl Impl {
+                       get {
+                               X509Helper.ThrowIfContextInvalid (impl);
+                               return impl;
+                       }
+               }
+
+               internal bool IsValid {
+                       get { return X509Helper.IsValid (impl); }
+               }
+
+               internal void ThrowIfContextInvalid ()
+               {
+                       X509Helper.ThrowIfContextInvalid (impl);
+               }
 
                // public methods
        
@@ -161,7 +188,7 @@ namespace System.Security.Cryptography.X509Certificates {
                                return null;
                        X509Helper.ThrowIfContextInvalid (impl);
 
-                       return impl.GetEffectiveDateString ().ToString ();
+                       return impl.GetValidFrom ().ToLocalTime ().ToString ();
                }
        
                // strangly there are no DateTime returning function
@@ -171,7 +198,7 @@ namespace System.Security.Cryptography.X509Certificates {
                                return null;
                        X509Helper.ThrowIfContextInvalid (impl);
 
-                       return impl.GetExpirationDateString ().ToString ();
+                       return impl.GetValidUntil ().ToLocalTime ().ToString ();
                }
        
                // well maybe someday there'll be support for PGP or SPKI ?