235 {
236 global::Interop.SspiCli.SecBufferDesc inputOutput =
new global::Interop.SspiCli.SecBufferDesc(
input.Length);
237 Span<global::Interop.SspiCli.SecBuffer> span = stackalloc global::Interop.SspiCli.SecBuffer[
input.Length];
238 span.Clear();
239 fixed (global::Interop.SspiCli.SecBuffer* pBuffers = span)
240 {
241 fixed (
byte* ptr4 = ((
input.Length > 0) ?
input[0].token : null))
242 {
243 fixed (
byte* ptr3 = ((
input.Length > 1) ?
input[1].token : null))
244 {
245 fixed (
byte* ptr2 = ((
input.Length > 2) ?
input[2].token : null))
246 {
247 inputOutput.pBuffers = pBuffers;
248 ThreeByteArrays threeByteArrays = default(ThreeByteArrays);
249 Span<byte[]> span2 =
MemoryMarshal.CreateSpan(ref threeByteArrays._item0, 3).Slice(0,
input.Length);
250 for (
int i = 0;
i <
input.Length;
i++)
251 {
253 span[
i].cbBuffer = reference.
size;
254 span[
i].BufferType = reference.type;
255 if (reference.token == null || reference.token.Length == 0)
256 {
257 span[
i].pvBuffer =
IntPtr.Zero;
258 continue;
259 }
261 span2[
i] = reference.token;
262 }
263 int num = op switch
264 {
265 OP.Encrypt => secModule.EncryptMessage(context, ref inputOutput, sequenceNumber),
266 OP.Decrypt => secModule.DecryptMessage(context, ref inputOutput, sequenceNumber),
267 OP.MakeSignature => secModule.MakeSignature(context, ref inputOutput, sequenceNumber),
268 _ => secModule.VerifySignature(context, ref inputOutput, sequenceNumber),
269 };
270 for (
int j = 0; j <
input.Length; j++)
271 {
273 reference2.size = span[j].cbBuffer;
274 reference2.type = span[j].BufferType;
275 if (reference2.size == 0)
276 {
277 reference2.offset = 0;
278 reference2.token = null;
279 continue;
280 }
281 int k;
282 for (k = 0; k <
input.Length; k++)
283 {
284 if (span2[k] != null)
285 {
287 checked
288 {
289 if ((void*)span[j].pvBuffer >= ptr && unchecked((nuint)(void*)span[j].pvBuffer) + unchecked((nuint)reference2.size) <= unchecked((nuint)ptr) + unchecked((nuint)span2[k].Length))
290 {
291 reference2.offset = (int)(unchecked((byte*)(void*)span[j].pvBuffer) - ptr);
292 reference2.token = span2[k];
293 break;
294 }
295 }
296 }
297 }
298 if (k >=
input.Length)
299 {
300 reference2.size = 0;
301 reference2.offset = 0;
302 reference2.token = null;
303 }
304 }
306 {
308 }
309 return num;
310 }
311 }
312 }
313 }
314 }
static readonly System.Net.NetEventSource Log
static void Error(object thisOrContextObject, FormattableString formattableString, [CallerMemberName] string memberName=null)
static unsafe IntPtr UnsafeAddrOfPinnedArrayElement(Array arr, int index)
static string event_OperationReturnedSomething
static string Format(string resourceFormat, object p1)
static string net_log_operation_failed_with_error