3 // Copyright (c) Microsoft Corporation. All rights reserved.
6 // <OWNER>[....]</OWNER>
13 namespace System.Security.Util {
15 using System.Security.Util;
16 using System.Security.Policy;
17 using System.Security.Permissions;
18 using System.Collections;
20 using System.Reflection;
21 using System.Globalization;
23 #if FEATURE_SERIALIZATION
24 using System.Runtime.Serialization.Formatters.Binary;
25 #endif // FEATURE_SERIALIZATION
26 using System.Threading;
27 using System.Runtime.CompilerServices;
28 using System.Runtime.InteropServices;
29 using System.Runtime.Versioning;
31 // Duplicated in vm\COMSecurityConfig.h
34 internal enum QuickCacheEntryType
36 FullTrustZoneMyComputer = 0x1000000,
37 FullTrustZoneIntranet = 0x2000000,
38 FullTrustZoneInternet = 0x4000000,
39 FullTrustZoneTrusted = 0x8000000,
40 FullTrustZoneUntrusted = 0x10000000,
41 FullTrustAll = 0x20000000,
44 internal static class Config {
45 private static volatile string m_machineConfig;
46 private static volatile string m_userConfig;
48 [System.Security.SecurityCritical] // auto-generated
49 [ResourceExposure(ResourceScope.None)]
50 [ResourceConsumption(ResourceScope.Machine, ResourceScope.Machine)]
51 private static void GetFileLocales()
53 if (m_machineConfig == null)
55 string machineConfig = null;
56 GetMachineDirectory(JitHelpers.GetStringHandleOnStack(ref machineConfig));
57 m_machineConfig = machineConfig;
59 if (m_userConfig == null)
61 string userConfig = null;
62 GetUserDirectory(JitHelpers.GetStringHandleOnStack(ref userConfig));
63 m_userConfig = userConfig;
67 internal static string MachineDirectory
69 [System.Security.SecurityCritical] // auto-generated
70 [ResourceExposure(ResourceScope.Machine)]
74 return m_machineConfig;
78 internal static string UserDirectory
80 [System.Security.SecurityCritical] // auto-generated
81 [ResourceExposure(ResourceScope.Machine)]
89 #if FEATURE_CAS_POLICY
90 [System.Security.SecurityCritical] // auto-generated
91 [ResourceExposure(ResourceScope.Machine)]
92 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
93 internal static extern int SaveDataByte(string path, [In] byte[] data, int length);
95 [System.Security.SecurityCritical] // auto-generated
96 [ResourceExposure(ResourceScope.None)]
97 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
98 internal static extern bool RecoverData(ConfigId id);
100 [System.Security.SecurityCritical] // auto-generated
101 [ResourceExposure(ResourceScope.None)]
102 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
103 internal static extern void SetQuickCache(ConfigId id, QuickCacheEntryType quickCacheFlags);
105 [System.Security.SecurityCritical] // auto-generated
106 [ResourceExposure(ResourceScope.None)]
107 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
108 private static extern bool GetCacheEntry(ConfigId id, int numKey, [In] byte[] key, int keyLength, ObjectHandleOnStack retData);
110 [System.Security.SecurityCritical] // auto-generated
111 internal static bool GetCacheEntry(ConfigId id, int numKey, byte[] key, out byte[] data)
113 byte[] retData = null;
114 bool ret = GetCacheEntry(id, numKey, key, key.Length, JitHelpers.GetObjectHandleOnStack(ref retData));
120 [System.Security.SecurityCritical] // auto-generated
121 [ResourceExposure(ResourceScope.None)]
122 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
123 private static extern void AddCacheEntry(ConfigId id, int numKey, [In] byte[] key, int keyLength, byte[] data, int dataLength);
125 [System.Security.SecurityCritical] // auto-generated
126 internal static void AddCacheEntry(ConfigId id, int numKey, byte[] key, byte[] data)
128 AddCacheEntry(id, numKey, key, key.Length, data, data.Length);
131 [System.Security.SecurityCritical] // auto-generated
132 [ResourceExposure(ResourceScope.None)]
133 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
134 internal static extern void ResetCacheData(ConfigId id);
137 [System.Security.SecurityCritical] // auto-generated
138 [ResourceExposure(ResourceScope.Machine)]
139 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
140 private static extern void GetMachineDirectory(StringHandleOnStack retDirectory);
142 [System.Security.SecurityCritical] // auto-generated
143 [ResourceExposure(ResourceScope.Machine)]
144 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
145 private static extern void GetUserDirectory(StringHandleOnStack retDirectory);
147 [System.Security.SecurityCritical] // auto-generated
148 [ResourceExposure(ResourceScope.None)]
149 [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
150 internal static extern bool WriteToEventLog(string message);