Salut
Suite à un autre de mes topic où je demandais comment vérifier la signature d'une Assembly par reflexion, je découvre que System.Security.Permissions est une vraie passoire chez moi.

Je m'attends à avoir des exceptions de levée, mais au lieu de cà, tout passe comme si rien n'etait

Je dois mal m'y prendre, mais j'ai fais 2 expériences opposées et j'obtiens le meme resultat : ca passe au travers !

1° Empecher une assembly d'etre chargée par un appellant qui ne répond pas à la signature donnée.

Solution trouvée ici

Je donne volontairement une clé publique érronnée (celle de leur exemple en fait), et j'arrive à instancier ma classe sans probleme par un executable non signé

2° Refuser de charger une Assembly dont la signature est incorrecte ou absente

Solution trouvée sur MSDN + d'autres articles.

La encore, j'arrive à charger mon Assembly pourtant non signée, et à instancier ses classes comme si rien n'etait

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
byte[] PluginKey = 
            { 0, 36, 0, 0, 4, 128, 0, 0, 148, 0, 0, 0, 6, 2, 0, 0, 0, 36, 0, 0, 82, 83, 65, 49, 0, 4, 0, 0, 1, 0, 1, 0, 193, 117, 109, 4, 41, 249, 57, 19, 51, 208, 4, 61, 184, 22, 199, 134, 148, 30, 20, 104, 76, 138, 9, 139, 70, 39, 149, 132, 234, 41, 72, 63, 104, 53, 154, 18, 99, 207, 225, 118, 91, 31, 49, 227, 242, 40, 141, 253, 240, 16, 94, 33, 226, 189, 114, 62, 60, 58, 189, 160, 102, 140, 73, 238, 9, 33, 171, 179, 164, 118, 236, 103, 156, 11, 85, 241, 245, 92, 125, 177, 65, 52, 215, 54, 65, 93, 43, 68, 180, 172, 61, 232, 236, 50, 184, 86, 81, 232, 225, 33, 227, 112, 144, 52, 202, 238, 53, 20, 53, 110, 93, 240, 222, 187, 118, 160, 212, 17, 47, 129, 106, 163, 108, 80, 55, 153, 137, 226 };
            StrongNamePublicKeyBlob blob =
            new StrongNamePublicKeyBlob(PluginKey);
 
            Version version = new Version("1.0.0.0");
 
            StrongName sn = new StrongName(blob, "Plugin", version);
            Evidence evidence = new Evidence();
            evidence.AddAssembly("Plugin"); //Ajouté lors d'un 2eme essai
            evidence.AddAssembly(version); //Ajouté lors d'un 2eme essai
            evidence.AddAssembly(sn);
 
           //Plugin.dll n'est pas signé, et pourtant ca passe tranquillement
           ass = Assembly.LoadFrom("Plugin.dll", evidence);
Je test tout çà sous windows 7 32bits.
Sauriez vous me dire pourquoi je passe au travers?

Merci