Merge pull request #2274 from esdrubal/udpclientreceive
[mono.git] / mcs / class / System / System.Security.Cryptography.X509Certificates / PublicKey.cs
index ccc35f2f8bcc915b6a402314d562f6b97c025c45..15641f264213831c7846be0b0492b33f3948297c 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0 && SECURITY_DEP
-
+#if SECURITY_DEP
+
+#if MONO_SECURITY_ALIAS
+extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MonoSecurity::Mono.Security.Cryptography;
+using MSX = MonoSecurity::Mono.Security.X509;
+#else
 using Mono.Security;
 using Mono.Security.Cryptography;
 using MSX = Mono.Security.X509;
+#endif
 
 namespace System.Security.Cryptography.X509Certificates {
 
@@ -47,6 +54,8 @@ namespace System.Security.Cryptography.X509Certificates {
                private AsnEncodedData _params;
                private Oid _oid;
 
+               static byte[] Empty = new byte [0];
+
                public PublicKey (Oid oid, AsnEncodedData parameters, AsnEncodedData keyValue)
                {
                        if (oid == null)
@@ -72,7 +81,8 @@ namespace System.Security.Cryptography.X509Certificates {
                                if ((rcsp != null) && rcsp.PublicOnly) {
                                        _key = certificate.RSA;
                                        export_required = false;
-                               } else {
+                               } else 
+                               {
                                        RSAManaged rsam = (certificate.RSA as RSAManaged);
                                        if ((rsam != null) && rsam.PublicOnly) {
                                                _key = certificate.RSA;
@@ -92,7 +102,7 @@ namespace System.Security.Cryptography.X509Certificates {
                                        _key = certificate.DSA;
                                        export_required = false;
                                }
-                               // note: DSAManaged isn't availablt in Mono.Security due to a bug in Fx 1.x
+                               // note: DSAManaged isn't available in Mono.Security due to a bug in Fx 1.x
 
                                if (export_required) {
                                        DSAParameters rsap = certificate.DSA.ExportParameters (false);
@@ -103,7 +113,7 @@ namespace System.Security.Cryptography.X509Certificates {
 
                        _oid = new Oid (certificate.KeyAlgorithm);
                        _keyValue = new AsnEncodedData (_oid, certificate.PublicKey);
-                       _params = new AsnEncodedData (_oid, certificate.KeyAlgorithmParameters);
+                       _params = new AsnEncodedData (_oid, certificate.KeyAlgorithmParameters ?? Empty);
                }
 
                // properties