internal static PermissionSet Decode (byte[] encodedPermissions)
{
if ((encodedPermissions == null) || (encodedPermissions.Length < 1))
throw new SecurityException ("Invalid metadata format.");
switch (encodedPermissions [0]) {
case 60:
// Fx 1.0/1.1 declarative security permissions metadata is in Unicode-encoded XML
string xml = Encoding.Unicode.GetString (encodedPermissions);
return new PermissionSet (xml);
case 0x2E:
// Fx 2.0 are encoded "somewhat, but not enough, like" custom attributes
// note: we still support the older format!
return PermissionSet.CreateFromBinaryFormat (encodedPermissions);
default:
throw new SecurityException (Locale.GetText ("Unknown metadata format."));
}
}