示例#1
0
        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);
        }
示例#2
0
 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);
示例#3
0
 public static extern int QuerySecurityContextToken(CtxHandle phContext, out IntPtr hToken);