Beispiel #1
0
 static extern int AcceptSecurityContext(ref SECURITY_HANDLE phCredential,
                                         ref SECURITY_HANDLE phContext,
                                         ref SecBufferDesc pInput,
                                         uint fContextReq,
                                         uint TargetDataRep,
                                         out SECURITY_HANDLE phNewContext,
                                         out SecBufferDesc pOutput,
                                         out uint pfContextAttr,    //managed ulong == 64 bits!!!
                                         out SECURITY_INTEGER ptsTimeStamp);
Beispiel #2
0
 static extern int AcquireCredentialsHandle(
     string pszPrincipal,                   //SEC_CHAR*
     string pszPackage,                     //SEC_CHAR* //"Kerberos","NTLM","Negotiative"
     int fCredentialUse,
     IntPtr PAuthenticationID,              //_LUID AuthenticationID,//pvLogonID, //PLUID
     ref SEC_WINNT_AUTH_IDENTITY pAuthData, //PVOID
     int pGetKeyFn,                         //SEC_GET_KEY_FN
     IntPtr pvGetKeyArgument,               //PVOID
     ref SECURITY_HANDLE phCredential,      //SecHandle //PCtxtHandle ref
     ref SECURITY_INTEGER ptsExpiry);       //PTimeStamp //TimeStamp ref
Beispiel #3
0
 static extern int InitializeSecurityContext(ref SECURITY_HANDLE phCredential, //PCredHandle
                                             ref SECURITY_HANDLE phContext,    //PCtxtHandle
                                             string pszTargetName,
                                             int fContextReq,
                                             int Reserved1,
                                             int TargetDataRep,
                                             ref SecBufferDesc SecBufferDesc,  //PSecBufferDesc SecBufferDesc
                                             int Reserved2,
                                             out SECURITY_HANDLE phNewContext, //PCtxtHandle
                                             out SecBufferDesc pOutput,        //PSecBufferDesc SecBufferDesc
                                             out uint pfContextAttr,           //managed ulong == 64 bits!!!
                                             out SECURITY_INTEGER ptsExpiry);  //PTimeStamp
Beispiel #4
0
        public void DecryptMessage(int messageLength, byte[] encryptedBuffer, bool bUseClientContext,
                                   out byte[] decryptedBuffer)
        {
            decryptedBuffer = null;

            SECURITY_HANDLE DecryptionContext = _hContext;

            if (bUseClientContext)
            {
                DecryptionContext = _hContext;
            }

            byte[] EncryptedMessage = new byte[messageLength];
            Array.Copy(encryptedBuffer, 0, EncryptedMessage, 0, messageLength);

            int SecurityTrailerLength = encryptedBuffer.Length - messageLength;

            byte[] SecurityTrailer = new byte[SecurityTrailerLength];
            Array.Copy(encryptedBuffer, messageLength, SecurityTrailer, 0, SecurityTrailerLength);

            MultipleSecBufferHelper[] ThisSecHelper = new MultipleSecBufferHelper[2];
            ThisSecHelper[0] = new MultipleSecBufferHelper(EncryptedMessage, SecBufferType.SECBUFFER_DATA);
            ThisSecHelper[1] = new MultipleSecBufferHelper(SecurityTrailer, SecBufferType.SECBUFFER_TOKEN);
            SecBufferDesc DescBuffer = new SecBufferDesc(ThisSecHelper);

            try
            {
                uint EncryptionQuality = 0;

                if (DecryptMessage(ref DecryptionContext, ref DescBuffer, 0, out EncryptionQuality) != SEC_E_OK)
                {
                    throw new Exception("DecryptMessage() failed!!!");
                }

                decryptedBuffer = new byte[messageLength];
                Array.Copy(DescBuffer.GetSecBufferByteArray(), 0, decryptedBuffer, 0, messageLength);
            }
            finally
            {
                DescBuffer.Dispose();
            }
        }
Beispiel #5
0
 public static extern int VerifySignature(ref SECURITY_HANDLE phContext, // Context to use
                                          ref SecBufferDesc pMessage,    // Message to sign
                                          uint MessageSeqNo,             // Message Sequence Num.
                                          out uint pfQOP);               // Quality of Protection
Beispiel #6
0
 public static extern int MakeSignature(ref SECURITY_HANDLE phContext, // Context to use
                                        uint fQOP,                     // Quality of Protection
                                        ref SecBufferDesc pMessage,    // Message to sign
                                        uint MessageSeqNo);            // Message Sequence Num.
Beispiel #7
0
 public static extern int DecryptMessage(ref SECURITY_HANDLE phContext,
                                         ref SecBufferDesc pMessage,
                                         uint MessageSeqNo,
                                         out uint pfQOP);
Beispiel #8
0
 public static extern int EncryptMessage(ref SECURITY_HANDLE phContext,
                                         uint fQOP,          //managed ulong == 64 bits!!!
                                         ref SecBufferDesc pMessage,
                                         uint MessageSeqNo); //managed ulong == 64 bits!!!
Beispiel #9
0
 public static extern int QueryContextAttributes(ref SECURITY_HANDLE phContext,
                                                 uint ulAttribute,
                                                 out SecPkgContext_SessionKey pContextAttributes);
Beispiel #10
0
 public static extern int ImpersonateSecurityContext(ref SECURITY_HANDLE phContext);