public int HandleType3(byte[] ntmlBytes) { SecBufferDesc secClientBufferDesc = new SecBufferDesc(ntmlBytes); secServerBufferDesc = new SecBufferDesc(0); CtxHandle phContextNew = new CtxHandle(); UInt32 fContextAttr; TimeStamp ts = new TimeStamp(); int status = AcceptSecurityContext(hCred, phContext, ref secClientBufferDesc, ASC_REQ_ALLOCATE_MEMORY | ASC_REQ_CONNECTION, SECURITY_NATIVE_DREP, phContext, out secServerBufferDesc, out fContextAttr, ts); if (status == 0) { Authenticated = true; IntPtr hToken; if ((status = QuerySecurityContextToken(phContext, out hToken)) == 0) { Token = hToken; } } return(status); }
public static extern int AcceptSecurityContext(CredHandle phCredential, CtxHandle phContext, ref SecBufferDesc pInput, uint fContextReq, uint TargetDataRep, CtxHandle phNewContext, out SecBufferDesc pOutput, out uint pfContextAttr, //managed ulong == 64 bits!!! TimeStamp ptsTimeStamp);
public static extern int QuerySecurityContextToken(CtxHandle phContext, out IntPtr hToken);