public static extern int AcquireCredentialsHandle(
     string pszPrincipal,
     string pszPackage,
     int fCredentialUse,
     IntPtr pvLogonID,
     SEC_WINNT_AUTH_IDENTITY pAuthData,
     int pGetKeyFn,
     IntPtr pvGetKeyArgument,
     ref SecurityHandle phCredential,
     ref long ptsExpiry);
 public static extern int AcceptSecurityContext(
     ref SecurityHandle phCredential,
     IntPtr phContext,
     IntPtr input,
     uint fContextReq,
     uint TargetDataRep,
     ref SecurityHandle phNewContext,
     [In, Out][MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(SecurityBufferMarshaler))]
     SecurityBufferDescription pOutput,
     out uint pfContextAttr,
     out long timeStamp);
 public static extern int InitializeSecurityContext(
     ref SecurityHandle phCredential,
     IntPtr phContext,
     string pszTargetName,
     uint fContextReq,
     int Reserved1,
     uint TargetDataRep,
     IntPtr pInput,
     int Reserved2,
     ref SecurityHandle phNewContext,
     [In, Out][MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(SecurityBufferMarshaler))]
     SecurityBufferDescription pOutput,
     out uint pfContextAttr,
     out long timeStamp);
 public static extern int QueryContextAttributes(
     ref SecurityHandle phContext,
     uint ulAttribute,
     IntPtr pContextAttributes);