180 {
181 global::Interop.SspiCli.SecBufferDesc inputOutput =
new global::Interop.SspiCli.SecBufferDesc(
input.Length);
182 Span<global::Interop.SspiCli.SecBuffer> span = stackalloc global::Interop.SspiCli.SecBuffer[
input.Length];
183 span.Clear();
184 fixed (global::Interop.SspiCli.SecBuffer* pBuffers = span)
185 {
186 fixed (
byte* ptr4 = ((
input.Length > 0) ?
input[0].token : null))
187 {
188 fixed (
byte* ptr3 = ((
input.Length > 1) ?
input[1].token : null))
189 {
190 fixed (
byte* ptr2 = ((
input.Length > 2) ?
input[2].token : null))
191 {
192 inputOutput.pBuffers = pBuffers;
193 ThreeByteArrays threeByteArrays = default(ThreeByteArrays);
194 Span<byte[]> span2 =
MemoryMarshal.CreateSpan(ref threeByteArrays._item0, 3).Slice(0,
input.Length);
195 for (
int i = 0;
i <
input.Length;
i++)
196 {
198 span[
i].cbBuffer = reference.
size;
199 span[
i].BufferType = reference.type;
200 if (reference.token == null || reference.token.Length == 0)
201 {
202 span[
i].pvBuffer =
IntPtr.Zero;
203 continue;
204 }
206 span2[
i] = reference.token;
207 }
208 int num = op switch
209 {
210 OP.Encrypt => secModule.
EncryptMessage(context, ref inputOutput, sequenceNumber),
211 OP.Decrypt => secModule.
DecryptMessage(context, ref inputOutput, sequenceNumber),
212 OP.MakeSignature => secModule.
MakeSignature(context, ref inputOutput, sequenceNumber),
213 _ => secModule.
VerifySignature(context, ref inputOutput, sequenceNumber),
214 };
215 for (
int j = 0; j <
input.Length; j++)
216 {
218 reference2.size = span[j].cbBuffer;
219 reference2.type = span[j].BufferType;
220 if (reference2.size == 0)
221 {
222 reference2.offset = 0;
223 reference2.token = null;
224 continue;
225 }
226 int k;
227 for (k = 0; k <
input.Length; k++)
228 {
229 if (span2[k] != null)
230 {
232 checked
233 {
234 if ((void*)span[j].pvBuffer >= ptr && unchecked((nuint)(void*)span[j].pvBuffer) + unchecked((nuint)reference2.size) <= unchecked((nuint)ptr) + unchecked((nuint)span2[k].Length))
235 {
236 reference2.offset = (int)(unchecked((byte*)(void*)span[j].pvBuffer) - ptr);
237 reference2.token = span2[k];
238 break;
239 }
240 }
241 }
242 }
243 if (k >=
input.Length)
244 {
245 reference2.size = 0;
246 reference2.offset = 0;
247 reference2.token = null;
248 }
249 }
251 {
253 }
254 return num;
255 }
256 }
257 }
258 }
259 }
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
int DecryptMessage(System.Net.Security.SafeDeleteContext context, ref global::Interop.SspiCli.SecBufferDesc inputOutput, uint sequenceNumber)
int MakeSignature(System.Net.Security.SafeDeleteContext context, ref global::Interop.SspiCli.SecBufferDesc inputOutput, uint sequenceNumber)
int EncryptMessage(System.Net.Security.SafeDeleteContext context, ref global::Interop.SspiCli.SecBufferDesc inputOutput, uint sequenceNumber)
int VerifySignature(System.Net.Security.SafeDeleteContext context, ref global::Interop.SspiCli.SecBufferDesc inputOutput, uint sequenceNumber)