private void AcquireCredentials() { this.continueProcessing = true; int num = MySqlWindowsAuthenticationPlugin.AcquireCredentialsHandle(null, "Negotiate", 2, IntPtr.Zero, IntPtr.Zero, 0, IntPtr.Zero, ref this.outboundCredentials, ref this.lifetime); if (num != 0) { throw new MySqlException("AcquireCredentialsHandle failed with errorcode" + num); } }
private void InitializeClient(out byte[] clientBlob, byte[] serverBlob, out bool continueProcessing) { clientBlob = null; continueProcessing = true; SecBufferDesc secBufferDesc = new SecBufferDesc(12288); SECURITY_INTEGER sECURITY_INTEGER = new SECURITY_INTEGER(0); int num = -1; try { uint num2 = 0u; if (serverBlob == null) { num = MySqlWindowsAuthenticationPlugin.InitializeSecurityContext(ref this.outboundCredentials, IntPtr.Zero, this.targetName, 0, 0, 0, IntPtr.Zero, 0, out this.clientContext, out secBufferDesc, out num2, out sECURITY_INTEGER); } else { SecBufferDesc secBufferDesc2 = new SecBufferDesc(serverBlob); try { num = MySqlWindowsAuthenticationPlugin.InitializeSecurityContext(ref this.outboundCredentials, ref this.clientContext, this.targetName, 0, 0, 0, ref secBufferDesc2, 0, out this.clientContext, out secBufferDesc, out num2, out sECURITY_INTEGER); } finally { secBufferDesc2.Dispose(); } } if (4115 == num || 4116 == num) { MySqlWindowsAuthenticationPlugin.CompleteAuthToken(ref this.clientContext, ref secBufferDesc); } if (num != 0 && num != 590610 && num != 4115 && num != 4116) { throw new MySqlException("InitializeSecurityContext() failed with errorcode " + num); } clientBlob = secBufferDesc.GetSecBufferByteArray(); } finally { secBufferDesc.Dispose(); } continueProcessing = (num != 0 && num != 4115); }
protected override byte[] MoreData(byte[] moreData) { if (moreData == null) { this.AcquireCredentials(); } byte[] array = null; if (this.continueProcessing) { this.InitializeClient(out array, moreData, out this.continueProcessing); } if (!this.continueProcessing || array == null || array.Length == 0) { MySqlWindowsAuthenticationPlugin.FreeCredentialsHandle(ref this.outboundCredentials); MySqlWindowsAuthenticationPlugin.DeleteSecurityContext(ref this.clientContext); return(null); } return(array); }