public static bool VerifyPlugin(PluginInfo pluginInfo)
{
bool fWasVerified = false;
bool verified = NativeMethods.StrongNameSignatureVerificationEx(pluginInfo.AssemblyPath, true, out fWasVerified);
if (!verified || pluginInfo.AssemblyToken == null) {
return false;
}
byte[] expectedToken = Assembly.GetAssembly(typeof(PluginManager)).GetName().GetPublicKeyToken();
try {
if (pluginInfo.AssemblyToken.Length != expectedToken.Length) {
return false;
}
for (int i = 0; i < pluginInfo.AssemblyToken.Length; i++) {
if (pluginInfo.AssemblyToken[i] != expectedToken[i]) {
return false;
}
}
return true;
} catch (FileNotFoundException) {
return false;
} catch (BadImageFormatException) {
return false;
}
}