public void InitializeSecurityContextTest() { using (var hCred = AcqCredHandle()) { const ASC_REQ STANDARD_CONTEXT_ATTRIBUTES = ASC_REQ.ASC_REQ_CONNECTION | ASC_REQ.ASC_REQ_ALLOCATE_MEMORY; var un = WindowsIdentity.GetCurrent().Name; var safeBuffMem = SafeHGlobalHandle.CreateFromStructure(new SecBuffer { BufferType = SecBufferType.SECBUFFER_TOKEN }); var sbb = SecBufferDesc.Default; sbb.cBuffers = 1; sbb.pBuffers = (IntPtr)safeBuffMem; var hNewCtxt = CtxtHandle.Null; var hr = InitializeSecurityContext(hCred, IntPtr.Zero, un, STANDARD_CONTEXT_ATTRIBUTES, 0, DREP.SECURITY_NATIVE_DREP, IntPtr.Zero, 0, ref hNewCtxt, ref sbb, out var attr, out var exp); Assert.That(hr, Is.EqualTo((HRESULT)0).Or.Property("Succeeded").True); Assert.That(DeleteSecurityContext(hNewCtxt), Is.EqualTo((HRESULT)0)); Assert.That(FreeContextBuffer(safeBuffMem.ToStructure <SecBuffer>().pvBuffer), Is.EqualTo((HRESULT)0)); } }
internal static extern SEC_RESULT AcceptSecurityContext(SecurityHandle phCredential, ref SecurityHandle phContext, ref SecBufferDesc pInput, ASC_REQ fContextReq, Data_Rep TargetDataRep, out SecurityHandle phNewContext, ref SecBufferDesc pOutput, out uint pfContextAttr, out SecurityInteger ptsTimeStamp);