internal static PermissionSet Decode(byte[] encodedPermissions) { if (encodedPermissions == null || encodedPermissions.Length < 1) { throw new SecurityException("Invalid metadata format."); } byte b = encodedPermissions[0]; if (b == 46) { return(PermissionSet.CreateFromBinaryFormat(encodedPermissions)); } if (b != 60) { throw new SecurityException(Locale.GetText("Unknown metadata format.")); } string @string = Encoding.Unicode.GetString(encodedPermissions); return(new PermissionSet(@string)); }
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.")); } }