108 {
109 byte[]
array =
new byte[16];
112 {
114 if (aceType ==
AceType.AccessAllowedObject || aceType ==
AceType.AccessDeniedObject || aceType ==
AceType.SystemAuditObject || aceType ==
AceType.SystemAlarmObject)
115 {
116 isCallback = false;
117 }
118 else
119 {
120 if (aceType !=
AceType.AccessAllowedCallbackObject && aceType !=
AceType.AccessDeniedCallbackObject && aceType !=
AceType.SystemAuditCallbackObject && aceType !=
AceType.SystemAlarmCallbackObject)
121 {
122 goto IL_0209;
123 }
124 isCallback = true;
125 }
126 if (aceType ==
AceType.AccessAllowedObject || aceType ==
AceType.AccessAllowedCallbackObject)
127 {
129 }
130 else if (aceType ==
AceType.AccessDeniedObject || aceType ==
AceType.AccessDeniedCallbackObject)
131 {
133 }
134 else if (aceType ==
AceType.SystemAuditObject || aceType ==
AceType.SystemAuditCallbackObject)
135 {
137 }
138 else
139 {
140 if (aceType !=
AceType.SystemAlarmObject && aceType !=
AceType.SystemAlarmCallbackObject)
141 {
142 goto IL_0209;
143 }
145 }
147 int num2 = 0;
148 accessMask = binaryForm[num] + (binaryForm[num + 1] << 8) + (binaryForm[num + 2] << 16) + (binaryForm[num + 3] << 24);
149 num2 += 4;
150 objectFlags = (
ObjectAceFlags)(binaryForm[num + num2] + (binaryForm[num + num2 + 1] << 8) + (binaryForm[num + num2 + 2] << 16) + (binaryForm[num + num2 + 3] << 24));
151 num2 += 4;
152 if ((objectFlags & ObjectAceFlags.ObjectAceTypePresent) != 0)
153 {
154 for (
int i = 0;
i < 16;
i++)
155 {
156 array[
i] = binaryForm[num + num2 +
i];
157 }
158 num2 += 16;
159 }
160 else
161 {
162 for (int j = 0; j < 16; j++)
163 {
165 }
166 }
168 if ((objectFlags & ObjectAceFlags.InheritedObjectAceTypePresent) != 0)
169 {
170 for (int k = 0; k < 16; k++)
171 {
172 array[k] = binaryForm[num + num2 + k];
173 }
174 num2 += 16;
175 }
176 else
177 {
178 for (int l = 0; l < 16; l++)
179 {
181 }
182 }
183 inheritedObjectAceType =
new Guid(
array);
185 opaque = null;
186 int num3 = (binaryForm[
offset + 3] << 8) + binaryForm[
offset + 2];
187 if (num3 % 4 == 0)
188 {
189 int num4 = num3 - 4 - 4 - 4 - (byte)sid.BinaryLength;
190 if ((objectFlags & ObjectAceFlags.ObjectAceTypePresent) != 0)
191 {
192 num4 -= 16;
193 }
194 if ((objectFlags & ObjectAceFlags.InheritedObjectAceTypePresent) != 0)
195 {
196 num4 -= 16;
197 }
198 if (num4 > 0)
199 {
200 opaque = new byte[num4];
201 for (int m = 0; m < num4; m++)
202 {
203 opaque[m] = binaryForm[
offset + num3 - num4 + m];
204 }
205 }
206 return true;
207 }
208 }
209 goto IL_0209;
210 IL_0209:
212 accessMask = 0;
213 sid = null;
214 objectFlags = ObjectAceFlags.None;
215 objectAceType =
Guid.NewGuid();
216 inheritedObjectAceType =
Guid.NewGuid();
217 isCallback = false;
218 opaque = null;
219 return false;
220 }
GenericAce(AceType type, AceFlags flags)
SecurityIdentifier SecurityIdentifier
ObjectAceFlags ObjectAceFlags
AceQualifier AceQualifier
static readonly int MinBinaryLength