2008-04-09 Sebastien Pouliot <sebastien@ximian.com>
authorSebastien Pouliot <sebastien@ximian.com>
Wed, 9 Apr 2008 14:58:03 +0000 (14:58 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Wed, 9 Apr 2008 14:58:03 +0000 (14:58 -0000)
* gacutil.exe.sources: Use the StrongNameManager.cs file from sn
(located in ../security/).
* StrongNameManager.cs: Removed. Two copies (sn and corlib) are
already enough.

svn path=/trunk/mcs/; revision=100229

mcs/tools/gacutil/ChangeLog
mcs/tools/gacutil/StrongNameManager.cs [deleted file]
mcs/tools/gacutil/gacutil.exe.sources

index ef456068775ec5877278fd4728f3662cf21798a4..586568b86a5dcc1b247dc32c8e4a543d28bac691 100644 (file)
@@ -1,3 +1,9 @@
+2008-04-09  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * gacutil.exe.sources: Use the StrongNameManager.cs file from sn
+       (located in ../security/).
+       * StrongNameManager.cs: Removed. Two copies (sn and corlib) are 
+       already enough.
 
 2008-04-09  Gert Driesen  <drieseng@users.sourceforge.net>
 
diff --git a/mcs/tools/gacutil/StrongNameManager.cs b/mcs/tools/gacutil/StrongNameManager.cs
deleted file mode 100644 (file)
index e47b6b8..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-//
-// StrongNameManager.cs - StrongName Management
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Reflection;
-using System.Security;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Security.Cryptography;
-using Mono.Xml;
-
-namespace Mono.Security {
-
-       /* RUNTIME
-        *                              yes
-        *      in_gac ---------------------------------\
-        *              |                               |
-        *              | no                            \/
-        *              |                       return true
-        * CLASS LIBRARY|
-        *              |
-        *              |
-        *              |                               
-        *      bool StrongNameManager.MustVerify
-        *              |
-        *              |
-        *              \/              not found       
-        *              Token --------------------------\
-        *              |                               |
-        *              | present ?                     |
-        *              |                               |
-        *              \/              not found       |
-        *      Assembly Name --------------------------|
-        *              |                               |
-        *              | present ?                     |
-        *              | or "*"                        |
-        *              \/              not found       |
-        *              User ---------------------------|
-        *              |                               |
-        *              | present ?                     |
-        *              | or "*"                        |
-        *              \/                              \/
-        *      return false                    return true
-        *      SKIP VERIFICATION               VERIFY ASSEMBLY
-        */
-
-       internal class StrongNameManager {
-
-               private class Element {
-                       internal Hashtable assemblies;
-
-                       public Element () 
-                       {
-                               assemblies = new Hashtable ();
-                       }
-
-                       public Element (string assembly, string users) : this ()
-                       {
-                               assemblies.Add (assembly, users);
-                       }
-
-                       public string GetUsers (string assembly) 
-                       {
-                               return (string) assemblies [assembly];
-                       }
-               }
-
-               static private Hashtable mappings;
-               static private Hashtable tokens;
-
-               static StrongNameManager () 
-               {
-               }
-
-               // note: more than one configuration file can be loaded at the 
-               // same time (e.g. user specific and machine specific config).
-               static public void LoadConfig (string filename) 
-               {
-                       if (File.Exists (filename)) {
-                               SecurityParser sp = new SecurityParser ();
-                               using (StreamReader sr = new StreamReader (filename)) {
-                                       string xml = sr.ReadToEnd ();
-                                       sp.LoadXml (xml);
-                               }
-                               SecurityElement root = sp.ToXml ();
-                               if ((root != null) && (root.Tag == "configuration")) {
-                                       SecurityElement strongnames  = root.SearchForChildByTag ("strongNames");
-                                       if ((strongnames != null) && (strongnames.Children.Count > 0)) {
-                                               SecurityElement mapping  = strongnames.SearchForChildByTag ("pubTokenMapping");
-                                               if ((mapping != null) && (mapping.Children.Count > 0)) {
-                                                       LoadMapping (mapping);
-                                               }
-
-                                               SecurityElement settings = strongnames.SearchForChildByTag ("verificationSettings");
-                                               if ((settings != null) && (settings.Children.Count > 0)) {
-                                                       LoadVerificationSettings (settings);
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               static private void LoadMapping (SecurityElement mapping) 
-               {
-                       if (mappings == null) {
-                               mappings = new Hashtable ();
-                       }
-
-                       lock (mappings.SyncRoot) {
-                               foreach (SecurityElement item in mapping.Children) {
-                                       if (item.Tag != "map")
-                                               continue;
-
-                                       string token = item.Attribute ("Token");
-                                       if ((token == null) || (token.Length != 16))
-                                               continue; // invalid entry
-                                       token = token.ToUpper (CultureInfo.InvariantCulture);
-
-                                       string publicKey = item.Attribute ("PublicKey");
-                                       if (publicKey == null)
-                                               continue; // invalid entry
-                               
-                                       // watch for duplicate entries
-                                       if (mappings [token] == null) {
-                                               mappings.Add (token, publicKey);
-                                       }
-                                       else {
-                                               // replace existing mapping
-                                               mappings [token] = publicKey;
-                                       }
-                               }
-                       }
-               }
-
-               static private void LoadVerificationSettings (SecurityElement settings) 
-               {
-                       if (tokens == null) {
-                               tokens = new Hashtable ();
-                       }
-
-                       lock (tokens.SyncRoot) {
-                               foreach (SecurityElement item in settings.Children) {
-                                       if (item.Tag != "skip")
-                                               continue;
-
-                                       string token = item.Attribute ("Token");
-                                       if (token == null)
-                                               continue;       // bad entry
-                                       token = token.ToUpper (CultureInfo.InvariantCulture);
-
-                                       string assembly = item.Attribute ("Assembly");
-                                       if (assembly == null)
-                                               assembly = "*";
-
-                                       string users = item.Attribute ("Users");
-                                       if (users == null)
-                                               users = "*";
-
-                                       Element el = (Element) tokens [token];
-                                       if (el == null) {
-                                               // new token
-                                               el = new Element (assembly, users);
-                                               tokens.Add (token, el);
-                                               continue;
-                                       }
-
-                                       // existing token
-                                       string a = (string) el.assemblies [assembly];
-                                       if (a == null) {
-                                               // new assembly
-                                               el.assemblies.Add (assembly, users);
-                                               continue;
-                                       }
-
-                                       // existing assembly
-                                       if (users == "*") {
-                                               // all users (drop current users)
-                                               el.assemblies [assembly] = "*";
-                                               continue;
-                                       }
-
-                                       // new users, add to existing
-                                       string existing = (string) el.assemblies [assembly];
-                                       string newusers = String.Concat (existing, ",", users);
-                                       el.assemblies [assembly] = newusers;
-                               }
-                       }
-               }
-
-               static public byte[] GetMappedPublicKey (byte[] token) 
-               {
-                       if ((mappings == null) || (token == null))
-                               return null;
-
-                       string t = CryptoConvert.ToHex (token);
-                       string pk = (string) mappings [t];
-                       if (pk == null)
-                               return null;
-
-                       return CryptoConvert.FromHex (pk);
-               }
-
-               // it is possible to skip verification for assemblies 
-               // or a strongname public key using the "sn" tool.
-               // note: only the runtime checks if the assembly is loaded 
-               // from the GAC to skip verification
-               static public bool MustVerify (AssemblyName an)
-               {
-                       if ((an == null) || (tokens == null))
-                               return true;
-
-                       string token = CryptoConvert.ToHex (an.GetPublicKeyToken ());
-                       Element el = (Element) tokens [token];
-                       if (el != null) {
-                               // look for this specific assembly first
-                               string users = el.GetUsers (an.Name);
-                               if (users == null) {
-                                       // nothing for the specific assembly
-                                       // so look for "*" assembly
-                                       users = el.GetUsers ("*");
-                               }
-
-                               if (users != null) {
-                                       // applicable to any user ?
-                                       if (users == "*")
-                                               return false;
-                                       // applicable to the current user ?
-                                       return (users.IndexOf (Environment.UserName) < 0);
-                               }
-                       }
-
-                       // we must check verify the strongname on the assembly
-                       return true;
-               }
-
-               public override string ToString () 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append ("Public Key Token\tAssemblies\t\tUsers");
-                       sb.Append (Environment.NewLine);
-                       if (tokens == null) {
-                               sb.Append ("none");
-                               return sb.ToString ();
-                       }
-
-                       foreach (DictionaryEntry token in tokens) {
-                               sb.Append ((string)token.Key);
-                               Element t = (Element) token.Value;
-                               bool first = true;
-                               foreach (DictionaryEntry assembly in t.assemblies) {
-                                       if (first) {
-                                               sb.Append ("\t");
-                                               first = false;
-                                       }
-                                       else {
-                                               sb.Append ("\t\t\t");
-                                       }
-                                       sb.Append ((string)assembly.Key);
-                                       sb.Append ("\t");
-                                       string users = (string)assembly.Value;
-                                       if (users == "*")
-                                               users = "All users";
-                                       sb.Append (users);
-                                       sb.Append (Environment.NewLine);
-                               }
-                       }
-                       return sb.ToString ();
-               }
-       }
-}
index c692eb481dd1739f1d89b694fb6166639f65e8e2..911afaf9d8219cd369a76a6269e559c1429cd238 100644 (file)
@@ -1,2 +1,2 @@
 driver.cs
-StrongNameManager.cs
\ No newline at end of file
+../security/StrongNameManager.cs