246 {
247 InputSecurityBuffers inputBuffers = default(InputSecurityBuffers);
248 if (incomingBlob != null)
249 {
250 inputBuffers.SetNextBuffer(new InputSecurityBuffer(incomingBlob, SecurityBufferType.SECBUFFER_TOKEN));
251 }
252 if (channelBinding != null)
253 {
254 inputBuffers.SetNextBuffer(new InputSecurityBuffer(channelBinding));
255 }
256 SecurityBuffer outputBuffer = new SecurityBuffer(resultBlob, SecurityBufferType.SECBUFFER_TOKEN);
257 global::Interop.SspiCli.ContextFlags outFlags = global::Interop.SspiCli.ContextFlags.Zero;
258 SafeDeleteSslContext context = (SafeDeleteSslContext)securityContext;
259 global::Interop.SECURITY_STATUS win32SecurityStatus = (global::Interop.SECURITY_STATUS)SSPIWrapper.InitializeSecurityContext(GlobalSSPI.SSPIAuth, ref credentialsHandle, ref context, spn, ContextFlagsAdapterPal.GetInteropFromContextFlagsPal(requestedContextFlags), global::Interop.SspiCli.Endianness.SECURITY_NETWORK_DREP, inputBuffers, ref outputBuffer, ref outFlags);
260 securityContext = context;
261 resultBlob = outputBuffer.token;
262 contextFlags = ContextFlagsAdapterPal.GetContextFlagsPalFromInterop(outFlags);
263 return SecurityStatusAdapterPal.GetSecurityStatusPalFromInterop(win32SecurityStatus);
264 }