Merge pull request #1542 from ninjarobot/UriTemplateMatchException
[mono.git] / mcs / class / corlib / System.Security.Cryptography / DES.cs
index 8a14a874ed1f2ceca9a3fb1b7ede8d9a8758b640..7c042cd9dddb1ed82c122cebc12b99792324b368 100644 (file)
@@ -1,12 +1,12 @@
 //
-// System.Security.Cryptography.DES
+// System.Security.Cryptography.DES.cs
 //
 // Author:
 //     Sergey Chaban (serge@wildwestsoftware.com)
 //     Sebastien Pouliot <sebastien@ximian.com>
 //
 // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2004-2006 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,6 +29,7 @@
 //
 
 using System.Globalization;
+using System.Runtime.InteropServices;
 
 // References:
 // a.  FIPS PUB 46-3: Data Encryption Standard
@@ -36,11 +37,12 @@ using System.Globalization;
 
 namespace System.Security.Cryptography {
 
+[ComVisible (true)]
 public abstract class DES : SymmetricAlgorithm {
 
        private const int keySizeByte = 8;
 
-       public DES ()
+       protected DES ()
        {
                KeySizeValue = 64; 
                BlockSizeValue = 64; 
@@ -55,12 +57,16 @@ public abstract class DES : SymmetricAlgorithm {
 
        public static new DES Create () 
        {
+#if FULL_AOT_RUNTIME
+               return new System.Security.Cryptography.DESCryptoServiceProvider ();
+#else
                return Create ("System.Security.Cryptography.DES");
+#endif
        }
 
-       public static new DES Create (string algo
+       public static new DES Create (string algName
         {
-               return (DES) CryptoConfig.CreateFromName (algo);
+               return (DES) CryptoConfig.CreateFromName (algName);
        }
 
 
@@ -74,26 +80,24 @@ public abstract class DES : SymmetricAlgorithm {
 
        // Ek1(Ek2(m)) = m
        internal static readonly byte[,] semiWeakKeys = {
-               { 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E }, // map to packed key 011F011F010E010E\r
-               { 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0 }, // map to packed key 01E001E001F101F1\r
-               { 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE }, // map to packed key 01FE01FE01FE01FE\r
-               { 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E, 0x00 }, // map to packed key 1F011F010E010E01\r
-               { 0x1E, 0xE0, 0x1E, 0xE0, 0x0E, 0xF0, 0x0E, 0xF0 }, // map to packed key 1FE01FE00EF10EF1\r
-               { 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E, 0xFE }, // map to packed key 1FFE1FFE0EFE0EFE\r
-               { 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00 }, // map to packed key E001E001F101F101\r
-               { 0xE0, 0x1E, 0xE0, 0x1E, 0xF0, 0x0E, 0xF0, 0x0E }, // map to packed key E01FE01FF10EF10E\r
-               { 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0, 0xFE }, // map to packed key E0FEE0FEF1FEF1FE\r
-               { 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00 }, // map to packed key FE01FE01FE01FE01\r
-               { 0xFE, 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E }, // map to packed key FE1FFE1FFE0EFE0E\r
-               { 0xFE, 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0 }, // map to packed key FEE0FEE0FEF1FEF1\r
-       };\r
+               { 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E }, // map to packed key 011F011F010E010E
+               { 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0 }, // map to packed key 01E001E001F101F1
+               { 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE }, // map to packed key 01FE01FE01FE01FE
+               { 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0E, 0x00 }, // map to packed key 1F011F010E010E01
+               { 0x1E, 0xE0, 0x1E, 0xE0, 0x0E, 0xF0, 0x0E, 0xF0 }, // map to packed key 1FE01FE00EF10EF1
+               { 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E, 0xFE }, // map to packed key 1FFE1FFE0EFE0EFE
+               { 0xE0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00 }, // map to packed key E001E001F101F101
+               { 0xE0, 0x1E, 0xE0, 0x1E, 0xF0, 0x0E, 0xF0, 0x0E }, // map to packed key E01FE01FF10EF10E
+               { 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0, 0xFE }, // map to packed key E0FEE0FEF1FEF1FE
+               { 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00 }, // map to packed key FE01FE01FE01FE01
+               { 0xFE, 0x1E, 0xFE, 0x1E, 0xFE, 0x0E, 0xFE, 0x0E }, // map to packed key FE1FFE1FFE0EFE0E
+               { 0xFE, 0xE0, 0xFE, 0xE0, 0xFE, 0xF0, 0xFE, 0xF0 }, // map to packed key FEE0FEE0FEF1FEF1
+       };
 
        public static bool IsWeakKey (byte[] rgbKey) 
        {
-#if NET_2_0
                if (rgbKey == null)
                        throw new CryptographicException (Locale.GetText ("Null Key"));
-#endif
                if (rgbKey.Length != keySizeByte)
                        throw new CryptographicException (Locale.GetText ("Wrong Key Length"));
 
@@ -125,10 +129,8 @@ public abstract class DES : SymmetricAlgorithm {
 
        public static bool IsSemiWeakKey (byte[] rgbKey)
        {
-#if NET_2_0
                if (rgbKey == null)
                        throw new CryptographicException (Locale.GetText ("Null Key"));
-#endif
                if (rgbKey.Length != keySizeByte)
                        throw new CryptographicException (Locale.GetText ("Wrong Key Length"));
 
@@ -183,3 +185,4 @@ public abstract class DES : SymmetricAlgorithm {
 }
 
 }
+